Algorithms and Data Structures implemented in JavaScript for beginners, following best practices.
|
|
/**
|
||
|
|
* @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 }
|