! This file was automatically generated by SWIG (http://www.swig.org).
! Version 4.0.0
!
! Do not make changes to this file unless you know what you are doing--modify
! the SWIG interface file instead.

! ---------------------------------------------------------------
! Programmer(s): Auto-generated by swig.
! ---------------------------------------------------------------
! SUNDIALS Copyright Start
! Copyright (c) 2002-2020, Lawrence Livermore National Security
! and Southern Methodist University.
! All rights reserved.
!
! See the top-level LICENSE and NOTICE files for details.
!
! SPDX-License-Identifier: BSD-3-Clause
! SUNDIALS Copyright End
! ---------------------------------------------------------------

module fidas_mod
 use, intrinsic :: ISO_C_BINDING
 use fsundials_types_mod
 use fsundials_nvector_mod
 use fsundials_types_mod
 use fsundials_matrix_mod
 use fsundials_nvector_mod
 use fsundials_types_mod
 use fsundials_linearsolver_mod
 use fsundials_matrix_mod
 use fsundials_nvector_mod
 use fsundials_types_mod
 use fsundials_nonlinearsolver_mod
 implicit none
 private

 ! DECLARATION CONSTRUCTS
 integer(C_INT), parameter, public :: IDA_NORMAL = 1_C_INT
 integer(C_INT), parameter, public :: IDA_ONE_STEP = 2_C_INT
 integer(C_INT), parameter, public :: IDA_YA_YDP_INIT = 1_C_INT
 integer(C_INT), parameter, public :: IDA_Y_INIT = 2_C_INT
 integer(C_INT), parameter, public :: IDA_SIMULTANEOUS = 1_C_INT
 integer(C_INT), parameter, public :: IDA_STAGGERED = 2_C_INT
 integer(C_INT), parameter, public :: IDA_CENTERED = 1_C_INT
 integer(C_INT), parameter, public :: IDA_FORWARD = 2_C_INT
 integer(C_INT), parameter, public :: IDA_HERMITE = 1_C_INT
 integer(C_INT), parameter, public :: IDA_POLYNOMIAL = 2_C_INT
 integer(C_INT), parameter, public :: IDA_SUCCESS = 0_C_INT
 integer(C_INT), parameter, public :: IDA_TSTOP_RETURN = 1_C_INT
 integer(C_INT), parameter, public :: IDA_ROOT_RETURN = 2_C_INT
 integer(C_INT), parameter, public :: IDA_WARNING = 99_C_INT
 integer(C_INT), parameter, public :: IDA_TOO_MUCH_WORK = -1_C_INT
 integer(C_INT), parameter, public :: IDA_TOO_MUCH_ACC = -2_C_INT
 integer(C_INT), parameter, public :: IDA_ERR_FAIL = -3_C_INT
 integer(C_INT), parameter, public :: IDA_CONV_FAIL = -4_C_INT
 integer(C_INT), parameter, public :: IDA_LINIT_FAIL = -5_C_INT
 integer(C_INT), parameter, public :: IDA_LSETUP_FAIL = -6_C_INT
 integer(C_INT), parameter, public :: IDA_LSOLVE_FAIL = -7_C_INT
 integer(C_INT), parameter, public :: IDA_RES_FAIL = -8_C_INT
 integer(C_INT), parameter, public :: IDA_REP_RES_ERR = -9_C_INT
 integer(C_INT), parameter, public :: IDA_RTFUNC_FAIL = -10_C_INT
 integer(C_INT), parameter, public :: IDA_CONSTR_FAIL = -11_C_INT
 integer(C_INT), parameter, public :: IDA_FIRST_RES_FAIL = -12_C_INT
 integer(C_INT), parameter, public :: IDA_LINESEARCH_FAIL = -13_C_INT
 integer(C_INT), parameter, public :: IDA_NO_RECOVERY = -14_C_INT
 integer(C_INT), parameter, public :: IDA_NLS_INIT_FAIL = -15_C_INT
 integer(C_INT), parameter, public :: IDA_NLS_SETUP_FAIL = -16_C_INT
 integer(C_INT), parameter, public :: IDA_NLS_FAIL = -17_C_INT
 integer(C_INT), parameter, public :: IDA_MEM_NULL = -20_C_INT
 integer(C_INT), parameter, public :: IDA_MEM_FAIL = -21_C_INT
 integer(C_INT), parameter, public :: IDA_ILL_INPUT = -22_C_INT
 integer(C_INT), parameter, public :: IDA_NO_MALLOC = -23_C_INT
 integer(C_INT), parameter, public :: IDA_BAD_EWT = -24_C_INT
 integer(C_INT), parameter, public :: IDA_BAD_K = -25_C_INT
 integer(C_INT), parameter, public :: IDA_BAD_T = -26_C_INT
 integer(C_INT), parameter, public :: IDA_BAD_DKY = -27_C_INT
 integer(C_INT), parameter, public :: IDA_VECTOROP_ERR = -28_C_INT
 integer(C_INT), parameter, public :: IDA_NO_QUAD = -30_C_INT
 integer(C_INT), parameter, public :: IDA_QRHS_FAIL = -31_C_INT
 integer(C_INT), parameter, public :: IDA_FIRST_QRHS_ERR = -32_C_INT
 integer(C_INT), parameter, public :: IDA_REP_QRHS_ERR = -33_C_INT
 integer(C_INT), parameter, public :: IDA_NO_SENS = -40_C_INT
 integer(C_INT), parameter, public :: IDA_SRES_FAIL = -41_C_INT
 integer(C_INT), parameter, public :: IDA_REP_SRES_ERR = -42_C_INT
 integer(C_INT), parameter, public :: IDA_BAD_IS = -43_C_INT
 integer(C_INT), parameter, public :: IDA_NO_QUADSENS = -50_C_INT
 integer(C_INT), parameter, public :: IDA_QSRHS_FAIL = -51_C_INT
 integer(C_INT), parameter, public :: IDA_FIRST_QSRHS_ERR = -52_C_INT
 integer(C_INT), parameter, public :: IDA_REP_QSRHS_ERR = -53_C_INT
 integer(C_INT), parameter, public :: IDA_UNRECOGNIZED_ERROR = -99_C_INT
 integer(C_INT), parameter, public :: IDA_NO_ADJ = -101_C_INT
 integer(C_INT), parameter, public :: IDA_NO_FWD = -102_C_INT
 integer(C_INT), parameter, public :: IDA_NO_BCK = -103_C_INT
 integer(C_INT), parameter, public :: IDA_BAD_TB0 = -104_C_INT
 integer(C_INT), parameter, public :: IDA_REIFWD_FAIL = -105_C_INT
 integer(C_INT), parameter, public :: IDA_FWD_FAIL = -106_C_INT
 integer(C_INT), parameter, public :: IDA_GETY_BADT = -107_C_INT
 public :: FIDACreate
 public :: FIDAInit
 public :: FIDAReInit
 public :: FIDASStolerances
 public :: FIDASVtolerances
 public :: FIDAWFtolerances
 public :: FIDACalcIC
 public :: FIDASetNonlinConvCoefIC
 public :: FIDASetMaxNumStepsIC
 public :: FIDASetMaxNumJacsIC
 public :: FIDASetMaxNumItersIC
 public :: FIDASetLineSearchOffIC
 public :: FIDASetStepToleranceIC
 public :: FIDASetMaxBacksIC
 public :: FIDASetErrHandlerFn
 public :: FIDASetErrFile
 public :: FIDASetUserData
 public :: FIDASetMaxOrd
 public :: FIDASetMaxNumSteps
 public :: FIDASetInitStep
 public :: FIDASetMaxStep
 public :: FIDASetStopTime
 public :: FIDASetNonlinConvCoef
 public :: FIDASetMaxErrTestFails
 public :: FIDASetMaxNonlinIters
 public :: FIDASetMaxConvFails
 public :: FIDASetSuppressAlg
 public :: FIDASetId
 public :: FIDASetConstraints
 public :: FIDASetNonlinearSolver
 public :: FIDARootInit
 public :: FIDASetRootDirection
 public :: FIDASetNoInactiveRootWarn
 public :: FIDASolve
 public :: FIDAComputeY
 public :: FIDAComputeYp
 public :: FIDAComputeYSens
 public :: FIDAComputeYpSens
 public :: FIDAGetDky
 public :: FIDAGetWorkSpace
 public :: FIDAGetNumSteps
 public :: FIDAGetNumResEvals
 public :: FIDAGetNumLinSolvSetups
 public :: FIDAGetNumErrTestFails
 public :: FIDAGetNumBacktrackOps
 public :: FIDAGetConsistentIC
 public :: FIDAGetLastOrder
 public :: FIDAGetCurrentOrder
 public :: FIDAGetCurrentCj
 public :: FIDAGetCurrentY
 public :: FIDAGetCurrentYSens
 public :: FIDAGetCurrentYp
 public :: FIDAGetCurrentYpSens
 public :: FIDAGetActualInitStep
 public :: FIDAGetLastStep
 public :: FIDAGetCurrentStep
 public :: FIDAGetCurrentTime
 public :: FIDAGetTolScaleFactor
 public :: FIDAGetErrWeights
 public :: FIDAGetEstLocalErrors
 public :: FIDAGetNumGEvals
 public :: FIDAGetRootInfo
 public :: FIDAGetIntegratorStats
 public :: FIDAGetNonlinearSystemData
 public :: FIDAGetNonlinearSystemDataSens
 public :: FIDAGetNumNonlinSolvIters
 public :: FIDAGetNumNonlinSolvConvFails
 public :: FIDAGetNonlinSolvStats
 type, bind(C) :: SwigArrayWrapper
  type(C_PTR), public :: data = C_NULL_PTR
  integer(C_SIZE_T), public :: size = 0
 end type
 public :: FIDAGetReturnFlagName
 public :: FIDAFree
 public :: FIDASetJacTimesResFn
 public :: FIDAQuadInit
 public :: FIDAQuadReInit
 public :: FIDAQuadSStolerances
 public :: FIDAQuadSVtolerances
 public :: FIDASetQuadErrCon
 public :: FIDAGetQuad
 public :: FIDAGetQuadDky
 public :: FIDAGetQuadNumRhsEvals
 public :: FIDAGetQuadNumErrTestFails
 public :: FIDAGetQuadErrWeights
 public :: FIDAGetQuadStats
 public :: FIDAQuadFree
 public :: FIDASensInit
 public :: FIDASensReInit
 public :: FIDASensSStolerances
 public :: FIDASensSVtolerances
 public :: FIDASensEEtolerances
 public :: FIDAGetSensConsistentIC
 public :: FIDASetSensDQMethod
 public :: FIDASetSensErrCon
 public :: FIDASetSensMaxNonlinIters
 public :: FIDASetSensParams
 public :: FIDASetNonlinearSolverSensSim
 public :: FIDASetNonlinearSolverSensStg
 public :: FIDASensToggleOff
 public :: FIDAGetSens
 public :: FIDAGetSens1
 public :: FIDAGetSensDky
 public :: FIDAGetSensDky1
 public :: FIDAGetSensNumResEvals
 public :: FIDAGetNumResEvalsSens
 public :: FIDAGetSensNumErrTestFails
 public :: FIDAGetSensNumLinSolvSetups
 public :: FIDAGetSensErrWeights
 public :: FIDAGetSensStats
 public :: FIDAGetSensNumNonlinSolvIters
 public :: FIDAGetSensNumNonlinSolvConvFails
 public :: FIDAGetSensNonlinSolvStats
 public :: FIDASensFree
 public :: FIDAQuadSensInit
 public :: FIDAQuadSensReInit
 public :: FIDAQuadSensSStolerances
 public :: FIDAQuadSensSVtolerances
 public :: FIDAQuadSensEEtolerances
 public :: FIDASetQuadSensErrCon
 public :: FIDAGetQuadSens
 public :: FIDAGetQuadSens1
 public :: FIDAGetQuadSensDky
 public :: FIDAGetQuadSensDky1
 public :: FIDAGetQuadSensNumRhsEvals
 public :: FIDAGetQuadSensNumErrTestFails
 public :: FIDAGetQuadSensErrWeights
 public :: FIDAGetQuadSensStats
 public :: FIDAQuadSensFree
 public :: FIDAAdjInit
 public :: FIDAAdjReInit
 public :: FIDAAdjFree
 public :: FIDACreateB
 public :: FIDAInitB
 public :: FIDAInitBS
 public :: FIDAReInitB
 public :: FIDASStolerancesB
 public :: FIDASVtolerancesB
 public :: FIDAQuadInitB
 public :: FIDAQuadInitBS
 public :: FIDAQuadReInitB
 public :: FIDAQuadSStolerancesB
 public :: FIDAQuadSVtolerancesB
 public :: FIDACalcICB
 public :: FIDACalcICBS
 public :: FIDASolveF
 public :: FIDASolveB
 public :: FIDAAdjSetNoSensi
 public :: FIDASetUserDataB
 public :: FIDASetMaxOrdB
 public :: FIDASetMaxNumStepsB
 public :: FIDASetInitStepB
 public :: FIDASetMaxStepB
 public :: FIDASetSuppressAlgB
 public :: FIDASetIdB
 public :: FIDASetConstraintsB
 public :: FIDASetQuadErrConB
 public :: FIDASetNonlinearSolverB
 public :: FIDAGetB
 public :: FIDAGetQuadB
 public :: FIDAGetAdjIDABmem
 public :: FIDAGetConsistentICB
 public :: FIDAGetAdjY

 integer, parameter :: swig_cmem_own_bit = 0
 integer, parameter :: swig_cmem_rvalue_bit = 1
 integer, parameter :: swig_cmem_const_bit = 2
 type, bind(C) :: SwigClassWrapper
  type(C_PTR), public :: cptr = C_NULL_PTR
  integer(C_INT), public :: cmemflags = 0
 end type
 ! struct IDAadjCheckPointRec
 type, public :: IDAadjCheckPointRec
  type(SwigClassWrapper), public :: swigdata
 contains
  procedure :: set_my_addr => swigf_IDAadjCheckPointRec_my_addr_set
  procedure :: get_my_addr => swigf_IDAadjCheckPointRec_my_addr_get
  procedure :: set_next_addr => swigf_IDAadjCheckPointRec_next_addr_set
  procedure :: get_next_addr => swigf_IDAadjCheckPointRec_next_addr_get
  procedure :: set_t0 => swigf_IDAadjCheckPointRec_t0_set
  procedure :: get_t0 => swigf_IDAadjCheckPointRec_t0_get
  procedure :: set_t1 => swigf_IDAadjCheckPointRec_t1_set
  procedure :: get_t1 => swigf_IDAadjCheckPointRec_t1_get
  procedure :: set_nstep => swigf_IDAadjCheckPointRec_nstep_set
  procedure :: get_nstep => swigf_IDAadjCheckPointRec_nstep_get
  procedure :: set_order => swigf_IDAadjCheckPointRec_order_set
  procedure :: get_order => swigf_IDAadjCheckPointRec_order_get
  procedure :: set_step => swigf_IDAadjCheckPointRec_step_set
  procedure :: get_step => swigf_IDAadjCheckPointRec_step_get
  procedure :: release => swigf_release_IDAadjCheckPointRec
  procedure, private :: swigf_IDAadjCheckPointRec_op_assign__
  generic :: assignment(=) => swigf_IDAadjCheckPointRec_op_assign__
 end type IDAadjCheckPointRec
 interface IDAadjCheckPointRec
  module procedure swigf_create_IDAadjCheckPointRec
 end interface
 public :: FIDAGetAdjCheckPointsInfo
 public :: FIDASetJacTimesResFnB
 public :: FIDAGetAdjDataPointHermite
 public :: FIDAGetAdjDataPointPolynomial
 public :: FIDAGetAdjCurrentCheckPoint
 public :: FIDABBDPrecInit
 public :: FIDABBDPrecReInit
 public :: FIDABBDPrecGetWorkSpace
 public :: FIDABBDPrecGetNumGfnEvals
 public :: FIDABBDPrecInitB
 public :: FIDABBDPrecReInitB
 integer(C_INT), parameter, public :: IDALS_SUCCESS = 0_C_INT
 integer(C_INT), parameter, public :: IDALS_MEM_NULL = -1_C_INT
 integer(C_INT), parameter, public :: IDALS_LMEM_NULL = -2_C_INT
 integer(C_INT), parameter, public :: IDALS_ILL_INPUT = -3_C_INT
 integer(C_INT), parameter, public :: IDALS_MEM_FAIL = -4_C_INT
 integer(C_INT), parameter, public :: IDALS_PMEM_NULL = -5_C_INT
 integer(C_INT), parameter, public :: IDALS_JACFUNC_UNRECVR = -6_C_INT
 integer(C_INT), parameter, public :: IDALS_JACFUNC_RECVR = -7_C_INT
 integer(C_INT), parameter, public :: IDALS_SUNMAT_FAIL = -8_C_INT
 integer(C_INT), parameter, public :: IDALS_SUNLS_FAIL = -9_C_INT
 integer(C_INT), parameter, public :: IDALS_NO_ADJ = -101_C_INT
 integer(C_INT), parameter, public :: IDALS_LMEMB_NULL = -102_C_INT
 public :: FIDASetLinearSolver
 public :: FIDASetJacFn
 public :: FIDASetPreconditioner
 public :: FIDASetJacTimes
 public :: FIDASetEpsLin
 public :: FIDASetLSNormFactor
 public :: FIDASetLinearSolutionScaling
 public :: FIDASetIncrementFactor
 public :: FIDAGetLinWorkSpace
 public :: FIDAGetNumJacEvals
 public :: FIDAGetNumPrecEvals
 public :: FIDAGetNumPrecSolves
 public :: FIDAGetNumLinIters
 public :: FIDAGetNumLinConvFails
 public :: FIDAGetNumJTSetupEvals
 public :: FIDAGetNumJtimesEvals
 public :: FIDAGetNumLinResEvals
 public :: FIDAGetLastLinFlag
 public :: FIDAGetLinReturnFlagName
 public :: FIDASetLinearSolverB
 public :: FIDASetJacFnB
 public :: FIDASetJacFnBS
 public :: FIDASetEpsLinB
 public :: FIDASetLSNormFactorB
 public :: FIDASetLinearSolutionScalingB
 public :: FIDASetIncrementFactorB
 public :: FIDASetPreconditionerB
 public :: FIDASetPreconditionerBS
 public :: FIDASetJacTimesB
 public :: FIDASetJacTimesBS

! WRAPPER DECLARATIONS
interface
function swigc_FIDACreate() &
bind(C, name="_wrap_FIDACreate") &
result(fresult)
use, intrinsic :: ISO_C_BINDING
type(C_PTR) :: fresult
end function

function swigc_FIDAInit(farg1, farg2, farg3, farg4, farg5) &
bind(C, name="_wrap_FIDAInit") &
result(fresult)
use, intrinsic :: ISO_C_BINDING
type(C_PTR), value :: farg1
type(C_FUNPTR), value :: farg2
real(C_DOUBLE), intent(in) :: farg3
type(C_PTR), value :: farg4
type(C_PTR), value :: farg5
integer(C_INT) :: fresult
end function

function swigc_FIDAReInit(farg1, farg2, farg3, farg4) &
bind(C, name="_wrap_FIDAReInit") &
result(fresult)
use, intrinsic :: ISO_C_BINDING
type(C_PTR), value :: farg1
real(C_DOUBLE), intent(in) :: farg2
type(C_PTR), value :: farg3
type(C_PTR), value :: farg4
integer(C_INT) :: fresult
end function

function swigc_FIDASStolerances(farg1, farg2, farg3) &
bind(C, name="_wrap_FIDASStolerances") &
result(fresult)
use, intrinsic :: ISO_C_BINDING
type(C_PTR), value :: farg1
real(C_DOUBLE), intent(in) :: farg2
real(C_DOUBLE), intent(in) :: farg3
integer(C_INT) :: fresult
end function

function swigc_FIDASVtolerances(farg1, farg2, farg3) &
bind(C, name="_wrap_FIDASVtolerances") &
result(fresult)
use, intrinsic :: ISO_C_BINDING
type(C_PTR), value :: farg1
real(C_DOUBLE), intent(in) :: farg2
type(C_PTR), value :: farg3
integer(C_INT) :: fresult
end function

function swigc_FIDAWFtolerances(farg1, farg2) &
bind(C, name="_wrap_FIDAWFtolerances") &
result(fresult)
use, intrinsic :: ISO_C_BINDING
type(C_PTR), value :: farg1
type(C_FUNPTR), value :: farg2
integer(C_INT) :: fresult
end function

function swigc_FIDACalcIC(farg1, farg2, farg3) &
bind(C, name="_wrap_FIDACalcIC") &
result(fresult)
use, intrinsic :: ISO_C_BINDING
type(C_PTR), value :: farg1
integer(C_INT), intent(in) :: farg2
real(C_DOUBLE), intent(in) :: farg3
integer(C_INT) :: fresult
end function

function swigc_FIDASetNonlinConvCoefIC(farg1, farg2) &
bind(C, name="_wrap_FIDASetNonlinConvCoefIC") &
result(fresult)
use, intrinsic :: ISO_C_BINDING
type(C_PTR), value :: farg1
real(C_DOUBLE), intent(in) :: farg2
integer(C_INT) :: fresult
end function

function swigc_FIDASetMaxNumStepsIC(farg1, farg2) &
bind(C, name="_wrap_FIDASetMaxNumStepsIC") &
result(fresult)
use, intrinsic :: ISO_C_BINDING
type(C_PTR), value :: farg1
integer(C_INT), intent(in) :: farg2
integer(C_INT) :: fresult
end function

function swigc_FIDASetMaxNumJacsIC(farg1, farg2) &
bind(C, name="_wrap_FIDASetMaxNumJacsIC") &
result(fresult)
use, intrinsic :: ISO_C_BINDING
type(C_PTR), value :: farg1
integer(C_INT), intent(in) :: farg2
integer(C_INT) :: fresult
end function

function swigc_FIDASetMaxNumItersIC(farg1, farg2) &
bind(C, name="_wrap_FIDASetMaxNumItersIC") &
result(fresult)
use, intrinsic :: ISO_C_BINDING
type(C_PTR), value :: farg1
integer(C_INT), intent(in) :: farg2
integer(C_INT) :: fresult
end function

function swigc_FIDASetLineSearchOffIC(farg1, farg2) &
bind(C, name="_wrap_FIDASetLineSearchOffIC") &
result(fresult)
use, intrinsic :: ISO_C_BINDING
type(C_PTR), value :: farg1
integer(C_INT), intent(in) :: farg2
integer(C_INT) :: fresult
end function

function swigc_FIDASetStepToleranceIC(farg1, farg2) &
bind(C, name="_wrap_FIDASetStepToleranceIC") &
result(fresult)
use, intrinsic :: ISO_C_BINDING
type(C_PTR), value :: farg1
real(C_DOUBLE), intent(in) :: farg2
integer(C_INT) :: fresult
end function

function swigc_FIDASetMaxBacksIC(farg1, farg2) &
bind(C, name="_wrap_FIDASetMaxBacksIC") &
result(fresult)
use, intrinsic :: ISO_C_BINDING
type(C_PTR), value :: farg1
integer(C_INT), intent(in) :: farg2
integer(C_INT) :: fresult
end function

function swigc_FIDASetErrHandlerFn(farg1, farg2, farg3) &
bind(C, name="_wrap_FIDASetErrHandlerFn") &
result(fresult)
use, intrinsic :: ISO_C_BINDING
type(C_PTR), value :: farg1
type(C_FUNPTR), value :: farg2
type(C_PTR), value :: farg3
integer(C_INT) :: fresult
end function

function swigc_FIDASetErrFile(farg1, farg2) &
bind(C, name="_wrap_FIDASetErrFile") &
result(fresult)
use, intrinsic :: ISO_C_BINDING
type(C_PTR), value :: farg1
type(C_PTR), value :: farg2
integer(C_INT) :: fresult
end function

function swigc_FIDASetUserData(farg1, farg2) &
bind(C, name="_wrap_FIDASetUserData") &
result(fresult)
use, intrinsic :: ISO_C_BINDING
type(C_PTR), value :: farg1
type(C_PTR), value :: farg2
integer(C_INT) :: fresult
end function

function swigc_FIDASetMaxOrd(farg1, farg2) &
bind(C, name="_wrap_FIDASetMaxOrd") &
result(fresult)
use, intrinsic :: ISO_C_BINDING
type(C_PTR), value :: farg1
integer(C_INT), intent(in) :: farg2
integer(C_INT) :: fresult
end function

function swigc_FIDASetMaxNumSteps(farg1, farg2) &
bind(C, name="_wrap_FIDASetMaxNumSteps") &
result(fresult)
use, intrinsic :: ISO_C_BINDING
type(C_PTR), value :: farg1
integer(C_LONG), intent(in) :: farg2
integer(C_INT) :: fresult
end function

function swigc_FIDASetInitStep(farg1, farg2) &
bind(C, name="_wrap_FIDASetInitStep") &
result(fresult)
use, intrinsic :: ISO_C_BINDING
type(C_PTR), value :: farg1
real(C_DOUBLE), intent(in) :: farg2
integer(C_INT) :: fresult
end function

function swigc_FIDASetMaxStep(farg1, farg2) &
bind(C, name="_wrap_FIDASetMaxStep") &
result(fresult)
use, intrinsic :: ISO_C_BINDING
type(C_PTR), value :: farg1
real(C_DOUBLE), intent(in) :: farg2
integer(C_INT) :: fresult
end function

function swigc_FIDASetStopTime(farg1, farg2) &
bind(C, name="_wrap_FIDASetStopTime") &
result(fresult)
use, intrinsic :: ISO_C_BINDING
type(C_PTR), value :: farg1
real(C_DOUBLE), intent(in) :: farg2
integer(C_INT) :: fresult
end function

function swigc_FIDASetNonlinConvCoef(farg1, farg2) &
bind(C, name="_wrap_FIDASetNonlinConvCoef") &
result(fresult)
use, intrinsic :: ISO_C_BINDING
type(C_PTR), value :: farg1
real(C_DOUBLE), intent(in) :: farg2
integer(C_INT) :: fresult
end function

function swigc_FIDASetMaxErrTestFails(farg1, farg2) &
bind(C, name="_wrap_FIDASetMaxErrTestFails") &
result(fresult)
use, intrinsic :: ISO_C_BINDING
type(C_PTR), value :: farg1
integer(C_INT), intent(in) :: farg2
integer(C_INT) :: fresult
end function

function swigc_FIDASetMaxNonlinIters(farg1, farg2) &
bind(C, name="_wrap_FIDASetMaxNonlinIters") &
result(fresult)
use, intrinsic :: ISO_C_BINDING
type(C_PTR), value :: farg1
integer(C_INT), intent(in) :: farg2
integer(C_INT) :: fresult
end function

function swigc_FIDASetMaxConvFails(farg1, farg2) &
bind(C, name="_wrap_FIDASetMaxConvFails") &
result(fresult)
use, intrinsic :: ISO_C_BINDING
type(C_PTR), value :: farg1
integer(C_INT), intent(in) :: farg2
integer(C_INT) :: fresult
end function

function swigc_FIDASetSuppressAlg(farg1, farg2) &
bind(C, name="_wrap_FIDASetSuppressAlg") &
result(fresult)
use, intrinsic :: ISO_C_BINDING
type(C_PTR), value :: farg1
integer(C_INT), intent(in) :: farg2
integer(C_INT) :: fresult
end function

function swigc_FIDASetId(farg1, farg2) &
bind(C, name="_wrap_FIDASetId") &
result(fresult)
use, intrinsic :: ISO_C_BINDING
type(C_PTR), value :: farg1
type(C_PTR), value :: farg2
integer(C_INT) :: fresult
end function

function swigc_FIDASetConstraints(farg1, farg2) &
bind(C, name="_wrap_FIDASetConstraints") &
result(fresult)
use, intrinsic :: ISO_C_BINDING
type(C_PTR), value :: farg1
type(C_PTR), value :: farg2
integer(C_INT) :: fresult
end function

function swigc_FIDASetNonlinearSolver(farg1, farg2) &
bind(C, name="_wrap_FIDASetNonlinearSolver") &
result(fresult)
use, intrinsic :: ISO_C_BINDING
type(C_PTR), value :: farg1
type(C_PTR), value :: farg2
integer(C_INT) :: fresult
end function

function swigc_FIDARootInit(farg1, farg2, farg3) &
bind(C, name="_wrap_FIDARootInit") &
result(fresult)
use, intrinsic :: ISO_C_BINDING
type(C_PTR), value :: farg1
integer(C_INT), intent(in) :: farg2
type(C_FUNPTR), value :: farg3
integer(C_INT) :: fresult
end function

function swigc_FIDASetRootDirection(farg1, farg2) &
bind(C, name="_wrap_FIDASetRootDirection") &
result(fresult)
use, intrinsic :: ISO_C_BINDING
type(C_PTR), value :: farg1
type(C_PTR), value :: farg2
integer(C_INT) :: fresult
end function

function swigc_FIDASetNoInactiveRootWarn(farg1) &
bind(C, name="_wrap_FIDASetNoInactiveRootWarn") &
result(fresult)
use, intrinsic :: ISO_C_BINDING
type(C_PTR), value :: farg1
integer(C_INT) :: fresult
end function

function swigc_FIDASolve(farg1, farg2, farg3, farg4, farg5, farg6) &
bind(C, name="_wrap_FIDASolve") &
result(fresult)
use, intrinsic :: ISO_C_BINDING
type(C_PTR), value :: farg1
real(C_DOUBLE), intent(in) :: farg2
type(C_PTR), value :: farg3
type(C_PTR), value :: farg4
type(C_PTR), value :: farg5
integer(C_INT), intent(in) :: farg6
integer(C_INT) :: fresult
end function

function swigc_FIDAComputeY(farg1, farg2, farg3) &
bind(C, name="_wrap_FIDAComputeY") &
result(fresult)
use, intrinsic :: ISO_C_BINDING
type(C_PTR), value :: farg1
type(C_PTR), value :: farg2
type(C_PTR), value :: farg3
integer(C_INT) :: fresult
end function

function swigc_FIDAComputeYp(farg1, farg2, farg3) &
bind(C, name="_wrap_FIDAComputeYp") &
result(fresult)
use, intrinsic :: ISO_C_BINDING
type(C_PTR), value :: farg1
type(C_PTR), value :: farg2
type(C_PTR), value :: farg3
integer(C_INT) :: fresult
end function

function swigc_FIDAComputeYSens(farg1, farg2, farg3) &
bind(C, name="_wrap_FIDAComputeYSens") &
result(fresult)
use, intrinsic :: ISO_C_BINDING
type(C_PTR), value :: farg1
type(C_PTR), value :: farg2
type(C_PTR), value :: farg3
integer(C_INT) :: fresult
end function

function swigc_FIDAComputeYpSens(farg1, farg2, farg3) &
bind(C, name="_wrap_FIDAComputeYpSens") &
result(fresult)
use, intrinsic :: ISO_C_BINDING
type(C_PTR), value :: farg1
type(C_PTR), value :: farg2
type(C_PTR), value :: farg3
integer(C_INT) :: fresult
end function

function swigc_FIDAGetDky(farg1, farg2, farg3, farg4) &
bind(C, name="_wrap_FIDAGetDky") &
result(fresult)
use, intrinsic :: ISO_C_BINDING
type(C_PTR), value :: farg1
real(C_DOUBLE), intent(in) :: farg2
integer(C_INT), intent(in) :: farg3
type(C_PTR), value :: farg4
integer(C_INT) :: fresult
end function

function swigc_FIDAGetWorkSpace(farg1, farg2, farg3) &
bind(C, name="_wrap_FIDAGetWorkSpace") &
result(fresult)
use, intrinsic :: ISO_C_BINDING
type(C_PTR), value :: farg1
type(C_PTR), value :: farg2
type(C_PTR), value :: farg3
integer(C_INT) :: fresult
end function

function swigc_FIDAGetNumSteps(farg1, farg2) &
bind(C, name="_wrap_FIDAGetNumSteps") &
result(fresult)
use, intrinsic :: ISO_C_BINDING
type(C_PTR), value :: farg1
type(C_PTR), value :: farg2
integer(C_INT) :: fresult
end function

function swigc_FIDAGetNumResEvals(farg1, farg2) &
bind(C, name="_wrap_FIDAGetNumResEvals") &
result(fresult)
use, intrinsic :: ISO_C_BINDING
type(C_PTR), value :: farg1
type(C_PTR), value :: farg2
integer(C_INT) :: fresult
end function

function swigc_FIDAGetNumLinSolvSetups(farg1, farg2) &
bind(C, name="_wrap_FIDAGetNumLinSolvSetups") &
result(fresult)
use, intrinsic :: ISO_C_BINDING
type(C_PTR), value :: farg1
type(C_PTR), value :: farg2
integer(C_INT) :: fresult
end function

function swigc_FIDAGetNumErrTestFails(farg1, farg2) &
bind(C, name="_wrap_FIDAGetNumErrTestFails") &
result(fresult)
use, intrinsic :: ISO_C_BINDING
type(C_PTR), value :: farg1
type(C_PTR), value :: farg2
integer(C_INT) :: fresult
end function

function swigc_FIDAGetNumBacktrackOps(farg1, farg2) &
bind(C, name="_wrap_FIDAGetNumBacktrackOps") &
result(fresult)
use, intrinsic :: ISO_C_BINDING
type(C_PTR), value :: farg1
type(C_PTR), value :: farg2
integer(C_INT) :: fresult
end function

function swigc_FIDAGetConsistentIC(farg1, farg2, farg3) &
bind(C, name="_wrap_FIDAGetConsistentIC") &
result(fresult)
use, intrinsic :: ISO_C_BINDING
type(C_PTR), value :: farg1
type(C_PTR), value :: farg2
type(C_PTR), value :: farg3
integer(C_INT) :: fresult
end function

function swigc_FIDAGetLastOrder(farg1, farg2) &
bind(C, name="_wrap_FIDAGetLastOrder") &
result(fresult)
use, intrinsic :: ISO_C_BINDING
type(C_PTR), value :: farg1
type(C_PTR), value :: farg2
integer(C_INT) :: fresult
end function

function swigc_FIDAGetCurrentOrder(farg1, farg2) &
bind(C, name="_wrap_FIDAGetCurrentOrder") &
result(fresult)
use, intrinsic :: ISO_C_BINDING
type(C_PTR), value :: farg1
type(C_PTR), value :: farg2
integer(C_INT) :: fresult
end function

function swigc_FIDAGetCurrentCj(farg1, farg2) &
bind(C, name="_wrap_FIDAGetCurrentCj") &
result(fresult)
use, intrinsic :: ISO_C_BINDING
type(C_PTR), value :: farg1
type(C_PTR), value :: farg2
integer(C_INT) :: fresult
end function

function swigc_FIDAGetCurrentY(farg1, farg2) &
bind(C, name="_wrap_FIDAGetCurrentY") &
result(fresult)
use, intrinsic :: ISO_C_BINDING
type(C_PTR), value :: farg1
type(C_PTR), value :: farg2
integer(C_INT) :: fresult
end function

function swigc_FIDAGetCurrentYSens(farg1, farg2) &
bind(C, name="_wrap_FIDAGetCurrentYSens") &
result(fresult)
use, intrinsic :: ISO_C_BINDING
type(C_PTR), value :: farg1
type(C_PTR), value :: farg2
integer(C_INT) :: fresult
end function

function swigc_FIDAGetCurrentYp(farg1, farg2) &
bind(C, name="_wrap_FIDAGetCurrentYp") &
result(fresult)
use, intrinsic :: ISO_C_BINDING
type(C_PTR), value :: farg1
type(C_PTR), value :: farg2
integer(C_INT) :: fresult
end function

function swigc_FIDAGetCurrentYpSens(farg1, farg2) &
bind(C, name="_wrap_FIDAGetCurrentYpSens") &
result(fresult)
use, intrinsic :: ISO_C_BINDING
type(C_PTR), value :: farg1
type(C_PTR), value :: farg2
integer(C_INT) :: fresult
end function

function swigc_FIDAGetActualInitStep(farg1, farg2) &
bind(C, name="_wrap_FIDAGetActualInitStep") &
result(fresult)
use, intrinsic :: ISO_C_BINDING
type(C_PTR), value :: farg1
type(C_PTR), value :: farg2
integer(C_INT) :: fresult
end function

function swigc_FIDAGetLastStep(farg1, farg2) &
bind(C, name="_wrap_FIDAGetLastStep") &
result(fresult)
use, intrinsic :: ISO_C_BINDING
type(C_PTR), value :: farg1
type(C_PTR), value :: farg2
integer(C_INT) :: fresult
end function

function swigc_FIDAGetCurrentStep(farg1, farg2) &
bind(C, name="_wrap_FIDAGetCurrentStep") &
result(fresult)
use, intrinsic :: ISO_C_BINDING
type(C_PTR), value :: farg1
type(C_PTR), value :: farg2
integer(C_INT) :: fresult
end function

function swigc_FIDAGetCurrentTime(farg1, farg2) &
bind(C, name="_wrap_FIDAGetCurrentTime") &
result(fresult)
use, intrinsic :: ISO_C_BINDING
type(C_PTR), value :: farg1
type(C_PTR), value :: farg2
integer(C_INT) :: fresult
end function

function swigc_FIDAGetTolScaleFactor(farg1, farg2) &
bind(C, name="_wrap_FIDAGetTolScaleFactor") &
result(fresult)
use, intrinsic :: ISO_C_BINDING
type(C_PTR), value :: farg1
type(C_PTR), value :: farg2
integer(C_INT) :: fresult
end function

function swigc_FIDAGetErrWeights(farg1, farg2) &
bind(C, name="_wrap_FIDAGetErrWeights") &
result(fresult)
use, intrinsic :: ISO_C_BINDING
type(C_PTR), value :: farg1
type(C_PTR), value :: farg2
integer(C_INT) :: fresult
end function

function swigc_FIDAGetEstLocalErrors(farg1, farg2) &
bind(C, name="_wrap_FIDAGetEstLocalErrors") &
result(fresult)
use, intrinsic :: ISO_C_BINDING
type(C_PTR), value :: farg1
type(C_PTR), value :: farg2
integer(C_INT) :: fresult
end function

function swigc_FIDAGetNumGEvals(farg1, farg2) &
bind(C, name="_wrap_FIDAGetNumGEvals") &
result(fresult)
use, intrinsic :: ISO_C_BINDING
type(C_PTR), value :: farg1
type(C_PTR), value :: farg2
integer(C_INT) :: fresult
end function

function swigc_FIDAGetRootInfo(farg1, farg2) &
bind(C, name="_wrap_FIDAGetRootInfo") &
result(fresult)
use, intrinsic :: ISO_C_BINDING
type(C_PTR), value :: farg1
type(C_PTR), value :: farg2
integer(C_INT) :: fresult
end function

function swigc_FIDAGetIntegratorStats(farg1, farg2, farg3, farg4, farg5, farg6, farg7, farg8, farg9, farg10, farg11) &
bind(C, name="_wrap_FIDAGetIntegratorStats") &
result(fresult)
use, intrinsic :: ISO_C_BINDING
type(C_PTR), value :: farg1
type(C_PTR), value :: farg2
type(C_PTR), value :: farg3
type(C_PTR), value :: farg4
type(C_PTR), value :: farg5
type(C_PTR), value :: farg6
type(C_PTR), value :: farg7
type(C_PTR), value :: farg8
type(C_PTR), value :: farg9
type(C_PTR), value :: farg10
type(C_PTR), value :: farg11
integer(C_INT) :: fresult
end function

function swigc_FIDAGetNonlinearSystemData(farg1, farg2, farg3, farg4, farg5, farg6, farg7, farg8, farg9) &
bind(C, name="_wrap_FIDAGetNonlinearSystemData") &
result(fresult)
use, intrinsic :: ISO_C_BINDING
type(C_PTR), value :: farg1
type(C_PTR), value :: farg2
type(C_PTR), value :: farg3
type(C_PTR), value :: farg4
type(C_PTR), value :: farg5
type(C_PTR), value :: farg6
type(C_PTR), value :: farg7
type(C_PTR), value :: farg8
type(C_PTR), value :: farg9
integer(C_INT) :: fresult
end function

function swigc_FIDAGetNonlinearSystemDataSens(farg1, farg2, farg3, farg4, farg5, farg6, farg7, farg8) &
bind(C, name="_wrap_FIDAGetNonlinearSystemDataSens") &
result(fresult)
use, intrinsic :: ISO_C_BINDING
type(C_PTR), value :: farg1
type(C_PTR), value :: farg2
type(C_PTR), value :: farg3
type(C_PTR), value :: farg4
type(C_PTR), value :: farg5
type(C_PTR), value :: farg6
type(C_PTR), value :: farg7
type(C_PTR), value :: farg8
integer(C_INT) :: fresult
end function

function swigc_FIDAGetNumNonlinSolvIters(farg1, farg2) &
bind(C, name="_wrap_FIDAGetNumNonlinSolvIters") &
result(fresult)
use, intrinsic :: ISO_C_BINDING
type(C_PTR), value :: farg1
type(C_PTR), value :: farg2
integer(C_INT) :: fresult
end function

function swigc_FIDAGetNumNonlinSolvConvFails(farg1, farg2) &
bind(C, name="_wrap_FIDAGetNumNonlinSolvConvFails") &
result(fresult)
use, intrinsic :: ISO_C_BINDING
type(C_PTR), value :: farg1
type(C_PTR), value :: farg2
integer(C_INT) :: fresult
end function

function swigc_FIDAGetNonlinSolvStats(farg1, farg2, farg3) &
bind(C, name="_wrap_FIDAGetNonlinSolvStats") &
result(fresult)
use, intrinsic :: ISO_C_BINDING
type(C_PTR), value :: farg1
type(C_PTR), value :: farg2
type(C_PTR), value :: farg3
integer(C_INT) :: fresult
end function

 subroutine SWIG_free(cptr) &
  bind(C, name="free")
 use, intrinsic :: ISO_C_BINDING
 type(C_PTR), value :: cptr
end subroutine
function swigc_FIDAGetReturnFlagName(farg1) &
bind(C, name="_wrap_FIDAGetReturnFlagName") &
result(fresult)
use, intrinsic :: ISO_C_BINDING
import :: swigarraywrapper
integer(C_LONG), intent(in) :: farg1
type(SwigArrayWrapper) :: fresult
end function

subroutine swigc_FIDAFree(farg1) &
bind(C, name="_wrap_FIDAFree")
use, intrinsic :: ISO_C_BINDING
type(C_PTR), value :: farg1
end subroutine

function swigc_FIDASetJacTimesResFn(farg1, farg2) &
bind(C, name="_wrap_FIDASetJacTimesResFn") &
result(fresult)
use, intrinsic :: ISO_C_BINDING
type(C_PTR), value :: farg1
type(C_FUNPTR), value :: farg2
integer(C_INT) :: fresult
end function

function swigc_FIDAQuadInit(farg1, farg2, farg3) &
bind(C, name="_wrap_FIDAQuadInit") &
result(fresult)
use, intrinsic :: ISO_C_BINDING
type(C_PTR), value :: farg1
type(C_FUNPTR), value :: farg2
type(C_PTR), value :: farg3
integer(C_INT) :: fresult
end function

function swigc_FIDAQuadReInit(farg1, farg2) &
bind(C, name="_wrap_FIDAQuadReInit") &
result(fresult)
use, intrinsic :: ISO_C_BINDING
type(C_PTR), value :: farg1
type(C_PTR), value :: farg2
integer(C_INT) :: fresult
end function

function swigc_FIDAQuadSStolerances(farg1, farg2, farg3) &
bind(C, name="_wrap_FIDAQuadSStolerances") &
result(fresult)
use, intrinsic :: ISO_C_BINDING
type(C_PTR), value :: farg1
real(C_DOUBLE), intent(in) :: farg2
real(C_DOUBLE), intent(in) :: farg3
integer(C_INT) :: fresult
end function

function swigc_FIDAQuadSVtolerances(farg1, farg2, farg3) &
bind(C, name="_wrap_FIDAQuadSVtolerances") &
result(fresult)
use, intrinsic :: ISO_C_BINDING
type(C_PTR), value :: farg1
real(C_DOUBLE), intent(in) :: farg2
type(C_PTR), value :: farg3
integer(C_INT) :: fresult
end function

function swigc_FIDASetQuadErrCon(farg1, farg2) &
bind(C, name="_wrap_FIDASetQuadErrCon") &
result(fresult)
use, intrinsic :: ISO_C_BINDING
type(C_PTR), value :: farg1
integer(C_INT), intent(in) :: farg2
integer(C_INT) :: fresult
end function

function swigc_FIDAGetQuad(farg1, farg2, farg3) &
bind(C, name="_wrap_FIDAGetQuad") &
result(fresult)
use, intrinsic :: ISO_C_BINDING
type(C_PTR), value :: farg1
type(C_PTR), value :: farg2
type(C_PTR), value :: farg3
integer(C_INT) :: fresult
end function

function swigc_FIDAGetQuadDky(farg1, farg2, farg3, farg4) &
bind(C, name="_wrap_FIDAGetQuadDky") &
result(fresult)
use, intrinsic :: ISO_C_BINDING
type(C_PTR), value :: farg1
real(C_DOUBLE), intent(in) :: farg2
integer(C_INT), intent(in) :: farg3
type(C_PTR), value :: farg4
integer(C_INT) :: fresult
end function

function swigc_FIDAGetQuadNumRhsEvals(farg1, farg2) &
bind(C, name="_wrap_FIDAGetQuadNumRhsEvals") &
result(fresult)
use, intrinsic :: ISO_C_BINDING
type(C_PTR), value :: farg1
type(C_PTR), value :: farg2
integer(C_INT) :: fresult
end function

function swigc_FIDAGetQuadNumErrTestFails(farg1, farg2) &
bind(C, name="_wrap_FIDAGetQuadNumErrTestFails") &
result(fresult)
use, intrinsic :: ISO_C_BINDING
type(C_PTR), value :: farg1
type(C_PTR), value :: farg2
integer(C_INT) :: fresult
end function

function swigc_FIDAGetQuadErrWeights(farg1, farg2) &
bind(C, name="_wrap_FIDAGetQuadErrWeights") &
result(fresult)
use, intrinsic :: ISO_C_BINDING
type(C_PTR), value :: farg1
type(C_PTR), value :: farg2
integer(C_INT) :: fresult
end function

function swigc_FIDAGetQuadStats(farg1, farg2, farg3) &
bind(C, name="_wrap_FIDAGetQuadStats") &
result(fresult)
use, intrinsic :: ISO_C_BINDING
type(C_PTR), value :: farg1
type(C_PTR), value :: farg2
type(C_PTR), value :: farg3
integer(C_INT) :: fresult
end function

subroutine swigc_FIDAQuadFree(farg1) &
bind(C, name="_wrap_FIDAQuadFree")
use, intrinsic :: ISO_C_BINDING
type(C_PTR), value :: farg1
end subroutine

function swigc_FIDASensInit(farg1, farg2, farg3, farg4, farg5, farg6) &
bind(C, name="_wrap_FIDASensInit") &
result(fresult)
use, intrinsic :: ISO_C_BINDING
type(C_PTR), value :: farg1
integer(C_INT), intent(in) :: farg2
integer(C_INT), intent(in) :: farg3
type(C_FUNPTR), value :: farg4
type(C_PTR), value :: farg5
type(C_PTR), value :: farg6
integer(C_INT) :: fresult
end function

function swigc_FIDASensReInit(farg1, farg2, farg3, farg4) &
bind(C, name="_wrap_FIDASensReInit") &
result(fresult)
use, intrinsic :: ISO_C_BINDING
type(C_PTR), value :: farg1
integer(C_INT), intent(in) :: farg2
type(C_PTR), value :: farg3
type(C_PTR), value :: farg4
integer(C_INT) :: fresult
end function

function swigc_FIDASensSStolerances(farg1, farg2, farg3) &
bind(C, name="_wrap_FIDASensSStolerances") &
result(fresult)
use, intrinsic :: ISO_C_BINDING
type(C_PTR), value :: farg1
real(C_DOUBLE), intent(in) :: farg2
type(C_PTR), value :: farg3
integer(C_INT) :: fresult
end function

function swigc_FIDASensSVtolerances(farg1, farg2, farg3) &
bind(C, name="_wrap_FIDASensSVtolerances") &
result(fresult)
use, intrinsic :: ISO_C_BINDING
type(C_PTR), value :: farg1
real(C_DOUBLE), intent(in) :: farg2
type(C_PTR), value :: farg3
integer(C_INT) :: fresult
end function

function swigc_FIDASensEEtolerances(farg1) &
bind(C, name="_wrap_FIDASensEEtolerances") &
result(fresult)
use, intrinsic :: ISO_C_BINDING
type(C_PTR), value :: farg1
integer(C_INT) :: fresult
end function

function swigc_FIDAGetSensConsistentIC(farg1, farg2, farg3) &
bind(C, name="_wrap_FIDAGetSensConsistentIC") &
result(fresult)
use, intrinsic :: ISO_C_BINDING
type(C_PTR), value :: farg1
type(C_PTR), value :: farg2
type(C_PTR), value :: farg3
integer(C_INT) :: fresult
end function

function swigc_FIDASetSensDQMethod(farg1, farg2, farg3) &
bind(C, name="_wrap_FIDASetSensDQMethod") &
result(fresult)
use, intrinsic :: ISO_C_BINDING
type(C_PTR), value :: farg1
integer(C_INT), intent(in) :: farg2
real(C_DOUBLE), intent(in) :: farg3
integer(C_INT) :: fresult
end function

function swigc_FIDASetSensErrCon(farg1, farg2) &
bind(C, name="_wrap_FIDASetSensErrCon") &
result(fresult)
use, intrinsic :: ISO_C_BINDING
type(C_PTR), value :: farg1
integer(C_INT), intent(in) :: farg2
integer(C_INT) :: fresult
end function

function swigc_FIDASetSensMaxNonlinIters(farg1, farg2) &
bind(C, name="_wrap_FIDASetSensMaxNonlinIters") &
result(fresult)
use, intrinsic :: ISO_C_BINDING
type(C_PTR), value :: farg1
integer(C_INT), intent(in) :: farg2
integer(C_INT) :: fresult
end function

function swigc_FIDASetSensParams(farg1, farg2, farg3, farg4) &
bind(C, name="_wrap_FIDASetSensParams") &
result(fresult)
use, intrinsic :: ISO_C_BINDING
type(C_PTR), value :: farg1
type(C_PTR), value :: farg2
type(C_PTR), value :: farg3
type(C_PTR), value :: farg4
integer(C_INT) :: fresult
end function

function swigc_FIDASetNonlinearSolverSensSim(farg1, farg2) &
bind(C, name="_wrap_FIDASetNonlinearSolverSensSim") &
result(fresult)
use, intrinsic :: ISO_C_BINDING
type(C_PTR), value :: farg1
type(C_PTR), value :: farg2
integer(C_INT) :: fresult
end function

function swigc_FIDASetNonlinearSolverSensStg(farg1, farg2) &
bind(C, name="_wrap_FIDASetNonlinearSolverSensStg") &
result(fresult)
use, intrinsic :: ISO_C_BINDING
type(C_PTR), value :: farg1
type(C_PTR), value :: farg2
integer(C_INT) :: fresult
end function

function swigc_FIDASensToggleOff(farg1) &
bind(C, name="_wrap_FIDASensToggleOff") &
result(fresult)
use, intrinsic :: ISO_C_BINDING
type(C_PTR), value :: farg1
integer(C_INT) :: fresult
end function

function swigc_FIDAGetSens(farg1, farg2, farg3) &
bind(C, name="_wrap_FIDAGetSens") &
result(fresult)
use, intrinsic :: ISO_C_BINDING
type(C_PTR), value :: farg1
type(C_PTR), value :: farg2
type(C_PTR), value :: farg3
integer(C_INT) :: fresult
end function

function swigc_FIDAGetSens1(farg1, farg2, farg3, farg4) &
bind(C, name="_wrap_FIDAGetSens1") &
result(fresult)
use, intrinsic :: ISO_C_BINDING
type(C_PTR), value :: farg1
type(C_PTR), value :: farg2
integer(C_INT), intent(in) :: farg3
type(C_PTR), value :: farg4
integer(C_INT) :: fresult
end function

function swigc_FIDAGetSensDky(farg1, farg2, farg3, farg4) &
bind(C, name="_wrap_FIDAGetSensDky") &
result(fresult)
use, intrinsic :: ISO_C_BINDING
type(C_PTR), value :: farg1
real(C_DOUBLE), intent(in) :: farg2
integer(C_INT), intent(in) :: farg3
type(C_PTR), value :: farg4
integer(C_INT) :: fresult
end function

function swigc_FIDAGetSensDky1(farg1, farg2, farg3, farg4, farg5) &
bind(C, name="_wrap_FIDAGetSensDky1") &
result(fresult)
use, intrinsic :: ISO_C_BINDING
type(C_PTR), value :: farg1
real(C_DOUBLE), intent(in) :: farg2
integer(C_INT), intent(in) :: farg3
integer(C_INT), intent(in) :: farg4
type(C_PTR), value :: farg5
integer(C_INT) :: fresult
end function

function swigc_FIDAGetSensNumResEvals(farg1, farg2) &
bind(C, name="_wrap_FIDAGetSensNumResEvals") &
result(fresult)
use, intrinsic :: ISO_C_BINDING
type(C_PTR), value :: farg1
type(C_PTR), value :: farg2
integer(C_INT) :: fresult
end function

function swigc_FIDAGetNumResEvalsSens(farg1, farg2) &
bind(C, name="_wrap_FIDAGetNumResEvalsSens") &
result(fresult)
use, intrinsic :: ISO_C_BINDING
type(C_PTR), value :: farg1
type(C_PTR), value :: farg2
integer(C_INT) :: fresult
end function

function swigc_FIDAGetSensNumErrTestFails(farg1, farg2) &
bind(C, name="_wrap_FIDAGetSensNumErrTestFails") &
result(fresult)
use, intrinsic :: ISO_C_BINDING
type(C_PTR), value :: farg1
type(C_PTR), value :: farg2
integer(C_INT) :: fresult
end function

function swigc_FIDAGetSensNumLinSolvSetups(farg1, farg2) &
bind(C, name="_wrap_FIDAGetSensNumLinSolvSetups") &
result(fresult)
use, intrinsic :: ISO_C_BINDING
type(C_PTR), value :: farg1
type(C_PTR), value :: farg2
integer(C_INT) :: fresult
end function

function swigc_FIDAGetSensErrWeights(farg1, farg2) &
bind(C, name="_wrap_FIDAGetSensErrWeights") &
result(fresult)
use, intrinsic :: ISO_C_BINDING
type(C_PTR), value :: farg1
type(C_PTR), value :: farg2
integer(C_INT) :: fresult
end function

function swigc_FIDAGetSensStats(farg1, farg2, farg3, farg4, farg5) &
bind(C, name="_wrap_FIDAGetSensStats") &
result(fresult)
use, intrinsic :: ISO_C_BINDING
type(C_PTR), value :: farg1
type(C_PTR), value :: farg2
type(C_PTR), value :: farg3
type(C_PTR), value :: farg4
type(C_PTR), value :: farg5
integer(C_INT) :: fresult
end function

function swigc_FIDAGetSensNumNonlinSolvIters(farg1, farg2) &
bind(C, name="_wrap_FIDAGetSensNumNonlinSolvIters") &
result(fresult)
use, intrinsic :: ISO_C_BINDING
type(C_PTR), value :: farg1
type(C_PTR), value :: farg2
integer(C_INT) :: fresult
end function

function swigc_FIDAGetSensNumNonlinSolvConvFails(farg1, farg2) &
bind(C, name="_wrap_FIDAGetSensNumNonlinSolvConvFails") &
result(fresult)
use, intrinsic :: ISO_C_BINDING
type(C_PTR), value :: farg1
type(C_PTR), value :: farg2
integer(C_INT) :: fresult
end function

function swigc_FIDAGetSensNonlinSolvStats(farg1, farg2, farg3) &
bind(C, name="_wrap_FIDAGetSensNonlinSolvStats") &
result(fresult)
use, intrinsic :: ISO_C_BINDING
type(C_PTR), value :: farg1
type(C_PTR), value :: farg2
type(C_PTR), value :: farg3
integer(C_INT) :: fresult
end function

subroutine swigc_FIDASensFree(farg1) &
bind(C, name="_wrap_FIDASensFree")
use, intrinsic :: ISO_C_BINDING
type(C_PTR), value :: farg1
end subroutine

function swigc_FIDAQuadSensInit(farg1, farg2, farg3) &
bind(C, name="_wrap_FIDAQuadSensInit") &
result(fresult)
use, intrinsic :: ISO_C_BINDING
type(C_PTR), value :: farg1
type(C_FUNPTR), value :: farg2
type(C_PTR), value :: farg3
integer(C_INT) :: fresult
end function

function swigc_FIDAQuadSensReInit(farg1, farg2) &
bind(C, name="_wrap_FIDAQuadSensReInit") &
result(fresult)
use, intrinsic :: ISO_C_BINDING
type(C_PTR), value :: farg1
type(C_PTR), value :: farg2
integer(C_INT) :: fresult
end function

function swigc_FIDAQuadSensSStolerances(farg1, farg2, farg3) &
bind(C, name="_wrap_FIDAQuadSensSStolerances") &
result(fresult)
use, intrinsic :: ISO_C_BINDING
type(C_PTR), value :: farg1
real(C_DOUBLE), intent(in) :: farg2
type(C_PTR), value :: farg3
integer(C_INT) :: fresult
end function

function swigc_FIDAQuadSensSVtolerances(farg1, farg2, farg3) &
bind(C, name="_wrap_FIDAQuadSensSVtolerances") &
result(fresult)
use, intrinsic :: ISO_C_BINDING
type(C_PTR), value :: farg1
real(C_DOUBLE), intent(in) :: farg2
type(C_PTR), value :: farg3
integer(C_INT) :: fresult
end function

function swigc_FIDAQuadSensEEtolerances(farg1) &
bind(C, name="_wrap_FIDAQuadSensEEtolerances") &
result(fresult)
use, intrinsic :: ISO_C_BINDING
type(C_PTR), value :: farg1
integer(C_INT) :: fresult
end function

function swigc_FIDASetQuadSensErrCon(farg1, farg2) &
bind(C, name="_wrap_FIDASetQuadSensErrCon") &
result(fresult)
use, intrinsic :: ISO_C_BINDING
type(C_PTR), value :: farg1
integer(C_INT), intent(in) :: farg2
integer(C_INT) :: fresult
end function

function swigc_FIDAGetQuadSens(farg1, farg2, farg3) &
bind(C, name="_wrap_FIDAGetQuadSens") &
result(fresult)
use, intrinsic :: ISO_C_BINDING
type(C_PTR), value :: farg1
type(C_PTR), value :: farg2
type(C_PTR), value :: farg3
integer(C_INT) :: fresult
end function

function swigc_FIDAGetQuadSens1(farg1, farg2, farg3, farg4) &
bind(C, name="_wrap_FIDAGetQuadSens1") &
result(fresult)
use, intrinsic :: ISO_C_BINDING
type(C_PTR), value :: farg1
type(C_PTR), value :: farg2
integer(C_INT), intent(in) :: farg3
type(C_PTR), value :: farg4
integer(C_INT) :: fresult
end function

function swigc_FIDAGetQuadSensDky(farg1, farg2, farg3, farg4) &
bind(C, name="_wrap_FIDAGetQuadSensDky") &
result(fresult)
use, intrinsic :: ISO_C_BINDING
type(C_PTR), value :: farg1
real(C_DOUBLE), intent(in) :: farg2
integer(C_INT), intent(in) :: farg3
type(C_PTR), value :: farg4
integer(C_INT) :: fresult
end function

function swigc_FIDAGetQuadSensDky1(farg1, farg2, farg3, farg4, farg5) &
bind(C, name="_wrap_FIDAGetQuadSensDky1") &
result(fresult)
use, intrinsic :: ISO_C_BINDING
type(C_PTR), value :: farg1
real(C_DOUBLE), intent(in) :: farg2
integer(C_INT), intent(in) :: farg3
integer(C_INT), intent(in) :: farg4
type(C_PTR), value :: farg5
integer(C_INT) :: fresult
end function

function swigc_FIDAGetQuadSensNumRhsEvals(farg1, farg2) &
bind(C, name="_wrap_FIDAGetQuadSensNumRhsEvals") &
result(fresult)
use, intrinsic :: ISO_C_BINDING
type(C_PTR), value :: farg1
type(C_PTR), value :: farg2
integer(C_INT) :: fresult
end function

function swigc_FIDAGetQuadSensNumErrTestFails(farg1, farg2) &
bind(C, name="_wrap_FIDAGetQuadSensNumErrTestFails") &
result(fresult)
use, intrinsic :: ISO_C_BINDING
type(C_PTR), value :: farg1
type(C_PTR), value :: farg2
integer(C_INT) :: fresult
end function

function swigc_FIDAGetQuadSensErrWeights(farg1, farg2) &
bind(C, name="_wrap_FIDAGetQuadSensErrWeights") &
result(fresult)
use, intrinsic :: ISO_C_BINDING
type(C_PTR), value :: farg1
type(C_PTR), value :: farg2
integer(C_INT) :: fresult
end function

function swigc_FIDAGetQuadSensStats(farg1, farg2, farg3) &
bind(C, name="_wrap_FIDAGetQuadSensStats") &
result(fresult)
use, intrinsic :: ISO_C_BINDING
type(C_PTR), value :: farg1
type(C_PTR), value :: farg2
type(C_PTR), value :: farg3
integer(C_INT) :: fresult
end function

subroutine swigc_FIDAQuadSensFree(farg1) &
bind(C, name="_wrap_FIDAQuadSensFree")
use, intrinsic :: ISO_C_BINDING
type(C_PTR), value :: farg1
end subroutine

function swigc_FIDAAdjInit(farg1, farg2, farg3) &
bind(C, name="_wrap_FIDAAdjInit") &
result(fresult)
use, intrinsic :: ISO_C_BINDING
type(C_PTR), value :: farg1
integer(C_LONG), intent(in) :: farg2
integer(C_INT), intent(in) :: farg3
integer(C_INT) :: fresult
end function

function swigc_FIDAAdjReInit(farg1) &
bind(C, name="_wrap_FIDAAdjReInit") &
result(fresult)
use, intrinsic :: ISO_C_BINDING
type(C_PTR), value :: farg1
integer(C_INT) :: fresult
end function

subroutine swigc_FIDAAdjFree(farg1) &
bind(C, name="_wrap_FIDAAdjFree")
use, intrinsic :: ISO_C_BINDING
type(C_PTR), value :: farg1
end subroutine

function swigc_FIDACreateB(farg1, farg2) &
bind(C, name="_wrap_FIDACreateB") &
result(fresult)
use, intrinsic :: ISO_C_BINDING
type(C_PTR), value :: farg1
type(C_PTR), value :: farg2
integer(C_INT) :: fresult
end function

function swigc_FIDAInitB(farg1, farg2, farg3, farg4, farg5, farg6) &
bind(C, name="_wrap_FIDAInitB") &
result(fresult)
use, intrinsic :: ISO_C_BINDING
type(C_PTR), value :: farg1
integer(C_INT), intent(in) :: farg2
type(C_FUNPTR), value :: farg3
real(C_DOUBLE), intent(in) :: farg4
type(C_PTR), value :: farg5
type(C_PTR), value :: farg6
integer(C_INT) :: fresult
end function

function swigc_FIDAInitBS(farg1, farg2, farg3, farg4, farg5, farg6) &
bind(C, name="_wrap_FIDAInitBS") &
result(fresult)
use, intrinsic :: ISO_C_BINDING
type(C_PTR), value :: farg1
integer(C_INT), intent(in) :: farg2
type(C_FUNPTR), value :: farg3
real(C_DOUBLE), intent(in) :: farg4
type(C_PTR), value :: farg5
type(C_PTR), value :: farg6
integer(C_INT) :: fresult
end function

function swigc_FIDAReInitB(farg1, farg2, farg3, farg4, farg5) &
bind(C, name="_wrap_FIDAReInitB") &
result(fresult)
use, intrinsic :: ISO_C_BINDING
type(C_PTR), value :: farg1
integer(C_INT), intent(in) :: farg2
real(C_DOUBLE), intent(in) :: farg3
type(C_PTR), value :: farg4
type(C_PTR), value :: farg5
integer(C_INT) :: fresult
end function

function swigc_FIDASStolerancesB(farg1, farg2, farg3, farg4) &
bind(C, name="_wrap_FIDASStolerancesB") &
result(fresult)
use, intrinsic :: ISO_C_BINDING
type(C_PTR), value :: farg1
integer(C_INT), intent(in) :: farg2
real(C_DOUBLE), intent(in) :: farg3
real(C_DOUBLE), intent(in) :: farg4
integer(C_INT) :: fresult
end function

function swigc_FIDASVtolerancesB(farg1, farg2, farg3, farg4) &
bind(C, name="_wrap_FIDASVtolerancesB") &
result(fresult)
use, intrinsic :: ISO_C_BINDING
type(C_PTR), value :: farg1
integer(C_INT), intent(in) :: farg2
real(C_DOUBLE), intent(in) :: farg3
type(C_PTR), value :: farg4
integer(C_INT) :: fresult
end function

function swigc_FIDAQuadInitB(farg1, farg2, farg3, farg4) &
bind(C, name="_wrap_FIDAQuadInitB") &
result(fresult)
use, intrinsic :: ISO_C_BINDING
type(C_PTR), value :: farg1
integer(C_INT), intent(in) :: farg2
type(C_FUNPTR), value :: farg3
type(C_PTR), value :: farg4
integer(C_INT) :: fresult
end function

function swigc_FIDAQuadInitBS(farg1, farg2, farg3, farg4) &
bind(C, name="_wrap_FIDAQuadInitBS") &
result(fresult)
use, intrinsic :: ISO_C_BINDING
type(C_PTR), value :: farg1
integer(C_INT), intent(in) :: farg2
type(C_FUNPTR), value :: farg3
type(C_PTR), value :: farg4
integer(C_INT) :: fresult
end function

function swigc_FIDAQuadReInitB(farg1, farg2, farg3) &
bind(C, name="_wrap_FIDAQuadReInitB") &
result(fresult)
use, intrinsic :: ISO_C_BINDING
type(C_PTR), value :: farg1
integer(C_INT), intent(in) :: farg2
type(C_PTR), value :: farg3
integer(C_INT) :: fresult
end function

function swigc_FIDAQuadSStolerancesB(farg1, farg2, farg3, farg4) &
bind(C, name="_wrap_FIDAQuadSStolerancesB") &
result(fresult)
use, intrinsic :: ISO_C_BINDING
type(C_PTR), value :: farg1
integer(C_INT), intent(in) :: farg2
real(C_DOUBLE), intent(in) :: farg3
real(C_DOUBLE), intent(in) :: farg4
integer(C_INT) :: fresult
end function

function swigc_FIDAQuadSVtolerancesB(farg1, farg2, farg3, farg4) &
bind(C, name="_wrap_FIDAQuadSVtolerancesB") &
result(fresult)
use, intrinsic :: ISO_C_BINDING
type(C_PTR), value :: farg1
integer(C_INT), intent(in) :: farg2
real(C_DOUBLE), intent(in) :: farg3
type(C_PTR), value :: farg4
integer(C_INT) :: fresult
end function

function swigc_FIDACalcICB(farg1, farg2, farg3, farg4, farg5) &
bind(C, name="_wrap_FIDACalcICB") &
result(fresult)
use, intrinsic :: ISO_C_BINDING
type(C_PTR), value :: farg1
integer(C_INT), intent(in) :: farg2
real(C_DOUBLE), intent(in) :: farg3
type(C_PTR), value :: farg4
type(C_PTR), value :: farg5
integer(C_INT) :: fresult
end function

function swigc_FIDACalcICBS(farg1, farg2, farg3, farg4, farg5, farg6, farg7) &
bind(C, name="_wrap_FIDACalcICBS") &
result(fresult)
use, intrinsic :: ISO_C_BINDING
type(C_PTR), value :: farg1
integer(C_INT), intent(in) :: farg2
real(C_DOUBLE), intent(in) :: farg3
type(C_PTR), value :: farg4
type(C_PTR), value :: farg5
type(C_PTR), value :: farg6
type(C_PTR), value :: farg7
integer(C_INT) :: fresult
end function

function swigc_FIDASolveF(farg1, farg2, farg3, farg4, farg5, farg6, farg7) &
bind(C, name="_wrap_FIDASolveF") &
result(fresult)
use, intrinsic :: ISO_C_BINDING
type(C_PTR), value :: farg1
real(C_DOUBLE), intent(in) :: farg2
type(C_PTR), value :: farg3
type(C_PTR), value :: farg4
type(C_PTR), value :: farg5
integer(C_INT), intent(in) :: farg6
type(C_PTR), value :: farg7
integer(C_INT) :: fresult
end function

function swigc_FIDASolveB(farg1, farg2, farg3) &
bind(C, name="_wrap_FIDASolveB") &
result(fresult)
use, intrinsic :: ISO_C_BINDING
type(C_PTR), value :: farg1
real(C_DOUBLE), intent(in) :: farg2
integer(C_INT), intent(in) :: farg3
integer(C_INT) :: fresult
end function

function swigc_FIDAAdjSetNoSensi(farg1) &
bind(C, name="_wrap_FIDAAdjSetNoSensi") &
result(fresult)
use, intrinsic :: ISO_C_BINDING
type(C_PTR), value :: farg1
integer(C_INT) :: fresult
end function

function swigc_FIDASetUserDataB(farg1, farg2, farg3) &
bind(C, name="_wrap_FIDASetUserDataB") &
result(fresult)
use, intrinsic :: ISO_C_BINDING
type(C_PTR), value :: farg1
integer(C_INT), intent(in) :: farg2
type(C_PTR), value :: farg3
integer(C_INT) :: fresult
end function

function swigc_FIDASetMaxOrdB(farg1, farg2, farg3) &
bind(C, name="_wrap_FIDASetMaxOrdB") &
result(fresult)
use, intrinsic :: ISO_C_BINDING
type(C_PTR), value :: farg1
integer(C_INT), intent(in) :: farg2
integer(C_INT), intent(in) :: farg3
integer(C_INT) :: fresult
end function

function swigc_FIDASetMaxNumStepsB(farg1, farg2, farg3) &
bind(C, name="_wrap_FIDASetMaxNumStepsB") &
result(fresult)
use, intrinsic :: ISO_C_BINDING
type(C_PTR), value :: farg1
integer(C_INT), intent(in) :: farg2
integer(C_LONG), intent(in) :: farg3
integer(C_INT) :: fresult
end function

function swigc_FIDASetInitStepB(farg1, farg2, farg3) &
bind(C, name="_wrap_FIDASetInitStepB") &
result(fresult)
use, intrinsic :: ISO_C_BINDING
type(C_PTR), value :: farg1
integer(C_INT), intent(in) :: farg2
real(C_DOUBLE), intent(in) :: farg3
integer(C_INT) :: fresult
end function

function swigc_FIDASetMaxStepB(farg1, farg2, farg3) &
bind(C, name="_wrap_FIDASetMaxStepB") &
result(fresult)
use, intrinsic :: ISO_C_BINDING
type(C_PTR), value :: farg1
integer(C_INT), intent(in) :: farg2
real(C_DOUBLE), intent(in) :: farg3
integer(C_INT) :: fresult
end function

function swigc_FIDASetSuppressAlgB(farg1, farg2, farg3) &
bind(C, name="_wrap_FIDASetSuppressAlgB") &
result(fresult)
use, intrinsic :: ISO_C_BINDING
type(C_PTR), value :: farg1
integer(C_INT), intent(in) :: farg2
integer(C_INT), intent(in) :: farg3
integer(C_INT) :: fresult
end function

function swigc_FIDASetIdB(farg1, farg2, farg3) &
bind(C, name="_wrap_FIDASetIdB") &
result(fresult)
use, intrinsic :: ISO_C_BINDING
type(C_PTR), value :: farg1
integer(C_INT), intent(in) :: farg2
type(C_PTR), value :: farg3
integer(C_INT) :: fresult
end function

function swigc_FIDASetConstraintsB(farg1, farg2, farg3) &
bind(C, name="_wrap_FIDASetConstraintsB") &
result(fresult)
use, intrinsic :: ISO_C_BINDING
type(C_PTR), value :: farg1
integer(C_INT), intent(in) :: farg2
type(C_PTR), value :: farg3
integer(C_INT) :: fresult
end function

function swigc_FIDASetQuadErrConB(farg1, farg2, farg3) &
bind(C, name="_wrap_FIDASetQuadErrConB") &
result(fresult)
use, intrinsic :: ISO_C_BINDING
type(C_PTR), value :: farg1
integer(C_INT), intent(in) :: farg2
integer(C_INT), intent(in) :: farg3
integer(C_INT) :: fresult
end function

function swigc_FIDASetNonlinearSolverB(farg1, farg2, farg3) &
bind(C, name="_wrap_FIDASetNonlinearSolverB") &
result(fresult)
use, intrinsic :: ISO_C_BINDING
type(C_PTR), value :: farg1
integer(C_INT), intent(in) :: farg2
type(C_PTR), value :: farg3
integer(C_INT) :: fresult
end function

function swigc_FIDAGetB(farg1, farg2, farg3, farg4, farg5) &
bind(C, name="_wrap_FIDAGetB") &
result(fresult)
use, intrinsic :: ISO_C_BINDING
type(C_PTR), value :: farg1
integer(C_INT), intent(in) :: farg2
type(C_PTR), value :: farg3
type(C_PTR), value :: farg4
type(C_PTR), value :: farg5
integer(C_INT) :: fresult
end function

function swigc_FIDAGetQuadB(farg1, farg2, farg3, farg4) &
bind(C, name="_wrap_FIDAGetQuadB") &
result(fresult)
use, intrinsic :: ISO_C_BINDING
type(C_PTR), value :: farg1
integer(C_INT), intent(in) :: farg2
type(C_PTR), value :: farg3
type(C_PTR), value :: farg4
integer(C_INT) :: fresult
end function

function swigc_FIDAGetAdjIDABmem(farg1, farg2) &
bind(C, name="_wrap_FIDAGetAdjIDABmem") &
result(fresult)
use, intrinsic :: ISO_C_BINDING
type(C_PTR), value :: farg1
integer(C_INT), intent(in) :: farg2
type(C_PTR) :: fresult
end function

function swigc_FIDAGetConsistentICB(farg1, farg2, farg3, farg4) &
bind(C, name="_wrap_FIDAGetConsistentICB") &
result(fresult)
use, intrinsic :: ISO_C_BINDING
type(C_PTR), value :: farg1
integer(C_INT), intent(in) :: farg2
type(C_PTR), value :: farg3
type(C_PTR), value :: farg4
integer(C_INT) :: fresult
end function

function swigc_FIDAGetAdjY(farg1, farg2, farg3, farg4) &
bind(C, name="_wrap_FIDAGetAdjY") &
result(fresult)
use, intrinsic :: ISO_C_BINDING
type(C_PTR), value :: farg1
real(C_DOUBLE), intent(in) :: farg2
type(C_PTR), value :: farg3
type(C_PTR), value :: farg4
integer(C_INT) :: fresult
end function

subroutine swigc_IDAadjCheckPointRec_my_addr_set(farg1, farg2) &
bind(C, name="_wrap_IDAadjCheckPointRec_my_addr_set")
use, intrinsic :: ISO_C_BINDING
import :: swigclasswrapper
type(SwigClassWrapper) :: farg1
type(C_PTR), value :: farg2
end subroutine

function swigc_IDAadjCheckPointRec_my_addr_get(farg1) &
bind(C, name="_wrap_IDAadjCheckPointRec_my_addr_get") &
result(fresult)
use, intrinsic :: ISO_C_BINDING
import :: swigclasswrapper
type(SwigClassWrapper) :: farg1
type(C_PTR) :: fresult
end function

subroutine swigc_IDAadjCheckPointRec_next_addr_set(farg1, farg2) &
bind(C, name="_wrap_IDAadjCheckPointRec_next_addr_set")
use, intrinsic :: ISO_C_BINDING
import :: swigclasswrapper
type(SwigClassWrapper) :: farg1
type(C_PTR), value :: farg2
end subroutine

function swigc_IDAadjCheckPointRec_next_addr_get(farg1) &
bind(C, name="_wrap_IDAadjCheckPointRec_next_addr_get") &
result(fresult)
use, intrinsic :: ISO_C_BINDING
import :: swigclasswrapper
type(SwigClassWrapper) :: farg1
type(C_PTR) :: fresult
end function

subroutine swigc_IDAadjCheckPointRec_t0_set(farg1, farg2) &
bind(C, name="_wrap_IDAadjCheckPointRec_t0_set")
use, intrinsic :: ISO_C_BINDING
import :: swigclasswrapper
type(SwigClassWrapper) :: farg1
real(C_DOUBLE), intent(in) :: farg2
end subroutine

function swigc_IDAadjCheckPointRec_t0_get(farg1) &
bind(C, name="_wrap_IDAadjCheckPointRec_t0_get") &
result(fresult)
use, intrinsic :: ISO_C_BINDING
import :: swigclasswrapper
type(SwigClassWrapper) :: farg1
real(C_DOUBLE) :: fresult
end function

subroutine swigc_IDAadjCheckPointRec_t1_set(farg1, farg2) &
bind(C, name="_wrap_IDAadjCheckPointRec_t1_set")
use, intrinsic :: ISO_C_BINDING
import :: swigclasswrapper
type(SwigClassWrapper) :: farg1
real(C_DOUBLE), intent(in) :: farg2
end subroutine

function swigc_IDAadjCheckPointRec_t1_get(farg1) &
bind(C, name="_wrap_IDAadjCheckPointRec_t1_get") &
result(fresult)
use, intrinsic :: ISO_C_BINDING
import :: swigclasswrapper
type(SwigClassWrapper) :: farg1
real(C_DOUBLE) :: fresult
end function

subroutine swigc_IDAadjCheckPointRec_nstep_set(farg1, farg2) &
bind(C, name="_wrap_IDAadjCheckPointRec_nstep_set")
use, intrinsic :: ISO_C_BINDING
import :: swigclasswrapper
type(SwigClassWrapper) :: farg1
integer(C_LONG), intent(in) :: farg2
end subroutine

function swigc_IDAadjCheckPointRec_nstep_get(farg1) &
bind(C, name="_wrap_IDAadjCheckPointRec_nstep_get") &
result(fresult)
use, intrinsic :: ISO_C_BINDING
import :: swigclasswrapper
type(SwigClassWrapper) :: farg1
integer(C_LONG) :: fresult
end function

subroutine swigc_IDAadjCheckPointRec_order_set(farg1, farg2) &
bind(C, name="_wrap_IDAadjCheckPointRec_order_set")
use, intrinsic :: ISO_C_BINDING
import :: swigclasswrapper
type(SwigClassWrapper) :: farg1
integer(C_INT), intent(in) :: farg2
end subroutine

function swigc_IDAadjCheckPointRec_order_get(farg1) &
bind(C, name="_wrap_IDAadjCheckPointRec_order_get") &
result(fresult)
use, intrinsic :: ISO_C_BINDING
import :: swigclasswrapper
type(SwigClassWrapper) :: farg1
integer(C_INT) :: fresult
end function

subroutine swigc_IDAadjCheckPointRec_step_set(farg1, farg2) &
bind(C, name="_wrap_IDAadjCheckPointRec_step_set")
use, intrinsic :: ISO_C_BINDING
import :: swigclasswrapper
type(SwigClassWrapper) :: farg1
real(C_DOUBLE), intent(in) :: farg2
end subroutine

function swigc_IDAadjCheckPointRec_step_get(farg1) &
bind(C, name="_wrap_IDAadjCheckPointRec_step_get") &
result(fresult)
use, intrinsic :: ISO_C_BINDING
import :: swigclasswrapper
type(SwigClassWrapper) :: farg1
real(C_DOUBLE) :: fresult
end function

function swigc_new_IDAadjCheckPointRec() &
bind(C, name="_wrap_new_IDAadjCheckPointRec") &
result(fresult)
use, intrinsic :: ISO_C_BINDING
import :: swigclasswrapper
type(SwigClassWrapper) :: fresult
end function

subroutine swigc_delete_IDAadjCheckPointRec(farg1) &
bind(C, name="_wrap_delete_IDAadjCheckPointRec")
use, intrinsic :: ISO_C_BINDING
import :: swigclasswrapper
type(SwigClassWrapper), intent(inout) :: farg1
end subroutine

subroutine swigc_IDAadjCheckPointRec_op_assign__(farg1, farg2) &
bind(C, name="_wrap_IDAadjCheckPointRec_op_assign__")
use, intrinsic :: ISO_C_BINDING
import :: swigclasswrapper
type(SwigClassWrapper), intent(inout) :: farg1
type(SwigClassWrapper) :: farg2
end subroutine

function swigc_FIDAGetAdjCheckPointsInfo(farg1, farg2) &
bind(C, name="_wrap_FIDAGetAdjCheckPointsInfo") &
result(fresult)
use, intrinsic :: ISO_C_BINDING
import :: swigclasswrapper
type(C_PTR), value :: farg1
type(SwigClassWrapper) :: farg2
integer(C_INT) :: fresult
end function

function swigc_FIDASetJacTimesResFnB(farg1, farg2, farg3) &
bind(C, name="_wrap_FIDASetJacTimesResFnB") &
result(fresult)
use, intrinsic :: ISO_C_BINDING
type(C_PTR), value :: farg1
integer(C_INT), intent(in) :: farg2
type(C_FUNPTR), value :: farg3
integer(C_INT) :: fresult
end function

function swigc_FIDAGetAdjDataPointHermite(farg1, farg2, farg3, farg4, farg5) &
bind(C, name="_wrap_FIDAGetAdjDataPointHermite") &
result(fresult)
use, intrinsic :: ISO_C_BINDING
type(C_PTR), value :: farg1
integer(C_INT), intent(in) :: farg2
type(C_PTR), value :: farg3
type(C_PTR), value :: farg4
type(C_PTR), value :: farg5
integer(C_INT) :: fresult
end function

function swigc_FIDAGetAdjDataPointPolynomial(farg1, farg2, farg3, farg4, farg5) &
bind(C, name="_wrap_FIDAGetAdjDataPointPolynomial") &
result(fresult)
use, intrinsic :: ISO_C_BINDING
type(C_PTR), value :: farg1
integer(C_INT), intent(in) :: farg2
type(C_PTR), value :: farg3
type(C_PTR), value :: farg4
type(C_PTR), value :: farg5
integer(C_INT) :: fresult
end function

function swigc_FIDAGetAdjCurrentCheckPoint(farg1, farg2) &
bind(C, name="_wrap_FIDAGetAdjCurrentCheckPoint") &
result(fresult)
use, intrinsic :: ISO_C_BINDING
type(C_PTR), value :: farg1
type(C_PTR), value :: farg2
integer(C_INT) :: fresult
end function

function swigc_FIDABBDPrecInit(farg1, farg2, farg3, farg4, farg5, farg6, farg7, farg8, farg9) &
bind(C, name="_wrap_FIDABBDPrecInit") &
result(fresult)
use, intrinsic :: ISO_C_BINDING
type(C_PTR), value :: farg1
integer(C_INT64_T), intent(in) :: farg2
integer(C_INT64_T), intent(in) :: farg3
integer(C_INT64_T), intent(in) :: farg4
integer(C_INT64_T), intent(in) :: farg5
integer(C_INT64_T), intent(in) :: farg6
real(C_DOUBLE), intent(in) :: farg7
type(C_FUNPTR), value :: farg8
type(C_FUNPTR), value :: farg9
integer(C_INT) :: fresult
end function

function swigc_FIDABBDPrecReInit(farg1, farg2, farg3, farg4) &
bind(C, name="_wrap_FIDABBDPrecReInit") &
result(fresult)
use, intrinsic :: ISO_C_BINDING
type(C_PTR), value :: farg1
integer(C_INT64_T), intent(in) :: farg2
integer(C_INT64_T), intent(in) :: farg3
real(C_DOUBLE), intent(in) :: farg4
integer(C_INT) :: fresult
end function

function swigc_FIDABBDPrecGetWorkSpace(farg1, farg2, farg3) &
bind(C, name="_wrap_FIDABBDPrecGetWorkSpace") &
result(fresult)
use, intrinsic :: ISO_C_BINDING
type(C_PTR), value :: farg1
type(C_PTR), value :: farg2
type(C_PTR), value :: farg3
integer(C_INT) :: fresult
end function

function swigc_FIDABBDPrecGetNumGfnEvals(farg1, farg2) &
bind(C, name="_wrap_FIDABBDPrecGetNumGfnEvals") &
result(fresult)
use, intrinsic :: ISO_C_BINDING
type(C_PTR), value :: farg1
type(C_PTR), value :: farg2
integer(C_INT) :: fresult
end function

function swigc_FIDABBDPrecInitB(farg1, farg2, farg3, farg4, farg5, farg6, farg7, farg8, farg9, farg10) &
bind(C, name="_wrap_FIDABBDPrecInitB") &
result(fresult)
use, intrinsic :: ISO_C_BINDING
type(C_PTR), value :: farg1
integer(C_INT), intent(in) :: farg2
integer(C_INT64_T), intent(in) :: farg3
integer(C_INT64_T), intent(in) :: farg4
integer(C_INT64_T), intent(in) :: farg5
integer(C_INT64_T), intent(in) :: farg6
integer(C_INT64_T), intent(in) :: farg7
real(C_DOUBLE), intent(in) :: farg8
type(C_FUNPTR), value :: farg9
type(C_FUNPTR), value :: farg10
integer(C_INT) :: fresult
end function

function swigc_FIDABBDPrecReInitB(farg1, farg2, farg3, farg4, farg5) &
bind(C, name="_wrap_FIDABBDPrecReInitB") &
result(fresult)
use, intrinsic :: ISO_C_BINDING
type(C_PTR), value :: farg1
integer(C_INT), intent(in) :: farg2
integer(C_INT64_T), intent(in) :: farg3
integer(C_INT64_T), intent(in) :: farg4
real(C_DOUBLE), intent(in) :: farg5
integer(C_INT) :: fresult
end function

function swigc_FIDASetLinearSolver(farg1, farg2, farg3) &
bind(C, name="_wrap_FIDASetLinearSolver") &
result(fresult)
use, intrinsic :: ISO_C_BINDING
type(C_PTR), value :: farg1
type(C_PTR), value :: farg2
type(C_PTR), value :: farg3
integer(C_INT) :: fresult
end function

function swigc_FIDASetJacFn(farg1, farg2) &
bind(C, name="_wrap_FIDASetJacFn") &
result(fresult)
use, intrinsic :: ISO_C_BINDING
type(C_PTR), value :: farg1
type(C_FUNPTR), value :: farg2
integer(C_INT) :: fresult
end function

function swigc_FIDASetPreconditioner(farg1, farg2, farg3) &
bind(C, name="_wrap_FIDASetPreconditioner") &
result(fresult)
use, intrinsic :: ISO_C_BINDING
type(C_PTR), value :: farg1
type(C_FUNPTR), value :: farg2
type(C_FUNPTR), value :: farg3
integer(C_INT) :: fresult
end function

function swigc_FIDASetJacTimes(farg1, farg2, farg3) &
bind(C, name="_wrap_FIDASetJacTimes") &
result(fresult)
use, intrinsic :: ISO_C_BINDING
type(C_PTR), value :: farg1
type(C_FUNPTR), value :: farg2
type(C_FUNPTR), value :: farg3
integer(C_INT) :: fresult
end function

function swigc_FIDASetEpsLin(farg1, farg2) &
bind(C, name="_wrap_FIDASetEpsLin") &
result(fresult)
use, intrinsic :: ISO_C_BINDING
type(C_PTR), value :: farg1
real(C_DOUBLE), intent(in) :: farg2
integer(C_INT) :: fresult
end function

function swigc_FIDASetLSNormFactor(farg1, farg2) &
bind(C, name="_wrap_FIDASetLSNormFactor") &
result(fresult)
use, intrinsic :: ISO_C_BINDING
type(C_PTR), value :: farg1
real(C_DOUBLE), intent(in) :: farg2
integer(C_INT) :: fresult
end function

function swigc_FIDASetLinearSolutionScaling(farg1, farg2) &
bind(C, name="_wrap_FIDASetLinearSolutionScaling") &
result(fresult)
use, intrinsic :: ISO_C_BINDING
type(C_PTR), value :: farg1
integer(C_INT), intent(in) :: farg2
integer(C_INT) :: fresult
end function

function swigc_FIDASetIncrementFactor(farg1, farg2) &
bind(C, name="_wrap_FIDASetIncrementFactor") &
result(fresult)
use, intrinsic :: ISO_C_BINDING
type(C_PTR), value :: farg1
real(C_DOUBLE), intent(in) :: farg2
integer(C_INT) :: fresult
end function

function swigc_FIDAGetLinWorkSpace(farg1, farg2, farg3) &
bind(C, name="_wrap_FIDAGetLinWorkSpace") &
result(fresult)
use, intrinsic :: ISO_C_BINDING
type(C_PTR), value :: farg1
type(C_PTR), value :: farg2
type(C_PTR), value :: farg3
integer(C_INT) :: fresult
end function

function swigc_FIDAGetNumJacEvals(farg1, farg2) &
bind(C, name="_wrap_FIDAGetNumJacEvals") &
result(fresult)
use, intrinsic :: ISO_C_BINDING
type(C_PTR), value :: farg1
type(C_PTR), value :: farg2
integer(C_INT) :: fresult
end function

function swigc_FIDAGetNumPrecEvals(farg1, farg2) &
bind(C, name="_wrap_FIDAGetNumPrecEvals") &
result(fresult)
use, intrinsic :: ISO_C_BINDING
type(C_PTR), value :: farg1
type(C_PTR), value :: farg2
integer(C_INT) :: fresult
end function

function swigc_FIDAGetNumPrecSolves(farg1, farg2) &
bind(C, name="_wrap_FIDAGetNumPrecSolves") &
result(fresult)
use, intrinsic :: ISO_C_BINDING
type(C_PTR), value :: farg1
type(C_PTR), value :: farg2
integer(C_INT) :: fresult
end function

function swigc_FIDAGetNumLinIters(farg1, farg2) &
bind(C, name="_wrap_FIDAGetNumLinIters") &
result(fresult)
use, intrinsic :: ISO_C_BINDING
type(C_PTR), value :: farg1
type(C_PTR), value :: farg2
integer(C_INT) :: fresult
end function

function swigc_FIDAGetNumLinConvFails(farg1, farg2) &
bind(C, name="_wrap_FIDAGetNumLinConvFails") &
result(fresult)
use, intrinsic :: ISO_C_BINDING
type(C_PTR), value :: farg1
type(C_PTR), value :: farg2
integer(C_INT) :: fresult
end function

function swigc_FIDAGetNumJTSetupEvals(farg1, farg2) &
bind(C, name="_wrap_FIDAGetNumJTSetupEvals") &
result(fresult)
use, intrinsic :: ISO_C_BINDING
type(C_PTR), value :: farg1
type(C_PTR), value :: farg2
integer(C_INT) :: fresult
end function

function swigc_FIDAGetNumJtimesEvals(farg1, farg2) &
bind(C, name="_wrap_FIDAGetNumJtimesEvals") &
result(fresult)
use, intrinsic :: ISO_C_BINDING
type(C_PTR), value :: farg1
type(C_PTR), value :: farg2
integer(C_INT) :: fresult
end function

function swigc_FIDAGetNumLinResEvals(farg1, farg2) &
bind(C, name="_wrap_FIDAGetNumLinResEvals") &
result(fresult)
use, intrinsic :: ISO_C_BINDING
type(C_PTR), value :: farg1
type(C_PTR), value :: farg2
integer(C_INT) :: fresult
end function

function swigc_FIDAGetLastLinFlag(farg1, farg2) &
bind(C, name="_wrap_FIDAGetLastLinFlag") &
result(fresult)
use, intrinsic :: ISO_C_BINDING
type(C_PTR), value :: farg1
type(C_PTR), value :: farg2
integer(C_INT) :: fresult
end function

function swigc_FIDAGetLinReturnFlagName(farg1) &
bind(C, name="_wrap_FIDAGetLinReturnFlagName") &
result(fresult)
use, intrinsic :: ISO_C_BINDING
import :: swigarraywrapper
integer(C_LONG), intent(in) :: farg1
type(SwigArrayWrapper) :: fresult
end function

function swigc_FIDASetLinearSolverB(farg1, farg2, farg3, farg4) &
bind(C, name="_wrap_FIDASetLinearSolverB") &
result(fresult)
use, intrinsic :: ISO_C_BINDING
type(C_PTR), value :: farg1
integer(C_INT), intent(in) :: farg2
type(C_PTR), value :: farg3
type(C_PTR), value :: farg4
integer(C_INT) :: fresult
end function

function swigc_FIDASetJacFnB(farg1, farg2, farg3) &
bind(C, name="_wrap_FIDASetJacFnB") &
result(fresult)
use, intrinsic :: ISO_C_BINDING
type(C_PTR), value :: farg1
integer(C_INT), intent(in) :: farg2
type(C_FUNPTR), value :: farg3
integer(C_INT) :: fresult
end function

function swigc_FIDASetJacFnBS(farg1, farg2, farg3) &
bind(C, name="_wrap_FIDASetJacFnBS") &
result(fresult)
use, intrinsic :: ISO_C_BINDING
type(C_PTR), value :: farg1
integer(C_INT), intent(in) :: farg2
type(C_FUNPTR), value :: farg3
integer(C_INT) :: fresult
end function

function swigc_FIDASetEpsLinB(farg1, farg2, farg3) &
bind(C, name="_wrap_FIDASetEpsLinB") &
result(fresult)
use, intrinsic :: ISO_C_BINDING
type(C_PTR), value :: farg1
integer(C_INT), intent(in) :: farg2
real(C_DOUBLE), intent(in) :: farg3
integer(C_INT) :: fresult
end function

function swigc_FIDASetLSNormFactorB(farg1, farg2, farg3) &
bind(C, name="_wrap_FIDASetLSNormFactorB") &
result(fresult)
use, intrinsic :: ISO_C_BINDING
type(C_PTR), value :: farg1
integer(C_INT), intent(in) :: farg2
real(C_DOUBLE), intent(in) :: farg3
integer(C_INT) :: fresult
end function

function swigc_FIDASetLinearSolutionScalingB(farg1, farg2, farg3) &
bind(C, name="_wrap_FIDASetLinearSolutionScalingB") &
result(fresult)
use, intrinsic :: ISO_C_BINDING
type(C_PTR), value :: farg1
integer(C_INT), intent(in) :: farg2
integer(C_INT), intent(in) :: farg3
integer(C_INT) :: fresult
end function

function swigc_FIDASetIncrementFactorB(farg1, farg2, farg3) &
bind(C, name="_wrap_FIDASetIncrementFactorB") &
result(fresult)
use, intrinsic :: ISO_C_BINDING
type(C_PTR), value :: farg1
integer(C_INT), intent(in) :: farg2
real(C_DOUBLE), intent(in) :: farg3
integer(C_INT) :: fresult
end function

function swigc_FIDASetPreconditionerB(farg1, farg2, farg3, farg4) &
bind(C, name="_wrap_FIDASetPreconditionerB") &
result(fresult)
use, intrinsic :: ISO_C_BINDING
type(C_PTR), value :: farg1
integer(C_INT), intent(in) :: farg2
type(C_FUNPTR), value :: farg3
type(C_FUNPTR), value :: farg4
integer(C_INT) :: fresult
end function

function swigc_FIDASetPreconditionerBS(farg1, farg2, farg3, farg4) &
bind(C, name="_wrap_FIDASetPreconditionerBS") &
result(fresult)
use, intrinsic :: ISO_C_BINDING
type(C_PTR), value :: farg1
integer(C_INT), intent(in) :: farg2
type(C_FUNPTR), value :: farg3
type(C_FUNPTR), value :: farg4
integer(C_INT) :: fresult
end function

function swigc_FIDASetJacTimesB(farg1, farg2, farg3, farg4) &
bind(C, name="_wrap_FIDASetJacTimesB") &
result(fresult)
use, intrinsic :: ISO_C_BINDING
type(C_PTR), value :: farg1
integer(C_INT), intent(in) :: farg2
type(C_FUNPTR), value :: farg3
type(C_FUNPTR), value :: farg4
integer(C_INT) :: fresult
end function

function swigc_FIDASetJacTimesBS(farg1, farg2, farg3, farg4) &
bind(C, name="_wrap_FIDASetJacTimesBS") &
result(fresult)
use, intrinsic :: ISO_C_BINDING
type(C_PTR), value :: farg1
integer(C_INT), intent(in) :: farg2
type(C_FUNPTR), value :: farg3
type(C_FUNPTR), value :: farg4
integer(C_INT) :: fresult
end function

end interface


contains
 ! MODULE SUBPROGRAMS
function FIDACreate() &
result(swig_result)
use, intrinsic :: ISO_C_BINDING
type(C_PTR) :: swig_result
type(C_PTR) :: fresult 

fresult = swigc_FIDACreate()
swig_result = fresult
end function

function FIDAInit(ida_mem, res, t0, yy0, yp0) &
result(swig_result)
use, intrinsic :: ISO_C_BINDING
integer(C_INT) :: swig_result
type(C_PTR) :: ida_mem
type(C_FUNPTR), intent(in), value :: res
real(C_DOUBLE), intent(in) :: t0
type(N_Vector), target, intent(inout) :: yy0
type(N_Vector), target, intent(inout) :: yp0
integer(C_INT) :: fresult 
type(C_PTR) :: farg1 
type(C_FUNPTR) :: farg2 
real(C_DOUBLE) :: farg3 
type(C_PTR) :: farg4 
type(C_PTR) :: farg5 

farg1 = ida_mem
farg2 = res
farg3 = t0
farg4 = c_loc(yy0)
farg5 = c_loc(yp0)
fresult = swigc_FIDAInit(farg1, farg2, farg3, farg4, farg5)
swig_result = fresult
end function

function FIDAReInit(ida_mem, t0, yy0, yp0) &
result(swig_result)
use, intrinsic :: ISO_C_BINDING
integer(C_INT) :: swig_result
type(C_PTR) :: ida_mem
real(C_DOUBLE), intent(in) :: t0
type(N_Vector), target, intent(inout) :: yy0
type(N_Vector), target, intent(inout) :: yp0
integer(C_INT) :: fresult 
type(C_PTR) :: farg1 
real(C_DOUBLE) :: farg2 
type(C_PTR) :: farg3 
type(C_PTR) :: farg4 

farg1 = ida_mem
farg2 = t0
farg3 = c_loc(yy0)
farg4 = c_loc(yp0)
fresult = swigc_FIDAReInit(farg1, farg2, farg3, farg4)
swig_result = fresult
end function

function FIDASStolerances(ida_mem, reltol, abstol) &
result(swig_result)
use, intrinsic :: ISO_C_BINDING
integer(C_INT) :: swig_result
type(C_PTR) :: ida_mem
real(C_DOUBLE), intent(in) :: reltol
real(C_DOUBLE), intent(in) :: abstol
integer(C_INT) :: fresult 
type(C_PTR) :: farg1 
real(C_DOUBLE) :: farg2 
real(C_DOUBLE) :: farg3 

farg1 = ida_mem
farg2 = reltol
farg3 = abstol
fresult = swigc_FIDASStolerances(farg1, farg2, farg3)
swig_result = fresult
end function

function FIDASVtolerances(ida_mem, reltol, abstol) &
result(swig_result)
use, intrinsic :: ISO_C_BINDING
integer(C_INT) :: swig_result
type(C_PTR) :: ida_mem
real(C_DOUBLE), intent(in) :: reltol
type(N_Vector), target, intent(inout) :: abstol
integer(C_INT) :: fresult 
type(C_PTR) :: farg1 
real(C_DOUBLE) :: farg2 
type(C_PTR) :: farg3 

farg1 = ida_mem
farg2 = reltol
farg3 = c_loc(abstol)
fresult = swigc_FIDASVtolerances(farg1, farg2, farg3)
swig_result = fresult
end function

function FIDAWFtolerances(ida_mem, efun) &
result(swig_result)
use, intrinsic :: ISO_C_BINDING
integer(C_INT) :: swig_result
type(C_PTR) :: ida_mem
type(C_FUNPTR), intent(in), value :: efun
integer(C_INT) :: fresult 
type(C_PTR) :: farg1 
type(C_FUNPTR) :: farg2 

farg1 = ida_mem
farg2 = efun
fresult = swigc_FIDAWFtolerances(farg1, farg2)
swig_result = fresult
end function

function FIDACalcIC(ida_mem, icopt, tout1) &
result(swig_result)
use, intrinsic :: ISO_C_BINDING
integer(C_INT) :: swig_result
type(C_PTR) :: ida_mem
integer(C_INT), intent(in) :: icopt
real(C_DOUBLE), intent(in) :: tout1
integer(C_INT) :: fresult 
type(C_PTR) :: farg1 
integer(C_INT) :: farg2 
real(C_DOUBLE) :: farg3 

farg1 = ida_mem
farg2 = icopt
farg3 = tout1
fresult = swigc_FIDACalcIC(farg1, farg2, farg3)
swig_result = fresult
end function

function FIDASetNonlinConvCoefIC(ida_mem, epiccon) &
result(swig_result)
use, intrinsic :: ISO_C_BINDING
integer(C_INT) :: swig_result
type(C_PTR) :: ida_mem
real(C_DOUBLE), intent(in) :: epiccon
integer(C_INT) :: fresult 
type(C_PTR) :: farg1 
real(C_DOUBLE) :: farg2 

farg1 = ida_mem
farg2 = epiccon
fresult = swigc_FIDASetNonlinConvCoefIC(farg1, farg2)
swig_result = fresult
end function

function FIDASetMaxNumStepsIC(ida_mem, maxnh) &
result(swig_result)
use, intrinsic :: ISO_C_BINDING
integer(C_INT) :: swig_result
type(C_PTR) :: ida_mem
integer(C_INT), intent(in) :: maxnh
integer(C_INT) :: fresult 
type(C_PTR) :: farg1 
integer(C_INT) :: farg2 

farg1 = ida_mem
farg2 = maxnh
fresult = swigc_FIDASetMaxNumStepsIC(farg1, farg2)
swig_result = fresult
end function

function FIDASetMaxNumJacsIC(ida_mem, maxnj) &
result(swig_result)
use, intrinsic :: ISO_C_BINDING
integer(C_INT) :: swig_result
type(C_PTR) :: ida_mem
integer(C_INT), intent(in) :: maxnj
integer(C_INT) :: fresult 
type(C_PTR) :: farg1 
integer(C_INT) :: farg2 

farg1 = ida_mem
farg2 = maxnj
fresult = swigc_FIDASetMaxNumJacsIC(farg1, farg2)
swig_result = fresult
end function

function FIDASetMaxNumItersIC(ida_mem, maxnit) &
result(swig_result)
use, intrinsic :: ISO_C_BINDING
integer(C_INT) :: swig_result
type(C_PTR) :: ida_mem
integer(C_INT), intent(in) :: maxnit
integer(C_INT) :: fresult 
type(C_PTR) :: farg1 
integer(C_INT) :: farg2 

farg1 = ida_mem
farg2 = maxnit
fresult = swigc_FIDASetMaxNumItersIC(farg1, farg2)
swig_result = fresult
end function

function FIDASetLineSearchOffIC(ida_mem, lsoff) &
result(swig_result)
use, intrinsic :: ISO_C_BINDING
integer(C_INT) :: swig_result
type(C_PTR) :: ida_mem
integer(C_INT), intent(in) :: lsoff
integer(C_INT) :: fresult 
type(C_PTR) :: farg1 
integer(C_INT) :: farg2 

farg1 = ida_mem
farg2 = lsoff
fresult = swigc_FIDASetLineSearchOffIC(farg1, farg2)
swig_result = fresult
end function

function FIDASetStepToleranceIC(ida_mem, steptol) &
result(swig_result)
use, intrinsic :: ISO_C_BINDING
integer(C_INT) :: swig_result
type(C_PTR) :: ida_mem
real(C_DOUBLE), intent(in) :: steptol
integer(C_INT) :: fresult 
type(C_PTR) :: farg1 
real(C_DOUBLE) :: farg2 

farg1 = ida_mem
farg2 = steptol
fresult = swigc_FIDASetStepToleranceIC(farg1, farg2)
swig_result = fresult
end function

function FIDASetMaxBacksIC(ida_mem, maxbacks) &
result(swig_result)
use, intrinsic :: ISO_C_BINDING
integer(C_INT) :: swig_result
type(C_PTR) :: ida_mem
integer(C_INT), intent(in) :: maxbacks
integer(C_INT) :: fresult 
type(C_PTR) :: farg1 
integer(C_INT) :: farg2 

farg1 = ida_mem
farg2 = maxbacks
fresult = swigc_FIDASetMaxBacksIC(farg1, farg2)
swig_result = fresult
end function

function FIDASetErrHandlerFn(ida_mem, ehfun, eh_data) &
result(swig_result)
use, intrinsic :: ISO_C_BINDING
integer(C_INT) :: swig_result
type(C_PTR) :: ida_mem
type(C_FUNPTR), intent(in), value :: ehfun
type(C_PTR) :: eh_data
integer(C_INT) :: fresult 
type(C_PTR) :: farg1 
type(C_FUNPTR) :: farg2 
type(C_PTR) :: farg3 

farg1 = ida_mem
farg2 = ehfun
farg3 = eh_data
fresult = swigc_FIDASetErrHandlerFn(farg1, farg2, farg3)
swig_result = fresult
end function

function FIDASetErrFile(ida_mem, errfp) &
result(swig_result)
use, intrinsic :: ISO_C_BINDING
integer(C_INT) :: swig_result
type(C_PTR) :: ida_mem
type(C_PTR) :: errfp
integer(C_INT) :: fresult 
type(C_PTR) :: farg1 
type(C_PTR) :: farg2 

farg1 = ida_mem
farg2 = errfp
fresult = swigc_FIDASetErrFile(farg1, farg2)
swig_result = fresult
end function

function FIDASetUserData(ida_mem, user_data) &
result(swig_result)
use, intrinsic :: ISO_C_BINDING
integer(C_INT) :: swig_result
type(C_PTR) :: ida_mem
type(C_PTR) :: user_data
integer(C_INT) :: fresult 
type(C_PTR) :: farg1 
type(C_PTR) :: farg2 

farg1 = ida_mem
farg2 = user_data
fresult = swigc_FIDASetUserData(farg1, farg2)
swig_result = fresult
end function

function FIDASetMaxOrd(ida_mem, maxord) &
result(swig_result)
use, intrinsic :: ISO_C_BINDING
integer(C_INT) :: swig_result
type(C_PTR) :: ida_mem
integer(C_INT), intent(in) :: maxord
integer(C_INT) :: fresult 
type(C_PTR) :: farg1 
integer(C_INT) :: farg2 

farg1 = ida_mem
farg2 = maxord
fresult = swigc_FIDASetMaxOrd(farg1, farg2)
swig_result = fresult
end function

function FIDASetMaxNumSteps(ida_mem, mxsteps) &
result(swig_result)
use, intrinsic :: ISO_C_BINDING
integer(C_INT) :: swig_result
type(C_PTR) :: ida_mem
integer(C_LONG), intent(in) :: mxsteps
integer(C_INT) :: fresult 
type(C_PTR) :: farg1 
integer(C_LONG) :: farg2 

farg1 = ida_mem
farg2 = mxsteps
fresult = swigc_FIDASetMaxNumSteps(farg1, farg2)
swig_result = fresult
end function

function FIDASetInitStep(ida_mem, hin) &
result(swig_result)
use, intrinsic :: ISO_C_BINDING
integer(C_INT) :: swig_result
type(C_PTR) :: ida_mem
real(C_DOUBLE), intent(in) :: hin
integer(C_INT) :: fresult 
type(C_PTR) :: farg1 
real(C_DOUBLE) :: farg2 

farg1 = ida_mem
farg2 = hin
fresult = swigc_FIDASetInitStep(farg1, farg2)
swig_result = fresult
end function

function FIDASetMaxStep(ida_mem, hmax) &
result(swig_result)
use, intrinsic :: ISO_C_BINDING
integer(C_INT) :: swig_result
type(C_PTR) :: ida_mem
real(C_DOUBLE), intent(in) :: hmax
integer(C_INT) :: fresult 
type(C_PTR) :: farg1 
real(C_DOUBLE) :: farg2 

farg1 = ida_mem
farg2 = hmax
fresult = swigc_FIDASetMaxStep(farg1, farg2)
swig_result = fresult
end function

function FIDASetStopTime(ida_mem, tstop) &
result(swig_result)
use, intrinsic :: ISO_C_BINDING
integer(C_INT) :: swig_result
type(C_PTR) :: ida_mem
real(C_DOUBLE), intent(in) :: tstop
integer(C_INT) :: fresult 
type(C_PTR) :: farg1 
real(C_DOUBLE) :: farg2 

farg1 = ida_mem
farg2 = tstop
fresult = swigc_FIDASetStopTime(farg1, farg2)
swig_result = fresult
end function

function FIDASetNonlinConvCoef(ida_mem, epcon) &
result(swig_result)
use, intrinsic :: ISO_C_BINDING
integer(C_INT) :: swig_result
type(C_PTR) :: ida_mem
real(C_DOUBLE), intent(in) :: epcon
integer(C_INT) :: fresult 
type(C_PTR) :: farg1 
real(C_DOUBLE) :: farg2 

farg1 = ida_mem
farg2 = epcon
fresult = swigc_FIDASetNonlinConvCoef(farg1, farg2)
swig_result = fresult
end function

function FIDASetMaxErrTestFails(ida_mem, maxnef) &
result(swig_result)
use, intrinsic :: ISO_C_BINDING
integer(C_INT) :: swig_result
type(C_PTR) :: ida_mem
integer(C_INT), intent(in) :: maxnef
integer(C_INT) :: fresult 
type(C_PTR) :: farg1 
integer(C_INT) :: farg2 

farg1 = ida_mem
farg2 = maxnef
fresult = swigc_FIDASetMaxErrTestFails(farg1, farg2)
swig_result = fresult
end function

function FIDASetMaxNonlinIters(ida_mem, maxcor) &
result(swig_result)
use, intrinsic :: ISO_C_BINDING
integer(C_INT) :: swig_result
type(C_PTR) :: ida_mem
integer(C_INT), intent(in) :: maxcor
integer(C_INT) :: fresult 
type(C_PTR) :: farg1 
integer(C_INT) :: farg2 

farg1 = ida_mem
farg2 = maxcor
fresult = swigc_FIDASetMaxNonlinIters(farg1, farg2)
swig_result = fresult
end function

function FIDASetMaxConvFails(ida_mem, maxncf) &
result(swig_result)
use, intrinsic :: ISO_C_BINDING
integer(C_INT) :: swig_result
type(C_PTR) :: ida_mem
integer(C_INT), intent(in) :: maxncf
integer(C_INT) :: fresult 
type(C_PTR) :: farg1 
integer(C_INT) :: farg2 

farg1 = ida_mem
farg2 = maxncf
fresult = swigc_FIDASetMaxConvFails(farg1, farg2)
swig_result = fresult
end function

function FIDASetSuppressAlg(ida_mem, suppressalg) &
result(swig_result)
use, intrinsic :: ISO_C_BINDING
integer(C_INT) :: swig_result
type(C_PTR) :: ida_mem
integer(C_INT), intent(in) :: suppressalg
integer(C_INT) :: fresult 
type(C_PTR) :: farg1 
integer(C_INT) :: farg2 

farg1 = ida_mem
farg2 = suppressalg
fresult = swigc_FIDASetSuppressAlg(farg1, farg2)
swig_result = fresult
end function

function FIDASetId(ida_mem, id) &
result(swig_result)
use, intrinsic :: ISO_C_BINDING
integer(C_INT) :: swig_result
type(C_PTR) :: ida_mem
type(N_Vector), target, intent(inout) :: id
integer(C_INT) :: fresult 
type(C_PTR) :: farg1 
type(C_PTR) :: farg2 

farg1 = ida_mem
farg2 = c_loc(id)
fresult = swigc_FIDASetId(farg1, farg2)
swig_result = fresult
end function

function FIDASetConstraints(ida_mem, constraints) &
result(swig_result)
use, intrinsic :: ISO_C_BINDING
integer(C_INT) :: swig_result
type(C_PTR) :: ida_mem
type(N_Vector), target, intent(inout) :: constraints
integer(C_INT) :: fresult 
type(C_PTR) :: farg1 
type(C_PTR) :: farg2 

farg1 = ida_mem
farg2 = c_loc(constraints)
fresult = swigc_FIDASetConstraints(farg1, farg2)
swig_result = fresult
end function

function FIDASetNonlinearSolver(ida_mem, nls) &
result(swig_result)
use, intrinsic :: ISO_C_BINDING
integer(C_INT) :: swig_result
type(C_PTR) :: ida_mem
type(SUNNonlinearSolver), target, intent(inout) :: nls
integer(C_INT) :: fresult 
type(C_PTR) :: farg1 
type(C_PTR) :: farg2 

farg1 = ida_mem
farg2 = c_loc(nls)
fresult = swigc_FIDASetNonlinearSolver(farg1, farg2)
swig_result = fresult
end function

function FIDARootInit(ida_mem, nrtfn, g) &
result(swig_result)
use, intrinsic :: ISO_C_BINDING
integer(C_INT) :: swig_result
type(C_PTR) :: ida_mem
integer(C_INT), intent(in) :: nrtfn
type(C_FUNPTR), intent(in), value :: g
integer(C_INT) :: fresult 
type(C_PTR) :: farg1 
integer(C_INT) :: farg2 
type(C_FUNPTR) :: farg3 

farg1 = ida_mem
farg2 = nrtfn
farg3 = g
fresult = swigc_FIDARootInit(farg1, farg2, farg3)
swig_result = fresult
end function

function FIDASetRootDirection(ida_mem, rootdir) &
result(swig_result)
use, intrinsic :: ISO_C_BINDING
integer(C_INT) :: swig_result
type(C_PTR) :: ida_mem
integer(C_INT), dimension(*), target, intent(inout) :: rootdir
integer(C_INT) :: fresult 
type(C_PTR) :: farg1 
type(C_PTR) :: farg2 

farg1 = ida_mem
farg2 = c_loc(rootdir(1))
fresult = swigc_FIDASetRootDirection(farg1, farg2)
swig_result = fresult
end function

function FIDASetNoInactiveRootWarn(ida_mem) &
result(swig_result)
use, intrinsic :: ISO_C_BINDING
integer(C_INT) :: swig_result
type(C_PTR) :: ida_mem
integer(C_INT) :: fresult 
type(C_PTR) :: farg1 

farg1 = ida_mem
fresult = swigc_FIDASetNoInactiveRootWarn(farg1)
swig_result = fresult
end function

function FIDASolve(ida_mem, tout, tret, yret, ypret, itask) &
result(swig_result)
use, intrinsic :: ISO_C_BINDING
integer(C_INT) :: swig_result
type(C_PTR) :: ida_mem
real(C_DOUBLE), intent(in) :: tout
real(C_DOUBLE), dimension(*), target, intent(inout) :: tret
type(N_Vector), target, intent(inout) :: yret
type(N_Vector), target, intent(inout) :: ypret
integer(C_INT), intent(in) :: itask
integer(C_INT) :: fresult 
type(C_PTR) :: farg1 
real(C_DOUBLE) :: farg2 
type(C_PTR) :: farg3 
type(C_PTR) :: farg4 
type(C_PTR) :: farg5 
integer(C_INT) :: farg6 

farg1 = ida_mem
farg2 = tout
farg3 = c_loc(tret(1))
farg4 = c_loc(yret)
farg5 = c_loc(ypret)
farg6 = itask
fresult = swigc_FIDASolve(farg1, farg2, farg3, farg4, farg5, farg6)
swig_result = fresult
end function

function FIDAComputeY(ida_mem, ycor, y) &
result(swig_result)
use, intrinsic :: ISO_C_BINDING
integer(C_INT) :: swig_result
type(C_PTR) :: ida_mem
type(N_Vector), target, intent(inout) :: ycor
type(N_Vector), target, intent(inout) :: y
integer(C_INT) :: fresult 
type(C_PTR) :: farg1 
type(C_PTR) :: farg2 
type(C_PTR) :: farg3 

farg1 = ida_mem
farg2 = c_loc(ycor)
farg3 = c_loc(y)
fresult = swigc_FIDAComputeY(farg1, farg2, farg3)
swig_result = fresult
end function

function FIDAComputeYp(ida_mem, ycor, yp) &
result(swig_result)
use, intrinsic :: ISO_C_BINDING
integer(C_INT) :: swig_result
type(C_PTR) :: ida_mem
type(N_Vector), target, intent(inout) :: ycor
type(N_Vector), target, intent(inout) :: yp
integer(C_INT) :: fresult 
type(C_PTR) :: farg1 
type(C_PTR) :: farg2 
type(C_PTR) :: farg3 

farg1 = ida_mem
farg2 = c_loc(ycor)
farg3 = c_loc(yp)
fresult = swigc_FIDAComputeYp(farg1, farg2, farg3)
swig_result = fresult
end function

function FIDAComputeYSens(ida_mem, ycor, yys) &
result(swig_result)
use, intrinsic :: ISO_C_BINDING
integer(C_INT) :: swig_result
type(C_PTR) :: ida_mem
type(C_PTR) :: ycor
type(C_PTR) :: yys
integer(C_INT) :: fresult 
type(C_PTR) :: farg1 
type(C_PTR) :: farg2 
type(C_PTR) :: farg3 

farg1 = ida_mem
farg2 = ycor
farg3 = yys
fresult = swigc_FIDAComputeYSens(farg1, farg2, farg3)
swig_result = fresult
end function

function FIDAComputeYpSens(ida_mem, ycor, yps) &
result(swig_result)
use, intrinsic :: ISO_C_BINDING
integer(C_INT) :: swig_result
type(C_PTR) :: ida_mem
type(C_PTR) :: ycor
type(C_PTR) :: yps
integer(C_INT) :: fresult 
type(C_PTR) :: farg1 
type(C_PTR) :: farg2 
type(C_PTR) :: farg3 

farg1 = ida_mem
farg2 = ycor
farg3 = yps
fresult = swigc_FIDAComputeYpSens(farg1, farg2, farg3)
swig_result = fresult
end function

function FIDAGetDky(ida_mem, t, k, dky) &
result(swig_result)
use, intrinsic :: ISO_C_BINDING
integer(C_INT) :: swig_result
type(C_PTR) :: ida_mem
real(C_DOUBLE), intent(in) :: t
integer(C_INT), intent(in) :: k
type(N_Vector), target, intent(inout) :: dky
integer(C_INT) :: fresult 
type(C_PTR) :: farg1 
real(C_DOUBLE) :: farg2 
integer(C_INT) :: farg3 
type(C_PTR) :: farg4 

farg1 = ida_mem
farg2 = t
farg3 = k
farg4 = c_loc(dky)
fresult = swigc_FIDAGetDky(farg1, farg2, farg3, farg4)
swig_result = fresult
end function

function FIDAGetWorkSpace(ida_mem, lenrw, leniw) &
result(swig_result)
use, intrinsic :: ISO_C_BINDING
integer(C_INT) :: swig_result
type(C_PTR) :: ida_mem
integer(C_LONG), dimension(*), target, intent(inout) :: lenrw
integer(C_LONG), dimension(*), target, intent(inout) :: leniw
integer(C_INT) :: fresult 
type(C_PTR) :: farg1 
type(C_PTR) :: farg2 
type(C_PTR) :: farg3 

farg1 = ida_mem
farg2 = c_loc(lenrw(1))
farg3 = c_loc(leniw(1))
fresult = swigc_FIDAGetWorkSpace(farg1, farg2, farg3)
swig_result = fresult
end function

function FIDAGetNumSteps(ida_mem, nsteps) &
result(swig_result)
use, intrinsic :: ISO_C_BINDING
integer(C_INT) :: swig_result
type(C_PTR) :: ida_mem
integer(C_LONG), dimension(*), target, intent(inout) :: nsteps
integer(C_INT) :: fresult 
type(C_PTR) :: farg1 
type(C_PTR) :: farg2 

farg1 = ida_mem
farg2 = c_loc(nsteps(1))
fresult = swigc_FIDAGetNumSteps(farg1, farg2)
swig_result = fresult
end function

function FIDAGetNumResEvals(ida_mem, nrevals) &
result(swig_result)
use, intrinsic :: ISO_C_BINDING
integer(C_INT) :: swig_result
type(C_PTR) :: ida_mem
integer(C_LONG), dimension(*), target, intent(inout) :: nrevals
integer(C_INT) :: fresult 
type(C_PTR) :: farg1 
type(C_PTR) :: farg2 

farg1 = ida_mem
farg2 = c_loc(nrevals(1))
fresult = swigc_FIDAGetNumResEvals(farg1, farg2)
swig_result = fresult
end function

function FIDAGetNumLinSolvSetups(ida_mem, nlinsetups) &
result(swig_result)
use, intrinsic :: ISO_C_BINDING
integer(C_INT) :: swig_result
type(C_PTR) :: ida_mem
integer(C_LONG), dimension(*), target, intent(inout) :: nlinsetups
integer(C_INT) :: fresult 
type(C_PTR) :: farg1 
type(C_PTR) :: farg2 

farg1 = ida_mem
farg2 = c_loc(nlinsetups(1))
fresult = swigc_FIDAGetNumLinSolvSetups(farg1, farg2)
swig_result = fresult
end function

function FIDAGetNumErrTestFails(ida_mem, netfails) &
result(swig_result)
use, intrinsic :: ISO_C_BINDING
integer(C_INT) :: swig_result
type(C_PTR) :: ida_mem
integer(C_LONG), dimension(*), target, intent(inout) :: netfails
integer(C_INT) :: fresult 
type(C_PTR) :: farg1 
type(C_PTR) :: farg2 

farg1 = ida_mem
farg2 = c_loc(netfails(1))
fresult = swigc_FIDAGetNumErrTestFails(farg1, farg2)
swig_result = fresult
end function

function FIDAGetNumBacktrackOps(ida_mem, nbacktr) &
result(swig_result)
use, intrinsic :: ISO_C_BINDING
integer(C_INT) :: swig_result
type(C_PTR) :: ida_mem
integer(C_LONG), dimension(*), target, intent(inout) :: nbacktr
integer(C_INT) :: fresult 
type(C_PTR) :: farg1 
type(C_PTR) :: farg2 

farg1 = ida_mem
farg2 = c_loc(nbacktr(1))
fresult = swigc_FIDAGetNumBacktrackOps(farg1, farg2)
swig_result = fresult
end function

function FIDAGetConsistentIC(ida_mem, yy0_mod, yp0_mod) &
result(swig_result)
use, intrinsic :: ISO_C_BINDING
integer(C_INT) :: swig_result
type(C_PTR) :: ida_mem
type(N_Vector), target, intent(inout) :: yy0_mod
type(N_Vector), target, intent(inout) :: yp0_mod
integer(C_INT) :: fresult 
type(C_PTR) :: farg1 
type(C_PTR) :: farg2 
type(C_PTR) :: farg3 

farg1 = ida_mem
farg2 = c_loc(yy0_mod)
farg3 = c_loc(yp0_mod)
fresult = swigc_FIDAGetConsistentIC(farg1, farg2, farg3)
swig_result = fresult
end function

function FIDAGetLastOrder(ida_mem, klast) &
result(swig_result)
use, intrinsic :: ISO_C_BINDING
integer(C_INT) :: swig_result
type(C_PTR) :: ida_mem
integer(C_INT), dimension(*), target, intent(inout) :: klast
integer(C_INT) :: fresult 
type(C_PTR) :: farg1 
type(C_PTR) :: farg2 

farg1 = ida_mem
farg2 = c_loc(klast(1))
fresult = swigc_FIDAGetLastOrder(farg1, farg2)
swig_result = fresult
end function

function FIDAGetCurrentOrder(ida_mem, kcur) &
result(swig_result)
use, intrinsic :: ISO_C_BINDING
integer(C_INT) :: swig_result
type(C_PTR) :: ida_mem
integer(C_INT), dimension(*), target, intent(inout) :: kcur
integer(C_INT) :: fresult 
type(C_PTR) :: farg1 
type(C_PTR) :: farg2 

farg1 = ida_mem
farg2 = c_loc(kcur(1))
fresult = swigc_FIDAGetCurrentOrder(farg1, farg2)
swig_result = fresult
end function

function FIDAGetCurrentCj(ida_mem, cj) &
result(swig_result)
use, intrinsic :: ISO_C_BINDING
integer(C_INT) :: swig_result
type(C_PTR) :: ida_mem
real(C_DOUBLE), dimension(*), target, intent(inout) :: cj
integer(C_INT) :: fresult 
type(C_PTR) :: farg1 
type(C_PTR) :: farg2 

farg1 = ida_mem
farg2 = c_loc(cj(1))
fresult = swigc_FIDAGetCurrentCj(farg1, farg2)
swig_result = fresult
end function

function FIDAGetCurrentY(ida_mem, ycur) &
result(swig_result)
use, intrinsic :: ISO_C_BINDING
integer(C_INT) :: swig_result
type(C_PTR) :: ida_mem
type(C_PTR) :: ycur
integer(C_INT) :: fresult 
type(C_PTR) :: farg1 
type(C_PTR) :: farg2 

farg1 = ida_mem
farg2 = ycur
fresult = swigc_FIDAGetCurrentY(farg1, farg2)
swig_result = fresult
end function

function FIDAGetCurrentYSens(ida_mem, ys) &
result(swig_result)
use, intrinsic :: ISO_C_BINDING
integer(C_INT) :: swig_result
type(C_PTR) :: ida_mem
type(C_PTR), target, intent(inout) :: ys
integer(C_INT) :: fresult 
type(C_PTR) :: farg1 
type(C_PTR) :: farg2 

farg1 = ida_mem
farg2 = c_loc(ys)
fresult = swigc_FIDAGetCurrentYSens(farg1, farg2)
swig_result = fresult
end function

function FIDAGetCurrentYp(ida_mem, ypcur) &
result(swig_result)
use, intrinsic :: ISO_C_BINDING
integer(C_INT) :: swig_result
type(C_PTR) :: ida_mem
type(C_PTR) :: ypcur
integer(C_INT) :: fresult 
type(C_PTR) :: farg1 
type(C_PTR) :: farg2 

farg1 = ida_mem
farg2 = ypcur
fresult = swigc_FIDAGetCurrentYp(farg1, farg2)
swig_result = fresult
end function

function FIDAGetCurrentYpSens(ida_mem, yps) &
result(swig_result)
use, intrinsic :: ISO_C_BINDING
integer(C_INT) :: swig_result
type(C_PTR) :: ida_mem
type(C_PTR), target, intent(inout) :: yps
integer(C_INT) :: fresult 
type(C_PTR) :: farg1 
type(C_PTR) :: farg2 

farg1 = ida_mem
farg2 = c_loc(yps)
fresult = swigc_FIDAGetCurrentYpSens(farg1, farg2)
swig_result = fresult
end function

function FIDAGetActualInitStep(ida_mem, hinused) &
result(swig_result)
use, intrinsic :: ISO_C_BINDING
integer(C_INT) :: swig_result
type(C_PTR) :: ida_mem
real(C_DOUBLE), dimension(*), target, intent(inout) :: hinused
integer(C_INT) :: fresult 
type(C_PTR) :: farg1 
type(C_PTR) :: farg2 

farg1 = ida_mem
farg2 = c_loc(hinused(1))
fresult = swigc_FIDAGetActualInitStep(farg1, farg2)
swig_result = fresult
end function

function FIDAGetLastStep(ida_mem, hlast) &
result(swig_result)
use, intrinsic :: ISO_C_BINDING
integer(C_INT) :: swig_result
type(C_PTR) :: ida_mem
real(C_DOUBLE), dimension(*), target, intent(inout) :: hlast
integer(C_INT) :: fresult 
type(C_PTR) :: farg1 
type(C_PTR) :: farg2 

farg1 = ida_mem
farg2 = c_loc(hlast(1))
fresult = swigc_FIDAGetLastStep(farg1, farg2)
swig_result = fresult
end function

function FIDAGetCurrentStep(ida_mem, hcur) &
result(swig_result)
use, intrinsic :: ISO_C_BINDING
integer(C_INT) :: swig_result
type(C_PTR) :: ida_mem
real(C_DOUBLE), dimension(*), target, intent(inout) :: hcur
integer(C_INT) :: fresult 
type(C_PTR) :: farg1 
type(C_PTR) :: farg2 

farg1 = ida_mem
farg2 = c_loc(hcur(1))
fresult = swigc_FIDAGetCurrentStep(farg1, farg2)
swig_result = fresult
end function

function FIDAGetCurrentTime(ida_mem, tcur) &
result(swig_result)
use, intrinsic :: ISO_C_BINDING
integer(C_INT) :: swig_result
type(C_PTR) :: ida_mem
real(C_DOUBLE), dimension(*), target, intent(inout) :: tcur
integer(C_INT) :: fresult 
type(C_PTR) :: farg1 
type(C_PTR) :: farg2 

farg1 = ida_mem
farg2 = c_loc(tcur(1))
fresult = swigc_FIDAGetCurrentTime(farg1, farg2)
swig_result = fresult
end function

function FIDAGetTolScaleFactor(ida_mem, tolsfact) &
result(swig_result)
use, intrinsic :: ISO_C_BINDING
integer(C_INT) :: swig_result
type(C_PTR) :: ida_mem
real(C_DOUBLE), dimension(*), target, intent(inout) :: tolsfact
integer(C_INT) :: fresult 
type(C_PTR) :: farg1 
type(C_PTR) :: farg2 

farg1 = ida_mem
farg2 = c_loc(tolsfact(1))
fresult = swigc_FIDAGetTolScaleFactor(farg1, farg2)
swig_result = fresult
end function

function FIDAGetErrWeights(ida_mem, eweight) &
result(swig_result)
use, intrinsic :: ISO_C_BINDING
integer(C_INT) :: swig_result
type(C_PTR) :: ida_mem
type(N_Vector), target, intent(inout) :: eweight
integer(C_INT) :: fresult 
type(C_PTR) :: farg1 
type(C_PTR) :: farg2 

farg1 = ida_mem
farg2 = c_loc(eweight)
fresult = swigc_FIDAGetErrWeights(farg1, farg2)
swig_result = fresult
end function

function FIDAGetEstLocalErrors(ida_mem, ele) &
result(swig_result)
use, intrinsic :: ISO_C_BINDING
integer(C_INT) :: swig_result
type(C_PTR) :: ida_mem
type(N_Vector), target, intent(inout) :: ele
integer(C_INT) :: fresult 
type(C_PTR) :: farg1 
type(C_PTR) :: farg2 

farg1 = ida_mem
farg2 = c_loc(ele)
fresult = swigc_FIDAGetEstLocalErrors(farg1, farg2)
swig_result = fresult
end function

function FIDAGetNumGEvals(ida_mem, ngevals) &
result(swig_result)
use, intrinsic :: ISO_C_BINDING
integer(C_INT) :: swig_result
type(C_PTR) :: ida_mem
integer(C_LONG), dimension(*), target, intent(inout) :: ngevals
integer(C_INT) :: fresult 
type(C_PTR) :: farg1 
type(C_PTR) :: farg2 

farg1 = ida_mem
farg2 = c_loc(ngevals(1))
fresult = swigc_FIDAGetNumGEvals(farg1, farg2)
swig_result = fresult
end function

function FIDAGetRootInfo(ida_mem, rootsfound) &
result(swig_result)
use, intrinsic :: ISO_C_BINDING
integer(C_INT) :: swig_result
type(C_PTR) :: ida_mem
integer(C_INT), dimension(*), target, intent(inout) :: rootsfound
integer(C_INT) :: fresult 
type(C_PTR) :: farg1 
type(C_PTR) :: farg2 

farg1 = ida_mem
farg2 = c_loc(rootsfound(1))
fresult = swigc_FIDAGetRootInfo(farg1, farg2)
swig_result = fresult
end function

function FIDAGetIntegratorStats(ida_mem, nsteps, nrevals, nlinsetups, netfails, qlast, qcur, hinused, hlast, hcur, tcur) &
result(swig_result)
use, intrinsic :: ISO_C_BINDING
integer(C_INT) :: swig_result
type(C_PTR) :: ida_mem
integer(C_LONG), dimension(*), target, intent(inout) :: nsteps
integer(C_LONG), dimension(*), target, intent(inout) :: nrevals
integer(C_LONG), dimension(*), target, intent(inout) :: nlinsetups
integer(C_LONG), dimension(*), target, intent(inout) :: netfails
integer(C_INT), dimension(*), target, intent(inout) :: qlast
integer(C_INT), dimension(*), target, intent(inout) :: qcur
real(C_DOUBLE), dimension(*), target, intent(inout) :: hinused
real(C_DOUBLE), dimension(*), target, intent(inout) :: hlast
real(C_DOUBLE), dimension(*), target, intent(inout) :: hcur
real(C_DOUBLE), dimension(*), target, intent(inout) :: tcur
integer(C_INT) :: fresult 
type(C_PTR) :: farg1 
type(C_PTR) :: farg2 
type(C_PTR) :: farg3 
type(C_PTR) :: farg4 
type(C_PTR) :: farg5 
type(C_PTR) :: farg6 
type(C_PTR) :: farg7 
type(C_PTR) :: farg8 
type(C_PTR) :: farg9 
type(C_PTR) :: farg10 
type(C_PTR) :: farg11 

farg1 = ida_mem
farg2 = c_loc(nsteps(1))
farg3 = c_loc(nrevals(1))
farg4 = c_loc(nlinsetups(1))
farg5 = c_loc(netfails(1))
farg6 = c_loc(qlast(1))
farg7 = c_loc(qcur(1))
farg8 = c_loc(hinused(1))
farg9 = c_loc(hlast(1))
farg10 = c_loc(hcur(1))
farg11 = c_loc(tcur(1))
fresult = swigc_FIDAGetIntegratorStats(farg1, farg2, farg3, farg4, farg5, farg6, farg7, farg8, farg9, farg10, farg11)
swig_result = fresult
end function

function FIDAGetNonlinearSystemData(ida_mem, tcur, yypred, yppred, yyn, ypn, res, cj, user_data) &
result(swig_result)
use, intrinsic :: ISO_C_BINDING
integer(C_INT) :: swig_result
type(C_PTR) :: ida_mem
real(C_DOUBLE), dimension(*), target, intent(inout) :: tcur
type(C_PTR) :: yypred
type(C_PTR) :: yppred
type(C_PTR) :: yyn
type(C_PTR) :: ypn
type(C_PTR) :: res
real(C_DOUBLE), dimension(*), target, intent(inout) :: cj
type(C_PTR), target, intent(inout) :: user_data
integer(C_INT) :: fresult 
type(C_PTR) :: farg1 
type(C_PTR) :: farg2 
type(C_PTR) :: farg3 
type(C_PTR) :: farg4 
type(C_PTR) :: farg5 
type(C_PTR) :: farg6 
type(C_PTR) :: farg7 
type(C_PTR) :: farg8 
type(C_PTR) :: farg9 

farg1 = ida_mem
farg2 = c_loc(tcur(1))
farg3 = yypred
farg4 = yppred
farg5 = yyn
farg6 = ypn
farg7 = res
farg8 = c_loc(cj(1))
farg9 = c_loc(user_data)
fresult = swigc_FIDAGetNonlinearSystemData(farg1, farg2, farg3, farg4, farg5, farg6, farg7, farg8, farg9)
swig_result = fresult
end function

function FIDAGetNonlinearSystemDataSens(ida_mem, tcur, yyspred, ypspred, yysn, ypsn, cj, user_data) &
result(swig_result)
use, intrinsic :: ISO_C_BINDING
integer(C_INT) :: swig_result
type(C_PTR) :: ida_mem
real(C_DOUBLE), dimension(*), target, intent(inout) :: tcur
type(C_PTR), target, intent(inout) :: yyspred
type(C_PTR), target, intent(inout) :: ypspred
type(C_PTR), target, intent(inout) :: yysn
type(C_PTR), target, intent(inout) :: ypsn
real(C_DOUBLE), dimension(*), target, intent(inout) :: cj
type(C_PTR), target, intent(inout) :: user_data
integer(C_INT) :: fresult 
type(C_PTR) :: farg1 
type(C_PTR) :: farg2 
type(C_PTR) :: farg3 
type(C_PTR) :: farg4 
type(C_PTR) :: farg5 
type(C_PTR) :: farg6 
type(C_PTR) :: farg7 
type(C_PTR) :: farg8 

farg1 = ida_mem
farg2 = c_loc(tcur(1))
farg3 = c_loc(yyspred)
farg4 = c_loc(ypspred)
farg5 = c_loc(yysn)
farg6 = c_loc(ypsn)
farg7 = c_loc(cj(1))
farg8 = c_loc(user_data)
fresult = swigc_FIDAGetNonlinearSystemDataSens(farg1, farg2, farg3, farg4, farg5, farg6, farg7, farg8)
swig_result = fresult
end function

function FIDAGetNumNonlinSolvIters(ida_mem, nniters) &
result(swig_result)
use, intrinsic :: ISO_C_BINDING
integer(C_INT) :: swig_result
type(C_PTR) :: ida_mem
integer(C_LONG), dimension(*), target, intent(inout) :: nniters
integer(C_INT) :: fresult 
type(C_PTR) :: farg1 
type(C_PTR) :: farg2 

farg1 = ida_mem
farg2 = c_loc(nniters(1))
fresult = swigc_FIDAGetNumNonlinSolvIters(farg1, farg2)
swig_result = fresult
end function

function FIDAGetNumNonlinSolvConvFails(ida_mem, nncfails) &
result(swig_result)
use, intrinsic :: ISO_C_BINDING
integer(C_INT) :: swig_result
type(C_PTR) :: ida_mem
integer(C_LONG), dimension(*), target, intent(inout) :: nncfails
integer(C_INT) :: fresult 
type(C_PTR) :: farg1 
type(C_PTR) :: farg2 

farg1 = ida_mem
farg2 = c_loc(nncfails(1))
fresult = swigc_FIDAGetNumNonlinSolvConvFails(farg1, farg2)
swig_result = fresult
end function

function FIDAGetNonlinSolvStats(ida_mem, nniters, nncfails) &
result(swig_result)
use, intrinsic :: ISO_C_BINDING
integer(C_INT) :: swig_result
type(C_PTR) :: ida_mem
integer(C_LONG), dimension(*), target, intent(inout) :: nniters
integer(C_LONG), dimension(*), target, intent(inout) :: nncfails
integer(C_INT) :: fresult 
type(C_PTR) :: farg1 
type(C_PTR) :: farg2 
type(C_PTR) :: farg3 

farg1 = ida_mem
farg2 = c_loc(nniters(1))
farg3 = c_loc(nncfails(1))
fresult = swigc_FIDAGetNonlinSolvStats(farg1, farg2, farg3)
swig_result = fresult
end function


subroutine SWIG_chararray_to_string(wrap, string)
  use, intrinsic :: ISO_C_BINDING
  type(SwigArrayWrapper), intent(IN) :: wrap
  character(kind=C_CHAR, len=:), allocatable, intent(OUT) :: string
  character(kind=C_CHAR), dimension(:), pointer :: chars
  integer(kind=C_SIZE_T) :: i
  call c_f_pointer(wrap%data, chars, [wrap%size])
  allocate(character(kind=C_CHAR, len=wrap%size) :: string)
  do i=1, wrap%size
    string(i:i) = chars(i)
  end do
end subroutine

function FIDAGetReturnFlagName(flag) &
result(swig_result)
use, intrinsic :: ISO_C_BINDING
character(kind=C_CHAR, len=:), allocatable :: swig_result
integer(C_LONG), intent(in) :: flag
type(SwigArrayWrapper) :: fresult 
integer(C_LONG) :: farg1 

farg1 = flag
fresult = swigc_FIDAGetReturnFlagName(farg1)
call SWIG_chararray_to_string(fresult, swig_result)
if (.false.) call SWIG_free(fresult%data)
end function

subroutine FIDAFree(ida_mem)
use, intrinsic :: ISO_C_BINDING
type(C_PTR), target, intent(inout) :: ida_mem
type(C_PTR) :: farg1 

farg1 = c_loc(ida_mem)
call swigc_FIDAFree(farg1)
end subroutine

function FIDASetJacTimesResFn(ida_mem, jtimesresfn) &
result(swig_result)
use, intrinsic :: ISO_C_BINDING
integer(C_INT) :: swig_result
type(C_PTR) :: ida_mem
type(C_FUNPTR), intent(in), value :: jtimesresfn
integer(C_INT) :: fresult 
type(C_PTR) :: farg1 
type(C_FUNPTR) :: farg2 

farg1 = ida_mem
farg2 = jtimesresfn
fresult = swigc_FIDASetJacTimesResFn(farg1, farg2)
swig_result = fresult
end function

function FIDAQuadInit(ida_mem, rhsq, yq0) &
result(swig_result)
use, intrinsic :: ISO_C_BINDING
integer(C_INT) :: swig_result
type(C_PTR) :: ida_mem
type(C_FUNPTR), intent(in), value :: rhsq
type(N_Vector), target, intent(inout) :: yq0
integer(C_INT) :: fresult 
type(C_PTR) :: farg1 
type(C_FUNPTR) :: farg2 
type(C_PTR) :: farg3 

farg1 = ida_mem
farg2 = rhsq
farg3 = c_loc(yq0)
fresult = swigc_FIDAQuadInit(farg1, farg2, farg3)
swig_result = fresult
end function

function FIDAQuadReInit(ida_mem, yq0) &
result(swig_result)
use, intrinsic :: ISO_C_BINDING
integer(C_INT) :: swig_result
type(C_PTR) :: ida_mem
type(N_Vector), target, intent(inout) :: yq0
integer(C_INT) :: fresult 
type(C_PTR) :: farg1 
type(C_PTR) :: farg2 

farg1 = ida_mem
farg2 = c_loc(yq0)
fresult = swigc_FIDAQuadReInit(farg1, farg2)
swig_result = fresult
end function

function FIDAQuadSStolerances(ida_mem, reltolq, abstolq) &
result(swig_result)
use, intrinsic :: ISO_C_BINDING
integer(C_INT) :: swig_result
type(C_PTR) :: ida_mem
real(C_DOUBLE), intent(in) :: reltolq
real(C_DOUBLE), intent(in) :: abstolq
integer(C_INT) :: fresult 
type(C_PTR) :: farg1 
real(C_DOUBLE) :: farg2 
real(C_DOUBLE) :: farg3 

farg1 = ida_mem
farg2 = reltolq
farg3 = abstolq
fresult = swigc_FIDAQuadSStolerances(farg1, farg2, farg3)
swig_result = fresult
end function

function FIDAQuadSVtolerances(ida_mem, reltolq, abstolq) &
result(swig_result)
use, intrinsic :: ISO_C_BINDING
integer(C_INT) :: swig_result
type(C_PTR) :: ida_mem
real(C_DOUBLE), intent(in) :: reltolq
type(N_Vector), target, intent(inout) :: abstolq
integer(C_INT) :: fresult 
type(C_PTR) :: farg1 
real(C_DOUBLE) :: farg2 
type(C_PTR) :: farg3 

farg1 = ida_mem
farg2 = reltolq
farg3 = c_loc(abstolq)
fresult = swigc_FIDAQuadSVtolerances(farg1, farg2, farg3)
swig_result = fresult
end function

function FIDASetQuadErrCon(ida_mem, errconq) &
result(swig_result)
use, intrinsic :: ISO_C_BINDING
integer(C_INT) :: swig_result
type(C_PTR) :: ida_mem
integer(C_INT), intent(in) :: errconq
integer(C_INT) :: fresult 
type(C_PTR) :: farg1 
integer(C_INT) :: farg2 

farg1 = ida_mem
farg2 = errconq
fresult = swigc_FIDASetQuadErrCon(farg1, farg2)
swig_result = fresult
end function

function FIDAGetQuad(ida_mem, t, yqout) &
result(swig_result)
use, intrinsic :: ISO_C_BINDING
integer(C_INT) :: swig_result
type(C_PTR) :: ida_mem
real(C_DOUBLE), dimension(*), target, intent(inout) :: t
type(N_Vector), target, intent(inout) :: yqout
integer(C_INT) :: fresult 
type(C_PTR) :: farg1 
type(C_PTR) :: farg2 
type(C_PTR) :: farg3 

farg1 = ida_mem
farg2 = c_loc(t(1))
farg3 = c_loc(yqout)
fresult = swigc_FIDAGetQuad(farg1, farg2, farg3)
swig_result = fresult
end function

function FIDAGetQuadDky(ida_mem, t, k, dky) &
result(swig_result)
use, intrinsic :: ISO_C_BINDING
integer(C_INT) :: swig_result
type(C_PTR) :: ida_mem
real(C_DOUBLE), intent(in) :: t
integer(C_INT), intent(in) :: k
type(N_Vector), target, intent(inout) :: dky
integer(C_INT) :: fresult 
type(C_PTR) :: farg1 
real(C_DOUBLE) :: farg2 
integer(C_INT) :: farg3 
type(C_PTR) :: farg4 

farg1 = ida_mem
farg2 = t
farg3 = k
farg4 = c_loc(dky)
fresult = swigc_FIDAGetQuadDky(farg1, farg2, farg3, farg4)
swig_result = fresult
end function

function FIDAGetQuadNumRhsEvals(ida_mem, nrhsqevals) &
result(swig_result)
use, intrinsic :: ISO_C_BINDING
integer(C_INT) :: swig_result
type(C_PTR) :: ida_mem
integer(C_LONG), dimension(*), target, intent(inout) :: nrhsqevals
integer(C_INT) :: fresult 
type(C_PTR) :: farg1 
type(C_PTR) :: farg2 

farg1 = ida_mem
farg2 = c_loc(nrhsqevals(1))
fresult = swigc_FIDAGetQuadNumRhsEvals(farg1, farg2)
swig_result = fresult
end function

function FIDAGetQuadNumErrTestFails(ida_mem, nqetfails) &
result(swig_result)
use, intrinsic :: ISO_C_BINDING
integer(C_INT) :: swig_result
type(C_PTR) :: ida_mem
integer(C_LONG), dimension(*), target, intent(inout) :: nqetfails
integer(C_INT) :: fresult 
type(C_PTR) :: farg1 
type(C_PTR) :: farg2 

farg1 = ida_mem
farg2 = c_loc(nqetfails(1))
fresult = swigc_FIDAGetQuadNumErrTestFails(farg1, farg2)
swig_result = fresult
end function

function FIDAGetQuadErrWeights(ida_mem, eqweight) &
result(swig_result)
use, intrinsic :: ISO_C_BINDING
integer(C_INT) :: swig_result
type(C_PTR) :: ida_mem
type(N_Vector), target, intent(inout) :: eqweight
integer(C_INT) :: fresult 
type(C_PTR) :: farg1 
type(C_PTR) :: farg2 

farg1 = ida_mem
farg2 = c_loc(eqweight)
fresult = swigc_FIDAGetQuadErrWeights(farg1, farg2)
swig_result = fresult
end function

function FIDAGetQuadStats(ida_mem, nrhsqevals, nqetfails) &
result(swig_result)
use, intrinsic :: ISO_C_BINDING
integer(C_INT) :: swig_result
type(C_PTR) :: ida_mem
integer(C_LONG), dimension(*), target, intent(inout) :: nrhsqevals
integer(C_LONG), dimension(*), target, intent(inout) :: nqetfails
integer(C_INT) :: fresult 
type(C_PTR) :: farg1 
type(C_PTR) :: farg2 
type(C_PTR) :: farg3 

farg1 = ida_mem
farg2 = c_loc(nrhsqevals(1))
farg3 = c_loc(nqetfails(1))
fresult = swigc_FIDAGetQuadStats(farg1, farg2, farg3)
swig_result = fresult
end function

subroutine FIDAQuadFree(ida_mem)
use, intrinsic :: ISO_C_BINDING
type(C_PTR) :: ida_mem
type(C_PTR) :: farg1 

farg1 = ida_mem
call swigc_FIDAQuadFree(farg1)
end subroutine

function FIDASensInit(ida_mem, ns, ism, ress, ys0, yps0) &
result(swig_result)
use, intrinsic :: ISO_C_BINDING
integer(C_INT) :: swig_result
type(C_PTR) :: ida_mem
integer(C_INT), intent(in) :: ns
integer(C_INT), intent(in) :: ism
type(C_FUNPTR), intent(in), value :: ress
type(C_PTR) :: ys0
type(C_PTR) :: yps0
integer(C_INT) :: fresult 
type(C_PTR) :: farg1 
integer(C_INT) :: farg2 
integer(C_INT) :: farg3 
type(C_FUNPTR) :: farg4 
type(C_PTR) :: farg5 
type(C_PTR) :: farg6 

farg1 = ida_mem
farg2 = ns
farg3 = ism
farg4 = ress
farg5 = ys0
farg6 = yps0
fresult = swigc_FIDASensInit(farg1, farg2, farg3, farg4, farg5, farg6)
swig_result = fresult
end function

function FIDASensReInit(ida_mem, ism, ys0, yps0) &
result(swig_result)
use, intrinsic :: ISO_C_BINDING
integer(C_INT) :: swig_result
type(C_PTR) :: ida_mem
integer(C_INT), intent(in) :: ism
type(C_PTR) :: ys0
type(C_PTR) :: yps0
integer(C_INT) :: fresult 
type(C_PTR) :: farg1 
integer(C_INT) :: farg2 
type(C_PTR) :: farg3 
type(C_PTR) :: farg4 

farg1 = ida_mem
farg2 = ism
farg3 = ys0
farg4 = yps0
fresult = swigc_FIDASensReInit(farg1, farg2, farg3, farg4)
swig_result = fresult
end function

function FIDASensSStolerances(ida_mem, reltols, abstols) &
result(swig_result)
use, intrinsic :: ISO_C_BINDING
integer(C_INT) :: swig_result
type(C_PTR) :: ida_mem
real(C_DOUBLE), intent(in) :: reltols
real(C_DOUBLE), dimension(*), target, intent(inout) :: abstols
integer(C_INT) :: fresult 
type(C_PTR) :: farg1 
real(C_DOUBLE) :: farg2 
type(C_PTR) :: farg3 

farg1 = ida_mem
farg2 = reltols
farg3 = c_loc(abstols(1))
fresult = swigc_FIDASensSStolerances(farg1, farg2, farg3)
swig_result = fresult
end function

function FIDASensSVtolerances(ida_mem, reltols, abstols) &
result(swig_result)
use, intrinsic :: ISO_C_BINDING
integer(C_INT) :: swig_result
type(C_PTR) :: ida_mem
real(C_DOUBLE), intent(in) :: reltols
type(C_PTR) :: abstols
integer(C_INT) :: fresult 
type(C_PTR) :: farg1 
real(C_DOUBLE) :: farg2 
type(C_PTR) :: farg3 

farg1 = ida_mem
farg2 = reltols
farg3 = abstols
fresult = swigc_FIDASensSVtolerances(farg1, farg2, farg3)
swig_result = fresult
end function

function FIDASensEEtolerances(ida_mem) &
result(swig_result)
use, intrinsic :: ISO_C_BINDING
integer(C_INT) :: swig_result
type(C_PTR) :: ida_mem
integer(C_INT) :: fresult 
type(C_PTR) :: farg1 

farg1 = ida_mem
fresult = swigc_FIDASensEEtolerances(farg1)
swig_result = fresult
end function

function FIDAGetSensConsistentIC(ida_mem, yys0, yps0) &
result(swig_result)
use, intrinsic :: ISO_C_BINDING
integer(C_INT) :: swig_result
type(C_PTR) :: ida_mem
type(C_PTR) :: yys0
type(C_PTR) :: yps0
integer(C_INT) :: fresult 
type(C_PTR) :: farg1 
type(C_PTR) :: farg2 
type(C_PTR) :: farg3 

farg1 = ida_mem
farg2 = yys0
farg3 = yps0
fresult = swigc_FIDAGetSensConsistentIC(farg1, farg2, farg3)
swig_result = fresult
end function

function FIDASetSensDQMethod(ida_mem, dqtype, dqrhomax) &
result(swig_result)
use, intrinsic :: ISO_C_BINDING
integer(C_INT) :: swig_result
type(C_PTR) :: ida_mem
integer(C_INT), intent(in) :: dqtype
real(C_DOUBLE), intent(in) :: dqrhomax
integer(C_INT) :: fresult 
type(C_PTR) :: farg1 
integer(C_INT) :: farg2 
real(C_DOUBLE) :: farg3 

farg1 = ida_mem
farg2 = dqtype
farg3 = dqrhomax
fresult = swigc_FIDASetSensDQMethod(farg1, farg2, farg3)
swig_result = fresult
end function

function FIDASetSensErrCon(ida_mem, errcons) &
result(swig_result)
use, intrinsic :: ISO_C_BINDING
integer(C_INT) :: swig_result
type(C_PTR) :: ida_mem
integer(C_INT), intent(in) :: errcons
integer(C_INT) :: fresult 
type(C_PTR) :: farg1 
integer(C_INT) :: farg2 

farg1 = ida_mem
farg2 = errcons
fresult = swigc_FIDASetSensErrCon(farg1, farg2)
swig_result = fresult
end function

function FIDASetSensMaxNonlinIters(ida_mem, maxcors) &
result(swig_result)
use, intrinsic :: ISO_C_BINDING
integer(C_INT) :: swig_result
type(C_PTR) :: ida_mem
integer(C_INT), intent(in) :: maxcors
integer(C_INT) :: fresult 
type(C_PTR) :: farg1 
integer(C_INT) :: farg2 

farg1 = ida_mem
farg2 = maxcors
fresult = swigc_FIDASetSensMaxNonlinIters(farg1, farg2)
swig_result = fresult
end function

function FIDASetSensParams(ida_mem, p, pbar, plist) &
result(swig_result)
use, intrinsic :: ISO_C_BINDING
integer(C_INT) :: swig_result
type(C_PTR) :: ida_mem
real(C_DOUBLE), dimension(*), target, intent(inout) :: p
real(C_DOUBLE), dimension(*), target, intent(inout) :: pbar
integer(C_INT), dimension(*), target, intent(inout) :: plist
integer(C_INT) :: fresult 
type(C_PTR) :: farg1 
type(C_PTR) :: farg2 
type(C_PTR) :: farg3 
type(C_PTR) :: farg4 

farg1 = ida_mem
farg2 = c_loc(p(1))
farg3 = c_loc(pbar(1))
farg4 = c_loc(plist(1))
fresult = swigc_FIDASetSensParams(farg1, farg2, farg3, farg4)
swig_result = fresult
end function

function FIDASetNonlinearSolverSensSim(ida_mem, nls) &
result(swig_result)
use, intrinsic :: ISO_C_BINDING
integer(C_INT) :: swig_result
type(C_PTR) :: ida_mem
type(SUNNonlinearSolver), target, intent(inout) :: nls
integer(C_INT) :: fresult 
type(C_PTR) :: farg1 
type(C_PTR) :: farg2 

farg1 = ida_mem
farg2 = c_loc(nls)
fresult = swigc_FIDASetNonlinearSolverSensSim(farg1, farg2)
swig_result = fresult
end function

function FIDASetNonlinearSolverSensStg(ida_mem, nls) &
result(swig_result)
use, intrinsic :: ISO_C_BINDING
integer(C_INT) :: swig_result
type(C_PTR) :: ida_mem
type(SUNNonlinearSolver), target, intent(inout) :: nls
integer(C_INT) :: fresult 
type(C_PTR) :: farg1 
type(C_PTR) :: farg2 

farg1 = ida_mem
farg2 = c_loc(nls)
fresult = swigc_FIDASetNonlinearSolverSensStg(farg1, farg2)
swig_result = fresult
end function

function FIDASensToggleOff(ida_mem) &
result(swig_result)
use, intrinsic :: ISO_C_BINDING
integer(C_INT) :: swig_result
type(C_PTR) :: ida_mem
integer(C_INT) :: fresult 
type(C_PTR) :: farg1 

farg1 = ida_mem
fresult = swigc_FIDASensToggleOff(farg1)
swig_result = fresult
end function

function FIDAGetSens(ida_mem, tret, yysout) &
result(swig_result)
use, intrinsic :: ISO_C_BINDING
integer(C_INT) :: swig_result
type(C_PTR) :: ida_mem
real(C_DOUBLE), dimension(*), target, intent(inout) :: tret
type(C_PTR) :: yysout
integer(C_INT) :: fresult 
type(C_PTR) :: farg1 
type(C_PTR) :: farg2 
type(C_PTR) :: farg3 

farg1 = ida_mem
farg2 = c_loc(tret(1))
farg3 = yysout
fresult = swigc_FIDAGetSens(farg1, farg2, farg3)
swig_result = fresult
end function

function FIDAGetSens1(ida_mem, tret, is, yysret) &
result(swig_result)
use, intrinsic :: ISO_C_BINDING
integer(C_INT) :: swig_result
type(C_PTR) :: ida_mem
real(C_DOUBLE), dimension(*), target, intent(inout) :: tret
integer(C_INT), intent(in) :: is
type(N_Vector), target, intent(inout) :: yysret
integer(C_INT) :: fresult 
type(C_PTR) :: farg1 
type(C_PTR) :: farg2 
integer(C_INT) :: farg3 
type(C_PTR) :: farg4 

farg1 = ida_mem
farg2 = c_loc(tret(1))
farg3 = is
farg4 = c_loc(yysret)
fresult = swigc_FIDAGetSens1(farg1, farg2, farg3, farg4)
swig_result = fresult
end function

function FIDAGetSensDky(ida_mem, t, k, dkys) &
result(swig_result)
use, intrinsic :: ISO_C_BINDING
integer(C_INT) :: swig_result
type(C_PTR) :: ida_mem
real(C_DOUBLE), intent(in) :: t
integer(C_INT), intent(in) :: k
type(C_PTR) :: dkys
integer(C_INT) :: fresult 
type(C_PTR) :: farg1 
real(C_DOUBLE) :: farg2 
integer(C_INT) :: farg3 
type(C_PTR) :: farg4 

farg1 = ida_mem
farg2 = t
farg3 = k
farg4 = dkys
fresult = swigc_FIDAGetSensDky(farg1, farg2, farg3, farg4)
swig_result = fresult
end function

function FIDAGetSensDky1(ida_mem, t, k, is, dkys) &
result(swig_result)
use, intrinsic :: ISO_C_BINDING
integer(C_INT) :: swig_result
type(C_PTR) :: ida_mem
real(C_DOUBLE), intent(in) :: t
integer(C_INT), intent(in) :: k
integer(C_INT), intent(in) :: is
type(N_Vector), target, intent(inout) :: dkys
integer(C_INT) :: fresult 
type(C_PTR) :: farg1 
real(C_DOUBLE) :: farg2 
integer(C_INT) :: farg3 
integer(C_INT) :: farg4 
type(C_PTR) :: farg5 

farg1 = ida_mem
farg2 = t
farg3 = k
farg4 = is
farg5 = c_loc(dkys)
fresult = swigc_FIDAGetSensDky1(farg1, farg2, farg3, farg4, farg5)
swig_result = fresult
end function

function FIDAGetSensNumResEvals(ida_mem, nressevals) &
result(swig_result)
use, intrinsic :: ISO_C_BINDING
integer(C_INT) :: swig_result
type(C_PTR) :: ida_mem
integer(C_LONG), dimension(*), target, intent(inout) :: nressevals
integer(C_INT) :: fresult 
type(C_PTR) :: farg1 
type(C_PTR) :: farg2 

farg1 = ida_mem
farg2 = c_loc(nressevals(1))
fresult = swigc_FIDAGetSensNumResEvals(farg1, farg2)
swig_result = fresult
end function

function FIDAGetNumResEvalsSens(ida_mem, nresevalss) &
result(swig_result)
use, intrinsic :: ISO_C_BINDING
integer(C_INT) :: swig_result
type(C_PTR) :: ida_mem
integer(C_LONG), dimension(*), target, intent(inout) :: nresevalss
integer(C_INT) :: fresult 
type(C_PTR) :: farg1 
type(C_PTR) :: farg2 

farg1 = ida_mem
farg2 = c_loc(nresevalss(1))
fresult = swigc_FIDAGetNumResEvalsSens(farg1, farg2)
swig_result = fresult
end function

function FIDAGetSensNumErrTestFails(ida_mem, nsetfails) &
result(swig_result)
use, intrinsic :: ISO_C_BINDING
integer(C_INT) :: swig_result
type(C_PTR) :: ida_mem
integer(C_LONG), dimension(*), target, intent(inout) :: nsetfails
integer(C_INT) :: fresult 
type(C_PTR) :: farg1 
type(C_PTR) :: farg2 

farg1 = ida_mem
farg2 = c_loc(nsetfails(1))
fresult = swigc_FIDAGetSensNumErrTestFails(farg1, farg2)
swig_result = fresult
end function

function FIDAGetSensNumLinSolvSetups(ida_mem, nlinsetupss) &
result(swig_result)
use, intrinsic :: ISO_C_BINDING
integer(C_INT) :: swig_result
type(C_PTR) :: ida_mem
integer(C_LONG), dimension(*), target, intent(inout) :: nlinsetupss
integer(C_INT) :: fresult 
type(C_PTR) :: farg1 
type(C_PTR) :: farg2 

farg1 = ida_mem
farg2 = c_loc(nlinsetupss(1))
fresult = swigc_FIDAGetSensNumLinSolvSetups(farg1, farg2)
swig_result = fresult
end function

function FIDAGetSensErrWeights(ida_mem, esweight) &
result(swig_result)
use, intrinsic :: ISO_C_BINDING
integer(C_INT) :: swig_result
type(C_PTR) :: ida_mem
type(C_PTR) :: esweight
integer(C_INT) :: fresult 
type(C_PTR) :: farg1 
type(C_PTR) :: farg2 

farg1 = ida_mem
farg2 = esweight
fresult = swigc_FIDAGetSensErrWeights(farg1, farg2)
swig_result = fresult
end function

function FIDAGetSensStats(ida_mem, nressevals, nresevalss, nsetfails, nlinsetupss) &
result(swig_result)
use, intrinsic :: ISO_C_BINDING
integer(C_INT) :: swig_result
type(C_PTR) :: ida_mem
integer(C_LONG), dimension(*), target, intent(inout) :: nressevals
integer(C_LONG), dimension(*), target, intent(inout) :: nresevalss
integer(C_LONG), dimension(*), target, intent(inout) :: nsetfails
integer(C_LONG), dimension(*), target, intent(inout) :: nlinsetupss
integer(C_INT) :: fresult 
type(C_PTR) :: farg1 
type(C_PTR) :: farg2 
type(C_PTR) :: farg3 
type(C_PTR) :: farg4 
type(C_PTR) :: farg5 

farg1 = ida_mem
farg2 = c_loc(nressevals(1))
farg3 = c_loc(nresevalss(1))
farg4 = c_loc(nsetfails(1))
farg5 = c_loc(nlinsetupss(1))
fresult = swigc_FIDAGetSensStats(farg1, farg2, farg3, farg4, farg5)
swig_result = fresult
end function

function FIDAGetSensNumNonlinSolvIters(ida_mem, nsniters) &
result(swig_result)
use, intrinsic :: ISO_C_BINDING
integer(C_INT) :: swig_result
type(C_PTR) :: ida_mem
integer(C_LONG), dimension(*), target, intent(inout) :: nsniters
integer(C_INT) :: fresult 
type(C_PTR) :: farg1 
type(C_PTR) :: farg2 

farg1 = ida_mem
farg2 = c_loc(nsniters(1))
fresult = swigc_FIDAGetSensNumNonlinSolvIters(farg1, farg2)
swig_result = fresult
end function

function FIDAGetSensNumNonlinSolvConvFails(ida_mem, nsncfails) &
result(swig_result)
use, intrinsic :: ISO_C_BINDING
integer(C_INT) :: swig_result
type(C_PTR) :: ida_mem
integer(C_LONG), dimension(*), target, intent(inout) :: nsncfails
integer(C_INT) :: fresult 
type(C_PTR) :: farg1 
type(C_PTR) :: farg2 

farg1 = ida_mem
farg2 = c_loc(nsncfails(1))
fresult = swigc_FIDAGetSensNumNonlinSolvConvFails(farg1, farg2)
swig_result = fresult
end function

function FIDAGetSensNonlinSolvStats(ida_mem, nsniters, nsncfails) &
result(swig_result)
use, intrinsic :: ISO_C_BINDING
integer(C_INT) :: swig_result
type(C_PTR) :: ida_mem
integer(C_LONG), dimension(*), target, intent(inout) :: nsniters
integer(C_LONG), dimension(*), target, intent(inout) :: nsncfails
integer(C_INT) :: fresult 
type(C_PTR) :: farg1 
type(C_PTR) :: farg2 
type(C_PTR) :: farg3 

farg1 = ida_mem
farg2 = c_loc(nsniters(1))
farg3 = c_loc(nsncfails(1))
fresult = swigc_FIDAGetSensNonlinSolvStats(farg1, farg2, farg3)
swig_result = fresult
end function

subroutine FIDASensFree(ida_mem)
use, intrinsic :: ISO_C_BINDING
type(C_PTR) :: ida_mem
type(C_PTR) :: farg1 

farg1 = ida_mem
call swigc_FIDASensFree(farg1)
end subroutine

function FIDAQuadSensInit(ida_mem, resqs, yqs0) &
result(swig_result)
use, intrinsic :: ISO_C_BINDING
integer(C_INT) :: swig_result
type(C_PTR) :: ida_mem
type(C_FUNPTR), intent(in), value :: resqs
type(C_PTR) :: yqs0
integer(C_INT) :: fresult 
type(C_PTR) :: farg1 
type(C_FUNPTR) :: farg2 
type(C_PTR) :: farg3 

farg1 = ida_mem
farg2 = resqs
farg3 = yqs0
fresult = swigc_FIDAQuadSensInit(farg1, farg2, farg3)
swig_result = fresult
end function

function FIDAQuadSensReInit(ida_mem, yqs0) &
result(swig_result)
use, intrinsic :: ISO_C_BINDING
integer(C_INT) :: swig_result
type(C_PTR) :: ida_mem
type(C_PTR) :: yqs0
integer(C_INT) :: fresult 
type(C_PTR) :: farg1 
type(C_PTR) :: farg2 

farg1 = ida_mem
farg2 = yqs0
fresult = swigc_FIDAQuadSensReInit(farg1, farg2)
swig_result = fresult
end function

function FIDAQuadSensSStolerances(ida_mem, reltolqs, abstolqs) &
result(swig_result)
use, intrinsic :: ISO_C_BINDING
integer(C_INT) :: swig_result
type(C_PTR) :: ida_mem
real(C_DOUBLE), intent(in) :: reltolqs
real(C_DOUBLE), dimension(*), target, intent(inout) :: abstolqs
integer(C_INT) :: fresult 
type(C_PTR) :: farg1 
real(C_DOUBLE) :: farg2 
type(C_PTR) :: farg3 

farg1 = ida_mem
farg2 = reltolqs
farg3 = c_loc(abstolqs(1))
fresult = swigc_FIDAQuadSensSStolerances(farg1, farg2, farg3)
swig_result = fresult
end function

function FIDAQuadSensSVtolerances(ida_mem, reltolqs, abstolqs) &
result(swig_result)
use, intrinsic :: ISO_C_BINDING
integer(C_INT) :: swig_result
type(C_PTR) :: ida_mem
real(C_DOUBLE), intent(in) :: reltolqs
type(C_PTR) :: abstolqs
integer(C_INT) :: fresult 
type(C_PTR) :: farg1 
real(C_DOUBLE) :: farg2 
type(C_PTR) :: farg3 

farg1 = ida_mem
farg2 = reltolqs
farg3 = abstolqs
fresult = swigc_FIDAQuadSensSVtolerances(farg1, farg2, farg3)
swig_result = fresult
end function

function FIDAQuadSensEEtolerances(ida_mem) &
result(swig_result)
use, intrinsic :: ISO_C_BINDING
integer(C_INT) :: swig_result
type(C_PTR) :: ida_mem
integer(C_INT) :: fresult 
type(C_PTR) :: farg1 

farg1 = ida_mem
fresult = swigc_FIDAQuadSensEEtolerances(farg1)
swig_result = fresult
end function

function FIDASetQuadSensErrCon(ida_mem, errconqs) &
result(swig_result)
use, intrinsic :: ISO_C_BINDING
integer(C_INT) :: swig_result
type(C_PTR) :: ida_mem
integer(C_INT), intent(in) :: errconqs
integer(C_INT) :: fresult 
type(C_PTR) :: farg1 
integer(C_INT) :: farg2 

farg1 = ida_mem
farg2 = errconqs
fresult = swigc_FIDASetQuadSensErrCon(farg1, farg2)
swig_result = fresult
end function

function FIDAGetQuadSens(ida_mem, tret, yyqsout) &
result(swig_result)
use, intrinsic :: ISO_C_BINDING
integer(C_INT) :: swig_result
type(C_PTR) :: ida_mem
real(C_DOUBLE), dimension(*), target, intent(inout) :: tret
type(C_PTR) :: yyqsout
integer(C_INT) :: fresult 
type(C_PTR) :: farg1 
type(C_PTR) :: farg2 
type(C_PTR) :: farg3 

farg1 = ida_mem
farg2 = c_loc(tret(1))
farg3 = yyqsout
fresult = swigc_FIDAGetQuadSens(farg1, farg2, farg3)
swig_result = fresult
end function

function FIDAGetQuadSens1(ida_mem, tret, is, yyqsret) &
result(swig_result)
use, intrinsic :: ISO_C_BINDING
integer(C_INT) :: swig_result
type(C_PTR) :: ida_mem
real(C_DOUBLE), dimension(*), target, intent(inout) :: tret
integer(C_INT), intent(in) :: is
type(N_Vector), target, intent(inout) :: yyqsret
integer(C_INT) :: fresult 
type(C_PTR) :: farg1 
type(C_PTR) :: farg2 
integer(C_INT) :: farg3 
type(C_PTR) :: farg4 

farg1 = ida_mem
farg2 = c_loc(tret(1))
farg3 = is
farg4 = c_loc(yyqsret)
fresult = swigc_FIDAGetQuadSens1(farg1, farg2, farg3, farg4)
swig_result = fresult
end function

function FIDAGetQuadSensDky(ida_mem, t, k, dkyqs) &
result(swig_result)
use, intrinsic :: ISO_C_BINDING
integer(C_INT) :: swig_result
type(C_PTR) :: ida_mem
real(C_DOUBLE), intent(in) :: t
integer(C_INT), intent(in) :: k
type(C_PTR) :: dkyqs
integer(C_INT) :: fresult 
type(C_PTR) :: farg1 
real(C_DOUBLE) :: farg2 
integer(C_INT) :: farg3 
type(C_PTR) :: farg4 

farg1 = ida_mem
farg2 = t
farg3 = k
farg4 = dkyqs
fresult = swigc_FIDAGetQuadSensDky(farg1, farg2, farg3, farg4)
swig_result = fresult
end function

function FIDAGetQuadSensDky1(ida_mem, t, k, is, dkyqs) &
result(swig_result)
use, intrinsic :: ISO_C_BINDING
integer(C_INT) :: swig_result
type(C_PTR) :: ida_mem
real(C_DOUBLE), intent(in) :: t
integer(C_INT), intent(in) :: k
integer(C_INT), intent(in) :: is
type(N_Vector), target, intent(inout) :: dkyqs
integer(C_INT) :: fresult 
type(C_PTR) :: farg1 
real(C_DOUBLE) :: farg2 
integer(C_INT) :: farg3 
integer(C_INT) :: farg4 
type(C_PTR) :: farg5 

farg1 = ida_mem
farg2 = t
farg3 = k
farg4 = is
farg5 = c_loc(dkyqs)
fresult = swigc_FIDAGetQuadSensDky1(farg1, farg2, farg3, farg4, farg5)
swig_result = fresult
end function

function FIDAGetQuadSensNumRhsEvals(ida_mem, nrhsqsevals) &
result(swig_result)
use, intrinsic :: ISO_C_BINDING
integer(C_INT) :: swig_result
type(C_PTR) :: ida_mem
integer(C_LONG), dimension(*), target, intent(inout) :: nrhsqsevals
integer(C_INT) :: fresult 
type(C_PTR) :: farg1 
type(C_PTR) :: farg2 

farg1 = ida_mem
farg2 = c_loc(nrhsqsevals(1))
fresult = swigc_FIDAGetQuadSensNumRhsEvals(farg1, farg2)
swig_result = fresult
end function

function FIDAGetQuadSensNumErrTestFails(ida_mem, nqsetfails) &
result(swig_result)
use, intrinsic :: ISO_C_BINDING
integer(C_INT) :: swig_result
type(C_PTR) :: ida_mem
integer(C_LONG), dimension(*), target, intent(inout) :: nqsetfails
integer(C_INT) :: fresult 
type(C_PTR) :: farg1 
type(C_PTR) :: farg2 

farg1 = ida_mem
farg2 = c_loc(nqsetfails(1))
fresult = swigc_FIDAGetQuadSensNumErrTestFails(farg1, farg2)
swig_result = fresult
end function

function FIDAGetQuadSensErrWeights(ida_mem, eqsweight) &
result(swig_result)
use, intrinsic :: ISO_C_BINDING
integer(C_INT) :: swig_result
type(C_PTR) :: ida_mem
type(C_PTR) :: eqsweight
integer(C_INT) :: fresult 
type(C_PTR) :: farg1 
type(C_PTR) :: farg2 

farg1 = ida_mem
farg2 = eqsweight
fresult = swigc_FIDAGetQuadSensErrWeights(farg1, farg2)
swig_result = fresult
end function

function FIDAGetQuadSensStats(ida_mem, nrhsqsevals, nqsetfails) &
result(swig_result)
use, intrinsic :: ISO_C_BINDING
integer(C_INT) :: swig_result
type(C_PTR) :: ida_mem
integer(C_LONG), dimension(*), target, intent(inout) :: nrhsqsevals
integer(C_LONG), dimension(*), target, intent(inout) :: nqsetfails
integer(C_INT) :: fresult 
type(C_PTR) :: farg1 
type(C_PTR) :: farg2 
type(C_PTR) :: farg3 

farg1 = ida_mem
farg2 = c_loc(nrhsqsevals(1))
farg3 = c_loc(nqsetfails(1))
fresult = swigc_FIDAGetQuadSensStats(farg1, farg2, farg3)
swig_result = fresult
end function

subroutine FIDAQuadSensFree(ida_mem)
use, intrinsic :: ISO_C_BINDING
type(C_PTR) :: ida_mem
type(C_PTR) :: farg1 

farg1 = ida_mem
call swigc_FIDAQuadSensFree(farg1)
end subroutine

function FIDAAdjInit(ida_mem, steps, interp) &
result(swig_result)
use, intrinsic :: ISO_C_BINDING
integer(C_INT) :: swig_result
type(C_PTR) :: ida_mem
integer(C_LONG), intent(in) :: steps
integer(C_INT), intent(in) :: interp
integer(C_INT) :: fresult 
type(C_PTR) :: farg1 
integer(C_LONG) :: farg2 
integer(C_INT) :: farg3 

farg1 = ida_mem
farg2 = steps
farg3 = interp
fresult = swigc_FIDAAdjInit(farg1, farg2, farg3)
swig_result = fresult
end function

function FIDAAdjReInit(ida_mem) &
result(swig_result)
use, intrinsic :: ISO_C_BINDING
integer(C_INT) :: swig_result
type(C_PTR) :: ida_mem
integer(C_INT) :: fresult 
type(C_PTR) :: farg1 

farg1 = ida_mem
fresult = swigc_FIDAAdjReInit(farg1)
swig_result = fresult
end function

subroutine FIDAAdjFree(ida_mem)
use, intrinsic :: ISO_C_BINDING
type(C_PTR) :: ida_mem
type(C_PTR) :: farg1 

farg1 = ida_mem
call swigc_FIDAAdjFree(farg1)
end subroutine

function FIDACreateB(ida_mem, which) &
result(swig_result)
use, intrinsic :: ISO_C_BINDING
integer(C_INT) :: swig_result
type(C_PTR) :: ida_mem
integer(C_INT), dimension(*), target, intent(inout) :: which
integer(C_INT) :: fresult 
type(C_PTR) :: farg1 
type(C_PTR) :: farg2 

farg1 = ida_mem
farg2 = c_loc(which(1))
fresult = swigc_FIDACreateB(farg1, farg2)
swig_result = fresult
end function

function FIDAInitB(ida_mem, which, resb, tb0, yyb0, ypb0) &
result(swig_result)
use, intrinsic :: ISO_C_BINDING
integer(C_INT) :: swig_result
type(C_PTR) :: ida_mem
integer(C_INT), intent(in) :: which
type(C_FUNPTR), intent(in), value :: resb
real(C_DOUBLE), intent(in) :: tb0
type(N_Vector), target, intent(inout) :: yyb0
type(N_Vector), target, intent(inout) :: ypb0
integer(C_INT) :: fresult 
type(C_PTR) :: farg1 
integer(C_INT) :: farg2 
type(C_FUNPTR) :: farg3 
real(C_DOUBLE) :: farg4 
type(C_PTR) :: farg5 
type(C_PTR) :: farg6 

farg1 = ida_mem
farg2 = which
farg3 = resb
farg4 = tb0
farg5 = c_loc(yyb0)
farg6 = c_loc(ypb0)
fresult = swigc_FIDAInitB(farg1, farg2, farg3, farg4, farg5, farg6)
swig_result = fresult
end function

function FIDAInitBS(ida_mem, which, ress, tb0, yyb0, ypb0) &
result(swig_result)
use, intrinsic :: ISO_C_BINDING
integer(C_INT) :: swig_result
type(C_PTR) :: ida_mem
integer(C_INT), intent(in) :: which
type(C_FUNPTR), intent(in), value :: ress
real(C_DOUBLE), intent(in) :: tb0
type(N_Vector), target, intent(inout) :: yyb0
type(N_Vector), target, intent(inout) :: ypb0
integer(C_INT) :: fresult 
type(C_PTR) :: farg1 
integer(C_INT) :: farg2 
type(C_FUNPTR) :: farg3 
real(C_DOUBLE) :: farg4 
type(C_PTR) :: farg5 
type(C_PTR) :: farg6 

farg1 = ida_mem
farg2 = which
farg3 = ress
farg4 = tb0
farg5 = c_loc(yyb0)
farg6 = c_loc(ypb0)
fresult = swigc_FIDAInitBS(farg1, farg2, farg3, farg4, farg5, farg6)
swig_result = fresult
end function

function FIDAReInitB(ida_mem, which, tb0, yyb0, ypb0) &
result(swig_result)
use, intrinsic :: ISO_C_BINDING
integer(C_INT) :: swig_result
type(C_PTR) :: ida_mem
integer(C_INT), intent(in) :: which
real(C_DOUBLE), intent(in) :: tb0
type(N_Vector), target, intent(inout) :: yyb0
type(N_Vector), target, intent(inout) :: ypb0
integer(C_INT) :: fresult 
type(C_PTR) :: farg1 
integer(C_INT) :: farg2 
real(C_DOUBLE) :: farg3 
type(C_PTR) :: farg4 
type(C_PTR) :: farg5 

farg1 = ida_mem
farg2 = which
farg3 = tb0
farg4 = c_loc(yyb0)
farg5 = c_loc(ypb0)
fresult = swigc_FIDAReInitB(farg1, farg2, farg3, farg4, farg5)
swig_result = fresult
end function

function FIDASStolerancesB(ida_mem, which, reltolb, abstolb) &
result(swig_result)
use, intrinsic :: ISO_C_BINDING
integer(C_INT) :: swig_result
type(C_PTR) :: ida_mem
integer(C_INT), intent(in) :: which
real(C_DOUBLE), intent(in) :: reltolb
real(C_DOUBLE), intent(in) :: abstolb
integer(C_INT) :: fresult 
type(C_PTR) :: farg1 
integer(C_INT) :: farg2 
real(C_DOUBLE) :: farg3 
real(C_DOUBLE) :: farg4 

farg1 = ida_mem
farg2 = which
farg3 = reltolb
farg4 = abstolb
fresult = swigc_FIDASStolerancesB(farg1, farg2, farg3, farg4)
swig_result = fresult
end function

function FIDASVtolerancesB(ida_mem, which, reltolb, abstolb) &
result(swig_result)
use, intrinsic :: ISO_C_BINDING
integer(C_INT) :: swig_result
type(C_PTR) :: ida_mem
integer(C_INT), intent(in) :: which
real(C_DOUBLE), intent(in) :: reltolb
type(N_Vector), target, intent(inout) :: abstolb
integer(C_INT) :: fresult 
type(C_PTR) :: farg1 
integer(C_INT) :: farg2 
real(C_DOUBLE) :: farg3 
type(C_PTR) :: farg4 

farg1 = ida_mem
farg2 = which
farg3 = reltolb
farg4 = c_loc(abstolb)
fresult = swigc_FIDASVtolerancesB(farg1, farg2, farg3, farg4)
swig_result = fresult
end function

function FIDAQuadInitB(ida_mem, which, rhsqb, yqb0) &
result(swig_result)
use, intrinsic :: ISO_C_BINDING
integer(C_INT) :: swig_result
type(C_PTR) :: ida_mem
integer(C_INT), intent(in) :: which
type(C_FUNPTR), intent(in), value :: rhsqb
type(N_Vector), target, intent(inout) :: yqb0
integer(C_INT) :: fresult 
type(C_PTR) :: farg1 
integer(C_INT) :: farg2 
type(C_FUNPTR) :: farg3 
type(C_PTR) :: farg4 

farg1 = ida_mem
farg2 = which
farg3 = rhsqb
farg4 = c_loc(yqb0)
fresult = swigc_FIDAQuadInitB(farg1, farg2, farg3, farg4)
swig_result = fresult
end function

function FIDAQuadInitBS(ida_mem, which, rhsqs, yqb0) &
result(swig_result)
use, intrinsic :: ISO_C_BINDING
integer(C_INT) :: swig_result
type(C_PTR) :: ida_mem
integer(C_INT), intent(in) :: which
type(C_FUNPTR), intent(in), value :: rhsqs
type(N_Vector), target, intent(inout) :: yqb0
integer(C_INT) :: fresult 
type(C_PTR) :: farg1 
integer(C_INT) :: farg2 
type(C_FUNPTR) :: farg3 
type(C_PTR) :: farg4 

farg1 = ida_mem
farg2 = which
farg3 = rhsqs
farg4 = c_loc(yqb0)
fresult = swigc_FIDAQuadInitBS(farg1, farg2, farg3, farg4)
swig_result = fresult
end function

function FIDAQuadReInitB(ida_mem, which, yqb0) &
result(swig_result)
use, intrinsic :: ISO_C_BINDING
integer(C_INT) :: swig_result
type(C_PTR) :: ida_mem
integer(C_INT), intent(in) :: which
type(N_Vector), target, intent(inout) :: yqb0
integer(C_INT) :: fresult 
type(C_PTR) :: farg1 
integer(C_INT) :: farg2 
type(C_PTR) :: farg3 

farg1 = ida_mem
farg2 = which
farg3 = c_loc(yqb0)
fresult = swigc_FIDAQuadReInitB(farg1, farg2, farg3)
swig_result = fresult
end function

function FIDAQuadSStolerancesB(ida_mem, which, reltolqb, abstolqb) &
result(swig_result)
use, intrinsic :: ISO_C_BINDING
integer(C_INT) :: swig_result
type(C_PTR) :: ida_mem
integer(C_INT), intent(in) :: which
real(C_DOUBLE), intent(in) :: reltolqb
real(C_DOUBLE), intent(in) :: abstolqb
integer(C_INT) :: fresult 
type(C_PTR) :: farg1 
integer(C_INT) :: farg2 
real(C_DOUBLE) :: farg3 
real(C_DOUBLE) :: farg4 

farg1 = ida_mem
farg2 = which
farg3 = reltolqb
farg4 = abstolqb
fresult = swigc_FIDAQuadSStolerancesB(farg1, farg2, farg3, farg4)
swig_result = fresult
end function

function FIDAQuadSVtolerancesB(ida_mem, which, reltolqb, abstolqb) &
result(swig_result)
use, intrinsic :: ISO_C_BINDING
integer(C_INT) :: swig_result
type(C_PTR) :: ida_mem
integer(C_INT), intent(in) :: which
real(C_DOUBLE), intent(in) :: reltolqb
type(N_Vector), target, intent(inout) :: abstolqb
integer(C_INT) :: fresult 
type(C_PTR) :: farg1 
integer(C_INT) :: farg2 
real(C_DOUBLE) :: farg3 
type(C_PTR) :: farg4 

farg1 = ida_mem
farg2 = which
farg3 = reltolqb
farg4 = c_loc(abstolqb)
fresult = swigc_FIDAQuadSVtolerancesB(farg1, farg2, farg3, farg4)
swig_result = fresult
end function

function FIDACalcICB(ida_mem, which, tout1, yy0, yp0) &
result(swig_result)
use, intrinsic :: ISO_C_BINDING
integer(C_INT) :: swig_result
type(C_PTR) :: ida_mem
integer(C_INT), intent(in) :: which
real(C_DOUBLE), intent(in) :: tout1
type(N_Vector), target, intent(inout) :: yy0
type(N_Vector), target, intent(inout) :: yp0
integer(C_INT) :: fresult 
type(C_PTR) :: farg1 
integer(C_INT) :: farg2 
real(C_DOUBLE) :: farg3 
type(C_PTR) :: farg4 
type(C_PTR) :: farg5 

farg1 = ida_mem
farg2 = which
farg3 = tout1
farg4 = c_loc(yy0)
farg5 = c_loc(yp0)
fresult = swigc_FIDACalcICB(farg1, farg2, farg3, farg4, farg5)
swig_result = fresult
end function

function FIDACalcICBS(ida_mem, which, tout1, yy0, yp0, yys0, yps0) &
result(swig_result)
use, intrinsic :: ISO_C_BINDING
integer(C_INT) :: swig_result
type(C_PTR) :: ida_mem
integer(C_INT), intent(in) :: which
real(C_DOUBLE), intent(in) :: tout1
type(N_Vector), target, intent(inout) :: yy0
type(N_Vector), target, intent(inout) :: yp0
type(C_PTR) :: yys0
type(C_PTR) :: yps0
integer(C_INT) :: fresult 
type(C_PTR) :: farg1 
integer(C_INT) :: farg2 
real(C_DOUBLE) :: farg3 
type(C_PTR) :: farg4 
type(C_PTR) :: farg5 
type(C_PTR) :: farg6 
type(C_PTR) :: farg7 

farg1 = ida_mem
farg2 = which
farg3 = tout1
farg4 = c_loc(yy0)
farg5 = c_loc(yp0)
farg6 = yys0
farg7 = yps0
fresult = swigc_FIDACalcICBS(farg1, farg2, farg3, farg4, farg5, farg6, farg7)
swig_result = fresult
end function

function FIDASolveF(ida_mem, tout, tret, yret, ypret, itask, ncheckptr) &
result(swig_result)
use, intrinsic :: ISO_C_BINDING
integer(C_INT) :: swig_result
type(C_PTR) :: ida_mem
real(C_DOUBLE), intent(in) :: tout
real(C_DOUBLE), dimension(*), target, intent(inout) :: tret
type(N_Vector), target, intent(inout) :: yret
type(N_Vector), target, intent(inout) :: ypret
integer(C_INT), intent(in) :: itask
integer(C_INT), dimension(*), target, intent(inout) :: ncheckptr
integer(C_INT) :: fresult 
type(C_PTR) :: farg1 
real(C_DOUBLE) :: farg2 
type(C_PTR) :: farg3 
type(C_PTR) :: farg4 
type(C_PTR) :: farg5 
integer(C_INT) :: farg6 
type(C_PTR) :: farg7 

farg1 = ida_mem
farg2 = tout
farg3 = c_loc(tret(1))
farg4 = c_loc(yret)
farg5 = c_loc(ypret)
farg6 = itask
farg7 = c_loc(ncheckptr(1))
fresult = swigc_FIDASolveF(farg1, farg2, farg3, farg4, farg5, farg6, farg7)
swig_result = fresult
end function

function FIDASolveB(ida_mem, tbout, itaskb) &
result(swig_result)
use, intrinsic :: ISO_C_BINDING
integer(C_INT) :: swig_result
type(C_PTR) :: ida_mem
real(C_DOUBLE), intent(in) :: tbout
integer(C_INT), intent(in) :: itaskb
integer(C_INT) :: fresult 
type(C_PTR) :: farg1 
real(C_DOUBLE) :: farg2 
integer(C_INT) :: farg3 

farg1 = ida_mem
farg2 = tbout
farg3 = itaskb
fresult = swigc_FIDASolveB(farg1, farg2, farg3)
swig_result = fresult
end function

function FIDAAdjSetNoSensi(ida_mem) &
result(swig_result)
use, intrinsic :: ISO_C_BINDING
integer(C_INT) :: swig_result
type(C_PTR) :: ida_mem
integer(C_INT) :: fresult 
type(C_PTR) :: farg1 

farg1 = ida_mem
fresult = swigc_FIDAAdjSetNoSensi(farg1)
swig_result = fresult
end function

function FIDASetUserDataB(ida_mem, which, user_datab) &
result(swig_result)
use, intrinsic :: ISO_C_BINDING
integer(C_INT) :: swig_result
type(C_PTR) :: ida_mem
integer(C_INT), intent(in) :: which
type(C_PTR) :: user_datab
integer(C_INT) :: fresult 
type(C_PTR) :: farg1 
integer(C_INT) :: farg2 
type(C_PTR) :: farg3 

farg1 = ida_mem
farg2 = which
farg3 = user_datab
fresult = swigc_FIDASetUserDataB(farg1, farg2, farg3)
swig_result = fresult
end function

function FIDASetMaxOrdB(ida_mem, which, maxordb) &
result(swig_result)
use, intrinsic :: ISO_C_BINDING
integer(C_INT) :: swig_result
type(C_PTR) :: ida_mem
integer(C_INT), intent(in) :: which
integer(C_INT), intent(in) :: maxordb
integer(C_INT) :: fresult 
type(C_PTR) :: farg1 
integer(C_INT) :: farg2 
integer(C_INT) :: farg3 

farg1 = ida_mem
farg2 = which
farg3 = maxordb
fresult = swigc_FIDASetMaxOrdB(farg1, farg2, farg3)
swig_result = fresult
end function

function FIDASetMaxNumStepsB(ida_mem, which, mxstepsb) &
result(swig_result)
use, intrinsic :: ISO_C_BINDING
integer(C_INT) :: swig_result
type(C_PTR) :: ida_mem
integer(C_INT), intent(in) :: which
integer(C_LONG), intent(in) :: mxstepsb
integer(C_INT) :: fresult 
type(C_PTR) :: farg1 
integer(C_INT) :: farg2 
integer(C_LONG) :: farg3 

farg1 = ida_mem
farg2 = which
farg3 = mxstepsb
fresult = swigc_FIDASetMaxNumStepsB(farg1, farg2, farg3)
swig_result = fresult
end function

function FIDASetInitStepB(ida_mem, which, hinb) &
result(swig_result)
use, intrinsic :: ISO_C_BINDING
integer(C_INT) :: swig_result
type(C_PTR) :: ida_mem
integer(C_INT), intent(in) :: which
real(C_DOUBLE), intent(in) :: hinb
integer(C_INT) :: fresult 
type(C_PTR) :: farg1 
integer(C_INT) :: farg2 
real(C_DOUBLE) :: farg3 

farg1 = ida_mem
farg2 = which
farg3 = hinb
fresult = swigc_FIDASetInitStepB(farg1, farg2, farg3)
swig_result = fresult
end function

function FIDASetMaxStepB(ida_mem, which, hmaxb) &
result(swig_result)
use, intrinsic :: ISO_C_BINDING
integer(C_INT) :: swig_result
type(C_PTR) :: ida_mem
integer(C_INT), intent(in) :: which
real(C_DOUBLE), intent(in) :: hmaxb
integer(C_INT) :: fresult 
type(C_PTR) :: farg1 
integer(C_INT) :: farg2 
real(C_DOUBLE) :: farg3 

farg1 = ida_mem
farg2 = which
farg3 = hmaxb
fresult = swigc_FIDASetMaxStepB(farg1, farg2, farg3)
swig_result = fresult
end function

function FIDASetSuppressAlgB(ida_mem, which, suppressalgb) &
result(swig_result)
use, intrinsic :: ISO_C_BINDING
integer(C_INT) :: swig_result
type(C_PTR) :: ida_mem
integer(C_INT), intent(in) :: which
integer(C_INT), intent(in) :: suppressalgb
integer(C_INT) :: fresult 
type(C_PTR) :: farg1 
integer(C_INT) :: farg2 
integer(C_INT) :: farg3 

farg1 = ida_mem
farg2 = which
farg3 = suppressalgb
fresult = swigc_FIDASetSuppressAlgB(farg1, farg2, farg3)
swig_result = fresult
end function

function FIDASetIdB(ida_mem, which, idb) &
result(swig_result)
use, intrinsic :: ISO_C_BINDING
integer(C_INT) :: swig_result
type(C_PTR) :: ida_mem
integer(C_INT), intent(in) :: which
type(N_Vector), target, intent(inout) :: idb
integer(C_INT) :: fresult 
type(C_PTR) :: farg1 
integer(C_INT) :: farg2 
type(C_PTR) :: farg3 

farg1 = ida_mem
farg2 = which
farg3 = c_loc(idb)
fresult = swigc_FIDASetIdB(farg1, farg2, farg3)
swig_result = fresult
end function

function FIDASetConstraintsB(ida_mem, which, constraintsb) &
result(swig_result)
use, intrinsic :: ISO_C_BINDING
integer(C_INT) :: swig_result
type(C_PTR) :: ida_mem
integer(C_INT), intent(in) :: which
type(N_Vector), target, intent(inout) :: constraintsb
integer(C_INT) :: fresult 
type(C_PTR) :: farg1 
integer(C_INT) :: farg2 
type(C_PTR) :: farg3 

farg1 = ida_mem
farg2 = which
farg3 = c_loc(constraintsb)
fresult = swigc_FIDASetConstraintsB(farg1, farg2, farg3)
swig_result = fresult
end function

function FIDASetQuadErrConB(ida_mem, which, errconqb) &
result(swig_result)
use, intrinsic :: ISO_C_BINDING
integer(C_INT) :: swig_result
type(C_PTR) :: ida_mem
integer(C_INT), intent(in) :: which
integer(C_INT), intent(in) :: errconqb
integer(C_INT) :: fresult 
type(C_PTR) :: farg1 
integer(C_INT) :: farg2 
integer(C_INT) :: farg3 

farg1 = ida_mem
farg2 = which
farg3 = errconqb
fresult = swigc_FIDASetQuadErrConB(farg1, farg2, farg3)
swig_result = fresult
end function

function FIDASetNonlinearSolverB(ida_mem, which, nls) &
result(swig_result)
use, intrinsic :: ISO_C_BINDING
integer(C_INT) :: swig_result
type(C_PTR) :: ida_mem
integer(C_INT), intent(in) :: which
type(SUNNonlinearSolver), target, intent(inout) :: nls
integer(C_INT) :: fresult 
type(C_PTR) :: farg1 
integer(C_INT) :: farg2 
type(C_PTR) :: farg3 

farg1 = ida_mem
farg2 = which
farg3 = c_loc(nls)
fresult = swigc_FIDASetNonlinearSolverB(farg1, farg2, farg3)
swig_result = fresult
end function

function FIDAGetB(ida_mem, which, tret, yy, yp) &
result(swig_result)
use, intrinsic :: ISO_C_BINDING
integer(C_INT) :: swig_result
type(C_PTR) :: ida_mem
integer(C_INT), intent(in) :: which
real(C_DOUBLE), dimension(*), target, intent(inout) :: tret
type(N_Vector), target, intent(inout) :: yy
type(N_Vector), target, intent(inout) :: yp
integer(C_INT) :: fresult 
type(C_PTR) :: farg1 
integer(C_INT) :: farg2 
type(C_PTR) :: farg3 
type(C_PTR) :: farg4 
type(C_PTR) :: farg5 

farg1 = ida_mem
farg2 = which
farg3 = c_loc(tret(1))
farg4 = c_loc(yy)
farg5 = c_loc(yp)
fresult = swigc_FIDAGetB(farg1, farg2, farg3, farg4, farg5)
swig_result = fresult
end function

function FIDAGetQuadB(ida_mem, which, tret, qb) &
result(swig_result)
use, intrinsic :: ISO_C_BINDING
integer(C_INT) :: swig_result
type(C_PTR) :: ida_mem
integer(C_INT), intent(in) :: which
real(C_DOUBLE), dimension(*), target, intent(inout) :: tret
type(N_Vector), target, intent(inout) :: qb
integer(C_INT) :: fresult 
type(C_PTR) :: farg1 
integer(C_INT) :: farg2 
type(C_PTR) :: farg3 
type(C_PTR) :: farg4 

farg1 = ida_mem
farg2 = which
farg3 = c_loc(tret(1))
farg4 = c_loc(qb)
fresult = swigc_FIDAGetQuadB(farg1, farg2, farg3, farg4)
swig_result = fresult
end function

function FIDAGetAdjIDABmem(ida_mem, which) &
result(swig_result)
use, intrinsic :: ISO_C_BINDING
type(C_PTR) :: swig_result
type(C_PTR) :: ida_mem
integer(C_INT), intent(in) :: which
type(C_PTR) :: fresult 
type(C_PTR) :: farg1 
integer(C_INT) :: farg2 

farg1 = ida_mem
farg2 = which
fresult = swigc_FIDAGetAdjIDABmem(farg1, farg2)
swig_result = fresult
end function

function FIDAGetConsistentICB(ida_mem, which, yyb0, ypb0) &
result(swig_result)
use, intrinsic :: ISO_C_BINDING
integer(C_INT) :: swig_result
type(C_PTR) :: ida_mem
integer(C_INT), intent(in) :: which
type(N_Vector), target, intent(inout) :: yyb0
type(N_Vector), target, intent(inout) :: ypb0
integer(C_INT) :: fresult 
type(C_PTR) :: farg1 
integer(C_INT) :: farg2 
type(C_PTR) :: farg3 
type(C_PTR) :: farg4 

farg1 = ida_mem
farg2 = which
farg3 = c_loc(yyb0)
farg4 = c_loc(ypb0)
fresult = swigc_FIDAGetConsistentICB(farg1, farg2, farg3, farg4)
swig_result = fresult
end function

function FIDAGetAdjY(ida_mem, t, yy, yp) &
result(swig_result)
use, intrinsic :: ISO_C_BINDING
integer(C_INT) :: swig_result
type(C_PTR) :: ida_mem
real(C_DOUBLE), intent(in) :: t
type(N_Vector), target, intent(inout) :: yy
type(N_Vector), target, intent(inout) :: yp
integer(C_INT) :: fresult 
type(C_PTR) :: farg1 
real(C_DOUBLE) :: farg2 
type(C_PTR) :: farg3 
type(C_PTR) :: farg4 

farg1 = ida_mem
farg2 = t
farg3 = c_loc(yy)
farg4 = c_loc(yp)
fresult = swigc_FIDAGetAdjY(farg1, farg2, farg3, farg4)
swig_result = fresult
end function

subroutine swigf_IDAadjCheckPointRec_my_addr_set(self, my_addr)
use, intrinsic :: ISO_C_BINDING
class(IDAadjCheckPointRec), intent(in) :: self
type(C_PTR) :: my_addr
type(SwigClassWrapper) :: farg1 
type(C_PTR) :: farg2 

farg1 = self%swigdata
farg2 = my_addr
call swigc_IDAadjCheckPointRec_my_addr_set(farg1, farg2)
end subroutine

function swigf_IDAadjCheckPointRec_my_addr_get(self) &
result(swig_result)
use, intrinsic :: ISO_C_BINDING
type(C_PTR) :: swig_result
class(IDAadjCheckPointRec), intent(in) :: self
type(C_PTR) :: fresult 
type(SwigClassWrapper) :: farg1 

farg1 = self%swigdata
fresult = swigc_IDAadjCheckPointRec_my_addr_get(farg1)
swig_result = fresult
end function

subroutine swigf_IDAadjCheckPointRec_next_addr_set(self, next_addr)
use, intrinsic :: ISO_C_BINDING
class(IDAadjCheckPointRec), intent(in) :: self
type(C_PTR) :: next_addr
type(SwigClassWrapper) :: farg1 
type(C_PTR) :: farg2 

farg1 = self%swigdata
farg2 = next_addr
call swigc_IDAadjCheckPointRec_next_addr_set(farg1, farg2)
end subroutine

function swigf_IDAadjCheckPointRec_next_addr_get(self) &
result(swig_result)
use, intrinsic :: ISO_C_BINDING
type(C_PTR) :: swig_result
class(IDAadjCheckPointRec), intent(in) :: self
type(C_PTR) :: fresult 
type(SwigClassWrapper) :: farg1 

farg1 = self%swigdata
fresult = swigc_IDAadjCheckPointRec_next_addr_get(farg1)
swig_result = fresult
end function

subroutine swigf_IDAadjCheckPointRec_t0_set(self, t0)
use, intrinsic :: ISO_C_BINDING
class(IDAadjCheckPointRec), intent(in) :: self
real(C_DOUBLE), intent(in) :: t0
type(SwigClassWrapper) :: farg1 
real(C_DOUBLE) :: farg2 

farg1 = self%swigdata
farg2 = t0
call swigc_IDAadjCheckPointRec_t0_set(farg1, farg2)
end subroutine

function swigf_IDAadjCheckPointRec_t0_get(self) &
result(swig_result)
use, intrinsic :: ISO_C_BINDING
real(C_DOUBLE) :: swig_result
class(IDAadjCheckPointRec), intent(in) :: self
real(C_DOUBLE) :: fresult 
type(SwigClassWrapper) :: farg1 

farg1 = self%swigdata
fresult = swigc_IDAadjCheckPointRec_t0_get(farg1)
swig_result = fresult
end function

subroutine swigf_IDAadjCheckPointRec_t1_set(self, t1)
use, intrinsic :: ISO_C_BINDING
class(IDAadjCheckPointRec), intent(in) :: self
real(C_DOUBLE), intent(in) :: t1
type(SwigClassWrapper) :: farg1 
real(C_DOUBLE) :: farg2 

farg1 = self%swigdata
farg2 = t1
call swigc_IDAadjCheckPointRec_t1_set(farg1, farg2)
end subroutine

function swigf_IDAadjCheckPointRec_t1_get(self) &
result(swig_result)
use, intrinsic :: ISO_C_BINDING
real(C_DOUBLE) :: swig_result
class(IDAadjCheckPointRec), intent(in) :: self
real(C_DOUBLE) :: fresult 
type(SwigClassWrapper) :: farg1 

farg1 = self%swigdata
fresult = swigc_IDAadjCheckPointRec_t1_get(farg1)
swig_result = fresult
end function

subroutine swigf_IDAadjCheckPointRec_nstep_set(self, nstep)
use, intrinsic :: ISO_C_BINDING
class(IDAadjCheckPointRec), intent(in) :: self
integer(C_LONG), intent(in) :: nstep
type(SwigClassWrapper) :: farg1 
integer(C_LONG) :: farg2 

farg1 = self%swigdata
farg2 = nstep
call swigc_IDAadjCheckPointRec_nstep_set(farg1, farg2)
end subroutine

function swigf_IDAadjCheckPointRec_nstep_get(self) &
result(swig_result)
use, intrinsic :: ISO_C_BINDING
integer(C_LONG) :: swig_result
class(IDAadjCheckPointRec), intent(in) :: self
integer(C_LONG) :: fresult 
type(SwigClassWrapper) :: farg1 

farg1 = self%swigdata
fresult = swigc_IDAadjCheckPointRec_nstep_get(farg1)
swig_result = fresult
end function

subroutine swigf_IDAadjCheckPointRec_order_set(self, order)
use, intrinsic :: ISO_C_BINDING
class(IDAadjCheckPointRec), intent(in) :: self
integer(C_INT), intent(in) :: order
type(SwigClassWrapper) :: farg1 
integer(C_INT) :: farg2 

farg1 = self%swigdata
farg2 = order
call swigc_IDAadjCheckPointRec_order_set(farg1, farg2)
end subroutine

function swigf_IDAadjCheckPointRec_order_get(self) &
result(swig_result)
use, intrinsic :: ISO_C_BINDING
integer(C_INT) :: swig_result
class(IDAadjCheckPointRec), intent(in) :: self
integer(C_INT) :: fresult 
type(SwigClassWrapper) :: farg1 

farg1 = self%swigdata
fresult = swigc_IDAadjCheckPointRec_order_get(farg1)
swig_result = fresult
end function

subroutine swigf_IDAadjCheckPointRec_step_set(self, step)
use, intrinsic :: ISO_C_BINDING
class(IDAadjCheckPointRec), intent(in) :: self
real(C_DOUBLE), intent(in) :: step
type(SwigClassWrapper) :: farg1 
real(C_DOUBLE) :: farg2 

farg1 = self%swigdata
farg2 = step
call swigc_IDAadjCheckPointRec_step_set(farg1, farg2)
end subroutine

function swigf_IDAadjCheckPointRec_step_get(self) &
result(swig_result)
use, intrinsic :: ISO_C_BINDING
real(C_DOUBLE) :: swig_result
class(IDAadjCheckPointRec), intent(in) :: self
real(C_DOUBLE) :: fresult 
type(SwigClassWrapper) :: farg1 

farg1 = self%swigdata
fresult = swigc_IDAadjCheckPointRec_step_get(farg1)
swig_result = fresult
end function

function swigf_create_IDAadjCheckPointRec() &
result(self)
use, intrinsic :: ISO_C_BINDING
type(IDAadjCheckPointRec) :: self
type(SwigClassWrapper) :: fresult 

fresult = swigc_new_IDAadjCheckPointRec()
self%swigdata = fresult
end function

subroutine swigf_release_IDAadjCheckPointRec(self)
use, intrinsic :: ISO_C_BINDING
class(IDAadjCheckPointRec), intent(inout) :: self
type(SwigClassWrapper) :: farg1 

farg1 = self%swigdata
if (btest(farg1%cmemflags, swig_cmem_own_bit)) then
call swigc_delete_IDAadjCheckPointRec(farg1)
endif
farg1%cptr = C_NULL_PTR
farg1%cmemflags = 0
self%swigdata = farg1
end subroutine

subroutine swigf_IDAadjCheckPointRec_op_assign__(self, other)
use, intrinsic :: ISO_C_BINDING
class(IDAadjCheckPointRec), intent(inout) :: self
type(IDAadjCheckPointRec), intent(in) :: other
type(SwigClassWrapper) :: farg1 
type(SwigClassWrapper) :: farg2 

farg1 = self%swigdata
farg2 = other%swigdata
call swigc_IDAadjCheckPointRec_op_assign__(farg1, farg2)
self%swigdata = farg1
end subroutine

function FIDAGetAdjCheckPointsInfo(ida_mem, ckpnt) &
result(swig_result)
use, intrinsic :: ISO_C_BINDING
integer(C_INT) :: swig_result
type(C_PTR) :: ida_mem
class(IDAadjCheckPointRec), intent(in) :: ckpnt
integer(C_INT) :: fresult 
type(C_PTR) :: farg1 
type(SwigClassWrapper) :: farg2 

farg1 = ida_mem
farg2 = ckpnt%swigdata
fresult = swigc_FIDAGetAdjCheckPointsInfo(farg1, farg2)
swig_result = fresult
end function

function FIDASetJacTimesResFnB(ida_mem, which, jtimesresfn) &
result(swig_result)
use, intrinsic :: ISO_C_BINDING
integer(C_INT) :: swig_result
type(C_PTR) :: ida_mem
integer(C_INT), intent(in) :: which
type(C_FUNPTR), intent(in), value :: jtimesresfn
integer(C_INT) :: fresult 
type(C_PTR) :: farg1 
integer(C_INT) :: farg2 
type(C_FUNPTR) :: farg3 

farg1 = ida_mem
farg2 = which
farg3 = jtimesresfn
fresult = swigc_FIDASetJacTimesResFnB(farg1, farg2, farg3)
swig_result = fresult
end function

function FIDAGetAdjDataPointHermite(ida_mem, which, t, yy, yd) &
result(swig_result)
use, intrinsic :: ISO_C_BINDING
integer(C_INT) :: swig_result
type(C_PTR) :: ida_mem
integer(C_INT), intent(in) :: which
real(C_DOUBLE), dimension(*), target, intent(inout) :: t
type(N_Vector), target, intent(inout) :: yy
type(N_Vector), target, intent(inout) :: yd
integer(C_INT) :: fresult 
type(C_PTR) :: farg1 
integer(C_INT) :: farg2 
type(C_PTR) :: farg3 
type(C_PTR) :: farg4 
type(C_PTR) :: farg5 

farg1 = ida_mem
farg2 = which
farg3 = c_loc(t(1))
farg4 = c_loc(yy)
farg5 = c_loc(yd)
fresult = swigc_FIDAGetAdjDataPointHermite(farg1, farg2, farg3, farg4, farg5)
swig_result = fresult
end function

function FIDAGetAdjDataPointPolynomial(ida_mem, which, t, order, y) &
result(swig_result)
use, intrinsic :: ISO_C_BINDING
integer(C_INT) :: swig_result
type(C_PTR) :: ida_mem
integer(C_INT), intent(in) :: which
real(C_DOUBLE), dimension(*), target, intent(inout) :: t
integer(C_INT), dimension(*), target, intent(inout) :: order
type(N_Vector), target, intent(inout) :: y
integer(C_INT) :: fresult 
type(C_PTR) :: farg1 
integer(C_INT) :: farg2 
type(C_PTR) :: farg3 
type(C_PTR) :: farg4 
type(C_PTR) :: farg5 

farg1 = ida_mem
farg2 = which
farg3 = c_loc(t(1))
farg4 = c_loc(order(1))
farg5 = c_loc(y)
fresult = swigc_FIDAGetAdjDataPointPolynomial(farg1, farg2, farg3, farg4, farg5)
swig_result = fresult
end function

function FIDAGetAdjCurrentCheckPoint(ida_mem, addr) &
result(swig_result)
use, intrinsic :: ISO_C_BINDING
integer(C_INT) :: swig_result
type(C_PTR) :: ida_mem
type(C_PTR), target, intent(inout) :: addr
integer(C_INT) :: fresult 
type(C_PTR) :: farg1 
type(C_PTR) :: farg2 

farg1 = ida_mem
farg2 = c_loc(addr)
fresult = swigc_FIDAGetAdjCurrentCheckPoint(farg1, farg2)
swig_result = fresult
end function

function FIDABBDPrecInit(ida_mem, nlocal, mudq, mldq, mukeep, mlkeep, dq_rel_yy, gres, gcomm) &
result(swig_result)
use, intrinsic :: ISO_C_BINDING
integer(C_INT) :: swig_result
type(C_PTR) :: ida_mem
integer(C_INT64_T), intent(in) :: nlocal
integer(C_INT64_T), intent(in) :: mudq
integer(C_INT64_T), intent(in) :: mldq
integer(C_INT64_T), intent(in) :: mukeep
integer(C_INT64_T), intent(in) :: mlkeep
real(C_DOUBLE), intent(in) :: dq_rel_yy
type(C_FUNPTR), intent(in), value :: gres
type(C_FUNPTR), intent(in), value :: gcomm
integer(C_INT) :: fresult 
type(C_PTR) :: farg1 
integer(C_INT64_T) :: farg2 
integer(C_INT64_T) :: farg3 
integer(C_INT64_T) :: farg4 
integer(C_INT64_T) :: farg5 
integer(C_INT64_T) :: farg6 
real(C_DOUBLE) :: farg7 
type(C_FUNPTR) :: farg8 
type(C_FUNPTR) :: farg9 

farg1 = ida_mem
farg2 = nlocal
farg3 = mudq
farg4 = mldq
farg5 = mukeep
farg6 = mlkeep
farg7 = dq_rel_yy
farg8 = gres
farg9 = gcomm
fresult = swigc_FIDABBDPrecInit(farg1, farg2, farg3, farg4, farg5, farg6, farg7, farg8, farg9)
swig_result = fresult
end function

function FIDABBDPrecReInit(ida_mem, mudq, mldq, dq_rel_yy) &
result(swig_result)
use, intrinsic :: ISO_C_BINDING
integer(C_INT) :: swig_result
type(C_PTR) :: ida_mem
integer(C_INT64_T), intent(in) :: mudq
integer(C_INT64_T), intent(in) :: mldq
real(C_DOUBLE), intent(in) :: dq_rel_yy
integer(C_INT) :: fresult 
type(C_PTR) :: farg1 
integer(C_INT64_T) :: farg2 
integer(C_INT64_T) :: farg3 
real(C_DOUBLE) :: farg4 

farg1 = ida_mem
farg2 = mudq
farg3 = mldq
farg4 = dq_rel_yy
fresult = swigc_FIDABBDPrecReInit(farg1, farg2, farg3, farg4)
swig_result = fresult
end function

function FIDABBDPrecGetWorkSpace(ida_mem, lenrwbbdp, leniwbbdp) &
result(swig_result)
use, intrinsic :: ISO_C_BINDING
integer(C_INT) :: swig_result
type(C_PTR) :: ida_mem
integer(C_LONG), dimension(*), target, intent(inout) :: lenrwbbdp
integer(C_LONG), dimension(*), target, intent(inout) :: leniwbbdp
integer(C_INT) :: fresult 
type(C_PTR) :: farg1 
type(C_PTR) :: farg2 
type(C_PTR) :: farg3 

farg1 = ida_mem
farg2 = c_loc(lenrwbbdp(1))
farg3 = c_loc(leniwbbdp(1))
fresult = swigc_FIDABBDPrecGetWorkSpace(farg1, farg2, farg3)
swig_result = fresult
end function

function FIDABBDPrecGetNumGfnEvals(ida_mem, ngevalsbbdp) &
result(swig_result)
use, intrinsic :: ISO_C_BINDING
integer(C_INT) :: swig_result
type(C_PTR) :: ida_mem
integer(C_LONG), dimension(*), target, intent(inout) :: ngevalsbbdp
integer(C_INT) :: fresult 
type(C_PTR) :: farg1 
type(C_PTR) :: farg2 

farg1 = ida_mem
farg2 = c_loc(ngevalsbbdp(1))
fresult = swigc_FIDABBDPrecGetNumGfnEvals(farg1, farg2)
swig_result = fresult
end function

function FIDABBDPrecInitB(ida_mem, which, nlocalb, mudqb, mldqb, mukeepb, mlkeepb, dq_rel_yyb, gresb, gcommb) &
result(swig_result)
use, intrinsic :: ISO_C_BINDING
integer(C_INT) :: swig_result
type(C_PTR) :: ida_mem
integer(C_INT), intent(in) :: which
integer(C_INT64_T), intent(in) :: nlocalb
integer(C_INT64_T), intent(in) :: mudqb
integer(C_INT64_T), intent(in) :: mldqb
integer(C_INT64_T), intent(in) :: mukeepb
integer(C_INT64_T), intent(in) :: mlkeepb
real(C_DOUBLE), intent(in) :: dq_rel_yyb
type(C_FUNPTR), intent(in), value :: gresb
type(C_FUNPTR), intent(in), value :: gcommb
integer(C_INT) :: fresult 
type(C_PTR) :: farg1 
integer(C_INT) :: farg2 
integer(C_INT64_T) :: farg3 
integer(C_INT64_T) :: farg4 
integer(C_INT64_T) :: farg5 
integer(C_INT64_T) :: farg6 
integer(C_INT64_T) :: farg7 
real(C_DOUBLE) :: farg8 
type(C_FUNPTR) :: farg9 
type(C_FUNPTR) :: farg10 

farg1 = ida_mem
farg2 = which
farg3 = nlocalb
farg4 = mudqb
farg5 = mldqb
farg6 = mukeepb
farg7 = mlkeepb
farg8 = dq_rel_yyb
farg9 = gresb
farg10 = gcommb
fresult = swigc_FIDABBDPrecInitB(farg1, farg2, farg3, farg4, farg5, farg6, farg7, farg8, farg9, farg10)
swig_result = fresult
end function

function FIDABBDPrecReInitB(ida_mem, which, mudqb, mldqb, dq_rel_yyb) &
result(swig_result)
use, intrinsic :: ISO_C_BINDING
integer(C_INT) :: swig_result
type(C_PTR) :: ida_mem
integer(C_INT), intent(in) :: which
integer(C_INT64_T), intent(in) :: mudqb
integer(C_INT64_T), intent(in) :: mldqb
real(C_DOUBLE), intent(in) :: dq_rel_yyb
integer(C_INT) :: fresult 
type(C_PTR) :: farg1 
integer(C_INT) :: farg2 
integer(C_INT64_T) :: farg3 
integer(C_INT64_T) :: farg4 
real(C_DOUBLE) :: farg5 

farg1 = ida_mem
farg2 = which
farg3 = mudqb
farg4 = mldqb
farg5 = dq_rel_yyb
fresult = swigc_FIDABBDPrecReInitB(farg1, farg2, farg3, farg4, farg5)
swig_result = fresult
end function

function FIDASetLinearSolver(ida_mem, ls, a) &
result(swig_result)
use, intrinsic :: ISO_C_BINDING
integer(C_INT) :: swig_result
type(C_PTR) :: ida_mem
type(SUNLinearSolver), target, intent(inout) :: ls
type(SUNMatrix), target, intent(inout) :: a
integer(C_INT) :: fresult 
type(C_PTR) :: farg1 
type(C_PTR) :: farg2 
type(C_PTR) :: farg3 

farg1 = ida_mem
farg2 = c_loc(ls)
farg3 = c_loc(a)
fresult = swigc_FIDASetLinearSolver(farg1, farg2, farg3)
swig_result = fresult
end function

function FIDASetJacFn(ida_mem, jac) &
result(swig_result)
use, intrinsic :: ISO_C_BINDING
integer(C_INT) :: swig_result
type(C_PTR) :: ida_mem
type(C_FUNPTR), intent(in), value :: jac
integer(C_INT) :: fresult 
type(C_PTR) :: farg1 
type(C_FUNPTR) :: farg2 

farg1 = ida_mem
farg2 = jac
fresult = swigc_FIDASetJacFn(farg1, farg2)
swig_result = fresult
end function

function FIDASetPreconditioner(ida_mem, pset, psolve) &
result(swig_result)
use, intrinsic :: ISO_C_BINDING
integer(C_INT) :: swig_result
type(C_PTR) :: ida_mem
type(C_FUNPTR), intent(in), value :: pset
type(C_FUNPTR), intent(in), value :: psolve
integer(C_INT) :: fresult 
type(C_PTR) :: farg1 
type(C_FUNPTR) :: farg2 
type(C_FUNPTR) :: farg3 

farg1 = ida_mem
farg2 = pset
farg3 = psolve
fresult = swigc_FIDASetPreconditioner(farg1, farg2, farg3)
swig_result = fresult
end function

function FIDASetJacTimes(ida_mem, jtsetup, jtimes) &
result(swig_result)
use, intrinsic :: ISO_C_BINDING
integer(C_INT) :: swig_result
type(C_PTR) :: ida_mem
type(C_FUNPTR), intent(in), value :: jtsetup
type(C_FUNPTR), intent(in), value :: jtimes
integer(C_INT) :: fresult 
type(C_PTR) :: farg1 
type(C_FUNPTR) :: farg2 
type(C_FUNPTR) :: farg3 

farg1 = ida_mem
farg2 = jtsetup
farg3 = jtimes
fresult = swigc_FIDASetJacTimes(farg1, farg2, farg3)
swig_result = fresult
end function

function FIDASetEpsLin(ida_mem, eplifac) &
result(swig_result)
use, intrinsic :: ISO_C_BINDING
integer(C_INT) :: swig_result
type(C_PTR) :: ida_mem
real(C_DOUBLE), intent(in) :: eplifac
integer(C_INT) :: fresult 
type(C_PTR) :: farg1 
real(C_DOUBLE) :: farg2 

farg1 = ida_mem
farg2 = eplifac
fresult = swigc_FIDASetEpsLin(farg1, farg2)
swig_result = fresult
end function

function FIDASetLSNormFactor(ida_mem, nrmfac) &
result(swig_result)
use, intrinsic :: ISO_C_BINDING
integer(C_INT) :: swig_result
type(C_PTR) :: ida_mem
real(C_DOUBLE), intent(in) :: nrmfac
integer(C_INT) :: fresult 
type(C_PTR) :: farg1 
real(C_DOUBLE) :: farg2 

farg1 = ida_mem
farg2 = nrmfac
fresult = swigc_FIDASetLSNormFactor(farg1, farg2)
swig_result = fresult
end function

function FIDASetLinearSolutionScaling(ida_mem, onoff) &
result(swig_result)
use, intrinsic :: ISO_C_BINDING
integer(C_INT) :: swig_result
type(C_PTR) :: ida_mem
integer(C_INT), intent(in) :: onoff
integer(C_INT) :: fresult 
type(C_PTR) :: farg1 
integer(C_INT) :: farg2 

farg1 = ida_mem
farg2 = onoff
fresult = swigc_FIDASetLinearSolutionScaling(farg1, farg2)
swig_result = fresult
end function

function FIDASetIncrementFactor(ida_mem, dqincfac) &
result(swig_result)
use, intrinsic :: ISO_C_BINDING
integer(C_INT) :: swig_result
type(C_PTR) :: ida_mem
real(C_DOUBLE), intent(in) :: dqincfac
integer(C_INT) :: fresult 
type(C_PTR) :: farg1 
real(C_DOUBLE) :: farg2 

farg1 = ida_mem
farg2 = dqincfac
fresult = swigc_FIDASetIncrementFactor(farg1, farg2)
swig_result = fresult
end function

function FIDAGetLinWorkSpace(ida_mem, lenrwls, leniwls) &
result(swig_result)
use, intrinsic :: ISO_C_BINDING
integer(C_INT) :: swig_result
type(C_PTR) :: ida_mem
integer(C_LONG), dimension(*), target, intent(inout) :: lenrwls
integer(C_LONG), dimension(*), target, intent(inout) :: leniwls
integer(C_INT) :: fresult 
type(C_PTR) :: farg1 
type(C_PTR) :: farg2 
type(C_PTR) :: farg3 

farg1 = ida_mem
farg2 = c_loc(lenrwls(1))
farg3 = c_loc(leniwls(1))
fresult = swigc_FIDAGetLinWorkSpace(farg1, farg2, farg3)
swig_result = fresult
end function

function FIDAGetNumJacEvals(ida_mem, njevals) &
result(swig_result)
use, intrinsic :: ISO_C_BINDING
integer(C_INT) :: swig_result
type(C_PTR) :: ida_mem
integer(C_LONG), dimension(*), target, intent(inout) :: njevals
integer(C_INT) :: fresult 
type(C_PTR) :: farg1 
type(C_PTR) :: farg2 

farg1 = ida_mem
farg2 = c_loc(njevals(1))
fresult = swigc_FIDAGetNumJacEvals(farg1, farg2)
swig_result = fresult
end function

function FIDAGetNumPrecEvals(ida_mem, npevals) &
result(swig_result)
use, intrinsic :: ISO_C_BINDING
integer(C_INT) :: swig_result
type(C_PTR) :: ida_mem
integer(C_LONG), dimension(*), target, intent(inout) :: npevals
integer(C_INT) :: fresult 
type(C_PTR) :: farg1 
type(C_PTR) :: farg2 

farg1 = ida_mem
farg2 = c_loc(npevals(1))
fresult = swigc_FIDAGetNumPrecEvals(farg1, farg2)
swig_result = fresult
end function

function FIDAGetNumPrecSolves(ida_mem, npsolves) &
result(swig_result)
use, intrinsic :: ISO_C_BINDING
integer(C_INT) :: swig_result
type(C_PTR) :: ida_mem
integer(C_LONG), dimension(*), target, intent(inout) :: npsolves
integer(C_INT) :: fresult 
type(C_PTR) :: farg1 
type(C_PTR) :: farg2 

farg1 = ida_mem
farg2 = c_loc(npsolves(1))
fresult = swigc_FIDAGetNumPrecSolves(farg1, farg2)
swig_result = fresult
end function

function FIDAGetNumLinIters(ida_mem, nliters) &
result(swig_result)
use, intrinsic :: ISO_C_BINDING
integer(C_INT) :: swig_result
type(C_PTR) :: ida_mem
integer(C_LONG), dimension(*), target, intent(inout) :: nliters
integer(C_INT) :: fresult 
type(C_PTR) :: farg1 
type(C_PTR) :: farg2 

farg1 = ida_mem
farg2 = c_loc(nliters(1))
fresult = swigc_FIDAGetNumLinIters(farg1, farg2)
swig_result = fresult
end function

function FIDAGetNumLinConvFails(ida_mem, nlcfails) &
result(swig_result)
use, intrinsic :: ISO_C_BINDING
integer(C_INT) :: swig_result
type(C_PTR) :: ida_mem
integer(C_LONG), dimension(*), target, intent(inout) :: nlcfails
integer(C_INT) :: fresult 
type(C_PTR) :: farg1 
type(C_PTR) :: farg2 

farg1 = ida_mem
farg2 = c_loc(nlcfails(1))
fresult = swigc_FIDAGetNumLinConvFails(farg1, farg2)
swig_result = fresult
end function

function FIDAGetNumJTSetupEvals(ida_mem, njtsetups) &
result(swig_result)
use, intrinsic :: ISO_C_BINDING
integer(C_INT) :: swig_result
type(C_PTR) :: ida_mem
integer(C_LONG), dimension(*), target, intent(inout) :: njtsetups
integer(C_INT) :: fresult 
type(C_PTR) :: farg1 
type(C_PTR) :: farg2 

farg1 = ida_mem
farg2 = c_loc(njtsetups(1))
fresult = swigc_FIDAGetNumJTSetupEvals(farg1, farg2)
swig_result = fresult
end function

function FIDAGetNumJtimesEvals(ida_mem, njvevals) &
result(swig_result)
use, intrinsic :: ISO_C_BINDING
integer(C_INT) :: swig_result
type(C_PTR) :: ida_mem
integer(C_LONG), dimension(*), target, intent(inout) :: njvevals
integer(C_INT) :: fresult 
type(C_PTR) :: farg1 
type(C_PTR) :: farg2 

farg1 = ida_mem
farg2 = c_loc(njvevals(1))
fresult = swigc_FIDAGetNumJtimesEvals(farg1, farg2)
swig_result = fresult
end function

function FIDAGetNumLinResEvals(ida_mem, nrevalsls) &
result(swig_result)
use, intrinsic :: ISO_C_BINDING
integer(C_INT) :: swig_result
type(C_PTR) :: ida_mem
integer(C_LONG), dimension(*), target, intent(inout) :: nrevalsls
integer(C_INT) :: fresult 
type(C_PTR) :: farg1 
type(C_PTR) :: farg2 

farg1 = ida_mem
farg2 = c_loc(nrevalsls(1))
fresult = swigc_FIDAGetNumLinResEvals(farg1, farg2)
swig_result = fresult
end function

function FIDAGetLastLinFlag(ida_mem, flag) &
result(swig_result)
use, intrinsic :: ISO_C_BINDING
integer(C_INT) :: swig_result
type(C_PTR) :: ida_mem
integer(C_LONG), dimension(*), target, intent(inout) :: flag
integer(C_INT) :: fresult 
type(C_PTR) :: farg1 
type(C_PTR) :: farg2 

farg1 = ida_mem
farg2 = c_loc(flag(1))
fresult = swigc_FIDAGetLastLinFlag(farg1, farg2)
swig_result = fresult
end function

function FIDAGetLinReturnFlagName(flag) &
result(swig_result)
use, intrinsic :: ISO_C_BINDING
character(kind=C_CHAR, len=:), allocatable :: swig_result
integer(C_LONG), intent(in) :: flag
type(SwigArrayWrapper) :: fresult 
integer(C_LONG) :: farg1 

farg1 = flag
fresult = swigc_FIDAGetLinReturnFlagName(farg1)
call SWIG_chararray_to_string(fresult, swig_result)
if (.false.) call SWIG_free(fresult%data)
end function

function FIDASetLinearSolverB(ida_mem, which, ls, a) &
result(swig_result)
use, intrinsic :: ISO_C_BINDING
integer(C_INT) :: swig_result
type(C_PTR) :: ida_mem
integer(C_INT), intent(in) :: which
type(SUNLinearSolver), target, intent(inout) :: ls
type(SUNMatrix), target, intent(inout) :: a
integer(C_INT) :: fresult 
type(C_PTR) :: farg1 
integer(C_INT) :: farg2 
type(C_PTR) :: farg3 
type(C_PTR) :: farg4 

farg1 = ida_mem
farg2 = which
farg3 = c_loc(ls)
farg4 = c_loc(a)
fresult = swigc_FIDASetLinearSolverB(farg1, farg2, farg3, farg4)
swig_result = fresult
end function

function FIDASetJacFnB(ida_mem, which, jacb) &
result(swig_result)
use, intrinsic :: ISO_C_BINDING
integer(C_INT) :: swig_result
type(C_PTR) :: ida_mem
integer(C_INT), intent(in) :: which
type(C_FUNPTR), intent(in), value :: jacb
integer(C_INT) :: fresult 
type(C_PTR) :: farg1 
integer(C_INT) :: farg2 
type(C_FUNPTR) :: farg3 

farg1 = ida_mem
farg2 = which
farg3 = jacb
fresult = swigc_FIDASetJacFnB(farg1, farg2, farg3)
swig_result = fresult
end function

function FIDASetJacFnBS(ida_mem, which, jacbs) &
result(swig_result)
use, intrinsic :: ISO_C_BINDING
integer(C_INT) :: swig_result
type(C_PTR) :: ida_mem
integer(C_INT), intent(in) :: which
type(C_FUNPTR), intent(in), value :: jacbs
integer(C_INT) :: fresult 
type(C_PTR) :: farg1 
integer(C_INT) :: farg2 
type(C_FUNPTR) :: farg3 

farg1 = ida_mem
farg2 = which
farg3 = jacbs
fresult = swigc_FIDASetJacFnBS(farg1, farg2, farg3)
swig_result = fresult
end function

function FIDASetEpsLinB(ida_mem, which, eplifacb) &
result(swig_result)
use, intrinsic :: ISO_C_BINDING
integer(C_INT) :: swig_result
type(C_PTR) :: ida_mem
integer(C_INT), intent(in) :: which
real(C_DOUBLE), intent(in) :: eplifacb
integer(C_INT) :: fresult 
type(C_PTR) :: farg1 
integer(C_INT) :: farg2 
real(C_DOUBLE) :: farg3 

farg1 = ida_mem
farg2 = which
farg3 = eplifacb
fresult = swigc_FIDASetEpsLinB(farg1, farg2, farg3)
swig_result = fresult
end function

function FIDASetLSNormFactorB(ida_mem, which, nrmfacb) &
result(swig_result)
use, intrinsic :: ISO_C_BINDING
integer(C_INT) :: swig_result
type(C_PTR) :: ida_mem
integer(C_INT), intent(in) :: which
real(C_DOUBLE), intent(in) :: nrmfacb
integer(C_INT) :: fresult 
type(C_PTR) :: farg1 
integer(C_INT) :: farg2 
real(C_DOUBLE) :: farg3 

farg1 = ida_mem
farg2 = which
farg3 = nrmfacb
fresult = swigc_FIDASetLSNormFactorB(farg1, farg2, farg3)
swig_result = fresult
end function

function FIDASetLinearSolutionScalingB(ida_mem, which, onoffb) &
result(swig_result)
use, intrinsic :: ISO_C_BINDING
integer(C_INT) :: swig_result
type(C_PTR) :: ida_mem
integer(C_INT), intent(in) :: which
integer(C_INT), intent(in) :: onoffb
integer(C_INT) :: fresult 
type(C_PTR) :: farg1 
integer(C_INT) :: farg2 
integer(C_INT) :: farg3 

farg1 = ida_mem
farg2 = which
farg3 = onoffb
fresult = swigc_FIDASetLinearSolutionScalingB(farg1, farg2, farg3)
swig_result = fresult
end function

function FIDASetIncrementFactorB(ida_mem, which, dqincfacb) &
result(swig_result)
use, intrinsic :: ISO_C_BINDING
integer(C_INT) :: swig_result
type(C_PTR) :: ida_mem
integer(C_INT), intent(in) :: which
real(C_DOUBLE), intent(in) :: dqincfacb
integer(C_INT) :: fresult 
type(C_PTR) :: farg1 
integer(C_INT) :: farg2 
real(C_DOUBLE) :: farg3 

farg1 = ida_mem
farg2 = which
farg3 = dqincfacb
fresult = swigc_FIDASetIncrementFactorB(farg1, farg2, farg3)
swig_result = fresult
end function

function FIDASetPreconditionerB(ida_mem, which, psetb, psolveb) &
result(swig_result)
use, intrinsic :: ISO_C_BINDING
integer(C_INT) :: swig_result
type(C_PTR) :: ida_mem
integer(C_INT), intent(in) :: which
type(C_FUNPTR), intent(in), value :: psetb
type(C_FUNPTR), intent(in), value :: psolveb
integer(C_INT) :: fresult 
type(C_PTR) :: farg1 
integer(C_INT) :: farg2 
type(C_FUNPTR) :: farg3 
type(C_FUNPTR) :: farg4 

farg1 = ida_mem
farg2 = which
farg3 = psetb
farg4 = psolveb
fresult = swigc_FIDASetPreconditionerB(farg1, farg2, farg3, farg4)
swig_result = fresult
end function

function FIDASetPreconditionerBS(ida_mem, which, psetbs, psolvebs) &
result(swig_result)
use, intrinsic :: ISO_C_BINDING
integer(C_INT) :: swig_result
type(C_PTR) :: ida_mem
integer(C_INT), intent(in) :: which
type(C_FUNPTR), intent(in), value :: psetbs
type(C_FUNPTR), intent(in), value :: psolvebs
integer(C_INT) :: fresult 
type(C_PTR) :: farg1 
integer(C_INT) :: farg2 
type(C_FUNPTR) :: farg3 
type(C_FUNPTR) :: farg4 

farg1 = ida_mem
farg2 = which
farg3 = psetbs
farg4 = psolvebs
fresult = swigc_FIDASetPreconditionerBS(farg1, farg2, farg3, farg4)
swig_result = fresult
end function

function FIDASetJacTimesB(ida_mem, which, jtsetupb, jtimesb) &
result(swig_result)
use, intrinsic :: ISO_C_BINDING
integer(C_INT) :: swig_result
type(C_PTR) :: ida_mem
integer(C_INT), intent(in) :: which
type(C_FUNPTR), intent(in), value :: jtsetupb
type(C_FUNPTR), intent(in), value :: jtimesb
integer(C_INT) :: fresult 
type(C_PTR) :: farg1 
integer(C_INT) :: farg2 
type(C_FUNPTR) :: farg3 
type(C_FUNPTR) :: farg4 

farg1 = ida_mem
farg2 = which
farg3 = jtsetupb
farg4 = jtimesb
fresult = swigc_FIDASetJacTimesB(farg1, farg2, farg3, farg4)
swig_result = fresult
end function

function FIDASetJacTimesBS(ida_mem, which, jtsetupbs, jtimesbs) &
result(swig_result)
use, intrinsic :: ISO_C_BINDING
integer(C_INT) :: swig_result
type(C_PTR) :: ida_mem
integer(C_INT), intent(in) :: which
type(C_FUNPTR), intent(in), value :: jtsetupbs
type(C_FUNPTR), intent(in), value :: jtimesbs
integer(C_INT) :: fresult 
type(C_PTR) :: farg1 
integer(C_INT) :: farg2 
type(C_FUNPTR) :: farg3 
type(C_FUNPTR) :: farg4 

farg1 = ida_mem
farg2 = which
farg3 = jtsetupbs
farg4 = jtimesbs
fresult = swigc_FIDASetJacTimesBS(farg1, farg2, farg3, farg4)
swig_result = fresult
end function


end module
