# Singular

#### D.13.3.10 jInvariant

Procedure from library `tropical.lib` (see tropical_lib).

Usage:
jInvariant(f[,#]); f poly, # list

Assume:
- f is a a polynomial whose Newton polygon has precisely one interior lattice point, so that it defines an elliptic curve on the toric surface corresponding to the Newton polygon
- it the optional argument # is present the base field should be Q(t) and the optional argument should be one of the following strings:
'ord' : then the return value is of type integer, namely the order of the j-invariant
'split' : then the return value is a list of two polynomials, such that the quotient of these two is the j-invariant

Return:
poly, the j-invariant of the elliptic curve defined by poly

Note:
the characteristic of the base field should not be 2 or 3, unless the input is a plane cubic

Example:
 ```LIB "tropical.lib"; ring r=(0,t),(x,y),dp; // jInvariant computes the j-invariant of a cubic jInvariant(x+y+x2y+y3+1/t*xy); // if the ground field has one parameter t, then we can instead // compute the order of the j-invariant jInvariant(x+y+x2y+y3+1/t*xy,"ord"); // one can compare the order of the j-invariant to the tropical j-invariant tropicalJInvariant(x+y+x2y+y3+1/t*xy); // the following curve is elliptic as well poly h=x22y11+x19y10+x17y9+x16y9+x12y7+x9y6+x7y5+x2y3+x14y8; // its j-invariant is jInvariant(h); ```