Loïc Grenié on Thu, 24 Oct 2013 09:16:43 +0200 |
[Date Prev] [Date Next] [Thread Prev] [Thread Next] [Date Index] [Thread Index]
Re: parallel pari: parfirst |
2013/10/23 Bill Allombert <Bill.Allombert@math.u-bordeaux1.fr>: > Hello PARI developers, > > I am experimenting with a new parallel primitive which is a kind of > parapply with early return: > > ?? parfirst(f, x, {&b}): > > Return the smallest index i such that f(x[i]) is non zero, or 0 if none. If > present, b is to f(x[i]). > > One example program: > > inline(chkell); > chkell(p)=a->my(E=ellinit([1,a],p));isprime(ellcard(E)); > ellp(p)=parfirst(chkell(p),[1..10000]); > > ellp(p) returns the smallest a>=1 such that the curve y^2=x^3+x+a has prime > order over F_p. A "parbreak()"-like would be a little bit more general. You add a conditional part to pareval pareval(vector(10000,i,chkell(p)),(i,r)->test(i,r))) where i is the input of the function called in parallel and r its output. Then test would return 0 (go on) or !0 (stop) (in your example, test(i,r)=r). test() is evaluated in the main pari, so it can use/modify global variables. Loïc