dlinmin Subroutine

public subroutine dlinmin(p, xi, fret, ftol, itmax)

Arguments

Type IntentOptional Attributes Name
real(kind=8), intent(inout), dimension(:), target :: p
real(kind=8), intent(inout), dimension(:), target :: xi
real(kind=8), intent(out) :: fret
real(kind=8), optional :: ftol
integer, optional :: itmax

Calls

proc~~dlinmin~~CallsGraph proc~dlinmin dlinmin proc~dbrent_ dbrent_ proc~dlinmin->proc~dbrent_ proc~mnbrak mnbrak proc~dlinmin->proc~mnbrak

Source Code

  SUBROUTINE dlinmin(p,xi,fret,ftol,itmax)
    real(8), intent(out)                         :: fret
    real(8), dimension(:), target, intent(inout) :: p,xi
    real(8),optional                             :: ftol
    integer,optional                             :: itmax
    real(8)                                      :: tol
    integer                                      :: itmax_
    real(8)                                      :: ax,bx,fa,fb,fx,xmin,xx
    tol=1.d-6;if(present(ftol))tol=ftol
    itmax_=100;if(present(itmax))itmax_=itmax
    ncom=size(p) ; if(ncom /= size(xi))stop "Error in DLinMin"
    pcom=>p
    xicom=>xi
    ax=0.d0
    xx=1.d0
    call mnbrak(ax,xx,bx,fa,fx,fb,f1dim)
    fret=dbrent_(ax,xx,bx,f1dim,df1dim,tol,xmin,itmax_)
    xi=xmin*xi
    p=p+xi
    return
  end subroutine dlinmin