def gaussian(f=Ellipsis, mu=<NUM_LIT:0>, sigma=<NUM_LIT:1>, scale=<NUM_LIT:1>, invert=False, normalize=False):
f = to_potential(f)<EOL>F = exp(-<NUM_LIT:0.5> * ((f - mu) / sigma)**<NUM_LIT:2>)<EOL>if invert: F = <NUM_LIT:1> - F<EOL>F = F * scale<EOL>if normalize: F = F / (np.sqrt(<NUM_LIT>*np.pi) * sigma)<EOL>return F<EOL>
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).