# Program to find the Roots of Quadratic equation

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


## Recommended: Please solve it on “PRACTICE” first, before moving on to the solution.

Below is direct formula for finding roots of quadratic equation. There are 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 above formula.

## C

 /* C program to find roots of a quadratic equation */ #include  #include  #include        // 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)      {          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              ,-(double)b / (2*a), sqrt_val);      }  }     // Driver code  int main()  {      int a = 1, b = -7, c = 12;      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 + x  void 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 code  int main()  {      int a = 1, b = -7, c = 12;      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      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 // 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[])      {         Quadratic obj = new Quadratic();         int a = 1, b = -7, c = 12;         obj.findRoots(a, b, c);      }  }     //This code is contributed by Anshika Goyal.

## Python3

 # Python program to find roots  # of a quadratic equation  import 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 Program  a = 1 b = -7 c = 12 findRoots(a, b, c)     # This code is contributed by Sharad Bhardwaj.

## C#

 // C# program to find roots   // of a quadratic equation   using 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;      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;  findRoots($a, $b, \$c);     // This code is contributed  // by nitin mittal.  ?>

Output :

Roots are real and different
4
3