# InterpolatingFunction

1D interpolation is currently implemented using cubic splines. Further methods will follow. An interpolating function can be evaluated at a given point or on a set of points, which gives a speed boost, if these points are in ascending order. Higher order derivatives of the interpolating function can also be evaluated. Multiple arithmetic operations on interpolating functions are implemented. Addition and subtraction of splines of a given order leads to a new spline of the same order. For multiplication, division and concatenation this is in general not the case. However, we chose to return an interpolating function of the same type and order such that the function values at the knots are correct.

## Example

### Input

Example.Quanty
x = {1,2,3}
y = {1,4,9}
f = InterpolatingFunction.Spline(x,y)

f(2.5) -- evaluates f at 2.5
n = 1
f(2.5,n) --evaluates the n-th derivative of f at 2.5

f({1.2,2.5,2.7,2.9}) -- evaluates f successively at the given values

y2 = {2,1,2}
g = InterpolatingFunction.Spline(x,y2)
y3 = {2,4,18}      -- this equals y * y2

-- Arithmetics:
f + g
f - g

FtimesG = InterpolatingFunction.Spline(x,y2)
print(FtimesG == f * g)    -- these functions are equal

f^3 == f*f*f

f..g     -- concatenation; let X be a subset of the interval on which g is defined, when evaluating f..g on X make sure that f is defined on the image g(X), otherwise you'll get an error

InterpolatingFunction.Integrate(f) -- integrates f over its full domain
a = 1.5
b = 2.5
InterpolatingFunction.Integrate(f,a,b) -- integrates f from a to b