curve.spad line 435 [edit on github]
Tools to send a point to infinity on an algebraic curve.
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 variable z = c1(x), t = y * c2(x), one gets f(x, y) = c1'(x)g(c1(x), c2(x)y) The algebraic relation between x and y is p(x, y) = 0. The algebraic relation between z and t is q(z, t) = 0.
chvar(lf, p) is like chvar(f, p) but handles list of functions
eval(p(x, y), f(x), g(x)) returns p(f(x), y * g(x)).
goodPoint([p1, ..., pn], q) returns an integer a such that a is neither a pole of for some pi(x, y)i nor a branch point of q(x, y) = 0.
mkIntegral(p(x, y)) returns [c(x), q(x, z)] such that z = c * y is integral. The algebraic relation between x and y is p(x, y) = 0. The algebraic relation between x and z is q(x, z) = 0.
radPoly(p(x, y)) returns [c(x), n] if p is of the form y^n - c(x), "failed" otherwise.
rootPoly(g, n) returns [m, c, P] such that c * g ^ (1/n) = P ^ (1/m) thus if y^n = g, then z^m = P where z = c * y.