#Python 2, <s>192</s> 185 bytes D,E,Q=input();J=0;exec"F=lambda u,m,j,i:+(j[i]<=u<j[-~i])if m<1else(u-j[i])/(j[i+m]-j[i])*F(u,~-m,j,i)+(j[-~i+m]-u)/(j[-~i+m]-j[-~i])*F(u,~-m,j,-~i);print F(D,E,Q,J);J+=1;"*(~-len(Q)-E) A direct implementation of the formula given with recursion in the lambda *and* iteration using `exec`. Prompts for input through the command line upon invocation as `u,m,[u_0,u_1,u_2...]` with `u` *always* input as a float (e.g. if `u=1`, then u would still be input as `1.0`) and outputs each of the `len([u_0,u_1,u_2...])-1-u` values on a separate line. [Try it Online! (Ideone)][1] [1]: http://ideone.com/GM8H2m