| Phil Carmody on Wed, 16 Apr 2008 11:15:42 +0200 |
[Date Prev] [Date Next] [Thread Prev] [Thread Next] [Date Index] [Thread Index]
| poldisc shortcut known but not used |
It appears that this is well known:
> There's more than one way to calculate a polynomial
> discriminant. It
> turns out that when the coefficients are ugly multivariate
> (but exact)
> expressions, one of the polresultant() algorithms is much
> faster.
> Says so right in the manual! For a monic polynomial px of
> degree m,
> poldisc(px) and polresultant(px,deriv(px)) differ formally
> by a factor
> of (-1)^(m(m-1)/2). Dragging out the old chestnut
> polynomial shows
> that the manual wasn't kidding about the other
> algorithm being faster:
>
> ? px=x^10 + (2*B*u + (2*A + 4*B))*x^9 + (9*A*u + (9*A +
> (9*B -
> 45)))*x^8 + ((-24*A - 120)*u + (-24*A + (-24*B - 120)))*x^7
> + ((-42*B
> + 210)*u + (-42*A + (-84*B + 210)))*x^6 + 252*x^5 + (42*B*u
> + (42*A +
> 84*B))*x^4 + (24*A*u + (24*A + (24*B - 120)))*x^3 + ((-9*A
> - 45)*u +
> (-9*A + (-9*B - 45)))*x^2 + ((-2*B + 10)*u + (-2*A + (-4*B
> + 10)))*x +
> 1;
> time = 0 ms.
> ? disc1=poldisc(px);
> time = 46,859 ms.
> ? disc2=-polresultant(px,deriv(px),x,2);\\Factor of -1 is (-1)^(10*9/2)
> time = 10,475 ms.
> ? disc1==disc2
> time = 0 ms.
> %4 = 1
Is there any reason why this case can't be detected automatically, and the shortcut used internally?
Phil
____________________________________________________________________________________
Be a better friend, newshound, and
know-it-all with Yahoo! Mobile. Try it now. http://mobile.yahoo.com/;_ylt=Ahu06i62sR8HDtDypao8Wcj9tAcJ