linmin Subroutine

public subroutine linmin(p, xi, fret, ftol)

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

Calls

proc~~linmin~~CallsGraph proc~linmin linmin proc~mnbrak mnbrak proc~linmin->proc~mnbrak

Source Code

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