ChangeOfVariable(F, UP, UPUP)¶
curve.spad line 438 [edit on github]
UPUP: UnivariatePolynomialCategory Fraction UP
Tools to send a point to infinity on an algebraic curve.
- chvar: (List UPUP, UPUP) -> Record(func: List UPUP, poly: UPUP, c1: Fraction UP, c2: Fraction UP, deg: NonNegativeInteger)
chvar(lf, p)is like chvar(f,p) but handles list of functions
- chvar: (UPUP, UPUP) -> Record(func: UPUP, poly: UPUP, c1: Fraction UP, c2: Fraction UP, deg: NonNegativeInteger)
chvar(f(x, y), p(x, y))returns[g(z, t), q(z, t), c1(x), c2(x), n]such that under the change of variablez = c1(x),t = y * c2(x), one getsf(x, y) = c1'(x)g(c1(x), c2(x)y)The algebraic relation betweenxandyisp(x, y) = 0. The algebraic relation betweenzandtisq(z, t) = 0.
- goodPoint: (List UPUP, UPUP) -> F
goodPoint([p1, ..., pn], q)returns an integer a such that a is neither a pole ofpi(x, y)for someinor a branch point ofq(x, y) = 0.
- mkIntegral: UPUP -> Record(coef: Fraction UP, poly: UPUP)
mkIntegral(p(x, y))returns[c(x), q(x, z)]such thatz = c * yis integral. The algebraic relation betweenxandyisp(x, y) = 0. The algebraic relation betweenxandzisq(x, z) = 0.
- radPoly: UPUP -> Union(Record(radicand: Fraction UP, deg: NonNegativeInteger), failed)
radPoly(p(x, y))returns[c(x), n]ifpis of the formy^n - c(x), “failed” otherwise.
- rootPoly: (Fraction UP, NonNegativeInteger) -> Record(exponent: NonNegativeInteger, coef: Fraction UP, radicand: UP)
rootPoly(g, n)returns[m, c, P]such thatc * g ^ (1/n) = P ^ (1/m)thus ify^n = g, thenz^m = Pwherez = c * y.