code: def giant_steps(start, target, n=2):
      """
      Return a list of integers ~=
  
      [start, n*start, ..., target/n^2, target/n, target]
  
      but conservatively rounded so that the quotient between two
      successive elements is actually slightly less than n.
  
      With n = 2, this describes suitable precision steps for a
      quadratically convergent algorithm such as Newton's method;
      with n = 3 steps for cubic convergence (Halley's method), etc.
  
          >>> giant_steps(50,1000)
          [66, 128, 253, 502, 1000]
          >>> giant_steps(50,1000,4)
          [65, 252, 1000]
  
      """
      L = [target]
      while L[-1] > start * n:
          L = L + [L[-1] // n + 2]
      return L[::-1]
  
imports: import math
  from bisect import bisect
  from .backend import xrange
  from .backend import BACKEND, gmpy, sage, sage_utils, MPZ, MPZ_ONE, MPZ_ZERO
label_desc: Use image node_id 1 for calling a global function with example usage: giant_steps(start, target, n) and returns: L