module OptSolver

contains

  subroutine optimizationSolver(n,x,l,u,m,lambda,equatn,linear,rho,constf,&
       epsfeas,epsopk,maxit,iter,f,g,gpsupn,cnorm,cnormu,geninfo,inform)

    implicit none

    ! SCALAR ARGUMENTS
    logical, intent(in)  :: constf
    integer, intent(in)  :: m,maxit,n
    integer, intent(out) :: geninfo,inform,iter
    double precision, intent(out)    :: f,gpsupn
    real(kind=8),     intent(in)     :: epsfeas,epsopk
    real(kind=8),     intent(in out) :: cnorm,cnormu

    ! ARRAY ARGUMENTS
    logical, intent(in) :: equatn(m),linear(m)
    double precision, intent(in)     :: l(n),lambda(m),rho(m),u(n)
    double precision, intent(out)    :: g(n)
    double precision, intent(in out) :: x(n)

    inform = 0

    call gencan(n,x,l,u,m,lambda,equatn,linear,rho,constf,epsfeas,epsopk,&
         maxit,iter,f,g,gpsupn,cnorm,cnormu,geninfo,inform)

  end subroutine optimizationSolver

end module OptSolver
