I just implemented some interpolated texture sampling by sampling the 4x4 nearest pixels then doing Lagrange interpolation across the x axis to get four values to use Lagrange interpolation on across the y axis.
Is this the same as bicubic interpolation?
Webgl implementation here: https://www.shadertoy.com/view/MllSzX
No, it turns out that it is not the same thing. Bicubic interpolation is $C1$ continuous, while lagrange is not. It's a completely different thing.
From left to right we have: nearest neighbor, bilinear, bi-cubiclagrange and bi-cubic.
More info here: http://blog.demofox.org/2015/08/15/resizing-images-with-bicubic-interpolation/