**INTERPOS module and
routines**

INTERPOS is a set of f90
routines which allows very easily and efficiently to interpolate data, to
compute 1st or second derivative, to compute integral of a function or to
extrapolate. It has also a very efficient matlab
interface (see below), python, idl as well

You can see some examples on
how to install the various libraries in the file INSTALL

It can also smooth the data to
the desired level with a"tension", using
cubic splines with tension which minimizes the second derivatives.

INTERPOS is open access and
you can use the code at your wish, but we ask you to fill in the following
agreement: code_transfer_INTERPOS and
send it to

You can get the last version
from SPC-EPFL gitlab server:

https://gitlab.epfl.ch/spc/interpos

- once you have sent the
signed agreement you can perform for example:

git clone
https://gitlab.epfl.ch/spc/interpos.git interpos

(you can ask to be registered
as a member to use git clone git@gitlab.epfl.ch:spc/interpos.git )

(Note that the svn server is obsolete, now we use git)

INTERPOS can do
(see below for extrapolation options for the various cases):

- Linear
interpolation/extrapolation

- Quadratic
interpolation/extrapolation

- Cubic spline interpolation/extrapolation
(standard or with smoothing)

**For the cubic spline fit (standard or with tension) one can define
various boundary conditions:**

**- 2 ^{nd} derivative**

**- 1 ^{st} derivative**

**- Value of function at given point**

**- Periodic boundary conditions**

Some examples of calls:

USE interpos_module

Call interpos(xin,yin,nin,xout=x,yout=y) ! computes y, cubic spline with 2^{nd}
der.=0 at end points on x=x

Call interpos(xin,yin,nin,xout=x,yout=y,youtp=yp,youtpp=ypp,youtint=yint) !
Also computes dy/dx, d2y/dx and int(y dx)

With default smoothing

Call interpos(xin,yin,nin,nout,tension=-1.,x,y,yp,ypp,yint)

With 1^{st}
derivative=0 at left and 2^{nd}=0 at right:

Call interpos(xin,yin,nin,nout,tension=-1.,x,y,yp,ypp,yint,nbc=(/1,0/),ybc=(/0.,0./))

With periodic boundary
conditions:

Call interpos(xin,yin,nin,nout,tension=-1.,x,y,yp,ypp,yint,nbc=-1,ybc=2.*pi)

To compute first
the spline coefficients (the 2^{nd} derivative) and then use it for
many interpolations:

call interpos(xin,yin,yinnew,yinpp,nin,[tension,nbc,ybc,sigma]) ! only computes yinpp

call interpos(xin,yinnew,yinpp,nin,nout,xout,yout,youtp,youtpp,youtint,option]) ! only computes yout's

The full interface:

Vector xout:

SUBROUTINE interpos(XIN,YIN,NIN,NOUT,tension,xout,yout,youtp,youtpp,youtint,nbc,ybc,sigma,option,info)

Scalar xout:

SUBROUTINE
interpos(X,Y,N,xscal,tension,yscal,yscalp,yscalpp,yscalint,nbcscal,ybcscal,sigma,option,info)

Matlab interface:

A mex
file is available (make interpos_for_matlab) in the matlab subdirectory. It can be compiled within matlab with:

>> mex
interpos.f90

Examples are available in the matlab and matlab/example
directories, but typically:

>> [yfit,dyfit,d2yfit,yint]=interpos(xin,yin,xout,-1.); % uses interpos
with default tension to compute function, 1^{st}, 2^{nd}
derivatives and integral on xout.

The use of interpos
is faster than the spline routine in matlab, so it
can be used with tension=0. on large arrays efficiently.

Matlab quick install:

For the matlab
interface you need the interpos.m
file and the mex file in your ~/matla
directory:

Linux 32 bits: interpos.mexglx

Linux 64 bits: interpos.mexa64

Full files, fortran and matlab:

Last release: tag 9.0.2

From version 8.3 Python
(thanks to Antoine Merle) and idl interfaces have
been added

contact for further information

More details: