Testing latest pari + WASM + node.js... and it works?! Wow.
License: GPL3
ubuntu2004
Function: _diffptr
Class: gp2c_internal
Help: Table of difference of primes.
Description:
():bptr diffptr
Function: _forprime_next
Class: gp2c_internal
Help: Compute the next prime from the diffptr table.
Description:
(*small,*bptr):void NEXT_PRIME_VIADIFF($1, $2)
Function: _forprime_init
Class: gp2c_internal
Help: Initialize forprime_t.
Description:
(forprime,int,?int):void forprime_init(&$1, $2, $3);
Function: _forprime_next_
Class: gp2c_internal
Help: Compute the next prime.
Description:
(forprime):int forprime_next(&$1)
Function: _u_forprime_init
Class: gp2c_internal
Help: Initialize forprime_t (ulong version).
Description:
(forprime,small,):void u_forprime_init(&$1, $2, LONG_MAX);
(forprime,small,small):void u_forprime_init(&$1, $2, $3);
Function: _u_forprime_next
Class: gp2c_internal
Help: Compute the next prime (ulong version).
Description:
(forprime):small u_forprime_next(&$1)
Function: forprime
Section: programming/control
C-Name: forprime
Prototype: vV=GDGI
Help: forprime(p=a,{b},seq): the sequence is evaluated, p running over the
primes between a and b. Omitting b runs through primes >= a.
Iterator:
(*notype,small,small) (forprime, _u_forprime_init, _u_forprime_next)
(*notype,gen,gen,gen) (forprime, _forprime_init, _forprime_next_)
(*small,gen,?gen) (forprime, _u_forprime_init, _u_forprime_next)
(*int,gen,?gen) (forprime, _forprime_init, _forprime_next_)
(gen,gen,?gen) (forprime, _forprime_init, _forprime_next_)
Doc: evaluates \var{seq},
where the formal variable $p$ ranges over the prime numbers between the real
numbers $a$ to $b$, including $a$ and $b$ if they are prime. More precisely,
the value of
$p$ is incremented to \kbd{nextprime($p$ + 1)}, the smallest prime strictly
larger than $p$, at the end of each iteration. Nothing is done if $a>b$.
\bprog
? forprime(p = 4, 10, print(p))
5
7
@eprog\noindent Setting $b$ to \kbd{+oo} means we will run through all primes
$\geq a$, starting an infinite loop; it is expected that the caller will break
out of the loop itself at some point, using \kbd{break} or \kbd{return}.
Note that the value of $p$ cannot be modified within \var{seq}:
\bprog
? forprime(p = 2, 10, p = [])
*** at top-level: forprime(p=2,10,p=[])
*** ^---
*** prime index read-only: was changed to [].
@eprog