Karim Belabas on Mon, 13 Nov 2017 23:31:19 +0100


[Date Prev] [Date Next] [Thread Prev] [Thread Next] [Date Index] [Thread Index]

Re: ellheight tutorial


* Bill Allombert [2017-11-13 21:45]:
> On Mon, Nov 13, 2017 at 09:30:41PM +0100, g hillartin wrote:
> > Since the rewriting of the ellheight0() function, the example at end of
> > p.27 of the Tutorial has become inadequate.
> > 
> > It should (at least) read:
> > 
> > hv = ellheightmatrix(e, v)
> > ...
> > perm = vecsort(vector(#v,i,i), (a,b) -> hv[a,a]>hv[b,b]);
> 
> rather
> perm = vecsort(vector(#v,i,i), (a,b) -> hv[a,a]-hv[b,b]);
> I think.

Here's a complete version, I'll fix the tutorial.

   e = ellinit([0,0,1,-7,6]) 
   v = List(); 
   for (x = -3, 1000, s = ellordinate(e,x); \
                      if (#s, listput(v, [x,s[1]])))
   v = Vec(v)
   hv = [ ellheight(e,P) | P <- v ]
   perm = vecsort(hv,,1)  \\ indirect sort
   v = vecextract(v, perm)

N.B. Note that, e.g. ellratpoints(e, 10) finds more points in a more natural
way and a fraction of the time; unfortunately, it finds both P and -P, which
requires some post processing compared to the above ... Here's a devious
possibility :

   v = ellratpoints(e, 10);   \\ naive height of x less than 10
   v = vecsort(v, (a,b)->a[1]!=b[1], 8)
   hv = [ ellheight(e,P) | P <- v ]
   perm = vecsort(hv,,1)  \\ indirect sort
   v = vecextract(v, perm)

In the comparison function, two points having the same x coordinate compare as
equal, else as a > b; the '8' flag keeps only one copy (the first one) of
"equal" entries...


Thanks for your report !

    K.B.
--
Karim Belabas, IMB (UMR 5251)  Tel: (+33) (0)5 40 00 26 17
Universite de Bordeaux         Fax: (+33) (0)5 40 00 21 23
351, cours de la Liberation    http://www.math.u-bordeaux.fr/~kbelabas/
F-33405 Talence (France)       http://pari.math.u-bordeaux.fr/  [PARI/GP]
`