code: def expo(base=2, factor=1, max_value=None):
      
      n = 0
      while True:
          a = factor * base ** n
          if max_value is None or a < max_value:
              yield a
              n += 1
          else:
              yield max_value
docs: Generator for exponential decay.
  
      Args:
          base: The mathematical base of the exponentiation operation
          factor: Factor to multiply the exponentation by.
          max_value: The maximum value to yield. Once the value in the
               true exponential sequence exceeds this, the value
               of max_value will forever after be yielded.