# 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
```

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 "````); ` `        ``printf``(````"%f %f"````,(``double``)(-b + sqrt_val)/(2*a) ` `            ``, (``double``)(-b - sqrt_val)/(2*a)); ` `    ``} ` `    ``else` `if` `(d == 0) ` `    ``{ ` `        ``printf``(````"Roots are real and same "````); ` `        ``printf``(``"%f"``,-(``double``)b / (2*a)); ` `    ``} ` `    ``else` `// d < 0 ` `    ``{ ` `        ``printf``(````"Roots are complex "````); ` `        ``printf``(````"%f + i%f %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 "````; ` `         ``cout << (``double``)(-b + sqrt_val)/(2*a) << ````" "``` `              ``<< (``double``)(-b - sqrt_val)/(2*a); ` `     ``} ` `     ``else` `if` `(d == 0) ` `     ``{ ` `         ``cout << ````"Roots are real and same "````; ` `         ``cout << -(``double``)b / (2*a); ` `     ``} ` `     ``else` `// d < 0 ` `     ``{ ` `         ``cout << ````"Roots are complex "````; ` `         ``cout << -(``double``)b / (2*a) << ``" + i"` `<< sqrt_val ` `              ``<< ````" "```  `<< -(``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 "````); ` ` `  `        ``System.out.println((``double``)(-b + sqrt_val) / (``2` `* a) + ````" "```  `                            ``+ (``double``)(-b - sqrt_val) / (``2` `* a)); ` `     ``} ` `     ``else` `// d < 0 ` `     ``{ ` `        ``System.out.println(````"Roots are complex "````); ` ` `  `        ``System.out.println( -(``double``)b / ( ``2` `* a ) + ``" + i"`  `                          ``+ sqrt_val + ````" "```  `+ -(``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. `

/div>

## 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 "````); ` ` `  `        ``Console.Write((``double``)(-b + sqrt_val) /  ` `                      ``(2 * a) + ````" "```    `+ (``double``) ` `                      ``(-b - sqrt_val) / (2 * a)); ` `    ``} ` `     `  `    ``// d < 0 ` `    ``else`  `    ``{ ` `        ``Console.Write(````"Roots are complex "````); ` ` `  `        ``Console.Write( -(``double``)b / ( 2 * a ) +  ` `                    ``" + i"` `+ sqrt_val + ````" "```  `+  ` `                       ``-(``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 "````; ` `        ``echo` `(-``\$b` `+ ``\$sqrt_val``) / (2 * ``\$a``) , ````" "````,  ` `             ``(-``\$b` `- ``\$sqrt_val``) / (2 * ``\$a``); ` `    ``} ` `    ``else` `if` `(``\$d` `== 0) ` `    ``{ ` `        ``echo` ```"Roots are real and same "````; ` `        ``echo` `-``\$b` `/ (2 * ``\$a``); ` `    ``} ` `     `  `    ``// d < 0 ` `    ``else`  `    ``{ ` `        ``echo` ```"Roots are complex "````; ` `        ``echo` `-``\$b` `/ (2 * ``\$a``) , ``" + i"` `,  ` `              ``\$sqrt_val``, ````" "``` `, -``\$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```

## tags:

Mathematical Mathematical