| 
	Bill Allombert on Sat, 02 Mar 2024 16:05:30 +0100
	 | 
[Date Prev] [Date Next] [Thread Prev] [Thread Next] [Date Index] [Thread Index]
	
- To: pari-users@pari.math.u-bordeaux.fr
 
- Subject: Re: a hopeful request
 
- From: Bill Allombert <Bill.Allombert@math.u-bordeaux.fr>
 
- Date: Sat, 2 Mar 2024 16:05:06 +0100
 
- Arc-authentication-results: i=1; smail; arc=none
 
- Arc-message-signature: i=1; a=rsa-sha256; d=math.u-bordeaux.fr; s=openarc;	t=1709391909; c=relaxed/relaxed;	bh=yqputPA9zwYksBL+PfFvLcqsu7sZSBsx/RCfrFwuKfo=;	h=DKIM-Signature:Date:From:To:Subject:Message-ID:Mail-Followup-To:	 References:MIME-Version:Content-Type:Content-Disposition:	 In-Reply-To; b=ZMjPBn6H8kAuPwB4IKt6tKMI0ohjxUeGCRxo6bSuiWROS7+YZJCf1yOFVoc7/nsIVf0Wf0oLl3gMK38dtq+cxQHB1uBlbpCuOFIK6dZ3MulYGnD9qu/dSJ8chxOzSzaer39zXbWFT3by0Vt8JF/VTYW4OCuNvKy6cBN/LbmMb1pw+jjiCYi9UUzul0PVin5+n9sD98J52LoEqHwDZ08RwlqDu4i+cEmTvv6ZLWkRdPMrvrARj6GdMnfRoapo1U6Bx6pjA9YDAckpkcMqvIywr2AoIabNDeXBjQyvV0RXxOdYfVzz3giDBcf2AkdSvjPCKNUpC2PT+aZvI7/OMnc/967EfR5g/BR9r76yrH2nkRY+8uWKOXQP4cEvXP4z6WFjHXHwaec7MyDfbpGzNnbEiz0Hu5y90JVAj0emts16off/t8kzJdbXpxJcCrz1Zaot8lHJctVEAQWBO9iNqsg8WW3yG3KlfeCPdiLKzWtWHFjRIi8DnDdQb0Xv/SE29wLaVwTUoLMvCvHrWjgIhbSN35N2u4eqHIhQO5xKZ8sdIV50s8v3ZxGpwHKi34uEgPa6NzptrzrK20J3HoC1G7EgzwE12sIuto4BWpvQ6LHyWY2aNjJ1DBimC34H3gEixbs3ln38bMwYCb+nopsJKVEZIoYGGsGBDWPPnex+nQWUt0I=
 
- Arc-seal: i=1; a=rsa-sha256; d=math.u-bordeaux.fr; s=openarc; t=1709391909;	cv=none; b=k8xIblNGv5z58ZNzNfThlyh+kKYGPjxpVg+lNYOqXOaVMOGFMekCJIcYIHYXj5dW5TmXsxVfBuF7yQr70wvUWO2F4MsjA8qYrO31NyYwyoiHXffjLvymxWD2ewP6Twe7LEaqu2LLl0Enosx9u51A76QB/ii8IJPJHbgcNAxsRN2Ixi5fOaXUpHpYghGq0NxO4zf4G9enzEpUz1J2rzikWiLpSLtlJUayUi0Cv93bDT/p+uG8S66G8X6SJ2rtF/8yzFxcfmdURC8m1/A7mZWRaum1I6Sb3ThU3qxN8lJRazHYs+LzSLRJPIpBl7OXggMmL/v8dgxLZexH14oaJrM2g182mXtosjGWzqNK5BX0Gvzf25mW2KoHo2Ps4g378KIld2k5ugTOjNKFSxAJHDLIjYK6gjX0yrJs7MC7aejDuqYUJ18tkboF/4BjD0Z3jmVkHOIMldQTXG10m164h/TMZ4j2HsfG9ZmiYvTyM1zlhcu/U6aJQyhSoXKFn0ATPStshzKGFcaa4u92UXgcIq//vKtiQjVOuB4ASwuLrAR4BFeeHFN5GRCTmrkrwvLqKC+eVfhx+945wbAKbk28itck3mSBzTP79MR/szviCmZR5VKSKqMU1zLRxSUhk0F0/t5HaV4l4DswUBP5C2OWBm/UmVj/AmVyOzsu4Je0Oma0kDA=
 
- Authentication-results: smail; dmarc=none header.from=math.u-bordeaux.fr
 
- Authentication-results: smail; arc=none
 
- Delivery-date: Sat, 02 Mar 2024 16:05:30 +0100
 
