Here is the example from the [documentation](http://reference.wolfram.com/language/ref/InterpolatingFunction.html#13977696) adapted for the OP's data: data = MapIndexed[ Flatten[{#2, #1}] &, {2, 5, 9, 15, 22, 33, 50, 70, 100, 145, 200, 280, 375, 495, 635, 800, 1000, 1300, 1600, 2000, 2450, 3050, 3750, 4600, 5650, 6950}]; f = Interpolation@data > (* InterpolatingFunction[{{1, 26}}, <>] *) pwf = Piecewise[ MapIndexed[{InterpolatingPolynomial[#1, x], x < 1 First[#2] + 2} &, Most[#]], InterpolatingPolynomial[Last@#1, x] ] &@ Partition[data, 4, 1]; Here is a comparison of the piecewise interpolating polynomials and the interpolating function: Plot[f[x] - pwf, {x, 1, 28}, PlotRange -> All] ![Mathematica graphics](https://i.sstatic.net/dcN2J.png) The values of `f[27]` and `f[28]` are beyond the domain, which is `1 <= x <= 26`, and extrapolation is used. The formula for extrapolation is given by the last `InterpolatingPolynomial` in `pwf`: Last@pwf (* 3750 + (850 + (100 + 25/3 (-25 + x)) (-24 + x)) (-23 + x) *) ---- In response to a comment: The error in the plot has to do with round-off error. Apparently the calculation done by `InterpolatingFunction`, while algebraically equivalent, is not numerically identical. The error was greatest above in the domain `26 < x < 28` where extrapolation is performed. With arbitrary precision, the error is zero, as shown below. Plot[f[x] - pwf, {x, 1, 28}, PlotRange -> All, WorkingPrecision -> $MachinePrecision, Exclusions -> None, PlotStyle -> Red] ![Mathematica graphics](https://i.sstatic.net/ygAZR.png)