Bill Allombert on Tue, 21 Jul 2026 15:28:55 +0200


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

New experimental GP function 'ellheegnertwist'


Dear PARI-dev,

I have added a new epxerimental GP function ellheegnertwist() that use a
different algorithm than ellheegner() which is faster for twists by large
discriminants.

For example:

? E=ellinit([-157^2,0])
%1 = [0,0,0,-24649,0,0,-49298,0,-607573201,1183152,0,958468597212736,1728,Vecsmall([1]),[Vecsmall([128,1])],[0,0,0,0,0,0,0,0]]
? ellheegnertwist(E)
%2 = [69648970982596494254458225/166136231668185267540804,538962435089604615078004307258785218335/67716816556077455999228495435742408]
  ***   last result computed in 66 ms.
? ellheegner(E)
%3 = [69648970982596494254458225/166136231668185267540804,538962435089604615078004307258785218335/67716816556077455999228495435742408]
  ***   last result computed in 1,061 ms.

? E=ellinit("27a1");F=elltwist(E,20021);
? P=ellheegnertwist(F)
%21 = [462187990027564409938776933325806377737105147957336077191871156878124463962918902563016358000576814943397231336390279192386124536425868730639914007186290620081019831068166263867981945812833149140119197664602721731118661665699433781287251876755814222583556420127440342825580039181092921111351777037931479629571365112249337050758109212137514616912663696620921833978606/11685042109023289191596196264504592197228063661878080714469694158113423484545027967807315972151592060981749708472443593613758724491690025811511364801234234321929192985835910335926046736171090875129716556249618017366376372920074586101125038061402391013025952837787121912043015365455677570343009773629076521562499495692508166729435580709556595541548295759730041225,111323521775789242158724078985053086733670587199039529222087684056561316902360587413295918275475517130266673982860608663733927825647634481667255041376372729015602613936595881109918184900566083037211983040392567061826848983983359616399226609523759084401485816732397609568209758916891185002464450780499877848598260610554630930727667745861300596854710428257785641802277926730855314673253091988221535923034473873413696967374162744740783541610210424098760270477699953864868327206851955530982784706205252258624726365063079857498000614929230760089101668121/39943436166501434119015890592043967309902015096760158561861855592653290984942914067741769192997689475680921473632379392923341338300662328635523138504343033417326094640248134627087912296576717811703717216248074739620060766658934687370625111958775979018341785578854041366449039557537231958779559806506633324862173291225324424149171306275017620875982889590673852993444174462479283005294225885311437140859929974511336390435910963806244783935253539896410641255442616765704908670280595179839757703691120104738483373922919495530988212950058987142875]
  ***   last result computed in 1,589 ms.

? E=ellinit("11a1");F=elltwist(E,11*9631);
? P=ellheegnertwist(F)

it take some time but then you get the origin of the point in the post
"Game: find the curve" (April 2024), see
https://pari.math.u-bordeaux.fr/archives/pari-users-2404/msg00006.html
? E=ellinit("11a1");F=elltwist(E,11*9631);
? P=ellheegnertwist(F);
  ***   last result: cpu time 8min, 22,937 ms, real time 44,093 ms.
? sizebyte(P)
%5 = 5856

Some inspiration for the algorithm:

Mock Heegner Points and Congruent Numbers
Paul Monsky
Mathematische Zeitschrift (1990) Volume: 204, Issue: 1, page 45-68
ISSN: 0025-5874; 1432-1823
https://gdz.sub.uni-goettingen.de/id/PPN266833020_0204
https://link.springer.com/article/10.1007/BF02570859

Regulators of rank one quadratic twists
Christophe Delaunay, Xavier-Francois Roblot
Journal de theorie des nombres de Bordeaux, Tome 20 (2008) no. 3, pp. 601-624
https://jtnb.centre-mersenne.org/item/10.5802/jtnb.643.pdf

and of course:
Computation of mock Heegner points on modular elliptic curves,
Andre Edward Robatino, Ph.D. Thesis

Many thanks to Randall Rathburn for preserving Robatino work for 20 years and bringing it
to our attention.

Cheers,
Bill and Henri.