Convenience function for polynomial interpolation.
Constructs a polynomial that passes through a given set of points, optionally with specified derivatives at those points. Evaluates the polynomial or some of its derivatives. For reasons of numerical stability, this function does not compute the coefficients of the polynomial, although they can be obtained by evaluating all the derivatives.
Be aware that the algorithms implemented here are not necessarily the most numerically stable known. Moreover, even in a world of exact computation, unless the x coordinates are chosen very carefully  Chebyshev zeros (e.g. cos(i*pi/n)) are a good choice  polynomial interpolation itself is a very illconditioned process due to the Runge phenomenon. In general, even with wellchosen x values, degrees higher than about thirty cause problems with numerical instability in this code.
Based on Krogh 1970, “Efficient Algorithms for Polynomial Interpolation and Numerical Differentiation”
The polynomial passes through all the pairs (xi,yi). One may additionally specify a number of derivatives at each point xi; this is done by repeating the value xi and specifying the derivatives as successive yi values.
Parameters:  xi : arraylike, length N
yi : arraylike, N by R
x : scalar or arraylike of length N
der : integer or list
Returns : —— : d : array


Notes
Construction of the interpolating polynomial is a relatively expensive process. If you want to evaluate it repeatedly consider using the class KroghInterpolator (which is what this function uses).