1 | initial version |
While the quotient you constructed is a valid object, it seems to be not the optimal way to construct the respective mathematical object. Apparently, general quotient
s of the Gaussian integers ZZ[I]
currently have only barebones functionality; SageMath doesn't even know when they are finite. However, since p
is prime in ZZ[I]
we can compute the residue_field
instead (which is a much better implementation of the quotient):
p = 107927
G = ZZ[I]
J = G.ideal(p)
Q.<a> = G.residue_field(J)
A = (95385+100114*a)
B = (18724+61222*a)
E = EllipticCurve(Q,[A, B])
print(E)
print(E.cardinality())
It outputs:
Elliptic Curve defined by y^2 = x^3 + (100114*a+95385)*x + (61222*a+18724) over Residue field in a of Fractional ideal (107927)
11648283482
as you predicted.
2 | No.2 Revision |
While the quotient you constructed is a valid object, it seems to be not the optimal way to construct the respective mathematical object. Apparently, general quotient
s of the Gaussian integers ZZ[I]
currently have only barebones functionality; SageMath doesn't even know when they are finite. However, since p
is prime (hence maximal) in ZZ[I]
we can compute the residue_field
instead (which is a much better implementation of the quotient):
p = 107927
G = ZZ[I]
J = G.ideal(p)
Q.<a> = G.residue_field(J)
A = (95385+100114*a)
B = (18724+61222*a)
E = EllipticCurve(Q,[A, B])
print(E)
print(E.cardinality())
It outputs:
Elliptic Curve defined by y^2 = x^3 + (100114*a+95385)*x + (61222*a+18724) over Residue field in a of Fractional ideal (107927)
11648283482
as you predicted.
3 | No.3 Revision |
While the quotient you constructed is a valid object, it seems to be not the optimal way to construct the respective mathematical object. Apparently, general quotient
s of the Gaussian integers ZZ[I]
currently have only barebones functionality; SageMath doesn't even know when they are finite. However, since p
is prime (hence maximal) in ZZ[I]
we can compute the residue_field
instead (which is a much better implementation of the quotient):
p = 107927
G = ZZ[I]
J = G.ideal(p)
Q.<a> = G.residue_field(J)
A = (95385+100114*a)
B = (18724+61222*a)
E = EllipticCurve(Q,[A, B])
print(E)
print(E.cardinality())
It outputs:
Elliptic Curve defined by y^2 = x^3 + (100114*a+95385)*x + (61222*a+18724) over Residue field in a of Fractional ideal (107927)
11648283482
as you predicted.
Alternatively, making use of the third isomorphism theorem:
p = 107927
Q.<a> = GF(p^2, modulus=x^2+1)
This is possibly even faster.