\\ This will compute the Igusa invariants for a curve in Rosenhain \\ normal form. That is, given l1, l2 and l3 find the Igusa invariants \\ for the curve \\ y^2 = x*(x-1)*(x - l1)*(x - l2)*(x - l3) lambda2igusa(l1,l2,l3) = igusainv2(1,0,l1,l2,l3); \\ This will compute the Igusa invariants of the curve \\ y^2 = a0*x^6+a1*x^5+a2*x^4+a3*x^3+a4*x^2+a5*x+a6 igusainv(a0,a1,a2,a3,a4,a5,a6) = { local(i2,i4,i6,i10); i2 = 6*a3^2 - 16*a2*a4 + 40*a1*a5 - 240*a0*a6; i4 = 4*a2^2*a4^2 - 12*a1*a3*a4^2 + 48*a0*a4^3 - 12*a2^2*a3*a5 + 36*a1*a3^2*a5 + 4*a1*a2*a4*a5 - 180*a0*a3*a4*a5 - 80*a1^2*a5^2 + 300*a0*a2*a5^2 + 48*a2^3*a6 - 180*a1*a2*a3*a6 + 324*a0*a3^2*a6 + 300*a1^2*a4*a6 - 504*a0*a2*a4*a6 - 540*a0*a1*a5*a6 + 1620*a0^2*a6^2; i6 = 8*a2^2*a3^2*a4^2 - 24*a1*a3^3*a4^2 - 24*a2^3*a4^3 + 76*a1*a2*a3*a4^3 + 60*a0*a3^2*a4^3 - 36*a1^2*a4^4 - 160*a0*a2*a4^4 - 24*a2^2*a3^3*a5 + 72*a1*a3^4*a5 + 76*a2^3*a3*a4*a5 - 238*a1*a2*a3^2*a4*a5 - 198*a0*a3^3*a4*a5 + 28*a1*a2^2*a4^2*a5 + 26*a1^2*a3*a4^2*a5 + 492*a0*a2*a3*a4^2*a5 + 616*a0*a1*a4^3*a5 - 36*a2^4*a5^2 + 26*a1*a2^2*a3*a5^2 + 176*a1^2*a3^2*a5^2 + 330*a0*a2*a3^2*a5^2 + 64*a1^2*a2*a4*a5^2 - 640*a0*a2^2*a4*a5^2 - 1860*a0*a1*a3*a4*a5^2 - 900*a0^2*a4^2*a5^2 - 320*a1^3*a5^3 + 1600*a0*a1*a2*a5^3 + 2250*a0^2*a3*a5^3 + 60*a2^3*a3^2*a6 - 198*a1*a2*a3^3*a6 + 162*a0*a3^4*a6 - 160*a2^4*a4*a6 + 492*a1*a2^2*a3*a4*a6 + 330*a1^2*a3^2*a4*a6 - 468*a0*a2*a3^2*a4*a6 - 640*a1^2*a2*a4^2*a6 + 424*a0*a2^2*a4^2*a6 - 876*a0*a1*a3*a4^2*a6 - 96*a0^2*a4^3*a6 + 616*a1*a2^3*a5*a6 - 1860*a1^2*a2*a3*a5*a6 - 876*a0*a2^2*a3*a5*a6 + 1818*a0*a1*a3^2*a5*a6 + 1600*a1^3*a4*a5*a6 + 3472*a0*a1*a2*a4*a5*a6 + 3060*a0^2*a3*a4*a5*a6 - 2240*a0*a1^2*a5^2*a6 - 18600*a0^2*a2*a5^2*a6 - 900*a1^2*a2^2*a6^2 - 96*a0*a2^3*a6^2 + 2250*a1^3*a3*a6^2 + 3060*a0*a1*a2*a3*a6^2 - 10044*a0^2*a3^2*a6^2 - 18600*a0*a1^2*a4*a6^2 + 20664*a0^2*a2*a4*a6^2 + 59940*a0^2*a1*a5*a6^2 - 119880*a0^3*a6^3; i10 = a1^2*a2^2*a3^2*a4^2*a5^2 - 4*a0*a2^3*a3^2*a4^2*a5^2 - 4*a1^3*a3^3*a4^2*a5^2 + 18*a0*a1*a2*a3^3*a4^2*a5^2 - 27*a0^2*a3^4*a4^2*a5^2 - 4*a1^2*a2^3*a4^3*a5^2 + 16*a0*a2^4*a4^3*a5^2 + 18*a1^3*a2*a3*a4^3*a5^2 - 80*a0*a1*a2^2*a3*a4^3*a5^2 - 6*a0*a1^2*a3^2*a4^3*a5^2 + 144*a0^2*a2*a3^2*a4^3*a5^2 - 27*a1^4*a4^4*a5^2 + 144*a0*a1^2*a2*a4^4*a5^2 - 128*a0^2*a2^2*a4^4*a5^2 - 192*a0^2*a1*a3*a4^4*a5^2 + 256*a0^3*a4^5*a5^2 - 4*a1^2*a2^2*a3^3*a5^3 + 16*a0*a2^3*a3^3*a5^3 + 16*a1^3*a3^4*a5^3 - 72*a0*a1*a2*a3^4*a5^3 + 108*a0^2*a3^5*a5^3 + 18*a1^2*a2^3*a3*a4*a5^3 - 72*a0*a2^4*a3*a4*a5^3 - 80*a1^3*a2*a3^2*a4*a5^3 + 356*a0*a1*a2^2*a3^2*a4*a5^3 + 24*a0*a1^2*a3^3*a4*a5^3 - 630*a0^2*a2*a3^3*a4*a5^3 - 6*a1^3*a2^2*a4^2*a5^3 + 24*a0*a1*a2^3*a4^2*a5^3 + 144*a1^4*a3*a4^2*a5^3 - 746*a0*a1^2*a2*a3*a4^2*a5^3 + 560*a0^2*a2^2*a3*a4^2*a5^3 + 1020*a0^2*a1*a3^2*a4^2*a5^3 - 36*a0*a1^3*a4^3*a5^3 + 160*a0^2*a1*a2*a4^3*a5^3 - 1600*a0^3*a3*a4^3*a5^3 - 27*a1^2*a2^4*a5^4 + 108*a0*a2^5*a5^4 + 144*a1^3*a2^2*a3*a5^4 - 630*a0*a1*a2^3*a3*a5^4 - 128*a1^4*a3^2*a5^4 + 560*a0*a1^2*a2*a3^2*a5^4 + 825*a0^2*a2^2*a3^2*a5^4 - 900*a0^2*a1*a3^3*a5^4 - 192*a1^4*a2*a4*a5^4 + 1020*a0*a1^2*a2^2*a4*a5^4 - 900*a0^2*a2^3*a4*a5^4 + 160*a0*a1^3*a3*a4*a5^4 - 2050*a0^2*a1*a2*a3*a4*a5^4 + 2250*a0^3*a3^2*a4*a5^4 - 50*a0^2*a1^2*a4^2*a5^4 + 2000*a0^3*a2*a4^2*a5^4 + 256*a1^5*a5^5 - 1600*a0*a1^3*a2*a5^5 + 2250*a0^2*a1*a2^2*a5^5 + 2000*a0^2*a1^2*a3*a5^5 - 3750*a0^3*a2*a3*a5^5 - 2500*a0^3*a1*a4*a5^5 + 3125*a0^4*a5^6 - 4*a1^2*a2^2*a3^2*a4^3*a6 + 16*a0*a2^3*a3^2*a4^3*a6 + 16*a1^3*a3^3*a4^3*a6 - 72*a0*a1*a2*a3^3*a4^3*a6 + 108*a0^2*a3^4*a4^3*a6 + 16*a1^2*a2^3*a4^4*a6 - 64*a0*a2^4*a4^4*a6 - 72*a1^3*a2*a3*a4^4*a6 + 320*a0*a1*a2^2*a3*a4^4*a6 + 24*a0*a1^2*a3^2*a4^4*a6 - 576*a0^2*a2*a3^2*a4^4*a6 + 108*a1^4*a4^5*a6 - 576*a0*a1^2*a2*a4^5*a6 + 512*a0^2*a2^2*a4^5*a6 + 768*a0^2*a1*a3*a4^5*a6 - 1024*a0^3*a4^6*a6 + 18*a1^2*a2^2*a3^3*a4*a5*a6 - 72*a0*a2^3*a3^3*a4*a5*a6 - 72*a1^3*a3^4*a4*a5*a6 + 324*a0*a1*a2*a3^4*a4*a5*a6 - 486*a0^2*a3^5*a4*a5*a6 - 80*a1^2*a2^3*a3*a4^2*a5*a6 + 320*a0*a2^4*a3*a4^2*a5*a6 + 356*a1^3*a2*a3^2*a4^2*a5*a6 - 1584*a0*a1*a2^2*a3^2*a4^2*a5*a6 - 108*a0*a1^2*a3^3*a4^2*a5*a6 + 2808*a0^2*a2*a3^3*a4^2*a5*a6 + 24*a1^3*a2^2*a4^3*a5*a6 - 96*a0*a1*a2^3*a4^3*a5*a6 - 630*a1^4*a3*a4^3*a5*a6 + 3272*a0*a1^2*a2*a3*a4^3*a5*a6 - 2496*a0^2*a2^2*a3*a4^3*a5*a6 - 4464*a0^2*a1*a3^2*a4^3*a5*a6 + 144*a0*a1^3*a4^4*a5*a6 - 640*a0^2*a1*a2*a4^4*a5*a6 + 6912*a0^3*a3*a4^4*a5*a6 - 6*a1^2*a2^3*a3^2*a5^2*a6 + 24*a0*a2^4*a3^2*a5^2*a6 + 24*a1^3*a2*a3^3*a5^2*a6 - 108*a0*a1*a2^2*a3^3*a5^2*a6 + 162*a0^2*a2*a3^4*a5^2*a6 + 144*a1^2*a2^4*a4*a5^2*a6 - 576*a0*a2^5*a4*a5^2*a6 - 746*a1^3*a2^2*a3*a4*a5^2*a6 + 3272*a0*a1*a2^3*a3*a4*a5^2*a6 + 560*a1^4*a3^2*a4*a5^2*a6 - 2412*a0*a1^2*a2*a3^2*a4*a5^2*a6 - 4536*a0^2*a2^2*a3^2*a4*a5^2*a6 + 3942*a0^2*a1*a3^3*a4*a5^2*a6 + 1020*a1^4*a2*a4^2*a5^2*a6 - 5428*a0*a1^2*a2^2*a4^2*a5^2*a6 + 4816*a0^2*a2^3*a4^2*a5^2*a6 - 682*a0*a1^3*a3*a4^2*a5^2*a6 + 10152*a0^2*a1*a2*a3*a4^2*a5^2*a6 - 9720*a0^3*a3^2*a4^2*a5^2*a6 + 248*a0^2*a1^2*a4^3*a5^2*a6 - 10560*a0^3*a2*a4^3*a5^2*a6 - 36*a1^3*a2^3*a5^3*a6 + 144*a0*a1*a2^4*a5^3*a6 + 160*a1^4*a2*a3*a5^3*a6 - 682*a0*a1^2*a2^2*a3*a5^3*a6 - 120*a0^2*a2^3*a3*a5^3*a6 - 208*a0*a1^3*a3^2*a5^3*a6 + 1980*a0^2*a1*a2*a3^2*a5^3*a6 - 1350*a0^3*a3^3*a5^3*a6 - 1600*a1^5*a4*a5^3*a6 + 9768*a0*a1^3*a2*a4*a5^3*a6 - 13040*a0^2*a1*a2^2*a4*a5^3*a6 - 12330*a0^2*a1^2*a3*a4*a5^3*a6 + 19800*a0^3*a2*a3*a4*a5^3*a6 + 15600*a0^3*a1*a4^2*a5^3*a6 + 320*a0*a1^4*a5^4*a6 - 1700*a0^2*a1^2*a2*a5^4*a6 + 1500*a0^3*a2^2*a5^4*a6 + 2250*a0^3*a1*a3*a5^4*a6 - 22500*a0^4*a4*a5^4*a6 - 27*a1^2*a2^2*a3^4*a6^2 + 108*a0*a2^3*a3^4*a6^2 + 108*a1^3*a3^5*a6^2 - 486*a0*a1*a2*a3^5*a6^2 + 729*a0^2*a3^6*a6^2 + 144*a1^2*a2^3*a3^2*a4*a6^2 - 576*a0*a2^4*a3^2*a4*a6^2 - 630*a1^3*a2*a3^3*a4*a6^2 + 2808*a0*a1*a2^2*a3^3*a4*a6^2 + 162*a0*a1^2*a3^4*a4*a6^2 - 4860*a0^2*a2*a3^4*a4*a6^2 - 128*a1^2*a2^4*a4^2*a6^2 + 512*a0*a2^5*a4^2*a6^2 + 560*a1^3*a2^2*a3*a4^2*a6^2 - 2496*a0*a1*a2^3*a3*a4^2*a6^2 + 825*a1^4*a3^2*a4^2*a6^2 - 4536*a0*a1^2*a2*a3^2*a4^2*a6^2 + 8208*a0^2*a2^2*a3^2*a4^2*a6^2 + 5832*a0^2*a1*a3^3*a4^2*a6^2 - 900*a1^4*a2*a4^3*a6^2 + 4816*a0*a1^2*a2^2*a4^3*a6^2 - 4352*a0^2*a2^3*a4^3*a6^2 - 120*a0*a1^3*a3*a4^3*a6^2 - 5760*a0^2*a1*a2*a3*a4^3*a6^2 - 8640*a0^3*a3^2*a4^3*a6^2 - 192*a0^2*a1^2*a4^4*a6^2 + 9216*a0^3*a2*a4^4*a6^2 - 192*a1^2*a2^4*a3*a5*a6^2 + 768*a0*a2^5*a3*a5*a6^2 + 1020*a1^3*a2^2*a3^2*a5*a6^2 - 4464*a0*a1*a2^3*a3^2*a5*a6^2 - 900*a1^4*a3^3*a5*a6^2 + 3942*a0*a1^2*a2*a3^3*a5*a6^2 + 5832*a0^2*a2^2*a3^3*a5*a6^2 - 6318*a0^2*a1*a3^4*a5*a6^2 + 160*a1^3*a2^3*a4*a5*a6^2 - 640*a0*a1*a2^4*a4*a5*a6^2 - 2050*a1^4*a2*a3*a4*a5*a6^2 + 10152*a0*a1^2*a2^2*a3*a4*a5*a6^2 - 5760*a0^2*a2^3*a3*a4*a5*a6^2 + 1980*a0*a1^3*a3^2*a4*a5*a6^2 - 22896*a0^2*a1*a2*a3^2*a4*a5*a6^2 + 21384*a0^3*a3^3*a4*a5*a6^2 + 2250*a1^5*a4^2*a5*a6^2 - 13040*a0*a1^3*a2*a4^2*a5*a6^2 + 15264*a0^2*a1*a2^2*a4^2*a5*a6^2 + 16632*a0^2*a1^2*a3*a4^2*a5*a6^2 - 3456*a0^3*a2*a3*a4^2*a5*a6^2 - 21888*a0^3*a1*a4^3*a5*a6^2 - 50*a1^4*a2^2*a5^2*a6^2 + 248*a0*a1^2*a2^3*a5^2*a6^2 - 192*a0^2*a2^4*a5^2*a6^2 + 2000*a1^5*a3*a5^2*a6^2 - 12330*a0*a1^3*a2*a3*a5^2*a6^2 + 16632*a0^2*a1*a2^2*a3*a5^2*a6^2 + 15417*a0^2*a1^2*a3^2*a5^2*a6^2 - 27540*a0^3*a2*a3^2*a5^2*a6^2 - 1700*a0*a1^4*a4*a5^2*a6^2 + 8748*a0^2*a1^2*a2*a4*a5^2*a6^2 - 6480*a0^3*a2^2*a4*a5^2*a6^2 - 31320*a0^3*a1*a3*a4*a5^2*a6^2 + 43200*a0^4*a4^2*a5^2*a6^2 + 410*a0^2*a1^3*a5^3*a6^2 - 1800*a0^3*a1*a2*a5^3*a6^2 + 27000*a0^4*a3*a5^3*a6^2 + 256*a1^2*a2^5*a6^3 - 1024*a0*a2^6*a6^3 - 1600*a1^3*a2^3*a3*a6^3 + 6912*a0*a1*a2^4*a3*a6^3 + 2250*a1^4*a2*a3^2*a6^3 - 9720*a0*a1^2*a2^2*a3^2*a6^3 - 8640*a0^2*a2^3*a3^2*a6^3 - 1350*a0*a1^3*a3^3*a6^3 + 21384*a0^2*a1*a2*a3^3*a6^3 - 8748*a0^3*a3^4*a6^3 + 2000*a1^4*a2^2*a4*a6^3 - 10560*a0*a1^2*a2^3*a4*a6^3 + 9216*a0^2*a2^4*a4*a6^3 - 3750*a1^5*a3*a4*a6^3 + 19800*a0*a1^3*a2*a3*a4*a6^3 - 3456*a0^2*a1*a2^2*a3*a4*a6^3 - 27540*a0^2*a1^2*a3^2*a4*a6^3 + 3888*a0^3*a2*a3^2*a4*a6^3 + 1500*a0*a1^4*a4^2*a6^3 - 6480*a0^2*a1^2*a2*a4^2*a6^3 - 17280*a0^3*a2^2*a4^2*a6^3 + 46656*a0^3*a1*a3*a4^2*a6^3 - 13824*a0^4*a4^3*a6^3 - 2500*a1^5*a2*a5*a6^3 + 15600*a0*a1^3*a2^2*a5*a6^3 - 21888*a0^2*a1*a2^3*a5*a6^3 + 2250*a0*a1^4*a3*a5*a6^3 - 31320*a0^2*a1^2*a2*a3*a5*a6^3 + 46656*a0^3*a2^2*a3*a5*a6^3 + 15552*a0^3*a1*a3^2*a5*a6^3 - 1800*a0^2*a1^3*a4*a5*a6^3 + 31968*a0^3*a1*a2*a4*a5*a6^3 - 77760*a0^4*a3*a4*a5*a6^3 + 540*a0^3*a1^2*a5^2*a6^3 - 32400*a0^4*a2*a5^2*a6^3 + 3125*a1^6*a6^4 - 22500*a0*a1^4*a2*a6^4 + 43200*a0^2*a1^2*a2^2*a6^4 - 13824*a0^3*a2^3*a6^4 + 27000*a0^2*a1^3*a3*a6^4 - 77760*a0^3*a1*a2*a3*a6^4 + 34992*a0^4*a3^2*a6^4 - 32400*a0^3*a1^2*a4*a6^4 + 62208*a0^4*a2*a4*a6^4 + 38880*a0^4*a1*a5*a6^4 - 46656*a0^5*a6^5; [i2^5/i10,i2^3*i4/i10,i2^2*i6/i10] } igusainv2(e1,e2,e3,e4,e5) = { local(dum); dum = (x-e1)*(x-e2)*(x-e3)*(x-e4)*(x-e5); igusainv(0,1,component(dum,5),component(dum,4),component(dum,3),component(dum,2),component(dum,1)); } \\ This will compute the Igusa invariants of the curve \\ y^2 = pol igusainvpol(pol) = igusainv(polcoeff(pol,6),polcoeff(pol,5),polcoeff(pol,4),polcoeff(pol,3),polcoeff(pol,2),polcoeff(pol,1),polcoeff(pol,0))