Posted to tcl by kbk at Tue May 03 21:16:04 GMT 2011view pretty

inline static float
Interpolate1D(float x,		/* Abscissa, in the interval [0,1) */
	      float ym1,	/* Ordinate at x=-1 */
	      float y0,		/* Ordinate at y=0 */
	      float y1,		/* Ordinate at y=1 */
	      float y2)		/* Ordinate at y=2 */
{
    float A = -0.5f * ym1 + 1.5f * y0 - 1.5f * y1 + 0.5f * y2;
    float B =         ym1 - 2.5f * y0 + 2.0f * y1 - 0.5f * y2;
    float C = -0.5f * ym1             + 0.5f * y1;

    return ((A * x + B) * x + C) * x + y0;
}