`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
     *Note `uinv_as_power_series ureverse_inv_as_power_series':
     uinv_as_power_series ureverse_inv_as_power_series.

