Testing latest pari + WASM + node.js... and it works?! Wow.
License: GPL3
ubuntu2004
Function: fflog
Section: number_theoretical
C-Name: fflog
Prototype: GGDG
Help: fflog(x,g,{o}): return the discrete logarithm of the finite field
element x in base g. If present, o must represent the multiplicative
order of g. If no o is given, assume that g is a primitive root.
Doc: discrete logarithm of the finite field element $x$ in base $g$,
i.e.~an $e$ in $\Z$ such that $g^e = o$. If
present, $o$ represents the multiplicative order of $g$, see
\secref{se:DLfun}; the preferred format for
this parameter is \kbd{[ord, factor(ord)]}, where \kbd{ord} is the
order of $g$. It may be set as a side effect of calling \tet{ffprimroot}.
The result is undefined if $e$ does not exist. This function uses
\item a combination of generic discrete log algorithms (see \tet{znlog})
\item a cubic sieve index calculus algorithm for large fields of degree at
least $5$.
\item Coppersmith's algorithm for fields of characteristic at most $5$.
\bprog
? t = ffgen(ffinit(7,5));
? o = fforder(t)
%2 = 5602 \\@com \emph{not} a primitive root.
? fflog(t^10,t)
%3 = 10
? fflog(t^10,t, o)
%4 = 10
? g = ffprimroot(t, &o);
? o \\ order is 16806, bundled with its factorization matrix
%6 = [16806, [2, 1; 3, 1; 2801, 1]]
? fforder(g, o)
%7 = 16806
? fflog(g^10000, g, o)
%8 = 10000
@eprog
Function: _Flxq_log_Coppersmith_worker
C-Name: Flxq_log_Coppersmith_worker
Prototype: GLGG
Section: programming/internals
Help: Flxq_log_Coppersmith_worker: worker for Flxq_log_Coppersmith
Function: _F2xq_log_Coppersmith_worker
C-Name: F2xq_log_Coppersmith_worker
Prototype: GLGG
Section: programming/internals
Help: F2xq_log_Coppersmith_worker: worker for F2xq_log_Coppersmith
Function: _Fp_log_sieve_worker
C-Name: Fp_log_sieve_worker
Prototype: LLGGGGGG
Section: programming/internals
Help: Fp_log_sieve_worker: worker for Fp_log_sieve