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: Scalar multiplication of a point in Montgomery form
  using Montgomery Ladder Algorithm.
  A total of 11 multiplications are required in each step of this
  algorithm.
  
  Parameters
  ==========
  
  k : The positive integer multiplier
  
  Examples
  ========
  
  >>> from sympy.ntheory.ecm import Point
  >>> p1 = Point(11, 16, 7, 29)
  >>> p3 = p1.mont_ladder(3)
  >>> p3.x_cord
  23
  >>> p3.z_cord
  17
docstr_tok: ["Scalar","multiplication","of","a","point","in","Montgomery","form","using","Montgomery","Ladder","Algorithm",".","A","total","of","11","multiplications","are","required","in","each","step","of","this","algorithm",".","Parameters","==========","k",":","The","positive","integer","multiplier","Examples","========",">",">",">","from","sympy.ntheory.ecm","import","Point",">",">",">","p1","=","Point","(","11",",","16",",","7",",","29",")",">",">",">","p3","=","p1.mont_ladder","(","3",")",">",">",">","p3.x_cord","23",">",">",">","p3.z_cord","17"]
code: def mont_ladder(self, k):
      """
      Scalar multiplication of a point in Montgomery form
      using Montgomery Ladder Algorithm.
      A total of 11 multiplications are required in each step of this
      algorithm.
  
      Parameters
      ==========
  
      k : The positive integer multiplier
  
      Examples
      ========
  
      >>> from sympy.ntheory.ecm import Point
      >>> p1 = Point(11, 16, 7, 29)
      >>> p3 = p1.mont_ladder(3)
      >>> p3.x_cord
      23
      >>> p3.z_cord
      17
      """
      Q = self
      R = self.double()
      for i in bin(k)[3:]:
          if i == "1":
              Q = R.add(Q, self)
              R = R.double()
          else:
              R = Q.add(R, self)
              Q = Q.double()
      return Q
  
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 5 for calling the Point obj's underlying member method code with example usage: obj.mont_ladder(k) and returns: Q