docs: def gaussian(f=Ellipsis, mu=0, sigma=1, scale=1, invert=False, normalize=False):
      '''
      gaussian() yields a potential function f(x) that calculates a Gaussian function over x; the
        formula used is given below.
      gaussian(g) yields a function h(x) such that, if f(x) is yielded by gaussian(), h(x) = f(g(x)).
  
      The formula employed by the Gaussian function is as follows, with mu, sigma, and scale all being
      parameters that one can provide via optional arguments:
        scale * exp(0.5 * ((x - mu) / sigma)**2)
      
      The following optional arguments may be given:
        * mu (default: 0) specifies the mean of the Gaussian.
        * sigma (default: 1) specifies the standard deviation (sigma) parameger of the Gaussian.
        * scale (default: 1) specifies the scale to use.
        * invert (default: False) specifies whether the Gaussian should be inverted. If inverted, then
          the formula, scale * exp(...), is replaced with scale * (1 - exp(...)).
        * normalize (default: False) specifies whether the result should be multiplied by the inverse
          of the area under the uninverted and unscaled curve; i.e., if normalize is True, the entire
          result is multiplied by 1/sqrt(2*pi*sigma**2).
      '''
      f = to_potential(f)
      F = exp(-0.5 * ((f - mu) / sigma)**2)
      if invert: F = 1 - F
      F = F * scale
      if normalize: F = F / (np.sqrt(2.0*np.pi) * sigma)
      return F