Given a quadratic equation in the form **ax ^{2} + bx + c**, find roots of it.

**Examples Of Quadratic Equation:**

```
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.**

Here we discuss about following 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
```

Here implementation of above formula:

### Quadratic Equation To Find Roots Through C Program

/* C program to find roots of a quadratic equation */ #include <math.h> #include <stdio.h> #include <stdlib.h> // 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; // Function call findRoots(a, b, c); return 0; }

### Quadratic Equation To Find Roots Through C++ Program

/* C++ program to find roots of a quadratic equation */ #include <bits/stdc++.h> 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; // Function call findRoots(a, b, c); return 0; }

### Quadratic Equation To Find Roots Through Java Program

// 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.

## Python program to find roots of a Quadratic Equation:

# 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 # Function call findRoots(a, b, c) # This code is contributed by Sharad Bhardwaj.

### C# program to find roots of a quadratic equation:

// 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; // Function call obj.findRoots(a, b, c); } } // This code is contributed by nitin mittal.

### PHP program to find roots of a quadratic equation:

<?php // PHP program to find roots // of a quadratic equation // Prints roots of quadratic // equation ax*2 + bx + x function findRoots($a, $b, $c) { // If a is 0, then equation is // not quadratic, but linear if ($a == 0) { echo "Invalid"; return; } $d = $b * $b - 4 * $a * $c; $sqrt_val = sqrt(abs($d)); if ($d > 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 call findRoots($a, $b, $c); // This code is contributed // by nitin mittal. ?>

**Output:**

```
Roots are real and different
4.000000
3.000000
```

Please write comments if you find anything incorrect, or you want to share more information about the topic discussed above through **Whatsapp**.