Nodes of different colours represent the following:
Solid arrows point from a procedure to one which it calls. Dashed
arrows point from an interface to procedures which implement that interface.
This could include the module procedures in a generic interface or the
implementation in a submodule of an interface in a parent module.
Source Code
function finter(func,x)real(8)::xtype(finter_type)::funcreal(8)::finterreal(8)::y,dyinteger::j,k,k0,k1integer::nN=func%N!order of polynomial interpolationfinter=0.d0j=locate(func%X(func%Imin:func%Imax),x)!k = min(max(j-(N-1)/2,1),func%Imax+1-N)k=max(j-(N-1)/2,1)k0=kif(k0<func%Imin)k0=func%Imink1=k+N+1if(k1>func%Imax)thenk1=func%Imaxk0=k1-N-1endif call polint(func%X(k0:k1),func%F(k0:k1),x,y,dy)!call polint(func%X(k:k+n),func%F(k:k+n),x,y,dy)finter=yreturnend function finter