Related Articles

# Program to find the Roots of Quadratic equation

• Difficulty Level : Easy
• Last Updated : 28 Apr, 2021

Given a quadratic equation in the form ax2 + bx + c, find roots of it. Examples :

Input  :  a = 1, b = -2, c = 1
Output :  Roots are real and same
1

Input  :  a = 1, b = 7, c = 12
Output :  Roots are real and different
-3, -4

Input  :  a = 1, b = 1, c = 1
Output :  Roots are complex
-0.5 + i1.73205
-0.5 - i1.73205  

Below is the direct formula for finding roots of the quadratic equation. There are the following important cases.

If b*b < 4*a*c, then roots are complex
(not real).
For example roots of x2 + x + 1, roots are
-0.5 + i1.73205 and -0.5 - i1.73205

If b*b == 4*a*c, then roots are real
and both roots are same.
For example, roots of x2 - 2x + 1 are 1 and 1

If b*b > 4*a*c, then roots are real
and different.
For example, roots of x2 - 7x - 12 are 3 and 4

Below is the implementation of the above formula.

## C

 /* C program to find roots of a quadratic equation */#include #include #include  // Prints roots of quadratic equation ax*2 + bx + xvoid findRoots(int a, int b, int c){    // If a is 0, then equation is not quadratic, but    // linear    if (a == 0) {        printf("Invalid");        return;    }     int d = b * b - 4 * a * c;    double sqrt_val = sqrt(abs(d));     if (d > 0) {        printf("Roots are real and different \n");        printf("%f\n%f", (double)(-b + sqrt_val) / (2 * a),               (double)(-b - sqrt_val) / (2 * a));    }    else if (d == 0) {        printf("Roots are real and same \n");        printf("%f", -(double)b / (2 * a));    }    else // d < 0    {        printf("Roots are complex \n");        printf("%f + i%f\n%f - i%f", -(double)b / (2 * a),               sqrt_val/(2 * a), -(double)b / (2 * a), sqrt_val/(2 * a);    }} // Driver codeint main(){    int a = 1, b = -7, c = 12;       // Function call    findRoots(a, b, c);    return 0;}

## C++

 /* C++ program to find roots of a quadratic equation */#include using namespace std; // Prints roots of quadratic equation ax*2 + bx + xvoid findRoots(int a, int b, int c){    // If a is 0, then equation is not quadratic, but    // linear    if (a == 0) {        cout << "Invalid";        return;    }     int d = b * b - 4 * a * c;    double sqrt_val = sqrt(abs(d));     if (d > 0) {        cout << "Roots are real and different \n";        cout << (double)(-b + sqrt_val) / (2 * a) << "\n"             << (double)(-b - sqrt_val) / (2 * a);    }    else if (d == 0) {        cout << "Roots are real and same \n";        cout << -(double)b / (2 * a);    }    else // d < 0    {        cout << "Roots are complex \n";        cout << -(double)b / (2 * a) << " + i" << sqrt_val             << "\n"             << -(double)b / (2 * a) << " - i" << sqrt_val;    }} // Driver codeint main(){    int a = 1, b = -7, c = 12;       // Function call    findRoots(a, b, c);    return 0;}

## Java

 // Java program to find roots// of a quadratic equation import java.io.*;import static java.lang.Math.*;class Quadratic {     // Prints roots of quadratic    // equation ax * 2 + bx + x    static void findRoots(int a, int b, int c)    {        // If a is 0, then equation is not        // quadratic, but linear         if (a == 0) {            System.out.println("Invalid");            return;        }         int d = b * b - 4 * a * c;        double sqrt_val = sqrt(abs(d));         if (d > 0) {            System.out.println(                "Roots are real and different \n");             System.out.println(                (double)(-b + sqrt_val) / (2 * a) + "\n"                + (double)(-b - sqrt_val) / (2 * a));        }        else if (d == 0) {            System.out.println(                "Roots are real and same \n");             System.out.println(-(double)b / (2 * a) + "\n"                               + -(double)b / (2 * a));        }        else // d < 0        {            System.out.println("Roots are complex \n");             System.out.println(-(double)b / (2 * a) + " + i"                               + sqrt_val + "\n"                               + -(double)b / (2 * a)                               + " - i" + sqrt_val);        }    }     // Driver code    public static void main(String args[])    {         int a = 1, b = -7, c = 12;               // Function call        findRoots(a, b, c);    }} // This code is contributed by Sumit Kumar.

## Python3

 # Python program to find roots# of a quadratic equationimport math # Prints roots of quadratic equation# ax*2 + bx + x  def findRoots(a, b, c):     # If a is 0, then equation is    # not quadratic, but linear    if a == 0:        print("Invalid")        return -1    d = b * b - 4 * a * c    sqrt_val = math.sqrt(abs(d))     if d > 0:        print("Roots are real and different ")        print((-b + sqrt_val)/(2 * a))        print((-b - sqrt_val)/(2 * a))    elif d == 0:        print("Roots are real and same")        print(-b / (2*a))    else:  # d<0        print("Roots are complex")        print(- b / (2*a), " + i", sqrt_val)        print(- b / (2*a), " - i", sqrt_val)  # Driver Programa = 1b = -7c = 12 # Function callfindRoots(a, b, c) # This code is contributed by Sharad Bhardwaj.

## C#

 // C# program to find roots// of a quadratic equationusing System; class Quadratic {     // Prints roots of quadratic    // equation ax * 2 + bx + x    void findRoots(int a, int b, int c)    {         // If a is 0, then equation is        // not quadratic, but linear         if (a == 0) {            Console.Write("Invalid");            return;        }         int d = b * b - 4 * a * c;        double sqrt_val = Math.Abs(d);         if (d > 0) {            Console.Write(                "Roots are real and different \n");             Console.Write(                (double)(-b + sqrt_val) / (2 * a) + "\n"                + (double)(-b - sqrt_val) / (2 * a));        }         // d < 0        else {            Console.Write("Roots are complex \n");             Console.Write(-(double)b / (2 * a) + " + i"                          + sqrt_val + "\n"                          + -(double)b / (2 * a) + " - i"                          + sqrt_val);        }    }     // Driver code    public static void Main()    {        Quadratic obj = new Quadratic();        int a = 1, b = -7, c = 12;               // Function call        obj.findRoots(a, b, c);    }} // This code is contributed by nitin mittal.

## PHP

  0)    {        echo "Roots are real and ".                    "different \n";        echo (-$b + $sqrt_val) / (2 * $a) , "\n", (-$b - $sqrt_val) / (2 * $a);    }    else if ($d == 0) { echo "Roots are real and same \n"; echo -$b / (2 * $a); }   // d < 0 else { echo "Roots are complex \n"; echo -$b / (2 * $a) , " + i" , $sqrt_val, "\n" , -$b / (2 * $a),                             " - i", $sqrt_val; }} // Driver code$a = 1; $b = -7 ;$c = 12; // Function callfindRoots($a, $b, \$c); // This code is contributed// by nitin mittal.?>

## Javascript

 
Output
Roots are real and different
4.000000
3.000000