```help mata mm_polint()
-------------------------------------------------------------------------------

Title

mm_polint() -- Polynomial interpolation and extrapolation

Syntax

real vector mm_polint(x, y, xnew [, degree])

where

x:  real vector containing strictly monotone increasing or
decreasing x-values

y:  real vector containing associated y-values

xnew:  real vector containing evaluation points

d:  real scalar specifying degree of the polynomial (default: 1)

Description

mm_polint() evaluates the interpolating polynomial through d+1
(x,y)-points at the value xnew. x should be strictly monotone increasing
or decreasing. The set of data points is chosen such that the x-values
are centered around xnew. However, the set is bounded by 1 at the left
and length(x) at the right. Furthermore, choosing a centered set of data
points is only possible if d is uneven. In this case (d+1)/2 points are
on each side of xnew. If d is even and x is in ascending order, then
d/2+1 points are below xnew and d/2 above. If x is in descending order
d/2 points are below and d/2+1 above.  Therefore, if d is even, the
returned result depends on whether x is increasing or decreasing.

d is the degree of the polynomial. The default is to use a polynomial of
degree one, i.e. to compute the linear interpolation (d=1).

Remarks

mm_polint() is based on a translation into Mata of the polint rountine
given in Press et al. (1992:109-110).

Conformability

mm_polint(x, y, xnew, degree):
x: n x 1 or 1 x n
y: n x 1 or 1 x n
xnew: m x 1 or 1 x m
degree: 1 x 1
result: m x 1 or 1 x m.

Diagnostics

mm_polint() requires x be in ascending or descending order.

d must be an integer equal to one or larger and must be smaller than the
number of input data points (i.e., d<length(x)).

Source code

mm_polint.mata

References

Press, William H., Saul A. Teukolsky, William T. Vetterling, Brian P.
Flannery (1992). Numerical Recipes in C. The Art of Scientific
Computing. Second Edition. Cambridge University Press.
http://www.numerical-recipes.com/

Author

Ben Jann, ETH Zurich, jann@soz.gess.ethz.ch

Also see

Online:  help for ipolate, mm_ipolate(), spline3(), [M-4] utility,
```