The Wikipedia page on Renderman’s “smoothstep” function,

features an entry on higher-order generalizations of this function, where each succeeding member has more of its higher order derivatives being set to zero at the endpoints and .

Among other things, a formula for these generalized functions is presented, which I find rather unwieldy. I have thus written this short entry to present a much conceptually simpler formula.

One can use e.g. confluent divided differences to derive the following (IMNSHO cleaner) formula for -th order smoothstep :

Here is a *Mathematica* demonstration of this identity for the first 21 members:

And @@ Table[InterpolatingPolynomial[{PadRight[{{0}, 0}, n + 2], PadRight[{{1}, 1}, n + 2]}, x] == x^(n + 1) Sum[Binomial[n + k, k] (1 - x)^k, {k, 0, n}] // Simplify, {n, 0, 20}]

which should yield `True`

.

In implementations for other languages (e.g. C++, JavaScript), one would want to use a suitable modification of Horner’s rule to evaluate the polynomial factor expressed in terms of , as well as exploiting the recurrence

for generating the coefficients.