|
D.4.9.1 fareypoly
Procedure from library ffmodstd.lib (see ffmodstd_lib).
- Usage:
- fareypoly(f, g[, m]); f poly, g poly, m int
- Return:
- a list l where r/t (r:=l[1], t:=l[2]) is a univariate rational function
such that r/t = g mod f, gcd(r,t)=gcd(f,t)=1 and deg(r) + deg(t) < deg(f)
- Note:
- An optional parameter m can be provided to define the way how t is normalized.
If m = 0 (default), then the leading coefficient of t is 1. Otherwise,
assuming the polynomial t has a non-zero constant term, the procedure
returns the uniquely determined rational function r/t where the constant term
in t is equal to 1.
If the ground ring has n variables and f and g are in a polynomial
ring k[var(i)] (k is a field) for some i<=n, then the function r/t is returned
as an element in k(var(i)).
In positive characteristic, the condition r/t = g mod f may not be satisfied.
The degree deg(f) of f must be higher than the degree deg(g) of g.
Example:
| LIB "ffmodstd.lib";
ring rr=23,x,dp;
poly g = 10x5-5x4+3x3+3x2-x-11;
poly f = x6+2x5-9x4+x3-9x2+7x+7;
fareypoly(g,f);
==> [1]:
==> -11x3-7x2-3x+6
==> [2]:
==> x-9
fareypoly(g,f,1);
==> [1]:
==> -9x3+11x2+8x+7
==> [2]:
==> 5x+1
ring R = 0, x,dp;
poly g = (24/1616615)*x6-(732/1616615)*x5+(9558/1616615)*x4-(14187/323323)*x3+
(1148101/1616615)*x2+(4089347/1616615)*x+547356/230945;
poly f = x7-28x6+322x5-1960x4+6769x3-13132x2+13068x-5040;
fareypoly(g,f);
==> [1]:
==> 1/2x3+9/2x2+17/2x+6
==> [2]:
==> x+5/2
fareypoly(g,f,1);
==> [1]:
==> 1/5x3+9/5x2+17/5x+12/5
==> [2]:
==> 2/5x+1
ring r = (499,a),x,dp;
number N = (-113a4+170a3-29a2+226a+222)/(a7-56a6+114a5+144a4+171a3-64a2+192a);
poly h1 = x4+(-55a5-18a4-141a3+233a2+66a-40)/(a4-28a3+40a2-2a+210)*x3;
poly h2 = (107a6-221a5-68a4-93a3+112a2-54a+216)/(a4-28a3+40a2-2a+210)*x2;
poly h3 = (-53a7+214a6+27a5+12a4+15a3+60a2-167a-83)/(a4-28a3+40a2-2a+210)*x;
poly h4 = (10a6-75a5+47a4+246a3-20a2-217a+196)/(a4-28a3+40a2-2a+210);
poly g = N*(h1+h2+h3+h4);
poly f = x5+(-2a-119)*x4+(a2+237a+3437)*x3+(-118a2-6756a-29401)*x2+
(3319a2+55483a+26082)*x+(-26082a2-26082a);
fareypoly(g,f);
==> [1]:
==> (a)*x+2
==> [2]:
==> x2-3*x+(a)
| See also:
farey;
polyInterpolation.
|