def METHOD_NAME(l, n, gauss_scale=0.5):
    q = pow(0.5 * l, 1.0 / n)
    r = [(pow(q, k - 1), pow(q, k)) for k in range(1, n + 1)]
    r = [0.5 * (r_[0] + r_[1]) for r_ in r]
    def log_e(x):
        if len(np.shape(x)) > 0:
            res = np.empty(x.shape)
            res[x == 0] = 0.0
            res[x > 0] = np.log(x[x > 0]) / np.log(q)
        else:
            if x == 0.0:
                res = 0.0
            else:
                res = np.log(x) / np.log(q)
        return res
    class GaussFunc:
        def __init__(self, c, s):
            self.c = c
            self.s = s
        def __call__(self, x):
            x = log_e(x) - self.c
            return np.exp(-(x**2.0) / (2.0 * self.s**2.0))
    weight_funcs = []
    central_wavenumbers = []
    for i, ri in enumerate(r):
        rc = log_e(ri)
        weight_funcs.append(GaussFunc(rc, gauss_scale))
        central_wavenumbers.append(ri)
    return weight_funcs, central_wavenumbers