leastsq_lmdif_func Subroutine

subroutine leastsq_lmdif_func(func, a, m, tol, info)

Arguments

Type IntentOptional Attributes Name
function func(a, m)
Arguments
Type IntentOptional Attributes Name
real(kind=8), dimension(:) :: a
integer :: m
Return Value real(kind=8), dimension(m)
real(kind=8), dimension(:) :: a
integer :: m
real(kind=8), optional :: tol
integer, optional :: info

Calls

proc~~leastsq_lmdif_func~~CallsGraph proc~leastsq_lmdif_func leastsq_lmdif_func lmdif1 lmdif1 proc~leastsq_lmdif_func->lmdif1

Source Code

subroutine leastsq_lmdif_func(func,a,m,tol,info)
  interface
     function func(a,m)
       real(8),dimension(:) :: a
       integer              :: m
       real(8),dimension(m) :: func
     end function func
  end interface
  real(8),dimension(:) :: a
  integer              :: m
  real(8),optional     :: tol
  integer,optional     :: info
  real(8)              :: tol_
  integer              :: info_
  integer              :: n
  real(8),dimension(m) :: fvec
  tol_ = 1.d-15;if(present(tol))tol_=tol
  n=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 ::  m
    integer ::  n
    real(8) ::  a(n)
    real(8) ::  fvec(m)
    integer ::  iflag
    fvec = func(a,m)
    if(iflag<0)stop "LEASTSQ_lmdif1_func2sub ERROR: iflag < 0 "
  end subroutine leastsq_lmdif1_func2sub
end subroutine leastsq_lmdif_func