Bill Allombert on Sat, 17 Dec 2016 15:46:53 +0100

 Re: Ratpoint

```On Sat, Dec 17, 2016 at 10:21:46AM +0100, Henri.Cohen@math.u-bordeaux.fr wrote:
> If you have it compiled in your directory, I have this very old script which
> may work (not tested in 5 years):
>
> ratpoints(Curve,bound=1024,flags="")=
> {
>   local(lc,infty);
>   lc = length(Curve);
>   if (lc<=1,error("The polynomial must have degree >=1"));
>   if (lc>=12,error("The polynomial must have degree <=10"));
>   Curve=concat(vector(lc,i,Str(Curve[lc+1-i]" ")));
>   Curve=extern(concat(["echo \\{\\[ 0; ratpoints '",Curve,"' ",bound," -q
> ",fla\
> gs," | sed -e 's/(\\([-/0-9]\\+\\) : \\([-/0-9]\\+\\))/,[\\1 ,\\2 ]/'; echo
> \\\
> ]\\}"]));
>   lc = length(Curve);
>   if(lc==1 || (lc==2 && Curve[2][2]==0),return([]));
>   infty= Curve[2][2]==0;
>   vector(lc-1-infty,i,Curve[i+1+infty][1]/Curve[i+1+infty][2])
> }

In that spirit, I use this one:

ratpoints(pol,lim:small=1,singlepoint=1)=
{
my(v=concat(apply(x->concat(x," "),Vecrev(pol))));
my(opt=if(singlepoint," -1",""));
my(e=externstr(Str("./ratpoints '",v,"' ",lim, " -q -i ",opt," | tr
'():' '[],'")));
my(L=apply(x->[x[1],x[2]]/x[3],eval(e)));
if(#L && singlepoint,L[1],L);
}

Cheers,
Bill.

```

• Follow-Ups:
• Re: Ratpoint
• From: Pascal Molin <molin@math.univ-paris-diderot.fr>
• References:
• Ratpoint
• From: Jenn Macleod <peediejenn@hotmail.com>
• Re: Ratpoint
• From: Henri.Cohen@math.u-bordeaux.fr