anchor.diff:      real(dp) :: func_value, f_factor
       character(len=task_size) :: task
       character(len=char_state_size) :: char_state
  +    character(len=state_size) :: state
  +    character(len=2*task_size) :: message
       logical :: bool_state(bool_state_size)
       integer :: int_state(int_state_size), &
            working_int_memory(3 * dim_c)
  
positive.code:   ! Public procedures
    public lbfgsb_minimize
  
    ! Public constants and error codes
    enum, bind(c)
       enumerator :: &
            LBFGSB_OK = 0, &  ! No error
            LBFGSB_APPROXIMATE, &  ! Approximate result; could not satisfy tolerances
            LBFGSB_RUNTIME_ERROR, &  ! Error in L-BFGS-B or its invocation
            LBFGSB_FUNCTION_ERROR, &  ! Error in computing objective function
            LBFGSB_GRADIENT_ERROR, &  ! Error in computing objective gradient
            LBFGSB_TASK_ERROR  ! Unrecognized task
    end enum
  
    ! Signatures for C callbacks for computing the objective function
  
negative.code:   public objective_function_c, objective_gradient_c
    abstract interface
  
       ! Signature of objective function C callback.
       !
       ! 'dim': Dimensionality of the optimization space; the size of the
       !    arrays used for points, gradients.
  