class_docstr: Montgomery form of Points in an elliptic curve.
  In this form, the addition and doubling of points
  does not need any y-coordinate information thus
  decreasing the number of operations.
  Using Montgomery form we try to perform point addition
  and doubling in least amount of multiplications.
  
  The elliptic curve used here is of the form
  (E : b*y**2*z = x**3 + a*x**2*z + x*z**2).
  The a_24 parameter is equal to (a + 2)/4.
  
  References
  ==========
  
  .. [1] Kris Gaj, Soonhak Kwon, Patrick Baier, Paul Kohlbrenner, Hoang Le, Mohammed Khaleeluddin, Ramakrishna Bachimanchi,
         Implementing the Elliptic Curve Method of Factoring in Reconfigurable Hardware,
         Cryptographic Hardware and Embedded Systems - CHES 2006 (2006), pp. 119-133,
         https://doi.org/10.1007/11894063_10
         https://www.hyperelliptic.org/tanja/SHARCS/talks06/Gaj.pdf
docstr: Initial parameters for the Point class.
  
  Parameters
  ==========
  
  x_cord : X coordinate of the Point
  z_cord : Z coordinate of the Point
  a_24 : Parameter of the elliptic curve in Montgomery form
  mod : modulus
docstr_tok: ["Initial","parameters","for","the","Point","class",".","Parameters","==========","x_cord",":","X","coordinate","of","the","Point","z_cord",":","Z","coordinate","of","the","Point","a_24",":","Parameter","of","the","elliptic","curve","in","Montgomery","form","mod",":","modulus"]
code: def __init__(self, x_cord, z_cord, a_24, mod):
      """
      Initial parameters for the Point class.
  
      Parameters
      ==========
  
      x_cord : X coordinate of the Point
      z_cord : Z coordinate of the Point
      a_24 : Parameter of the elliptic curve in Montgomery form
      mod : modulus
      """
      self.x_cord = x_cord
      self.z_cord = z_cord
      self.a_24 = a_24
      self.mod = mod
  
file_path: sympy/sympy/ntheory/ecm.py
imports: from math import log
  from sympy.core.random import _randint
  from sympy.external.gmpy import gcd, invert, sqrt
  from sympy.utilities.misc import as_int
  from .generate import sieve, primerange
  from .primetest import isprime
label_desc: Use image node_id 1 to create a new Point object  with example: obj = Point(x_cord, z_cord, a_24, mod)