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
subroutine leastsq_lmdif_func(func,a,m,tol,info)interface function func(a,m)real(8),dimension(:)::ainteger::mreal(8),dimension(m)::funcend function funcend interfacereal(8),dimension(:)::ainteger::mreal(8),optional::tolinteger,optional::inforeal(8)::tol_integer::info_integer::nreal(8),dimension(m)::fvectol_=1.d-15;if(present(tol))tol_=toln=size(a)call lmdif1(leastsq_lmdif1_func2sub,m,n,a,fvec,tol_,info_)if(present(info))info=info_include"leastsq_error.h90"contains subroutine leastsq_lmdif1_func2sub(m,n,a,fvec,iflag)integer::minteger::nreal(8)::a(n)real(8)::fvec(m)integer::iflagfvec=func(a,m)if(iflag<0)stop"LEASTSQ_lmdif1_func2sub ERROR: iflag < 0 "end subroutine leastsq_lmdif1_func2subend subroutine leastsq_lmdif_func