class_docstr: Create the following Elliptic Curve over domain.
  
  `y^{2} + a_{1} x y + a_{3} y = x^{3} + a_{2} x^{2} + a_{4} x + a_{6}`
  
  The default domain is ``QQ``. If no coefficient ``a1``, ``a2``, ``a3``,
  is given then it creates a curve with the following form:
  
  `y^{2} = x^{3} + a_{4} x + a_{6}`
  
  Examples
  ========
  
  References
  ==========
  
  .. [1] J. Silverman "A Friendly Introduction to Number Theory" Third Edition
  .. [2] https://mathworld.wolfram.com/EllipticDiscriminant.html
  .. [3] G. Hardy, E. Wright "An Introduction to the Theory of Numbers" Sixth Edition
class_docstr_tok: ["Create","the","following","Elliptic","Curve","over","domain",".","`","y^","{","2","}","+","a_","{","1","}","x","y","+","a_","{","3","}","y","=","x^","{","3","}","+","a_","{","2","}","x^","{","2","}","+","a_","{","4","}","x","+","a_","{","6","}","`","The","default","domain","is","``","QQ","``",".","If","no","coefficient","``","a1","``",",","``","a2","``",",","``","a3","``",",","is","given","then","it","creates","a","curve","with","the","following","form",":","`","y^","{","2","}","=","x^","{","3","}","+","a_","{","4","}","x","+","a_","{","6","}","`","Examples","========","References","==========","..","[","1","]","J.","Silverman","``","A","Friendly","Introduction","to","Number","Theory","''","Third","Edition","..","[","2","]","https",":","\/\/mathworld.wolfram.com\/EllipticDiscriminant.html","..","[","3","]","G.","Hardy",",","E.","Wright","``","An","Introduction","to","the","Theory","of","Numbers","''","Sixth","Edition"]
docstr: Return curve j-invariant.
  
  Examples
  ========
  
  >>> from sympy.ntheory.elliptic_curve import EllipticCurve
  >>> e1 = EllipticCurve(-2, 0, 0, 1, 1)
  >>> e1.j_invariant
  1404928/389
docstr_tok: ["Return","curve","j-invariant",".","Examples","========",">",">",">","from","sympy.ntheory.elliptic_curve","import","EllipticCurve",">",">",">","e1","=","EllipticCurve","(","-2",",","0",",","0",",","1",",","1",")",">",">",">","e1.j_invariant","1404928\/389"]
code: def j_invariant(self):
      """
      Return curve j-invariant.
  
      Examples
      ========
  
      >>> from sympy.ntheory.elliptic_curve import EllipticCurve
      >>> e1 = EllipticCurve(-2, 0, 0, 1, 1)
      >>> e1.j_invariant
      1404928/389
  
      """
      c4 = self._b2**2 - 24 * self._b4
      return self._domain.to_sympy(c4**3 / self._discrim)
  
imports: from sympy.core.numbers import oo
  from sympy.core.symbol import symbols
  from sympy.polys.domains import FiniteField, QQ, RationalField, FF
  from sympy.polys.polytools import Poly
  from sympy.solvers.solvers import solve
  from sympy.utilities.iterables import is_sequence
  from sympy.utilities.misc import as_int
  from .factor_ import divisors
  from .residue_ntheory import polynomial_congruence
label_desc: Use image node_id 12 for calling the EllipticCurve obj's underlying member method code with example usage: obj.j_invariant() and returns: self