As an aside, before we continue this calculation, we should look at the definition of `resultant' and `discriminant', at least by example. For more details, see [, pages 215--218,].

Consider and . The
* Sylvester matrix* of these two polynomials is formed by
multiplying **p** by **1**, **x**, , and (up to but not including
the
degree of **q**) and multiplying **q** by **1**, **x**, and .
We write these polynomials in a list and extract the powers of **x**
to make a matrix-vector multiplication:

If there is an for which and
simultaneously, then where is a nonzero vector; hence we must have
. The determinant of this Sylvester matrix is called
the * resultant* of **p** and **q**. Obviously if
then **p** and **q** have no common factors.

There are more efficient ways to calculate the resultant than by forming this matrix and taking the determinant, but we do not go into this here.

A special resultant is the resultant of **p** and its derivative .
This is zero precisely when **p** has multiple roots. If the leading
coefficient of **p** is , then we call the
* discriminant* of **p**. Thus the discriminant of **p** is zero
precisely when **p** has multiple roots. See [3] for an
alternate definition of the discriminant, and see
[,21] for more details on resultant and
subresultant algorithms.

> resultant(r,diff(r,x),x); 6 5 4 - (54 - 5 a) (- 35189209313280 a + 33652683893404224 a + 1886180124890160 a 3 2 - 209011504196972565 a - 471232312731311670 a + 4546655486829256680 a - 4631307643210963968)As predicted, the resultant is times the discriminant (the leading coefficient of

> subs(a=54/5,d); 0 > subs(a=54/5,r); 5 3 2 99 x - 953/5 x - 540 xObviously

> s := op(3,d); 6 5 4 3 s := 3590369280 a - 3433596969024 a - 192447722160 a + 21325528435565 a 2 + 48080023745670 a - 463897100992680 a + 472534194797568 > alias(alpha=RootOf(",a)); I, alpha > subs(a=alpha,r); 5 3 2 3 54 - 5 alpha + 99 x - 61 x - 50 x alpha - 12 x alpha > factor("); 1/ 434335011757987604874272329184376961978030947623564519416229828656613135864308\ 752956350213721760394754865468750000 (16447668644949730454482015628495063022000 x < ******************* several lines omitted *******************> 4 + 164755474086118437520018618672953288000 x alpha 5 - 172059736910372892228371562063360000 x alpha ) ( - 106025442444446337510923924887466141694 + 78175831306266605050612247334033152250 x + 35413619863062503093930210102968692635 alpha 5 + 1373848354156543678262348056719360 alpha 4 - 1311525643882214281519944235336051008 alpha 3 - 2298604048311754686423673732876311984 alpha 2 + 1159110224678338909624328707418387601 alpha )^2And we see that if

A simpler way to see that:

> ralpha := subs(a=alpha,r); 5 3 2 3 ralpha := 54 - 5 alpha + 99 x - 61 x - 50 x alpha - 12 x alphaUnfortunately, a simple call to

`gcd`

won't work ---
we have to use `evala`

, which is the special `eval`

uation routine
for `a`

lgebraic numbers.
> evala(Gcd(ralpha,diff(ralpha,x))); 17670907074074389585153987481244356949 - -------------------------------------- + x 13029305217711100841768707889005525375 7082723972612500618786042020593738527 + -------------------------------------- alpha 15635166261253321010122449466806630450 45794945138551455942078268557312 5 + ------------------------------------- alpha 2605861043542220168353741577801105075 218587607313702380253324039222675168 4 - -------------------------------------- alpha 13029305217711100841768707889005525375 383100674718625781070612288812718664 3 - -------------------------------------- alpha 13029305217711100841768707889005525375 386370074892779636541442902472795867 2 + -------------------------------------- alpha 26058610435422201683537415778011050750The greatest common divisor of

Wed Feb 28 18:25:56 EST 1996