Skip to content
Prev Previous commit
Next Next commit
Added the changes and @see notation in Math/QuadraticRoots.js
  • Loading branch information
chapati456 committed Oct 1, 2023
commit e883c7af278001618e155df62553cc208ce9d8b3
30 changes: 13 additions & 17 deletions Maths/QuadraticRoots.js
Original file line number Diff line number Diff line change
@@ -1,17 +1,19 @@
/**
*
* Author - Dibya Debayan Dash
* Date: - 30/09/2023
* @see https://www.cuemath.com/algebra/roots-of-quadratic-equation/
* @author Dibya Debayan Dash
* Calculates the roots of a quadratic equation of the form ax^2 + bx + c = 0.
* link: https://www.cuemath.com/algebra/roots-of-quadratic-equation/
*
* @param {number} a - Coefficient of x^2.
* @param {number} b - Coefficient of x.
* @param {number} c - Constant term.
* @returns {number[]|string} - An array containing the roots if they are real,
* or a string indicating no real roots.
*
* @example
* // Find the roots of the quadratic equation: 2x^2 - 4x + 2 = 0
* const roots = quadraticRoots(2, -4, 2);
* // Expected output: [1, 1]
*/

const quadraticRoots = (a, b, c) => {
// Calculate the discriminant
const discriminant = b * b - 4 * a * c
Expand All @@ -21,21 +23,15 @@ const quadraticRoots = (a, b, c) => {
return 'No real roots'
} else if (discriminant === 0) {
// One real root
const root = -b / (2 * a)
return [root]
return [-b / (2 * a)]
} else {
// Two real roots
const sqrtDiscriminant = Math.sqrt(discriminant)
const root1 = (-b + sqrtDiscriminant) / (2 * a)
const root2 = (-b - sqrtDiscriminant) / (2 * a)
return [root1, root2]
return [
(-b + sqrtDiscriminant) / (2 * a),
(-b - sqrtDiscriminant) / (2 * a)
]
}
}
export { quadraticRoots }

// Example usage
// let a = 1
// let b = -3
// let c = 2

// let roots = quadraticRoots(a, b, c) [2,1]
export { quadraticRoots }
15 changes: 6 additions & 9 deletions Maths/test/QuadraticRoots.test.js
Original file line number Diff line number Diff line change
@@ -1,19 +1,16 @@
import { quadraticRoots } from '../QuadraticRoots.js'

// Test case 1: Two real roots
test('should return an array with two real roots when the discriminant is positive', () => {
const roots = quadraticRoots(1, -3, 2)
expect(roots).toEqual([2, 1])
test('returns an array with two real roots when the discriminant is positive', () => {
expect(quadraticRoots(1, -3, 2)).toEqual([2, 1])
})

// Test case 2: One real root
test('should return an array with one real root when the discriminant is zero', () => {
const roots = quadraticRoots(1, -2, 1)
expect(roots).toEqual([1])
test('returns an array with one real root when the discriminant is zero', () => {
expect(quadraticRoots(1, -2, 1)).toEqual([1])
})

// Test case 3: No real roots
test('should return a message indicating no real roots when the discriminant is negative', () => {
const roots = quadraticRoots(1, 2, 5)
expect(roots).toEqual('No real roots')
test('returns a message indicating no real roots when the discriminant is negative', () => {
expect(quadraticRoots(1, 2, 5)).toEqual('No real roots')
})