I'm currently trying to interpolate curves through multiple dimensions (which just involves using interpolation methods on each dimension individually), and I'm a bit confused about the PCHIP (piecewise cubic hermite interpolation polynomial). Does the PCHIP only apply to monotonic data? The data I am interested in is necessarily non-monotonic, so I used a Catmull-Rom spline, but the PCHIP seems to fit my data better, but the off the shelf implementation of the PCHIP im using only works for strictly increasing/decreasing data. I would like to have written my own PCHIP interpolation algorithm (in java), but I cant seem to find the underlying algorithm anywhere on the web. I guess my questions are
1) Does the PCHIP apply to non-monotonic data?
2) If not, are there any other interpolation methods, which pass through the control points, that I could use?
3) Does anyone know of where I can find the algorithm behind the PCHIP?