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;
}