code: def erange(start, end, steps):
      
      if start == 0:
          print("Nothing you multiply zero by gives you anything but zero. Try picking something small.")
          return None
      if end == 0:
          print("It takes an infinite number of steps to get to zero. Try a small number?")
          return None
  
      # figure out our multiplication scale
      x = (1.0*end/start)**(1.0/(steps-1))
  
      # now generate the array
      ns = _n.array(list(range(0,steps)))
      a =  start*_n.power(x,ns)
  
      # tidy up the last element (there's often roundoff error)
      a[-1] = end
  
      return a
docs: Returns a numpy array over the specified range taking geometric steps.
  
      See also numpy.logspace()