Google

Go to the first, previous, next, last section, table of contents.


udiv, urem, urembymul, urembymul_precomp, ugcd

udiv(p1,p2)
urem(p1,p2)
urembymul(p1,p2)
urembymul_precomp(p1,p2,inv)
ugcd(p1,p2)
:: Division and GCD for univariate polynomials.
return
univariate polynomial
p1,p2,inv
univariate polynomial
  • For univariate polynomials p1 and p2, there exist polynomials q and r such that p1=q*p2+r and the degree of r is less than that of p2. Then udiv returns q, urem and urembymul return r. ugcd returns the polynomial GCD of p1 and p2. These functions are specially tuned up for dense univariate polynomials. In urembymul the division by p2 is replaced with the inverse computation of p2 as a power series and two polynomial multiplications. It speeds up the computation when the degrees of inputs are large.
  • urembymul_precomp is efficient when one repeats divisions by a fixed polynomial. One has to compute the third argument by ureverse_inv_as_power_series().
[177] setmod_ff(2^160-47);
1461501637330902918203684832716283019655932542929
[178] A=randpoly_ff(200,x)$
[179] B=randpoly_ff(101,x)$
[180] cputime(1)$
0sec(1.597e-05sec)
[181] srem(A,B)$
0.15sec + gc : 0.15sec(0.3035sec)
[182] urem(A,B)$
0.11sec + gc : 0.12sec(0.2347sec)
[183] urembymul(A,B)$          
0.08sec + gc : 0.09sec(0.1651sec)
[184] R=ureverse_inv_as_power_series(B,101)$
0.04sec + gc : 0.03sec(0.063sec)
[185] urembymul_precomp(A,B,R)$             
0.03sec(0.02501sec)
References
section uinv_as_power_series, ureverse_inv_as_power_series.


Go to the first, previous, next, last section, table of contents.