module Constants

  integer,      parameter :: INFEASIBLE    = 4
  integer,      parameter :: OPTIMAL       = 0
  real(kind=8), parameter :: LARGEST_VALUE = huge(1.0d0)

  real(kind=8), parameter :: EPSILON_INT   = epsilon(1.0d0)
  real(kind=8), parameter :: EPSILON_FEAS  = 1.0d-08
  real(kind=8), parameter :: EPSILON_MACH  = epsilon(1.0d0)

  logical, parameter :: PRINT_ = .false.

  ! Strategies for the selection of branch variables.
  integer, parameter :: LOWEST_INDEX_FIRST = 0
  integer, parameter :: MOST_FRACTIONAL    = 1
  integer, parameter :: RANDOM_VARIABLE    = 2
  integer, parameter :: PSEUDO_COSTS       = 3
  integer, parameter :: STRONG_BRANCHING   = 4

  ! Strategies for the resolution of the subproblems.
  integer, parameter :: BEST_FEASIBLE  = 0
  integer, parameter :: FIRST_FEASIBLE = 1

  ! Box-constrained solvers.
  integer, parameter :: GENCAN  = 0
  integer, parameter :: ASA     = 1
  
end module Constants
