# Absolute difference between sum and product of roots of a quartic equation

Given a quartic equation in the form , determine the absolute difference between the sum of its roots and the product of its roots. Note that roots need not be real – they can also be complex.

Examples:

```Input: 4x^4 + 3x^3 + 2x^2 + x - 1
Output: 0.5

Input: x^4 + 4x^3 + 6x^2 + 4x + 1
Output: 5
```

## Recommended: Please try your approach on {IDE} first, before moving on to the solution.

Approach: Solving the quartic equation to obtain each individual root would be time-consuming and inefficient, and would require much effort and computational power. A more efficient solution utilises the following formulae:

```The quartic always has sum of roots ,
and product of roots . ```

Hence by computing we find the absolute difference between sum and product of roots.

Below is the implementation of above approach:

## C++

 `// C++ implementation of above approach  ` `#include   ` `using` `namespace` `std;  ` ` `  `// Function taking coefficient of  ` `// each term of equation as input  ` `double` `sumProductDifference(``int` `a, ``int` `b,  ` `                            ``int` `c, ``int` `d, ` `                            ``int` `e)  ` `{  ` `    ``// Finding sum of roots  ` `    ``double` `rootSum = (``double``)(-1 * b) / a;  ` ` `  `    ``// Finding product of roots  ` `    ``double` `rootProduct = (``double``) e / a;  ` `     `  `    ``// Absolute difference  ` `    ``return` `abs``(rootSum - rootProduct);  ` `}  ` ` `  `// Driver code  ` `int` `main()  ` `{  ` `    ``cout << sumProductDifference(8, 4, 6, 4, 1); ` `     `  `    ``return` `0;  ` `}  ` ` `  `// This code is contributed  ` `// by ANKITRAI1 `

## Java

 `// Java implementation of above approach  ` ` `  `public` `class` `GFG { ` `    ``// Function taking coefficient of ` `    ``// each term of equation as input ` `    ``static` `double` `sumProductDifference(``int` `a, ``int` `b, ``int` `c, ``int` `d, ``int` `e) { ` `        ``// Finding sum of roots ` `        ``double` `rootSum = (``double``)(-``1` `* b) / a; ` ` `  `        ``// Finding product of roots ` `        ``double` `rootProduct = (``double``) e / a; ` `         `  `        ``// Absolute difference ` `        ``return` `Math.abs(rootSum - rootProduct); ` `    ``} ` ` `  `    ``// Driver Code ` `    ``public` `static` `void` `main(String args[]) { ` `        ``System.out.println(sumProductDifference(``8``, ``4``, ``6``, ``4``, ``1``)); ` `    ``} ` `} `

## Python3

 `# Python implementation of above approach ` ` `  `# Function taking coefficient of  ` `# each term of equation as input ` `def` `sumProductDifference(a, b, c, d, e): ` ` `  `    ``# Finding sum of roots ` `    ``rootSum ``=` `(``-``1` `*` `b)``/``a  ` ` `  `    ``# Finding product of roots ` `    ``rootProduct ``=` `e ``/` `a  ` ` `  `    ``# Absolute difference ` `    ``return` `abs``(rootSum``-``rootProduct)  ` ` `  `print``(sumProductDifference(``8``, ``4``, ``6``, ``4``, ``1``)) `

## C#

 `// C# implementation of above approach  ` `using` `System; ` ` `  `class` `GFG ` `{ ` `// Function taking coefficient of ` `// each term of equation as input ` `static` `double` `sumProductDifference(``int` `a, ``int` `b, ` `                                   ``int` `c, ``int` `d,  ` `                                   ``int` `e)  ` `{ ` `    ``// Finding sum of roots ` `    ``double` `rootSum = (``double``)(-1 * b) / a; ` ` `  `    ``// Finding product of roots ` `    ``double` `rootProduct = (``double``) e / a; ` `     `  `    ``// Absolute difference ` `    ``return` `Math.Abs(rootSum - rootProduct); ` `} ` ` `  `// Driver Code ` `public` `static` `void` `Main()  ` `{ ` `    ``Console.Write(sumProductDifference(8, 4, 6, 4, 1)); ` `} ` `} ` ` `  `// This code is contributed  ` `// by ChitraNayal `

## PHP

 ` `

Output:

```0.625
```

Explanation: The input equation is .

By finding , we get ,

which is , or .

My Personal Notes arrow_drop_up Check out this Author's contributed articles.

If you like GeeksforGeeks and would like to contribute, you can also write an article using contribute.geeksforgeeks.org or mail your article to contribute@geeksforgeeks.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.

Please Improve this article if you find anything incorrect by clicking on the "Improve Article" button below.