Testing latest pari + WASM + node.js... and it works?! Wow.
License: GPL3
ubuntu2004
Function: lift Section: conversions C-Name: lift0 Prototype: GDn Help: lift(x,{v}): if v is omitted, lifts elements of Z/nZ to Z, of Qp to Q, and of K[x]/(P) to K[x]. Otherwise lift only polmods with main variable v. Description: (pol):pol lift($1) (vec):vec lift($1) (gen):gen lift($1) (pol, var):pol lift0($1, $2) (vec, var):vec lift0($1, $2) (gen, var):gen lift0($1, $2) Doc: if $v$ is omitted, lifts intmods from $\Z/n\Z$ in $\Z$, $p$-adics from $\Q_p$ to $\Q$ (as \tet{truncate}), and polmods to polynomials. Otherwise, lifts only polmods whose modulus has main variable~$v$. \typ{FFELT} are not lifted, nor are List elements: you may convert the latter to vectors first, or use \kbd{apply(lift,L)}. More generally, components for which such lifts are meaningless (e.g. character strings) are copied verbatim. \bprog ? lift(Mod(5,3)) %1 = 2 ? lift(3 + O(3^9)) %2 = 3 ? lift(Mod(x,x^2+1)) %3 = x ? lift(Mod(x,x^2+1)) %4 = x @eprog Lifts are performed recursively on an object components, but only by \emph{one level}: once a \typ{POLMOD} is lifted, the components of the result are \emph{not} lifted further. \bprog ? lift(x * Mod(1,3) + Mod(2,3)) %4 = x + 2 ? lift(x * Mod(y,y^2+1) + Mod(2,3)) %5 = y*x + Mod(2, 3) \\@com do you understand this one? ? lift(x * Mod(y,y^2+1) + Mod(2,3), 'x) %6 = Mod(y, y^2 + 1)*x + Mod(Mod(2, 3), y^2 + 1) ? lift(%, y) %7 = y*x + Mod(2, 3) @eprog\noindent To recursively lift all components not only by one level, but as long as possible, use \kbd{liftall}. To lift only \typ{INTMOD}s and \typ{PADIC}s components, use \tet{liftint}. To lift only \typ{POLMOD}s components, use \tet{liftpol}. Finally, \tet{centerlift} allows to lift \typ{INTMOD}s and \typ{PADIC}s using centered residues (lift of smallest absolute value). Variant: Also available is \fun{GEN}{lift}{GEN x} corresponding to \kbd{lift0(x,-1)}.