# Does Solve[] find ALL the exact roots of rational polynomials?

Does Solve[] find ALL the exact roots of rational polynomials?

I've done a bunch of tests where I created an expression with some analytic roots, and Solve[] always found them all. But is the failure of Solve[] to find any analytic roots conclusive proof that none exist?

expr = (12 x - 29)*(31 x + 113)*(501 x - Prime)*(x^4 - 7 x^2 + 1001 x - 20)*(1001*x^5 + 47*x^4 + x^3 + 91*x^2 + 144 x - 1001) //Expand;
Solve[expr == 0, x]

• Maybe I'm misreading the question, but polynomials of degree > 1 always have a root (FTA). – Michael E2 May 2 '16 at 23:05
• @MichaelE2 I'm asking specifically about analytically expressible roots. All n roots of an n-th order polynomial are analytically expressible if n<5, but if n>=5, there might not be any analytical solutions. Solve[] leaves those solutions in Root[] form. – Jerry Guern May 2 '16 at 23:32
• @MichaelE2 For example, if you run Solve[Sum[x^n, {n, 0, 4}] + 1 == 0, x], you'll get analytical expressions for each of the four solutions, which are all irrational. If you change the 4 to a 5, you'll get none. – Jerry Guern May 2 '16 at 23:38
• By "analytically expressible", I take it you mean expressible "in terms of (only) radicals"? (That is, not just any exact analytic or symbolic expression.) – Michael E2 May 2 '16 at 23:39
• @MichaelE2 I don't believe polynomials have any exact solutions other than rational solutions and solutions in terms of radicals. – Jerry Guern May 2 '16 at 23:42

I guess the answer is "no," Solve does not always find solutions in terms of radicals when they exist.

Example: The polynomial $x^5 + 20 x^3 + 20 x^2 + 30 x + 10$ has root expressible in terms of radicals (see Wikipedia):

poly = x^5 + 20 x^3 + 20 x^2 + 30 x + 10;
x1 = 2^(1/5) - 2^(2/5) + 2^(3/5) - 2^(4/5);
poly /. x -> x1 // Simplify
(*  0  *)


But Solve returns only Root objects:

Solve[poly == 0, x]
(*
{{x -> Root[10 + 30 #1 + 20 #1^2 + 20 #1^3 + #1^5 &, 1]},
...,
{x -> Root[10 + 30 #1 + 20 #1^2 + 20 #1^3 + #1^5 &, 5]}}
*)


Applying ToRadicals does not convert Root to radicals. However all roots may be expressed in terms of radicals, as may be seen by executing the following:

deflation = PolynomialReduce[poly, {x - x1}, x][[1, 1]]
Solve[deflation == 0, x]
(* long expression in radicals omitted *)


They may be compared to the original Root objects with

(x /. Solve[poly == 0, x]) -
Join[{x1}, x /. Solve[deflation == 0, x]] // FullSimplify
(*  {0, 0, 0, 0, 0}  *)

• Thank you, even though I was hoping the answer would be yes. :-( – Jerry Guern May 3 '16 at 2:14
• In fact it's not trivial determining if a polynomial's root can even be expressed in terms of radicals. One needs to find its Galois group. See here. – Chip Hurst May 3 '16 at 2:31
• Here's a package to solve quintics in radicals (when possible). – Chip Hurst May 3 '16 at 2:35