# Program To Find The Roots Of Quadratic equation

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

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

import java.io.*;
import static java.lang.Math.*;

// equation ax * 2 + bx + x
static void findRoots(int a, int b, int c)
{
// If a is 0, then equation is not

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
import math

# Prints roots of quadratic equation
# ax*2 + bx + x

def findRoots(a, b, c):

# If a is 0, then equation is
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
using System;

// equation ax * 2 + bx + x
void findRoots(int a, int b, int c)
{

// If a is 0, then equation is

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()
{
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

// equation ax*2 + bx + x
function findRoots(\$a, \$b, \$c)
{
// If a is 0, then equation is
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`````` 