Function: ellchangepointinv
Section: elliptic_curves
C-Name: ellchangepointinv0
Prototype: GGDG
Help: ellchangepointinv(E,x,v): change data on point or vector of points x on an
 elliptic curve according to v=[u,r,s,t], inverse of ellchangepoint.
Doc:
 changes the coordinates of the point or vector of points $x$ on $E$ using
 the inverse of the isomorphism attached to \kbd{v=[u,r,s,t]},
 i.e.~if $x'$ and $y'$ are the old coordinates, then $x=u^{2}x'+r$,
 $y=u^{3}y'+su^{2}x'+t$ (inverse of \kbd{ellchangepoint}).
 \bprog
 ? E0 = ellinit([1,1]); P0 = [0,1]; v = [1,2,3,4];
 ? E = ellchangecurve(E0, v);
 ? P = ellchangepoint(P0,v)
 %3 = [-2, 3]
 ? ellisoncurve(E, P)
 %4 = 1
 ? ellchangepointinv(E,P,v)
 %5 = [0, 1]  \\ we get back P0
 @eprog
Variant: The curve is needed to
 identify the domain over which operations are performed. When $v$ and $x$ are
 defined over a simple domain which can be infered from the coordinates (e.g.,
 a finite field or the rationals), so that generic arithmetic operations
 (\kbd{gadd}, \kbd{gmul}, etc.) apply directly, then the elliptic curve is not
 needed: one may then use \fun{GEN}{ellchangepointinv}{GEN x, GEN ch}.