- Dkim-signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=math.u-bordeaux.fr;	s=2022; t=1709391909;	bh=yqputPA9zwYksBL+PfFvLcqsu7sZSBsx/RCfrFwuKfo=;	h=Date:From:To:Subject:References:In-Reply-To:From;	b=s044eZyIoeVAD3ar0YTFoaxq1MyfdbuAfVu3wHsV2bdz1a7DjuGUHihIpnB6fdGyP	 npkkUv3y2UPrHhKQYkax4XgWidPY8gXOr7uw1Ewxq0K6qdOdF5E80Hmk4LI1ZNDekO	 Z+M9EzYUq/LWICNEUYV4LhM1tRWmxYFeOtA9PO3TFPaNhSSufiwLLwAEMm8jKSleAQ	 1M7FWJ/EiSQ1dU1bV5LjQPTutgYxG3WPxKanryElgq4bRGvTbq2baslog77hdJiUJi	 0QupKCHF2hmcK1wb9gW1l6zGpQJJNPnnJwWLiyoglCVxtxDiGc9jXDS6Tj71cVUneC	 rUjn7G3GzXaaqZf439bCr2ZSYzRWjw+LCWam5vZba9bdEqBA5msFKpuwp7vZ+CeAVg	 FX022o2eVmEXjORsyUXdjudnhFOwZv6M11hEZonVb8tNhB5GVg1RqZesaHvyZIVGh3	 PP1UZZ8N+jxYjjxeNzM5EagD4d9RmO40fAZpl2csvblIiSEvgw96QbjKbyUUeFWTp9	 THwtVaUGgD1+RTE+WKjIS9cvXk87v2kORLwI8VsKTZxzHnFpcX1hVWU59X7GuWEBtV	 tv4DtXjm2pQXAka6KcwrW7DzGfS1mbFQzI5xyEqVikN5Rqkpq98EAUBOddkXBJ+A64	 yQ2guAMzE/ZNczAzacreVqEM=
 
- In-reply-to: <CAD0p0K74Tx6kQwHL7YQQ9G-0WhRzk1kXGe=SBaDCA0ru53h9fQ@mail.gmail.com>
 
- Mail-followup-to: pari-users@pari.math.u-bordeaux.fr
 
- References: <5f97c3ff-69be-4d0b-9b26-8cbc450419e8@gmail.com> <CAD0p0K74Tx6kQwHL7YQQ9G-0WhRzk1kXGe=SBaDCA0ru53h9fQ@mail.gmail.com>
 
On Sat, Mar 02, 2024 at 09:19:14AM +0000, John Cremona wrote:
> Randall, the formulas for this are in my book. I'm sure Bill must have
> implemented them in libpari, but they are possibly not yet exposed as GP
> functions.
Indeed, I have a GP script implementing the formula from your book.
There is only one thing that I am not sure how to do best:
the reverse (one-to-many) mapping from the curve to the quartic.
Cheers,
Bill
red(q)=q/core(content(q),1)[2]^2
quartic_IJ(g)=
{
  my([a,b,c,d,e]=Vec(g));
  my(ae = a*e, bd = b*d, c2 = c^2, d2=d^2, b2 = b^2);
  my(iI = 12*ae - 3*bd + c2);
  my(iJ = (72*ae  + 9*bd - 2*c2)*c  - 27*a*d2 - 27*b2*e);
  [iI,iJ];
}
IJ_to_ell(V)= ellinit(-27*V);
quartic_to_ell(g)=IJ_to_ell(quartic_IJ(g));
quartic_disc(g)=
{
  my([iI,iJ]=quartic_IJ(g));
  4*iI^3-iJ^2
}
quartic_hessian(g)=
{
  my([A,B,C,D,E]=Vec(g));
  Pol([(3*B^2 - 8*A*C), (4*B*C - 24*A*D), (4*C^2 - 6*B*D - 48*A*E), (4*C*D - 24*B*E), 3*D^2 - 8*C*E]);
}
quartic_GH(g)=
{
  my([iI,iJ]=quartic_IJ(g));
  my(hdd = quartic_hessian(g)'');
  my(Gdd = (4*phi*g'' + hdd)/3);
  my(H = Gdd/12+2/9*(iI-phi^2));
  [G,H]
}
quartic_bracket(g1,g2)=
{
  my(h1=quartic_hessian(g1),h2=quartic_hessian(g2));
  g1*subst(h2,x,y)-subst(g2,x,y)*h1;
}
quartic_isom(g1, g2)=
{
  my(b = quartic_bracket(g1,g2));
  my(S=select(f->poldegree(f)==1,factor(b)[,1]));
  if (#S==0, return(0));
  my([a,b,c,d]=concat([Vecrev(simplify(x),2)|x<-Vecrev(S[1],2)]));
  [-c,-a;d,b];
}
app(Q,m)=
{
  my([u,M]=m);
  subst(Q,x,(M[1,1]*x+M[1,2])/(M[2,1]*x+M[2,2]))*(M[2,1]*x+M[2,2])^4/u^2
}
quartic_pol(g)=
{
  my([iI,iJ]=quartic_IJ(g));
  x^3-3*iI*x+iJ;
}
quartic_cubic(g,phi)=
{
  my([iI,iJ]=quartic_IJ(g));
  my([a,b,c,d,e]=Vec(g));
  (4*a*phi+3*b^2-8*a*c)/3*Mod(1,phi^3-3*iI*phi+iJ);
}
elltocover(C,P)=
{
  my([Q,F]=C,S,T,A);
  F = subst([F[1]*'y^2,F[2]*'y^3],'x,'X); Q=subst(Q,'x,'X);
  S = simplify((F[1]-P[1]*Q)%('y^2-Q));
  T = simplify(F[2]%('y^2-Q));
  A=apply(x->[x,if(1,my(R=subst(T-P[2]*'y*Q,'X,x));-polcoeff(R,0)/polcoeff(R,1))],nfroots(,S));
  if (poldegree(S)<4, my(R=T-P[2]*'y*Q, Y = -pollead(polcoeff(R,0))/pollead(polcoeff(R,1)));
    A=concat(A,[[1,Y,0]]));
  A;
}