mirror of
https://github.com/TheAlgorithms/JavaScript.git
synced 2025-07-05 00:01:37 +08:00
Added QuadraticRoots to Math/QuadraticRoots.js (#1376)
* Added QuadraticRoots in the Math/QuadraticRoots * Fixed math/QyadraticRoots var to let * Added relevant links math/QyadraticRoots * Added relevant links math/QyadraticRoots and fixed let - const * Added the changes and @see notation in Math/QuadraticRoots.js * Added the changes Math/QuadraticRoots.js and return an empty [] * Readd describe block, remove redundant comments * Changed [1,1] to [1] --------- Co-authored-by: Dibya <Dibya.DebayanDash@siriuscom.com> Co-authored-by: Lars Müller <34514239+appgurueu@users.noreply.github.com>
This commit is contained in:
37
Maths/QuadraticRoots.js
Normal file
37
Maths/QuadraticRoots.js
Normal file
@ -0,0 +1,37 @@
|
||||
/**
|
||||
* @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.
|
||||
*
|
||||
* @param {number} a - Coefficient of x^2.
|
||||
* @param {number} b - Coefficient of x.
|
||||
* @param {number} c - Constant term.
|
||||
* @returns {number[]} - An array containing the roots if they are real,
|
||||
* or an empty array 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]
|
||||
*/
|
||||
const quadraticRoots = (a, b, c) => {
|
||||
// Calculate the discriminant
|
||||
const discriminant = b * b - 4 * a * c
|
||||
|
||||
// Check if roots are real
|
||||
if (discriminant < 0) {
|
||||
return []
|
||||
} else if (discriminant === 0) {
|
||||
// One real root
|
||||
return [-b / (2 * a)]
|
||||
} else {
|
||||
// Two real roots
|
||||
const sqrtDiscriminant = Math.sqrt(discriminant)
|
||||
return [
|
||||
(-b + sqrtDiscriminant) / (2 * a),
|
||||
(-b - sqrtDiscriminant) / (2 * a)
|
||||
]
|
||||
}
|
||||
}
|
||||
|
||||
export { quadraticRoots }
|
13
Maths/test/QuadraticRoots.test.js
Normal file
13
Maths/test/QuadraticRoots.test.js
Normal file
@ -0,0 +1,13 @@
|
||||
import { quadraticRoots } from '../QuadraticRoots.js'
|
||||
|
||||
describe('quadratic roots', () => {
|
||||
it('returns an array with two real roots when the discriminant is positive', () => {
|
||||
expect(quadraticRoots(1, -3, 2)).toEqual([2, 1])
|
||||
})
|
||||
it('returns an array with one real root when the discriminant is zero', () => {
|
||||
expect(quadraticRoots(1, -2, 1)).toEqual([1])
|
||||
})
|
||||
it('returns an empty array indicating no real roots when the discriminant is negative', () => {
|
||||
expect(quadraticRoots(1, 2, 5)).toEqual([])
|
||||
})
|
||||
})
|
Reference in New Issue
Block a user