Testing latest pari + WASM + node.js... and it works?! Wow.
License: GPL3
ubuntu2004
Function: ellisdivisible Section: elliptic_curves C-Name: ellisdivisible Prototype: lGGGD& Help: ellisdivisible(E,P,n,{&Q}): given E/K and P in E(K), checks whether P = [n]R for some R in E(K) and sets Q to one such R if so; the integer n >= 0 may be given as ellxn(E,n). Doc: given $E/K$ a number field and $P$ in $E(K)$ return $1$ if $P = [n]R$ for some $R$ in $E(K)$ and set $Q$ to one such $R$; and return $0$ otherwise. \bprog ? K = nfinit(polcyclo(11,t)); ? E = ellinit([0,-1,1,0,0], K); ? P = [0,0]; ? ellorder(E,P) %4 = 5 ? ellisdivisible(E,P,5, &Q) %5 = 1 ? lift(Q) %6 = [-t^7-t^6-t^5-t^4+1, -t^9-2*t^8-2*t^7-3*t^6-3*t^5-2*t^4-2*t^3-t^2-1] ? ellorder(E, Q) %7 = 25 @eprog\noindent We use a fast multimodular algorithm over $\Q$ whose complexity is essentially independent of $n$ (polynomial in $\log n$). Over number fields, we compute roots of division polynomials and the algebraic complexity of the underlying algorithm is in $O(p^4)$, where $p$ is the largest prime divisor of $n$. The integer $n \geq 0$ may be given as \kbd{ellxn(E,n)}, if many points need to be tested; this provides a modest speedup over number fields but is likely to slow down the algorithm over $\Q$.