{smcl} {* 13jul2006}{...} {cmd:help mata mm_polint()} {hline} {title:Title} {p 4 4 2} {bf:mm_polint() -- Polynomial interpolation and extrapolation} {title:Syntax} {p 8 12 2} {it:real vector} {cmd:mm_polint(}{it:x}{cmd:,} {it:y}{cmd:,} {it:xnew} [{cmd:,} {it:degree}]{cmd:)} {p 4 8 2} where {p 12 16 2} {it:x}: {it:real vector} containing strictly monotone increasing or decreasing {it:x}-values {p 12 16 2} {it:y}: {it:real vector} containing associated {it:y}-values {p 9 16 2} {it:xnew}: {it:real vector} containing evaluation points {p 12 16 2} {it:d}: {it:real scalar} specifying degree of the polynomial (default: 1) {title:Description} {p 4 4 2} {cmd:mm_polint()} evaluates the interpolating polynomial through {it:d}+1 ({it:x},{it:y})-points at the value {it:xnew}. {it:x} should be strictly monotone increasing or decreasing. The set of data points is chosen such that the {it:x}-values are centered around {it:xnew}. However, the set is bounded by 1 at the left and length({it:x}) at the right. Furthermore, choosing a centered set of data points is only possible if {it:d} is uneven. In this case ({it:d}+1)/2 points are on each side of {it:xnew}. If {it:d} is even and {it:x} is in ascending order, then {it:d}/2+1 points are below {it:xnew} and {it:d}/2 above. If {it:x} is in descending order {it:d}/2 points are below and {it:d}/2+1 above. Therefore, if {it:d} is even, the returned result depends on whether {it:x} is increasing or decreasing. {p 4 4 2} {it:d} is the degree of the polynomial. The default is to use a polynomial of degree one, i.e. to compute the linear interpolation ({it:d}=1). {title:Remarks} {p 4 4 2}{cmd:mm_polint()} is based on a translation into Mata of the {bf:polint} rountine given in Press et al. (1992:109-110). {title:Conformability} {cmd:mm_polint(}{it:x}{cmd:,} {it:y}{cmd:,} {it:xnew}{cmd:,} {it:degree}{cmd:)}: {it:x}: {it:n x} 1 or 1 {it:x n} {it:y}: {it:n x} 1 or 1 {it:x n} {it:xnew}: {it:m x} 1 or 1 {it:x m} {it:degree}: 1 {it:x} 1 {it:result}: {it:m x} 1 or 1 {it:x m}. {title:Diagnostics} {p 4 4 2}{cmd:mm_polint()} requires {it:x} be in ascending or descending order. {p 4 4 2}{it:d} must be an integer equal to one or larger and must be smaller than the number of input data points (i.e., {it:d}