! 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-2024, 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 fcvodes_mod
 use, intrinsic :: ISO_C_BINDING
 use fsundials_core_mod
 implicit none
 private

 ! DECLARATION CONSTRUCTS
 integer(C_INT), parameter, public :: CV_ADAMS = 1_C_INT
 integer(C_INT), parameter, public :: CV_BDF = 2_C_INT
 integer(C_INT), parameter, public :: CV_NORMAL = 1_C_INT
 integer(C_INT), parameter, public :: CV_ONE_STEP = 2_C_INT
 integer(C_INT), parameter, public :: CV_SIMULTANEOUS = 1_C_INT
 integer(C_INT), parameter, public :: CV_STAGGERED = 2_C_INT
 integer(C_INT), parameter, public :: CV_STAGGERED1 = 3_C_INT
 integer(C_INT), parameter, public :: CV_CENTERED = 1_C_INT
 integer(C_INT), parameter, public :: CV_FORWARD = 2_C_INT
 integer(C_INT), parameter, public :: CV_HERMITE = 1_C_INT
 integer(C_INT), parameter, public :: CV_POLYNOMIAL = 2_C_INT
 integer(C_INT), parameter, public :: CV_SUCCESS = 0_C_INT
 integer(C_INT), parameter, public :: CV_TSTOP_RETURN = 1_C_INT
 integer(C_INT), parameter, public :: CV_ROOT_RETURN = 2_C_INT
 integer(C_INT), parameter, public :: CV_WARNING = 99_C_INT
 integer(C_INT), parameter, public :: CV_TOO_MUCH_WORK = -1_C_INT
 integer(C_INT), parameter, public :: CV_TOO_MUCH_ACC = -2_C_INT
 integer(C_INT), parameter, public :: CV_ERR_FAILURE = -3_C_INT
 integer(C_INT), parameter, public :: CV_CONV_FAILURE = -4_C_INT
 integer(C_INT), parameter, public :: CV_LINIT_FAIL = -5_C_INT
 integer(C_INT), parameter, public :: CV_LSETUP_FAIL = -6_C_INT
 integer(C_INT), parameter, public :: CV_LSOLVE_FAIL = -7_C_INT
 integer(C_INT), parameter, public :: CV_RHSFUNC_FAIL = -8_C_INT
 integer(C_INT), parameter, public :: CV_FIRST_RHSFUNC_ERR = -9_C_INT
 integer(C_INT), parameter, public :: CV_REPTD_RHSFUNC_ERR = -10_C_INT
 integer(C_INT), parameter, public :: CV_UNREC_RHSFUNC_ERR = -11_C_INT
 integer(C_INT), parameter, public :: CV_RTFUNC_FAIL = -12_C_INT
 integer(C_INT), parameter, public :: CV_NLS_INIT_FAIL = -13_C_INT
 integer(C_INT), parameter, public :: CV_NLS_SETUP_FAIL = -14_C_INT
 integer(C_INT), parameter, public :: CV_CONSTR_FAIL = -15_C_INT
 integer(C_INT), parameter, public :: CV_NLS_FAIL = -16_C_INT
 integer(C_INT), parameter, public :: CV_MEM_FAIL = -20_C_INT
 integer(C_INT), parameter, public :: CV_MEM_NULL = -21_C_INT
 integer(C_INT), parameter, public :: CV_ILL_INPUT = -22_C_INT
 integer(C_INT), parameter, public :: CV_NO_MALLOC = -23_C_INT
 integer(C_INT), parameter, public :: CV_BAD_K = -24_C_INT
 integer(C_INT), parameter, public :: CV_BAD_T = -25_C_INT
 integer(C_INT), parameter, public :: CV_BAD_DKY = -26_C_INT
 integer(C_INT), parameter, public :: CV_TOO_CLOSE = -27_C_INT
 integer(C_INT), parameter, public :: CV_VECTOROP_ERR = -28_C_INT
 integer(C_INT), parameter, public :: CV_NO_QUAD = -30_C_INT
 integer(C_INT), parameter, public :: CV_QRHSFUNC_FAIL = -31_C_INT
 integer(C_INT), parameter, public :: CV_FIRST_QRHSFUNC_ERR = -32_C_INT
 integer(C_INT), parameter, public :: CV_REPTD_QRHSFUNC_ERR = -33_C_INT
 integer(C_INT), parameter, public :: CV_UNREC_QRHSFUNC_ERR = -34_C_INT
 integer(C_INT), parameter, public :: CV_NO_SENS = -40_C_INT
 integer(C_INT), parameter, public :: CV_SRHSFUNC_FAIL = -41_C_INT
 integer(C_INT), parameter, public :: CV_FIRST_SRHSFUNC_ERR = -42_C_INT
 integer(C_INT), parameter, public :: CV_REPTD_SRHSFUNC_ERR = -43_C_INT
 integer(C_INT), parameter, public :: CV_UNREC_SRHSFUNC_ERR = -44_C_INT
 integer(C_INT), parameter, public :: CV_BAD_IS = -45_C_INT
 integer(C_INT), parameter, public :: CV_NO_QUADSENS = -50_C_INT
 integer(C_INT), parameter, public :: CV_QSRHSFUNC_FAIL = -51_C_INT
 integer(C_INT), parameter, public :: CV_FIRST_QSRHSFUNC_ERR = -52_C_INT
 integer(C_INT), parameter, public :: CV_REPTD_QSRHSFUNC_ERR = -53_C_INT
 integer(C_INT), parameter, public :: CV_UNREC_QSRHSFUNC_ERR = -54_C_INT
 integer(C_INT), parameter, public :: CV_CONTEXT_ERR = -55_C_INT
 integer(C_INT), parameter, public :: CV_PROJ_MEM_NULL = -56_C_INT
 integer(C_INT), parameter, public :: CV_PROJFUNC_FAIL = -57_C_INT
 integer(C_INT), parameter, public :: CV_REPTD_PROJFUNC_ERR = -58_C_INT
 integer(C_INT), parameter, public :: CV_BAD_TINTERP = -59_C_INT
 integer(C_INT), parameter, public :: CV_UNRECOGNIZED_ERR = -99_C_INT
 integer(C_INT), parameter, public :: CV_NO_ADJ = -101_C_INT
 integer(C_INT), parameter, public :: CV_NO_FWD = -102_C_INT
 integer(C_INT), parameter, public :: CV_NO_BCK = -103_C_INT
 integer(C_INT), parameter, public :: CV_BAD_TB0 = -104_C_INT
 integer(C_INT), parameter, public :: CV_REIFWD_FAIL = -105_C_INT
 integer(C_INT), parameter, public :: CV_FWD_FAIL = -106_C_INT
 integer(C_INT), parameter, public :: CV_GETY_BADT = -107_C_INT
 public :: FCVodeCreate
 public :: FCVodeInit
 public :: FCVodeReInit
 public :: FCVodeSStolerances
 public :: FCVodeSVtolerances
 public :: FCVodeWFtolerances
 public :: FCVodeSetConstraints
 public :: FCVodeSetDeltaGammaMaxLSetup
 public :: FCVodeSetInitStep
 public :: FCVodeSetLSetupFrequency
 public :: FCVodeSetMaxConvFails
 public :: FCVodeSetMaxErrTestFails
 public :: FCVodeSetMaxHnilWarns
 public :: FCVodeSetMaxNonlinIters
 public :: FCVodeSetMaxNumSteps
 public :: FCVodeSetMaxOrd
 public :: FCVodeSetMaxStep
 public :: FCVodeSetMinStep
 public :: FCVodeSetMonitorFn
 public :: FCVodeSetMonitorFrequency
 public :: FCVodeSetNlsRhsFn
 public :: FCVodeSetNonlinConvCoef
 public :: FCVodeSetNonlinearSolver
 public :: FCVodeSetStabLimDet
 public :: FCVodeSetStopTime
 public :: FCVodeSetInterpolateStopTime
 public :: FCVodeClearStopTime
 public :: FCVodeSetUserData
 public :: FCVodeSetEtaFixedStepBounds
 public :: FCVodeSetEtaMaxFirstStep
 public :: FCVodeSetEtaMaxEarlyStep
 public :: FCVodeSetNumStepsEtaMaxEarlyStep
 public :: FCVodeSetEtaMax
 public :: FCVodeSetEtaMin
 public :: FCVodeSetEtaMinErrFail
 public :: FCVodeSetEtaMaxErrFail
 public :: FCVodeSetNumFailsEtaMaxErrFail
 public :: FCVodeSetEtaConvFail
 public :: FCVodeRootInit
 public :: FCVodeSetRootDirection
 public :: FCVodeSetNoInactiveRootWarn
 public :: FCVode
 public :: FCVodeComputeState
 public :: FCVodeComputeStateSens
 public :: FCVodeComputeStateSens1
 public :: FCVodeGetDky
 public :: FCVodeGetWorkSpace
 public :: FCVodeGetNumSteps
 public :: FCVodeGetNumRhsEvals
 public :: FCVodeGetNumLinSolvSetups
 public :: FCVodeGetNumErrTestFails
 public :: FCVodeGetLastOrder
 public :: FCVodeGetCurrentOrder
 public :: FCVodeGetCurrentGamma
 public :: FCVodeGetNumStabLimOrderReds
 public :: FCVodeGetActualInitStep
 public :: FCVodeGetLastStep
 public :: FCVodeGetCurrentStep
 public :: FCVodeGetCurrentState
 public :: FCVodeGetCurrentStateSens
 public :: FCVodeGetCurrentSensSolveIndex
 public :: FCVodeGetCurrentTime
 public :: FCVodeGetTolScaleFactor
 public :: FCVodeGetErrWeights
 public :: FCVodeGetEstLocalErrors
 public :: FCVodeGetNumGEvals
 public :: FCVodeGetRootInfo
 public :: FCVodeGetIntegratorStats
 public :: FCVodeGetNonlinearSystemData
 public :: FCVodeGetNonlinearSystemDataSens
 public :: FCVodeGetNumNonlinSolvIters
 public :: FCVodeGetNumNonlinSolvConvFails
 public :: FCVodeGetNonlinSolvStats
 public :: FCVodeGetNumStepSolveFails
 public :: FCVodeGetUserData
 public :: FCVodePrintAllStats
 type, bind(C) :: SwigArrayWrapper
  type(C_PTR), public :: data = C_NULL_PTR
  integer(C_SIZE_T), public :: size = 0
 end type
 public :: FCVodeGetReturnFlagName
 public :: FCVodeFree
 public :: FCVodeSetJacTimesRhsFn
 public :: FCVodeQuadInit
 public :: FCVodeQuadReInit
 public :: FCVodeQuadSStolerances
 public :: FCVodeQuadSVtolerances
 public :: FCVodeSetQuadErrCon
 public :: FCVodeGetQuad
 public :: FCVodeGetQuadDky
 public :: FCVodeGetQuadNumRhsEvals
 public :: FCVodeGetQuadNumErrTestFails
 public :: FCVodeGetQuadErrWeights
 public :: FCVodeGetQuadStats
 public :: FCVodeQuadFree
 public :: FCVodeSensInit
 public :: FCVodeSensInit1
 public :: FCVodeSensReInit
 public :: FCVodeSensSStolerances
 public :: FCVodeSensSVtolerances
 public :: FCVodeSensEEtolerances
 public :: FCVodeSetSensDQMethod
 public :: FCVodeSetSensErrCon
 public :: FCVodeSetSensMaxNonlinIters
 public :: FCVodeSetSensParams
 public :: FCVodeSetNonlinearSolverSensSim
 public :: FCVodeSetNonlinearSolverSensStg
 public :: FCVodeSetNonlinearSolverSensStg1
 public :: FCVodeSensToggleOff
 public :: FCVodeGetSens
 public :: FCVodeGetSens1
 public :: FCVodeGetSensDky
 public :: FCVodeGetSensDky1
 public :: FCVodeGetSensNumRhsEvals
 public :: FCVodeGetNumRhsEvalsSens
 public :: FCVodeGetSensNumErrTestFails
 public :: FCVodeGetSensNumLinSolvSetups
 public :: FCVodeGetSensErrWeights
 public :: FCVodeGetSensStats
 public :: FCVodeGetSensNumNonlinSolvIters
 public :: FCVodeGetSensNumNonlinSolvConvFails
 public :: FCVodeGetSensNonlinSolvStats
 public :: FCVodeGetNumStepSensSolveFails
 public :: FCVodeGetStgrSensNumNonlinSolvIters
 public :: FCVodeGetStgrSensNumNonlinSolvConvFails
 public :: FCVodeGetStgrSensNonlinSolvStats
 public :: FCVodeGetNumStepStgrSensSolveFails
 public :: FCVodeSensFree
 public :: FCVodeQuadSensInit
 public :: FCVodeQuadSensReInit
 public :: FCVodeQuadSensSStolerances
 public :: FCVodeQuadSensSVtolerances
 public :: FCVodeQuadSensEEtolerances
 public :: FCVodeSetQuadSensErrCon
 public :: FCVodeGetQuadSens
 public :: FCVodeGetQuadSens1
 public :: FCVodeGetQuadSensDky
 public :: FCVodeGetQuadSensDky1
 public :: FCVodeGetQuadSensNumRhsEvals
 public :: FCVodeGetQuadSensNumErrTestFails
 public :: FCVodeGetQuadSensErrWeights
 public :: FCVodeGetQuadSensStats
 public :: FCVodeQuadSensFree
 public :: FCVodeAdjInit
 public :: FCVodeAdjReInit
 public :: FCVodeAdjFree
 public :: FCVodeCreateB
 public :: FCVodeInitB
 public :: FCVodeInitBS
 public :: FCVodeReInitB
 public :: FCVodeSStolerancesB
 public :: FCVodeSVtolerancesB
 public :: FCVodeQuadInitB
 public :: FCVodeQuadInitBS
 public :: FCVodeQuadReInitB
 public :: FCVodeQuadSStolerancesB
 public :: FCVodeQuadSVtolerancesB
 public :: FCVodeF
 public :: FCVodeB
 public :: FCVodeSetAdjNoSensi
 public :: FCVodeSetUserDataB
 public :: FCVodeSetMaxOrdB
 public :: FCVodeSetMaxNumStepsB
 public :: FCVodeSetStabLimDetB
 public :: FCVodeSetInitStepB
 public :: FCVodeSetMinStepB
 public :: FCVodeSetMaxStepB
 public :: FCVodeSetConstraintsB
 public :: FCVodeSetQuadErrConB
 public :: FCVodeSetNonlinearSolverB
 public :: FCVodeGetB
 public :: FCVodeGetQuadB
 public :: FCVodeGetAdjCVodeBmem
 public :: FCVodeGetAdjY

 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 CVadjCheckPointRec
 type, public :: CVadjCheckPointRec
  type(SwigClassWrapper), public :: swigdata
 contains
  procedure :: set_my_addr => swigf_CVadjCheckPointRec_my_addr_set
  procedure :: get_my_addr => swigf_CVadjCheckPointRec_my_addr_get
  procedure :: set_next_addr => swigf_CVadjCheckPointRec_next_addr_set
  procedure :: get_next_addr => swigf_CVadjCheckPointRec_next_addr_get
  procedure :: set_t0 => swigf_CVadjCheckPointRec_t0_set
  procedure :: get_t0 => swigf_CVadjCheckPointRec_t0_get
  procedure :: set_t1 => swigf_CVadjCheckPointRec_t1_set
  procedure :: get_t1 => swigf_CVadjCheckPointRec_t1_get
  procedure :: set_nstep => swigf_CVadjCheckPointRec_nstep_set
  procedure :: get_nstep => swigf_CVadjCheckPointRec_nstep_get
  procedure :: set_order => swigf_CVadjCheckPointRec_order_set
  procedure :: get_order => swigf_CVadjCheckPointRec_order_get
  procedure :: set_step => swigf_CVadjCheckPointRec_step_set
  procedure :: get_step => swigf_CVadjCheckPointRec_step_get
  procedure :: release => swigf_release_CVadjCheckPointRec
  procedure, private :: swigf_CVadjCheckPointRec_op_assign__
  generic :: assignment(=) => swigf_CVadjCheckPointRec_op_assign__
 end type CVadjCheckPointRec
 interface CVadjCheckPointRec
  module procedure swigf_create_CVadjCheckPointRec
 end interface
 public :: FCVodeGetAdjCheckPointsInfo
 public :: FCVodeSetJacTimesRhsFnB
 public :: FCVodeGetAdjDataPointHermite
 public :: FCVodeGetAdjDataPointPolynomial
 public :: FCVodeGetAdjCurrentCheckPoint
 public :: FCVBandPrecInit
 public :: FCVBandPrecGetWorkSpace
 public :: FCVBandPrecGetNumRhsEvals
 public :: FCVBandPrecInitB
 public :: FCVBBDPrecInit
 public :: FCVBBDPrecReInit
 public :: FCVBBDPrecGetWorkSpace
 public :: FCVBBDPrecGetNumGfnEvals
 public :: FCVBBDPrecInitB
 public :: FCVBBDPrecReInitB
 integer(C_INT), parameter, public :: CVDIAG_SUCCESS = 0_C_INT
 integer(C_INT), parameter, public :: CVDIAG_MEM_NULL = -1_C_INT
 integer(C_INT), parameter, public :: CVDIAG_LMEM_NULL = -2_C_INT
 integer(C_INT), parameter, public :: CVDIAG_ILL_INPUT = -3_C_INT
 integer(C_INT), parameter, public :: CVDIAG_MEM_FAIL = -4_C_INT
 integer(C_INT), parameter, public :: CVDIAG_INV_FAIL = -5_C_INT
 integer(C_INT), parameter, public :: CVDIAG_RHSFUNC_UNRECVR = -6_C_INT
 integer(C_INT), parameter, public :: CVDIAG_RHSFUNC_RECVR = -7_C_INT
 integer(C_INT), parameter, public :: CVDIAG_NO_ADJ = -101_C_INT
 public :: FCVDiag
 public :: FCVDiagGetWorkSpace
 public :: FCVDiagGetNumRhsEvals
 public :: FCVDiagGetLastFlag
 public :: FCVDiagGetReturnFlagName
 public :: FCVDiagB
 integer(C_INT), parameter, public :: CVLS_SUCCESS = 0_C_INT
 integer(C_INT), parameter, public :: CVLS_MEM_NULL = -1_C_INT
 integer(C_INT), parameter, public :: CVLS_LMEM_NULL = -2_C_INT
 integer(C_INT), parameter, public :: CVLS_ILL_INPUT = -3_C_INT
 integer(C_INT), parameter, public :: CVLS_MEM_FAIL = -4_C_INT
 integer(C_INT), parameter, public :: CVLS_PMEM_NULL = -5_C_INT
 integer(C_INT), parameter, public :: CVLS_JACFUNC_UNRECVR = -6_C_INT
 integer(C_INT), parameter, public :: CVLS_JACFUNC_RECVR = -7_C_INT
 integer(C_INT), parameter, public :: CVLS_SUNMAT_FAIL = -8_C_INT
 integer(C_INT), parameter, public :: CVLS_SUNLS_FAIL = -9_C_INT
 integer(C_INT), parameter, public :: CVLS_NO_ADJ = -101_C_INT
 integer(C_INT), parameter, public :: CVLS_LMEMB_NULL = -102_C_INT
 public :: FCVodeSetLinearSolver
 public :: FCVodeSetJacFn
 public :: FCVodeSetJacEvalFrequency
 public :: FCVodeSetLinearSolutionScaling
 public :: FCVodeSetDeltaGammaMaxBadJac
 public :: FCVodeSetEpsLin
 public :: FCVodeSetLSNormFactor
 public :: FCVodeSetPreconditioner
 public :: FCVodeSetJacTimes
 public :: FCVodeSetLinSysFn
 public :: FCVodeGetJac
 public :: FCVodeGetJacTime
 public :: FCVodeGetJacNumSteps
 public :: FCVodeGetLinWorkSpace
 public :: FCVodeGetNumJacEvals
 public :: FCVodeGetNumPrecEvals
 public :: FCVodeGetNumPrecSolves
 public :: FCVodeGetNumLinIters
 public :: FCVodeGetNumLinConvFails
 public :: FCVodeGetNumJTSetupEvals
 public :: FCVodeGetNumJtimesEvals
 public :: FCVodeGetNumLinRhsEvals
 public :: FCVodeGetLinSolveStats
 public :: FCVodeGetLastLinFlag
 public :: FCVodeGetLinReturnFlagName
 public :: FCVodeSetLinearSolverB
 public :: FCVodeSetJacFnB
 public :: FCVodeSetJacFnBS
 public :: FCVodeSetEpsLinB
 public :: FCVodeSetLSNormFactorB
 public :: FCVodeSetLinearSolutionScalingB
 public :: FCVodeSetPreconditionerB
 public :: FCVodeSetPreconditionerBS
 public :: FCVodeSetJacTimesB
 public :: FCVodeSetJacTimesBS
 public :: FCVodeSetLinSysFnB
 public :: FCVodeSetLinSysFnBS

! WRAPPER DECLARATIONS
interface
function swigc_FCVodeCreate(farg1, farg2) &
bind(C, name="_wrap_FCVodeCreate") &
result(fresult)
use, intrinsic :: ISO_C_BINDING
integer(C_INT), intent(in) :: farg1
type(C_PTR), value :: farg2
type(C_PTR) :: fresult
end function

function swigc_FCVodeInit(farg1, farg2, farg3, farg4) &
bind(C, name="_wrap_FCVodeInit") &
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
integer(C_INT) :: fresult
end function

function swigc_FCVodeReInit(farg1, farg2, farg3) &
bind(C, name="_wrap_FCVodeReInit") &
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_FCVodeSStolerances(farg1, farg2, farg3) &
bind(C, name="_wrap_FCVodeSStolerances") &
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_FCVodeSVtolerances(farg1, farg2, farg3) &
bind(C, name="_wrap_FCVodeSVtolerances") &
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_FCVodeWFtolerances(farg1, farg2) &
bind(C, name="_wrap_FCVodeWFtolerances") &
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_FCVodeSetConstraints(farg1, farg2) &
bind(C, name="_wrap_FCVodeSetConstraints") &
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_FCVodeSetDeltaGammaMaxLSetup(farg1, farg2) &
bind(C, name="_wrap_FCVodeSetDeltaGammaMaxLSetup") &
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_FCVodeSetInitStep(farg1, farg2) &
bind(C, name="_wrap_FCVodeSetInitStep") &
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_FCVodeSetLSetupFrequency(farg1, farg2) &
bind(C, name="_wrap_FCVodeSetLSetupFrequency") &
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_FCVodeSetMaxConvFails(farg1, farg2) &
bind(C, name="_wrap_FCVodeSetMaxConvFails") &
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_FCVodeSetMaxErrTestFails(farg1, farg2) &
bind(C, name="_wrap_FCVodeSetMaxErrTestFails") &
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_FCVodeSetMaxHnilWarns(farg1, farg2) &
bind(C, name="_wrap_FCVodeSetMaxHnilWarns") &
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_FCVodeSetMaxNonlinIters(farg1, farg2) &
bind(C, name="_wrap_FCVodeSetMaxNonlinIters") &
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_FCVodeSetMaxNumSteps(farg1, farg2) &
bind(C, name="_wrap_FCVodeSetMaxNumSteps") &
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_FCVodeSetMaxOrd(farg1, farg2) &
bind(C, name="_wrap_FCVodeSetMaxOrd") &
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_FCVodeSetMaxStep(farg1, farg2) &
bind(C, name="_wrap_FCVodeSetMaxStep") &
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_FCVodeSetMinStep(farg1, farg2) &
bind(C, name="_wrap_FCVodeSetMinStep") &
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_FCVodeSetMonitorFn(farg1, farg2) &
bind(C, name="_wrap_FCVodeSetMonitorFn") &
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_FCVodeSetMonitorFrequency(farg1, farg2) &
bind(C, name="_wrap_FCVodeSetMonitorFrequency") &
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_FCVodeSetNlsRhsFn(farg1, farg2) &
bind(C, name="_wrap_FCVodeSetNlsRhsFn") &
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_FCVodeSetNonlinConvCoef(farg1, farg2) &
bind(C, name="_wrap_FCVodeSetNonlinConvCoef") &
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_FCVodeSetNonlinearSolver(farg1, farg2) &
bind(C, name="_wrap_FCVodeSetNonlinearSolver") &
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_FCVodeSetStabLimDet(farg1, farg2) &
bind(C, name="_wrap_FCVodeSetStabLimDet") &
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_FCVodeSetStopTime(farg1, farg2) &
bind(C, name="_wrap_FCVodeSetStopTime") &
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_FCVodeSetInterpolateStopTime(farg1, farg2) &
bind(C, name="_wrap_FCVodeSetInterpolateStopTime") &
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_FCVodeClearStopTime(farg1) &
bind(C, name="_wrap_FCVodeClearStopTime") &
result(fresult)
use, intrinsic :: ISO_C_BINDING
type(C_PTR), value :: farg1
integer(C_INT) :: fresult
end function

function swigc_FCVodeSetUserData(farg1, farg2) &
bind(C, name="_wrap_FCVodeSetUserData") &
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_FCVodeSetEtaFixedStepBounds(farg1, farg2, farg3) &
bind(C, name="_wrap_FCVodeSetEtaFixedStepBounds") &
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_FCVodeSetEtaMaxFirstStep(farg1, farg2) &
bind(C, name="_wrap_FCVodeSetEtaMaxFirstStep") &
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_FCVodeSetEtaMaxEarlyStep(farg1, farg2) &
bind(C, name="_wrap_FCVodeSetEtaMaxEarlyStep") &
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_FCVodeSetNumStepsEtaMaxEarlyStep(farg1, farg2) &
bind(C, name="_wrap_FCVodeSetNumStepsEtaMaxEarlyStep") &
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_FCVodeSetEtaMax(farg1, farg2) &
bind(C, name="_wrap_FCVodeSetEtaMax") &
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_FCVodeSetEtaMin(farg1, farg2) &
bind(C, name="_wrap_FCVodeSetEtaMin") &
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_FCVodeSetEtaMinErrFail(farg1, farg2) &
bind(C, name="_wrap_FCVodeSetEtaMinErrFail") &
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_FCVodeSetEtaMaxErrFail(farg1, farg2) &
bind(C, name="_wrap_FCVodeSetEtaMaxErrFail") &
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_FCVodeSetNumFailsEtaMaxErrFail(farg1, farg2) &
bind(C, name="_wrap_FCVodeSetNumFailsEtaMaxErrFail") &
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_FCVodeSetEtaConvFail(farg1, farg2) &
bind(C, name="_wrap_FCVodeSetEtaConvFail") &
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_FCVodeRootInit(farg1, farg2, farg3) &
bind(C, name="_wrap_FCVodeRootInit") &
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_FCVodeSetRootDirection(farg1, farg2) &
bind(C, name="_wrap_FCVodeSetRootDirection") &
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_FCVodeSetNoInactiveRootWarn(farg1) &
bind(C, name="_wrap_FCVodeSetNoInactiveRootWarn") &
result(fresult)
use, intrinsic :: ISO_C_BINDING
type(C_PTR), value :: farg1
integer(C_INT) :: fresult
end function

function swigc_FCVode(farg1, farg2, farg3, farg4, farg5) &
bind(C, name="_wrap_FCVode") &
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), intent(in) :: farg5
integer(C_INT) :: fresult
end function

function swigc_FCVodeComputeState(farg1, farg2, farg3) &
bind(C, name="_wrap_FCVodeComputeState") &
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_FCVodeComputeStateSens(farg1, farg2, farg3) &
bind(C, name="_wrap_FCVodeComputeStateSens") &
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_FCVodeComputeStateSens1(farg1, farg2, farg3, farg4) &
bind(C, name="_wrap_FCVodeComputeStateSens1") &
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_FCVodeGetDky(farg1, farg2, farg3, farg4) &
bind(C, name="_wrap_FCVodeGetDky") &
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_FCVodeGetWorkSpace(farg1, farg2, farg3) &
bind(C, name="_wrap_FCVodeGetWorkSpace") &
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_FCVodeGetNumSteps(farg1, farg2) &
bind(C, name="_wrap_FCVodeGetNumSteps") &
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_FCVodeGetNumRhsEvals(farg1, farg2) &
bind(C, name="_wrap_FCVodeGetNumRhsEvals") &
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_FCVodeGetNumLinSolvSetups(farg1, farg2) &
bind(C, name="_wrap_FCVodeGetNumLinSolvSetups") &
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_FCVodeGetNumErrTestFails(farg1, farg2) &
bind(C, name="_wrap_FCVodeGetNumErrTestFails") &
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_FCVodeGetLastOrder(farg1, farg2) &
bind(C, name="_wrap_FCVodeGetLastOrder") &
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_FCVodeGetCurrentOrder(farg1, farg2) &
bind(C, name="_wrap_FCVodeGetCurrentOrder") &
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_FCVodeGetCurrentGamma(farg1, farg2) &
bind(C, name="_wrap_FCVodeGetCurrentGamma") &
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_FCVodeGetNumStabLimOrderReds(farg1, farg2) &
bind(C, name="_wrap_FCVodeGetNumStabLimOrderReds") &
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_FCVodeGetActualInitStep(farg1, farg2) &
bind(C, name="_wrap_FCVodeGetActualInitStep") &
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_FCVodeGetLastStep(farg1, farg2) &
bind(C, name="_wrap_FCVodeGetLastStep") &
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_FCVodeGetCurrentStep(farg1, farg2) &
bind(C, name="_wrap_FCVodeGetCurrentStep") &
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_FCVodeGetCurrentState(farg1, farg2) &
bind(C, name="_wrap_FCVodeGetCurrentState") &
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_FCVodeGetCurrentStateSens(farg1, farg2) &
bind(C, name="_wrap_FCVodeGetCurrentStateSens") &
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_FCVodeGetCurrentSensSolveIndex(farg1, farg2) &
bind(C, name="_wrap_FCVodeGetCurrentSensSolveIndex") &
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_FCVodeGetCurrentTime(farg1, farg2) &
bind(C, name="_wrap_FCVodeGetCurrentTime") &
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_FCVodeGetTolScaleFactor(farg1, farg2) &
bind(C, name="_wrap_FCVodeGetTolScaleFactor") &
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_FCVodeGetErrWeights(farg1, farg2) &
bind(C, name="_wrap_FCVodeGetErrWeights") &
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_FCVodeGetEstLocalErrors(farg1, farg2) &
bind(C, name="_wrap_FCVodeGetEstLocalErrors") &
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_FCVodeGetNumGEvals(farg1, farg2) &
bind(C, name="_wrap_FCVodeGetNumGEvals") &
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_FCVodeGetRootInfo(farg1, farg2) &
bind(C, name="_wrap_FCVodeGetRootInfo") &
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_FCVodeGetIntegratorStats(farg1, farg2, farg3, farg4, farg5, farg6, farg7, farg8, farg9, farg10, farg11) &
bind(C, name="_wrap_FCVodeGetIntegratorStats") &
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_FCVodeGetNonlinearSystemData(farg1, farg2, farg3, farg4, farg5, farg6, farg7, farg8, farg9) &
bind(C, name="_wrap_FCVodeGetNonlinearSystemData") &
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_FCVodeGetNonlinearSystemDataSens(farg1, farg2, farg3, farg4, farg5, farg6, farg7, farg8) &
bind(C, name="_wrap_FCVodeGetNonlinearSystemDataSens") &
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_FCVodeGetNumNonlinSolvIters(farg1, farg2) &
bind(C, name="_wrap_FCVodeGetNumNonlinSolvIters") &
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_FCVodeGetNumNonlinSolvConvFails(farg1, farg2) &
bind(C, name="_wrap_FCVodeGetNumNonlinSolvConvFails") &
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_FCVodeGetNonlinSolvStats(farg1, farg2, farg3) &
bind(C, name="_wrap_FCVodeGetNonlinSolvStats") &
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_FCVodeGetNumStepSolveFails(farg1, farg2) &
bind(C, name="_wrap_FCVodeGetNumStepSolveFails") &
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_FCVodeGetUserData(farg1, farg2) &
bind(C, name="_wrap_FCVodeGetUserData") &
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_FCVodePrintAllStats(farg1, farg2, farg3) &
bind(C, name="_wrap_FCVodePrintAllStats") &
result(fresult)
use, intrinsic :: ISO_C_BINDING
type(C_PTR), value :: farg1
type(C_PTR), value :: farg2
integer(C_INT), intent(in) :: 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_FCVodeGetReturnFlagName(farg1) &
bind(C, name="_wrap_FCVodeGetReturnFlagName") &
result(fresult)
use, intrinsic :: ISO_C_BINDING
import :: swigarraywrapper
integer(C_LONG), intent(in) :: farg1
type(SwigArrayWrapper) :: fresult
end function

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

function swigc_FCVodeSetJacTimesRhsFn(farg1, farg2) &
bind(C, name="_wrap_FCVodeSetJacTimesRhsFn") &
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_FCVodeQuadInit(farg1, farg2, farg3) &
bind(C, name="_wrap_FCVodeQuadInit") &
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_FCVodeQuadReInit(farg1, farg2) &
bind(C, name="_wrap_FCVodeQuadReInit") &
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_FCVodeQuadSStolerances(farg1, farg2, farg3) &
bind(C, name="_wrap_FCVodeQuadSStolerances") &
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_FCVodeQuadSVtolerances(farg1, farg2, farg3) &
bind(C, name="_wrap_FCVodeQuadSVtolerances") &
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_FCVodeSetQuadErrCon(farg1, farg2) &
bind(C, name="_wrap_FCVodeSetQuadErrCon") &
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_FCVodeGetQuad(farg1, farg2, farg3) &
bind(C, name="_wrap_FCVodeGetQuad") &
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_FCVodeGetQuadDky(farg1, farg2, farg3, farg4) &
bind(C, name="_wrap_FCVodeGetQuadDky") &
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_FCVodeGetQuadNumRhsEvals(farg1, farg2) &
bind(C, name="_wrap_FCVodeGetQuadNumRhsEvals") &
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_FCVodeGetQuadNumErrTestFails(farg1, farg2) &
bind(C, name="_wrap_FCVodeGetQuadNumErrTestFails") &
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_FCVodeGetQuadErrWeights(farg1, farg2) &
bind(C, name="_wrap_FCVodeGetQuadErrWeights") &
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_FCVodeGetQuadStats(farg1, farg2, farg3) &
bind(C, name="_wrap_FCVodeGetQuadStats") &
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_FCVodeQuadFree(farg1) &
bind(C, name="_wrap_FCVodeQuadFree")
use, intrinsic :: ISO_C_BINDING
type(C_PTR), value :: farg1
end subroutine

function swigc_FCVodeSensInit(farg1, farg2, farg3, farg4, farg5) &
bind(C, name="_wrap_FCVodeSensInit") &
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
integer(C_INT) :: fresult
end function

function swigc_FCVodeSensInit1(farg1, farg2, farg3, farg4, farg5) &
bind(C, name="_wrap_FCVodeSensInit1") &
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
integer(C_INT) :: fresult
end function

function swigc_FCVodeSensReInit(farg1, farg2, farg3) &
bind(C, name="_wrap_FCVodeSensReInit") &
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_FCVodeSensSStolerances(farg1, farg2, farg3) &
bind(C, name="_wrap_FCVodeSensSStolerances") &
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_FCVodeSensSVtolerances(farg1, farg2, farg3) &
bind(C, name="_wrap_FCVodeSensSVtolerances") &
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_FCVodeSensEEtolerances(farg1) &
bind(C, name="_wrap_FCVodeSensEEtolerances") &
result(fresult)
use, intrinsic :: ISO_C_BINDING
type(C_PTR), value :: farg1
integer(C_INT) :: fresult
end function

function swigc_FCVodeSetSensDQMethod(farg1, farg2, farg3) &
bind(C, name="_wrap_FCVodeSetSensDQMethod") &
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_FCVodeSetSensErrCon(farg1, farg2) &
bind(C, name="_wrap_FCVodeSetSensErrCon") &
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_FCVodeSetSensMaxNonlinIters(farg1, farg2) &
bind(C, name="_wrap_FCVodeSetSensMaxNonlinIters") &
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_FCVodeSetSensParams(farg1, farg2, farg3, farg4) &
bind(C, name="_wrap_FCVodeSetSensParams") &
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_FCVodeSetNonlinearSolverSensSim(farg1, farg2) &
bind(C, name="_wrap_FCVodeSetNonlinearSolverSensSim") &
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_FCVodeSetNonlinearSolverSensStg(farg1, farg2) &
bind(C, name="_wrap_FCVodeSetNonlinearSolverSensStg") &
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_FCVodeSetNonlinearSolverSensStg1(farg1, farg2) &
bind(C, name="_wrap_FCVodeSetNonlinearSolverSensStg1") &
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_FCVodeSensToggleOff(farg1) &
bind(C, name="_wrap_FCVodeSensToggleOff") &
result(fresult)
use, intrinsic :: ISO_C_BINDING
type(C_PTR), value :: farg1
integer(C_INT) :: fresult
end function

function swigc_FCVodeGetSens(farg1, farg2, farg3) &
bind(C, name="_wrap_FCVodeGetSens") &
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_FCVodeGetSens1(farg1, farg2, farg3, farg4) &
bind(C, name="_wrap_FCVodeGetSens1") &
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_FCVodeGetSensDky(farg1, farg2, farg3, farg4) &
bind(C, name="_wrap_FCVodeGetSensDky") &
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_FCVodeGetSensDky1(farg1, farg2, farg3, farg4, farg5) &
bind(C, name="_wrap_FCVodeGetSensDky1") &
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_FCVodeGetSensNumRhsEvals(farg1, farg2) &
bind(C, name="_wrap_FCVodeGetSensNumRhsEvals") &
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_FCVodeGetNumRhsEvalsSens(farg1, farg2) &
bind(C, name="_wrap_FCVodeGetNumRhsEvalsSens") &
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_FCVodeGetSensNumErrTestFails(farg1, farg2) &
bind(C, name="_wrap_FCVodeGetSensNumErrTestFails") &
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_FCVodeGetSensNumLinSolvSetups(farg1, farg2) &
bind(C, name="_wrap_FCVodeGetSensNumLinSolvSetups") &
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_FCVodeGetSensErrWeights(farg1, farg2) &
bind(C, name="_wrap_FCVodeGetSensErrWeights") &
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_FCVodeGetSensStats(farg1, farg2, farg3, farg4, farg5) &
bind(C, name="_wrap_FCVodeGetSensStats") &
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_FCVodeGetSensNumNonlinSolvIters(farg1, farg2) &
bind(C, name="_wrap_FCVodeGetSensNumNonlinSolvIters") &
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_FCVodeGetSensNumNonlinSolvConvFails(farg1, farg2) &
bind(C, name="_wrap_FCVodeGetSensNumNonlinSolvConvFails") &
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_FCVodeGetSensNonlinSolvStats(farg1, farg2, farg3) &
bind(C, name="_wrap_FCVodeGetSensNonlinSolvStats") &
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_FCVodeGetNumStepSensSolveFails(farg1, farg2) &
bind(C, name="_wrap_FCVodeGetNumStepSensSolveFails") &
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_FCVodeGetStgrSensNumNonlinSolvIters(farg1, farg2) &
bind(C, name="_wrap_FCVodeGetStgrSensNumNonlinSolvIters") &
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_FCVodeGetStgrSensNumNonlinSolvConvFails(farg1, farg2) &
bind(C, name="_wrap_FCVodeGetStgrSensNumNonlinSolvConvFails") &
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_FCVodeGetStgrSensNonlinSolvStats(farg1, farg2, farg3) &
bind(C, name="_wrap_FCVodeGetStgrSensNonlinSolvStats") &
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_FCVodeGetNumStepStgrSensSolveFails(farg1, farg2) &
bind(C, name="_wrap_FCVodeGetNumStepStgrSensSolveFails") &
result(fresult)
use, intrinsic :: ISO_C_BINDING
type(C_PTR), value :: farg1
type(C_PTR), value :: farg2
integer(C_INT) :: fresult
end function

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

function swigc_FCVodeQuadSensInit(farg1, farg2, farg3) &
bind(C, name="_wrap_FCVodeQuadSensInit") &
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_FCVodeQuadSensReInit(farg1, farg2) &
bind(C, name="_wrap_FCVodeQuadSensReInit") &
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_FCVodeQuadSensSStolerances(farg1, farg2, farg3) &
bind(C, name="_wrap_FCVodeQuadSensSStolerances") &
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_FCVodeQuadSensSVtolerances(farg1, farg2, farg3) &
bind(C, name="_wrap_FCVodeQuadSensSVtolerances") &
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_FCVodeQuadSensEEtolerances(farg1) &
bind(C, name="_wrap_FCVodeQuadSensEEtolerances") &
result(fresult)
use, intrinsic :: ISO_C_BINDING
type(C_PTR), value :: farg1
integer(C_INT) :: fresult
end function

function swigc_FCVodeSetQuadSensErrCon(farg1, farg2) &
bind(C, name="_wrap_FCVodeSetQuadSensErrCon") &
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_FCVodeGetQuadSens(farg1, farg2, farg3) &
bind(C, name="_wrap_FCVodeGetQuadSens") &
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_FCVodeGetQuadSens1(farg1, farg2, farg3, farg4) &
bind(C, name="_wrap_FCVodeGetQuadSens1") &
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_FCVodeGetQuadSensDky(farg1, farg2, farg3, farg4) &
bind(C, name="_wrap_FCVodeGetQuadSensDky") &
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_FCVodeGetQuadSensDky1(farg1, farg2, farg3, farg4, farg5) &
bind(C, name="_wrap_FCVodeGetQuadSensDky1") &
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_FCVodeGetQuadSensNumRhsEvals(farg1, farg2) &
bind(C, name="_wrap_FCVodeGetQuadSensNumRhsEvals") &
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_FCVodeGetQuadSensNumErrTestFails(farg1, farg2) &
bind(C, name="_wrap_FCVodeGetQuadSensNumErrTestFails") &
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_FCVodeGetQuadSensErrWeights(farg1, farg2) &
bind(C, name="_wrap_FCVodeGetQuadSensErrWeights") &
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_FCVodeGetQuadSensStats(farg1, farg2, farg3) &
bind(C, name="_wrap_FCVodeGetQuadSensStats") &
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_FCVodeQuadSensFree(farg1) &
bind(C, name="_wrap_FCVodeQuadSensFree")
use, intrinsic :: ISO_C_BINDING
type(C_PTR), value :: farg1
end subroutine

function swigc_FCVodeAdjInit(farg1, farg2, farg3) &
bind(C, name="_wrap_FCVodeAdjInit") &
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_FCVodeAdjReInit(farg1) &
bind(C, name="_wrap_FCVodeAdjReInit") &
result(fresult)
use, intrinsic :: ISO_C_BINDING
type(C_PTR), value :: farg1
integer(C_INT) :: fresult
end function

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

function swigc_FCVodeCreateB(farg1, farg2, farg3) &
bind(C, name="_wrap_FCVodeCreateB") &
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_FCVodeInitB(farg1, farg2, farg3, farg4, farg5) &
bind(C, name="_wrap_FCVodeInitB") &
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
integer(C_INT) :: fresult
end function

function swigc_FCVodeInitBS(farg1, farg2, farg3, farg4, farg5) &
bind(C, name="_wrap_FCVodeInitBS") &
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
integer(C_INT) :: fresult
end function

function swigc_FCVodeReInitB(farg1, farg2, farg3, farg4) &
bind(C, name="_wrap_FCVodeReInitB") &
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_FCVodeSStolerancesB(farg1, farg2, farg3, farg4) &
bind(C, name="_wrap_FCVodeSStolerancesB") &
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_FCVodeSVtolerancesB(farg1, farg2, farg3, farg4) &
bind(C, name="_wrap_FCVodeSVtolerancesB") &
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_FCVodeQuadInitB(farg1, farg2, farg3, farg4) &
bind(C, name="_wrap_FCVodeQuadInitB") &
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_FCVodeQuadInitBS(farg1, farg2, farg3, farg4) &
bind(C, name="_wrap_FCVodeQuadInitBS") &
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_FCVodeQuadReInitB(farg1, farg2, farg3) &
bind(C, name="_wrap_FCVodeQuadReInitB") &
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_FCVodeQuadSStolerancesB(farg1, farg2, farg3, farg4) &
bind(C, name="_wrap_FCVodeQuadSStolerancesB") &
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_FCVodeQuadSVtolerancesB(farg1, farg2, farg3, farg4) &
bind(C, name="_wrap_FCVodeQuadSVtolerancesB") &
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_FCVodeF(farg1, farg2, farg3, farg4, farg5, farg6) &
bind(C, name="_wrap_FCVodeF") &
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), intent(in) :: farg5
type(C_PTR), value :: farg6
integer(C_INT) :: fresult
end function

function swigc_FCVodeB(farg1, farg2, farg3) &
bind(C, name="_wrap_FCVodeB") &
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_FCVodeSetAdjNoSensi(farg1) &
bind(C, name="_wrap_FCVodeSetAdjNoSensi") &
result(fresult)
use, intrinsic :: ISO_C_BINDING
type(C_PTR), value :: farg1
integer(C_INT) :: fresult
end function

function swigc_FCVodeSetUserDataB(farg1, farg2, farg3) &
bind(C, name="_wrap_FCVodeSetUserDataB") &
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_FCVodeSetMaxOrdB(farg1, farg2, farg3) &
bind(C, name="_wrap_FCVodeSetMaxOrdB") &
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_FCVodeSetMaxNumStepsB(farg1, farg2, farg3) &
bind(C, name="_wrap_FCVodeSetMaxNumStepsB") &
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_FCVodeSetStabLimDetB(farg1, farg2, farg3) &
bind(C, name="_wrap_FCVodeSetStabLimDetB") &
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_FCVodeSetInitStepB(farg1, farg2, farg3) &
bind(C, name="_wrap_FCVodeSetInitStepB") &
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_FCVodeSetMinStepB(farg1, farg2, farg3) &
bind(C, name="_wrap_FCVodeSetMinStepB") &
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_FCVodeSetMaxStepB(farg1, farg2, farg3) &
bind(C, name="_wrap_FCVodeSetMaxStepB") &
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_FCVodeSetConstraintsB(farg1, farg2, farg3) &
bind(C, name="_wrap_FCVodeSetConstraintsB") &
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_FCVodeSetQuadErrConB(farg1, farg2, farg3) &
bind(C, name="_wrap_FCVodeSetQuadErrConB") &
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_FCVodeSetNonlinearSolverB(farg1, farg2, farg3) &
bind(C, name="_wrap_FCVodeSetNonlinearSolverB") &
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_FCVodeGetB(farg1, farg2, farg3, farg4) &
bind(C, name="_wrap_FCVodeGetB") &
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_FCVodeGetQuadB(farg1, farg2, farg3, farg4) &
bind(C, name="_wrap_FCVodeGetQuadB") &
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_FCVodeGetAdjCVodeBmem(farg1, farg2) &
bind(C, name="_wrap_FCVodeGetAdjCVodeBmem") &
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_FCVodeGetAdjY(farg1, farg2, farg3) &
bind(C, name="_wrap_FCVodeGetAdjY") &
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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

function swigc_FCVodeGetAdjCheckPointsInfo(farg1, farg2) &
bind(C, name="_wrap_FCVodeGetAdjCheckPointsInfo") &
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_FCVodeSetJacTimesRhsFnB(farg1, farg2, farg3) &
bind(C, name="_wrap_FCVodeSetJacTimesRhsFnB") &
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_FCVodeGetAdjDataPointHermite(farg1, farg2, farg3, farg4, farg5) &
bind(C, name="_wrap_FCVodeGetAdjDataPointHermite") &
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_FCVodeGetAdjDataPointPolynomial(farg1, farg2, farg3, farg4, farg5) &
bind(C, name="_wrap_FCVodeGetAdjDataPointPolynomial") &
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_FCVodeGetAdjCurrentCheckPoint(farg1, farg2) &
bind(C, name="_wrap_FCVodeGetAdjCurrentCheckPoint") &
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_FCVBandPrecInit(farg1, farg2, farg3, farg4) &
bind(C, name="_wrap_FCVBandPrecInit") &
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_INT) :: fresult
end function

function swigc_FCVBandPrecGetWorkSpace(farg1, farg2, farg3) &
bind(C, name="_wrap_FCVBandPrecGetWorkSpace") &
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_FCVBandPrecGetNumRhsEvals(farg1, farg2) &
bind(C, name="_wrap_FCVBandPrecGetNumRhsEvals") &
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_FCVBandPrecInitB(farg1, farg2, farg3, farg4, farg5) &
bind(C, name="_wrap_FCVBandPrecInitB") &
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_INT) :: fresult
end function

function swigc_FCVBBDPrecInit(farg1, farg2, farg3, farg4, farg5, farg6, farg7, farg8, farg9) &
bind(C, name="_wrap_FCVBBDPrecInit") &
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_FCVBBDPrecReInit(farg1, farg2, farg3, farg4) &
bind(C, name="_wrap_FCVBBDPrecReInit") &
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_FCVBBDPrecGetWorkSpace(farg1, farg2, farg3) &
bind(C, name="_wrap_FCVBBDPrecGetWorkSpace") &
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_FCVBBDPrecGetNumGfnEvals(farg1, farg2) &
bind(C, name="_wrap_FCVBBDPrecGetNumGfnEvals") &
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_FCVBBDPrecInitB(farg1, farg2, farg3, farg4, farg5, farg6, farg7, farg8, farg9, farg10) &
bind(C, name="_wrap_FCVBBDPrecInitB") &
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_FCVBBDPrecReInitB(farg1, farg2, farg3, farg4, farg5) &
bind(C, name="_wrap_FCVBBDPrecReInitB") &
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_FCVDiag(farg1) &
bind(C, name="_wrap_FCVDiag") &
result(fresult)
use, intrinsic :: ISO_C_BINDING
type(C_PTR), value :: farg1
integer(C_INT) :: fresult
end function

function swigc_FCVDiagGetWorkSpace(farg1, farg2, farg3) &
bind(C, name="_wrap_FCVDiagGetWorkSpace") &
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_FCVDiagGetNumRhsEvals(farg1, farg2) &
bind(C, name="_wrap_FCVDiagGetNumRhsEvals") &
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_FCVDiagGetLastFlag(farg1, farg2) &
bind(C, name="_wrap_FCVDiagGetLastFlag") &
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_FCVDiagGetReturnFlagName(farg1) &
bind(C, name="_wrap_FCVDiagGetReturnFlagName") &
result(fresult)
use, intrinsic :: ISO_C_BINDING
import :: swigarraywrapper
integer(C_LONG), intent(in) :: farg1
type(SwigArrayWrapper) :: fresult
end function

function swigc_FCVDiagB(farg1, farg2) &
bind(C, name="_wrap_FCVDiagB") &
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_FCVodeSetLinearSolver(farg1, farg2, farg3) &
bind(C, name="_wrap_FCVodeSetLinearSolver") &
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_FCVodeSetJacFn(farg1, farg2) &
bind(C, name="_wrap_FCVodeSetJacFn") &
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_FCVodeSetJacEvalFrequency(farg1, farg2) &
bind(C, name="_wrap_FCVodeSetJacEvalFrequency") &
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_FCVodeSetLinearSolutionScaling(farg1, farg2) &
bind(C, name="_wrap_FCVodeSetLinearSolutionScaling") &
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_FCVodeSetDeltaGammaMaxBadJac(farg1, farg2) &
bind(C, name="_wrap_FCVodeSetDeltaGammaMaxBadJac") &
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_FCVodeSetEpsLin(farg1, farg2) &
bind(C, name="_wrap_FCVodeSetEpsLin") &
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_FCVodeSetLSNormFactor(farg1, farg2) &
bind(C, name="_wrap_FCVodeSetLSNormFactor") &
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_FCVodeSetPreconditioner(farg1, farg2, farg3) &
bind(C, name="_wrap_FCVodeSetPreconditioner") &
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_FCVodeSetJacTimes(farg1, farg2, farg3) &
bind(C, name="_wrap_FCVodeSetJacTimes") &
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_FCVodeSetLinSysFn(farg1, farg2) &
bind(C, name="_wrap_FCVodeSetLinSysFn") &
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_FCVodeGetJac(farg1, farg2) &
bind(C, name="_wrap_FCVodeGetJac") &
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_FCVodeGetJacTime(farg1, farg2) &
bind(C, name="_wrap_FCVodeGetJacTime") &
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_FCVodeGetJacNumSteps(farg1, farg2) &
bind(C, name="_wrap_FCVodeGetJacNumSteps") &
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_FCVodeGetLinWorkSpace(farg1, farg2, farg3) &
bind(C, name="_wrap_FCVodeGetLinWorkSpace") &
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_FCVodeGetNumJacEvals(farg1, farg2) &
bind(C, name="_wrap_FCVodeGetNumJacEvals") &
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_FCVodeGetNumPrecEvals(farg1, farg2) &
bind(C, name="_wrap_FCVodeGetNumPrecEvals") &
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_FCVodeGetNumPrecSolves(farg1, farg2) &
bind(C, name="_wrap_FCVodeGetNumPrecSolves") &
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_FCVodeGetNumLinIters(farg1, farg2) &
bind(C, name="_wrap_FCVodeGetNumLinIters") &
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_FCVodeGetNumLinConvFails(farg1, farg2) &
bind(C, name="_wrap_FCVodeGetNumLinConvFails") &
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_FCVodeGetNumJTSetupEvals(farg1, farg2) &
bind(C, name="_wrap_FCVodeGetNumJTSetupEvals") &
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_FCVodeGetNumJtimesEvals(farg1, farg2) &
bind(C, name="_wrap_FCVodeGetNumJtimesEvals") &
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_FCVodeGetNumLinRhsEvals(farg1, farg2) &
bind(C, name="_wrap_FCVodeGetNumLinRhsEvals") &
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_FCVodeGetLinSolveStats(farg1, farg2, farg3, farg4, farg5, farg6, farg7, farg8, farg9) &
bind(C, name="_wrap_FCVodeGetLinSolveStats") &
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_FCVodeGetLastLinFlag(farg1, farg2) &
bind(C, name="_wrap_FCVodeGetLastLinFlag") &
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_FCVodeGetLinReturnFlagName(farg1) &
bind(C, name="_wrap_FCVodeGetLinReturnFlagName") &
result(fresult)
use, intrinsic :: ISO_C_BINDING
import :: swigarraywrapper
integer(C_LONG), intent(in) :: farg1
type(SwigArrayWrapper) :: fresult
end function

function swigc_FCVodeSetLinearSolverB(farg1, farg2, farg3, farg4) &
bind(C, name="_wrap_FCVodeSetLinearSolverB") &
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_FCVodeSetJacFnB(farg1, farg2, farg3) &
bind(C, name="_wrap_FCVodeSetJacFnB") &
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_FCVodeSetJacFnBS(farg1, farg2, farg3) &
bind(C, name="_wrap_FCVodeSetJacFnBS") &
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_FCVodeSetEpsLinB(farg1, farg2, farg3) &
bind(C, name="_wrap_FCVodeSetEpsLinB") &
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_FCVodeSetLSNormFactorB(farg1, farg2, farg3) &
bind(C, name="_wrap_FCVodeSetLSNormFactorB") &
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_FCVodeSetLinearSolutionScalingB(farg1, farg2, farg3) &
bind(C, name="_wrap_FCVodeSetLinearSolutionScalingB") &
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_FCVodeSetPreconditionerB(farg1, farg2, farg3, farg4) &
bind(C, name="_wrap_FCVodeSetPreconditionerB") &
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_FCVodeSetPreconditionerBS(farg1, farg2, farg3, farg4) &
bind(C, name="_wrap_FCVodeSetPreconditionerBS") &
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_FCVodeSetJacTimesB(farg1, farg2, farg3, farg4) &
bind(C, name="_wrap_FCVodeSetJacTimesB") &
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_FCVodeSetJacTimesBS(farg1, farg2, farg3, farg4) &
bind(C, name="_wrap_FCVodeSetJacTimesBS") &
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_FCVodeSetLinSysFnB(farg1, farg2, farg3) &
bind(C, name="_wrap_FCVodeSetLinSysFnB") &
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_FCVodeSetLinSysFnBS(farg1, farg2, farg3) &
bind(C, name="_wrap_FCVodeSetLinSysFnBS") &
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

end interface


contains
 ! MODULE SUBPROGRAMS
function FCVodeCreate(lmm, sunctx) &
result(swig_result)
use, intrinsic :: ISO_C_BINDING
type(C_PTR) :: swig_result
integer(C_INT), intent(in) :: lmm
type(C_PTR) :: sunctx
type(C_PTR) :: fresult 
integer(C_INT) :: farg1 
type(C_PTR) :: farg2 

farg1 = lmm
farg2 = sunctx
fresult = swigc_FCVodeCreate(farg1, farg2)
swig_result = fresult
end function

function FCVodeInit(cvode_mem, f, t0, y0) &
result(swig_result)
use, intrinsic :: ISO_C_BINDING
integer(C_INT) :: swig_result
type(C_PTR) :: cvode_mem
type(C_FUNPTR), intent(in), value :: f
real(C_DOUBLE), intent(in) :: t0
type(N_Vector), target, intent(inout) :: y0
integer(C_INT) :: fresult 
type(C_PTR) :: farg1 
type(C_FUNPTR) :: farg2 
real(C_DOUBLE) :: farg3 
type(C_PTR) :: farg4 

farg1 = cvode_mem
farg2 = f
farg3 = t0
farg4 = c_loc(y0)
fresult = swigc_FCVodeInit(farg1, farg2, farg3, farg4)
swig_result = fresult
end function

function FCVodeReInit(cvode_mem, t0, y0) &
result(swig_result)
use, intrinsic :: ISO_C_BINDING
integer(C_INT) :: swig_result
type(C_PTR) :: cvode_mem
real(C_DOUBLE), intent(in) :: t0
type(N_Vector), target, intent(inout) :: y0
integer(C_INT) :: fresult 
type(C_PTR) :: farg1 
real(C_DOUBLE) :: farg2 
type(C_PTR) :: farg3 

farg1 = cvode_mem
farg2 = t0
farg3 = c_loc(y0)
fresult = swigc_FCVodeReInit(farg1, farg2, farg3)
swig_result = fresult
end function

function FCVodeSStolerances(cvode_mem, reltol, abstol) &
result(swig_result)
use, intrinsic :: ISO_C_BINDING
integer(C_INT) :: swig_result
type(C_PTR) :: cvode_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 = cvode_mem
farg2 = reltol
farg3 = abstol
fresult = swigc_FCVodeSStolerances(farg1, farg2, farg3)
swig_result = fresult
end function

function FCVodeSVtolerances(cvode_mem, reltol, abstol) &
result(swig_result)
use, intrinsic :: ISO_C_BINDING
integer(C_INT) :: swig_result
type(C_PTR) :: cvode_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 = cvode_mem
farg2 = reltol
farg3 = c_loc(abstol)
fresult = swigc_FCVodeSVtolerances(farg1, farg2, farg3)
swig_result = fresult
end function

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

farg1 = cvode_mem
farg2 = efun
fresult = swigc_FCVodeWFtolerances(farg1, farg2)
swig_result = fresult
end function

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

farg1 = cvode_mem
farg2 = c_loc(constraints)
fresult = swigc_FCVodeSetConstraints(farg1, farg2)
swig_result = fresult
end function

function FCVodeSetDeltaGammaMaxLSetup(cvode_mem, dgmax_lsetup) &
result(swig_result)
use, intrinsic :: ISO_C_BINDING
integer(C_INT) :: swig_result
type(C_PTR) :: cvode_mem
real(C_DOUBLE), intent(in) :: dgmax_lsetup
integer(C_INT) :: fresult 
type(C_PTR) :: farg1 
real(C_DOUBLE) :: farg2 

farg1 = cvode_mem
farg2 = dgmax_lsetup
fresult = swigc_FCVodeSetDeltaGammaMaxLSetup(farg1, farg2)
swig_result = fresult
end function

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

farg1 = cvode_mem
farg2 = hin
fresult = swigc_FCVodeSetInitStep(farg1, farg2)
swig_result = fresult
end function

function FCVodeSetLSetupFrequency(cvode_mem, msbp) &
result(swig_result)
use, intrinsic :: ISO_C_BINDING
integer(C_INT) :: swig_result
type(C_PTR) :: cvode_mem
integer(C_LONG), intent(in) :: msbp
integer(C_INT) :: fresult 
type(C_PTR) :: farg1 
integer(C_LONG) :: farg2 

farg1 = cvode_mem
farg2 = msbp
fresult = swigc_FCVodeSetLSetupFrequency(farg1, farg2)
swig_result = fresult
end function

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

farg1 = cvode_mem
farg2 = maxncf
fresult = swigc_FCVodeSetMaxConvFails(farg1, farg2)
swig_result = fresult
end function

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

farg1 = cvode_mem
farg2 = maxnef
fresult = swigc_FCVodeSetMaxErrTestFails(farg1, farg2)
swig_result = fresult
end function

function FCVodeSetMaxHnilWarns(cvode_mem, mxhnil) &
result(swig_result)
use, intrinsic :: ISO_C_BINDING
integer(C_INT) :: swig_result
type(C_PTR) :: cvode_mem
integer(C_INT), intent(in) :: mxhnil
integer(C_INT) :: fresult 
type(C_PTR) :: farg1 
integer(C_INT) :: farg2 

farg1 = cvode_mem
farg2 = mxhnil
fresult = swigc_FCVodeSetMaxHnilWarns(farg1, farg2)
swig_result = fresult
end function

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

farg1 = cvode_mem
farg2 = maxcor
fresult = swigc_FCVodeSetMaxNonlinIters(farg1, farg2)
swig_result = fresult
end function

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

farg1 = cvode_mem
farg2 = mxsteps
fresult = swigc_FCVodeSetMaxNumSteps(farg1, farg2)
swig_result = fresult
end function

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

farg1 = cvode_mem
farg2 = maxord
fresult = swigc_FCVodeSetMaxOrd(farg1, farg2)
swig_result = fresult
end function

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

farg1 = cvode_mem
farg2 = hmax
fresult = swigc_FCVodeSetMaxStep(farg1, farg2)
swig_result = fresult
end function

function FCVodeSetMinStep(cvode_mem, hmin) &
result(swig_result)
use, intrinsic :: ISO_C_BINDING
integer(C_INT) :: swig_result
type(C_PTR) :: cvode_mem
real(C_DOUBLE), intent(in) :: hmin
integer(C_INT) :: fresult 
type(C_PTR) :: farg1 
real(C_DOUBLE) :: farg2 

farg1 = cvode_mem
farg2 = hmin
fresult = swigc_FCVodeSetMinStep(farg1, farg2)
swig_result = fresult
end function

function FCVodeSetMonitorFn(cvode_mem, fn) &
result(swig_result)
use, intrinsic :: ISO_C_BINDING
integer(C_INT) :: swig_result
type(C_PTR) :: cvode_mem
type(C_FUNPTR), intent(in), value :: fn
integer(C_INT) :: fresult 
type(C_PTR) :: farg1 
type(C_FUNPTR) :: farg2 

farg1 = cvode_mem
farg2 = fn
fresult = swigc_FCVodeSetMonitorFn(farg1, farg2)
swig_result = fresult
end function

function FCVodeSetMonitorFrequency(cvode_mem, nst) &
result(swig_result)
use, intrinsic :: ISO_C_BINDING
integer(C_INT) :: swig_result
type(C_PTR) :: cvode_mem
integer(C_LONG), intent(in) :: nst
integer(C_INT) :: fresult 
type(C_PTR) :: farg1 
integer(C_LONG) :: farg2 

farg1 = cvode_mem
farg2 = nst
fresult = swigc_FCVodeSetMonitorFrequency(farg1, farg2)
swig_result = fresult
end function

function FCVodeSetNlsRhsFn(cvode_mem, f) &
result(swig_result)
use, intrinsic :: ISO_C_BINDING
integer(C_INT) :: swig_result
type(C_PTR) :: cvode_mem
type(C_FUNPTR), intent(in), value :: f
integer(C_INT) :: fresult 
type(C_PTR) :: farg1 
type(C_FUNPTR) :: farg2 

farg1 = cvode_mem
farg2 = f
fresult = swigc_FCVodeSetNlsRhsFn(farg1, farg2)
swig_result = fresult
end function

function FCVodeSetNonlinConvCoef(cvode_mem, nlscoef) &
result(swig_result)
use, intrinsic :: ISO_C_BINDING
integer(C_INT) :: swig_result
type(C_PTR) :: cvode_mem
real(C_DOUBLE), intent(in) :: nlscoef
integer(C_INT) :: fresult 
type(C_PTR) :: farg1 
real(C_DOUBLE) :: farg2 

farg1 = cvode_mem
farg2 = nlscoef
fresult = swigc_FCVodeSetNonlinConvCoef(farg1, farg2)
swig_result = fresult
end function

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

farg1 = cvode_mem
farg2 = c_loc(nls)
fresult = swigc_FCVodeSetNonlinearSolver(farg1, farg2)
swig_result = fresult
end function

function FCVodeSetStabLimDet(cvode_mem, stldet) &
result(swig_result)
use, intrinsic :: ISO_C_BINDING
integer(C_INT) :: swig_result
type(C_PTR) :: cvode_mem
integer(C_INT), intent(in) :: stldet
integer(C_INT) :: fresult 
type(C_PTR) :: farg1 
integer(C_INT) :: farg2 

farg1 = cvode_mem
farg2 = stldet
fresult = swigc_FCVodeSetStabLimDet(farg1, farg2)
swig_result = fresult
end function

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

farg1 = cvode_mem
farg2 = tstop
fresult = swigc_FCVodeSetStopTime(farg1, farg2)
swig_result = fresult
end function

function FCVodeSetInterpolateStopTime(cvode_mem, interp) &
result(swig_result)
use, intrinsic :: ISO_C_BINDING
integer(C_INT) :: swig_result
type(C_PTR) :: cvode_mem
integer(C_INT), intent(in) :: interp
integer(C_INT) :: fresult 
type(C_PTR) :: farg1 
integer(C_INT) :: farg2 

farg1 = cvode_mem
farg2 = interp
fresult = swigc_FCVodeSetInterpolateStopTime(farg1, farg2)
swig_result = fresult
end function

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

farg1 = cvode_mem
fresult = swigc_FCVodeClearStopTime(farg1)
swig_result = fresult
end function

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

farg1 = cvode_mem
farg2 = user_data
fresult = swigc_FCVodeSetUserData(farg1, farg2)
swig_result = fresult
end function

function FCVodeSetEtaFixedStepBounds(cvode_mem, eta_min_fx, eta_max_fx) &
result(swig_result)
use, intrinsic :: ISO_C_BINDING
integer(C_INT) :: swig_result
type(C_PTR) :: cvode_mem
real(C_DOUBLE), intent(in) :: eta_min_fx
real(C_DOUBLE), intent(in) :: eta_max_fx
integer(C_INT) :: fresult 
type(C_PTR) :: farg1 
real(C_DOUBLE) :: farg2 
real(C_DOUBLE) :: farg3 

farg1 = cvode_mem
farg2 = eta_min_fx
farg3 = eta_max_fx
fresult = swigc_FCVodeSetEtaFixedStepBounds(farg1, farg2, farg3)
swig_result = fresult
end function

function FCVodeSetEtaMaxFirstStep(cvode_mem, eta_max_fs) &
result(swig_result)
use, intrinsic :: ISO_C_BINDING
integer(C_INT) :: swig_result
type(C_PTR) :: cvode_mem
real(C_DOUBLE), intent(in) :: eta_max_fs
integer(C_INT) :: fresult 
type(C_PTR) :: farg1 
real(C_DOUBLE) :: farg2 

farg1 = cvode_mem
farg2 = eta_max_fs
fresult = swigc_FCVodeSetEtaMaxFirstStep(farg1, farg2)
swig_result = fresult
end function

function FCVodeSetEtaMaxEarlyStep(cvode_mem, eta_max_es) &
result(swig_result)
use, intrinsic :: ISO_C_BINDING
integer(C_INT) :: swig_result
type(C_PTR) :: cvode_mem
real(C_DOUBLE), intent(in) :: eta_max_es
integer(C_INT) :: fresult 
type(C_PTR) :: farg1 
real(C_DOUBLE) :: farg2 

farg1 = cvode_mem
farg2 = eta_max_es
fresult = swigc_FCVodeSetEtaMaxEarlyStep(farg1, farg2)
swig_result = fresult
end function

function FCVodeSetNumStepsEtaMaxEarlyStep(cvode_mem, small_nst) &
result(swig_result)
use, intrinsic :: ISO_C_BINDING
integer(C_INT) :: swig_result
type(C_PTR) :: cvode_mem
integer(C_LONG), intent(in) :: small_nst
integer(C_INT) :: fresult 
type(C_PTR) :: farg1 
integer(C_LONG) :: farg2 

farg1 = cvode_mem
farg2 = small_nst
fresult = swigc_FCVodeSetNumStepsEtaMaxEarlyStep(farg1, farg2)
swig_result = fresult
end function

function FCVodeSetEtaMax(cvode_mem, eta_max_gs) &
result(swig_result)
use, intrinsic :: ISO_C_BINDING
integer(C_INT) :: swig_result
type(C_PTR) :: cvode_mem
real(C_DOUBLE), intent(in) :: eta_max_gs
integer(C_INT) :: fresult 
type(C_PTR) :: farg1 
real(C_DOUBLE) :: farg2 

farg1 = cvode_mem
farg2 = eta_max_gs
fresult = swigc_FCVodeSetEtaMax(farg1, farg2)
swig_result = fresult
end function

function FCVodeSetEtaMin(cvode_mem, eta_min) &
result(swig_result)
use, intrinsic :: ISO_C_BINDING
integer(C_INT) :: swig_result
type(C_PTR) :: cvode_mem
real(C_DOUBLE), intent(in) :: eta_min
integer(C_INT) :: fresult 
type(C_PTR) :: farg1 
real(C_DOUBLE) :: farg2 

farg1 = cvode_mem
farg2 = eta_min
fresult = swigc_FCVodeSetEtaMin(farg1, farg2)
swig_result = fresult
end function

function FCVodeSetEtaMinErrFail(cvode_mem, eta_min_ef) &
result(swig_result)
use, intrinsic :: ISO_C_BINDING
integer(C_INT) :: swig_result
type(C_PTR) :: cvode_mem
real(C_DOUBLE), intent(in) :: eta_min_ef
integer(C_INT) :: fresult 
type(C_PTR) :: farg1 
real(C_DOUBLE) :: farg2 

farg1 = cvode_mem
farg2 = eta_min_ef
fresult = swigc_FCVodeSetEtaMinErrFail(farg1, farg2)
swig_result = fresult
end function

function FCVodeSetEtaMaxErrFail(cvode_mem, eta_max_ef) &
result(swig_result)
use, intrinsic :: ISO_C_BINDING
integer(C_INT) :: swig_result
type(C_PTR) :: cvode_mem
real(C_DOUBLE), intent(in) :: eta_max_ef
integer(C_INT) :: fresult 
type(C_PTR) :: farg1 
real(C_DOUBLE) :: farg2 

farg1 = cvode_mem
farg2 = eta_max_ef
fresult = swigc_FCVodeSetEtaMaxErrFail(farg1, farg2)
swig_result = fresult
end function

function FCVodeSetNumFailsEtaMaxErrFail(cvode_mem, small_nef) &
result(swig_result)
use, intrinsic :: ISO_C_BINDING
integer(C_INT) :: swig_result
type(C_PTR) :: cvode_mem
integer(C_INT), intent(in) :: small_nef
integer(C_INT) :: fresult 
type(C_PTR) :: farg1 
integer(C_INT) :: farg2 

farg1 = cvode_mem
farg2 = small_nef
fresult = swigc_FCVodeSetNumFailsEtaMaxErrFail(farg1, farg2)
swig_result = fresult
end function

function FCVodeSetEtaConvFail(cvode_mem, eta_cf) &
result(swig_result)
use, intrinsic :: ISO_C_BINDING
integer(C_INT) :: swig_result
type(C_PTR) :: cvode_mem
real(C_DOUBLE), intent(in) :: eta_cf
integer(C_INT) :: fresult 
type(C_PTR) :: farg1 
real(C_DOUBLE) :: farg2 

farg1 = cvode_mem
farg2 = eta_cf
fresult = swigc_FCVodeSetEtaConvFail(farg1, farg2)
swig_result = fresult
end function

function FCVodeRootInit(cvode_mem, nrtfn, g) &
result(swig_result)
use, intrinsic :: ISO_C_BINDING
integer(C_INT) :: swig_result
type(C_PTR) :: cvode_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 = cvode_mem
farg2 = nrtfn
farg3 = g
fresult = swigc_FCVodeRootInit(farg1, farg2, farg3)
swig_result = fresult
end function

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

farg1 = cvode_mem
farg2 = c_loc(rootdir(1))
fresult = swigc_FCVodeSetRootDirection(farg1, farg2)
swig_result = fresult
end function

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

farg1 = cvode_mem
fresult = swigc_FCVodeSetNoInactiveRootWarn(farg1)
swig_result = fresult
end function

function FCVode(cvode_mem, tout, yout, tret, itask) &
result(swig_result)
use, intrinsic :: ISO_C_BINDING
integer(C_INT) :: swig_result
type(C_PTR) :: cvode_mem
real(C_DOUBLE), intent(in) :: tout
type(N_Vector), target, intent(inout) :: yout
real(C_DOUBLE), dimension(*), target, intent(inout) :: tret
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 
integer(C_INT) :: farg5 

farg1 = cvode_mem
farg2 = tout
farg3 = c_loc(yout)
farg4 = c_loc(tret(1))
farg5 = itask
fresult = swigc_FCVode(farg1, farg2, farg3, farg4, farg5)
swig_result = fresult
end function

function FCVodeComputeState(cvode_mem, ycor, y) &
result(swig_result)
use, intrinsic :: ISO_C_BINDING
integer(C_INT) :: swig_result
type(C_PTR) :: cvode_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 = cvode_mem
farg2 = c_loc(ycor)
farg3 = c_loc(y)
fresult = swigc_FCVodeComputeState(farg1, farg2, farg3)
swig_result = fresult
end function

function FCVodeComputeStateSens(cvode_mem, yscor, ys) &
result(swig_result)
use, intrinsic :: ISO_C_BINDING
integer(C_INT) :: swig_result
type(C_PTR) :: cvode_mem
type(C_PTR) :: yscor
type(C_PTR) :: ys
integer(C_INT) :: fresult 
type(C_PTR) :: farg1 
type(C_PTR) :: farg2 
type(C_PTR) :: farg3 

farg1 = cvode_mem
farg2 = yscor
farg3 = ys
fresult = swigc_FCVodeComputeStateSens(farg1, farg2, farg3)
swig_result = fresult
end function

function FCVodeComputeStateSens1(cvode_mem, idx, yscor1, ys1) &
result(swig_result)
use, intrinsic :: ISO_C_BINDING
integer(C_INT) :: swig_result
type(C_PTR) :: cvode_mem
integer(C_INT), intent(in) :: idx
type(N_Vector), target, intent(inout) :: yscor1
type(N_Vector), target, intent(inout) :: ys1
integer(C_INT) :: fresult 
type(C_PTR) :: farg1 
integer(C_INT) :: farg2 
type(C_PTR) :: farg3 
type(C_PTR) :: farg4 

farg1 = cvode_mem
farg2 = idx
farg3 = c_loc(yscor1)
farg4 = c_loc(ys1)
fresult = swigc_FCVodeComputeStateSens1(farg1, farg2, farg3, farg4)
swig_result = fresult
end function

function FCVodeGetDky(cvode_mem, t, k, dky) &
result(swig_result)
use, intrinsic :: ISO_C_BINDING
integer(C_INT) :: swig_result
type(C_PTR) :: cvode_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 = cvode_mem
farg2 = t
farg3 = k
farg4 = c_loc(dky)
fresult = swigc_FCVodeGetDky(farg1, farg2, farg3, farg4)
swig_result = fresult
end function

function FCVodeGetWorkSpace(cvode_mem, lenrw, leniw) &
result(swig_result)
use, intrinsic :: ISO_C_BINDING
integer(C_INT) :: swig_result
type(C_PTR) :: cvode_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 = cvode_mem
farg2 = c_loc(lenrw(1))
farg3 = c_loc(leniw(1))
fresult = swigc_FCVodeGetWorkSpace(farg1, farg2, farg3)
swig_result = fresult
end function

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

farg1 = cvode_mem
farg2 = c_loc(nsteps(1))
fresult = swigc_FCVodeGetNumSteps(farg1, farg2)
swig_result = fresult
end function

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

farg1 = cvode_mem
farg2 = c_loc(nfevals(1))
fresult = swigc_FCVodeGetNumRhsEvals(farg1, farg2)
swig_result = fresult
end function

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

farg1 = cvode_mem
farg2 = c_loc(nlinsetups(1))
fresult = swigc_FCVodeGetNumLinSolvSetups(farg1, farg2)
swig_result = fresult
end function

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

farg1 = cvode_mem
farg2 = c_loc(netfails(1))
fresult = swigc_FCVodeGetNumErrTestFails(farg1, farg2)
swig_result = fresult
end function

function FCVodeGetLastOrder(cvode_mem, qlast) &
result(swig_result)
use, intrinsic :: ISO_C_BINDING
integer(C_INT) :: swig_result
type(C_PTR) :: cvode_mem
integer(C_INT), dimension(*), target, intent(inout) :: qlast
integer(C_INT) :: fresult 
type(C_PTR) :: farg1 
type(C_PTR) :: farg2 

farg1 = cvode_mem
farg2 = c_loc(qlast(1))
fresult = swigc_FCVodeGetLastOrder(farg1, farg2)
swig_result = fresult
end function

function FCVodeGetCurrentOrder(cvode_mem, qcur) &
result(swig_result)
use, intrinsic :: ISO_C_BINDING
integer(C_INT) :: swig_result
type(C_PTR) :: cvode_mem
integer(C_INT), dimension(*), target, intent(inout) :: qcur
integer(C_INT) :: fresult 
type(C_PTR) :: farg1 
type(C_PTR) :: farg2 

farg1 = cvode_mem
farg2 = c_loc(qcur(1))
fresult = swigc_FCVodeGetCurrentOrder(farg1, farg2)
swig_result = fresult
end function

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

farg1 = cvode_mem
farg2 = c_loc(gamma(1))
fresult = swigc_FCVodeGetCurrentGamma(farg1, farg2)
swig_result = fresult
end function

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

farg1 = cvode_mem
farg2 = c_loc(nslred(1))
fresult = swigc_FCVodeGetNumStabLimOrderReds(farg1, farg2)
swig_result = fresult
end function

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

farg1 = cvode_mem
farg2 = c_loc(hinused(1))
fresult = swigc_FCVodeGetActualInitStep(farg1, farg2)
swig_result = fresult
end function

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

farg1 = cvode_mem
farg2 = c_loc(hlast(1))
fresult = swigc_FCVodeGetLastStep(farg1, farg2)
swig_result = fresult
end function

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

farg1 = cvode_mem
farg2 = c_loc(hcur(1))
fresult = swigc_FCVodeGetCurrentStep(farg1, farg2)
swig_result = fresult
end function

function FCVodeGetCurrentState(cvode_mem, y) &
result(swig_result)
use, intrinsic :: ISO_C_BINDING
integer(C_INT) :: swig_result
type(C_PTR) :: cvode_mem
type(C_PTR) :: y
integer(C_INT) :: fresult 
type(C_PTR) :: farg1 
type(C_PTR) :: farg2 

farg1 = cvode_mem
farg2 = y
fresult = swigc_FCVodeGetCurrentState(farg1, farg2)
swig_result = fresult
end function

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

farg1 = cvode_mem
farg2 = c_loc(ys)
fresult = swigc_FCVodeGetCurrentStateSens(farg1, farg2)
swig_result = fresult
end function

function FCVodeGetCurrentSensSolveIndex(cvode_mem, index) &
result(swig_result)
use, intrinsic :: ISO_C_BINDING
integer(C_INT) :: swig_result
type(C_PTR) :: cvode_mem
integer(C_INT), dimension(*), target, intent(inout) :: index
integer(C_INT) :: fresult 
type(C_PTR) :: farg1 
type(C_PTR) :: farg2 

farg1 = cvode_mem
farg2 = c_loc(index(1))
fresult = swigc_FCVodeGetCurrentSensSolveIndex(farg1, farg2)
swig_result = fresult
end function

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

farg1 = cvode_mem
farg2 = c_loc(tcur(1))
fresult = swigc_FCVodeGetCurrentTime(farg1, farg2)
swig_result = fresult
end function

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

farg1 = cvode_mem
farg2 = c_loc(tolsfac(1))
fresult = swigc_FCVodeGetTolScaleFactor(farg1, farg2)
swig_result = fresult
end function

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

farg1 = cvode_mem
farg2 = c_loc(eweight)
fresult = swigc_FCVodeGetErrWeights(farg1, farg2)
swig_result = fresult
end function

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

farg1 = cvode_mem
farg2 = c_loc(ele)
fresult = swigc_FCVodeGetEstLocalErrors(farg1, farg2)
swig_result = fresult
end function

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

farg1 = cvode_mem
farg2 = c_loc(ngevals(1))
fresult = swigc_FCVodeGetNumGEvals(farg1, farg2)
swig_result = fresult
end function

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

farg1 = cvode_mem
farg2 = c_loc(rootsfound(1))
fresult = swigc_FCVodeGetRootInfo(farg1, farg2)
swig_result = fresult
end function

function FCVodeGetIntegratorStats(cvode_mem, nsteps, nfevals, nlinsetups, netfails, qlast, qcur, hinused, hlast, hcur, tcur) &
result(swig_result)
use, intrinsic :: ISO_C_BINDING
integer(C_INT) :: swig_result
type(C_PTR) :: cvode_mem
integer(C_LONG), dimension(*), target, intent(inout) :: nsteps
integer(C_LONG), dimension(*), target, intent(inout) :: nfevals
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 = cvode_mem
farg2 = c_loc(nsteps(1))
farg3 = c_loc(nfevals(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_FCVodeGetIntegratorStats(farg1, farg2, farg3, farg4, farg5, farg6, farg7, farg8, farg9, farg10, farg11)
swig_result = fresult
end function

function FCVodeGetNonlinearSystemData(cvode_mem, tcur, ypred, yn, fn, gamma, rl1, zn1, user_data) &
result(swig_result)
use, intrinsic :: ISO_C_BINDING
integer(C_INT) :: swig_result
type(C_PTR) :: cvode_mem
real(C_DOUBLE), dimension(*), target, intent(inout) :: tcur
type(C_PTR) :: ypred
type(C_PTR) :: yn
type(C_PTR) :: fn
real(C_DOUBLE), dimension(*), target, intent(inout) :: gamma
real(C_DOUBLE), dimension(*), target, intent(inout) :: rl1
type(C_PTR) :: zn1
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 = cvode_mem
farg2 = c_loc(tcur(1))
farg3 = ypred
farg4 = yn
farg5 = fn
farg6 = c_loc(gamma(1))
farg7 = c_loc(rl1(1))
farg8 = zn1
farg9 = c_loc(user_data)
fresult = swigc_FCVodeGetNonlinearSystemData(farg1, farg2, farg3, farg4, farg5, farg6, farg7, farg8, farg9)
swig_result = fresult
end function

function FCVodeGetNonlinearSystemDataSens(cvode_mem, tcur, yspred, ysn, gamma, rl1, zn1, user_data) &
result(swig_result)
use, intrinsic :: ISO_C_BINDING
integer(C_INT) :: swig_result
type(C_PTR) :: cvode_mem
real(C_DOUBLE), dimension(*), target, intent(inout) :: tcur
type(C_PTR), target, intent(inout) :: yspred
type(C_PTR), target, intent(inout) :: ysn
real(C_DOUBLE), dimension(*), target, intent(inout) :: gamma
real(C_DOUBLE), dimension(*), target, intent(inout) :: rl1
type(C_PTR), target, intent(inout) :: zn1
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 = cvode_mem
farg2 = c_loc(tcur(1))
farg3 = c_loc(yspred)
farg4 = c_loc(ysn)
farg5 = c_loc(gamma(1))
farg6 = c_loc(rl1(1))
farg7 = c_loc(zn1)
farg8 = c_loc(user_data)
fresult = swigc_FCVodeGetNonlinearSystemDataSens(farg1, farg2, farg3, farg4, farg5, farg6, farg7, farg8)
swig_result = fresult
end function

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

farg1 = cvode_mem
farg2 = c_loc(nniters(1))
fresult = swigc_FCVodeGetNumNonlinSolvIters(farg1, farg2)
swig_result = fresult
end function

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

farg1 = cvode_mem
farg2 = c_loc(nnfails(1))
fresult = swigc_FCVodeGetNumNonlinSolvConvFails(farg1, farg2)
swig_result = fresult
end function

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

farg1 = cvode_mem
farg2 = c_loc(nniters(1))
farg3 = c_loc(nnfails(1))
fresult = swigc_FCVodeGetNonlinSolvStats(farg1, farg2, farg3)
swig_result = fresult
end function

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

farg1 = cvode_mem
farg2 = c_loc(nncfails(1))
fresult = swigc_FCVodeGetNumStepSolveFails(farg1, farg2)
swig_result = fresult
end function

function FCVodeGetUserData(cvode_mem, user_data) &
result(swig_result)
use, intrinsic :: ISO_C_BINDING
integer(C_INT) :: swig_result
type(C_PTR) :: cvode_mem
type(C_PTR), target, intent(inout) :: user_data
integer(C_INT) :: fresult 
type(C_PTR) :: farg1 
type(C_PTR) :: farg2 

farg1 = cvode_mem
farg2 = c_loc(user_data)
fresult = swigc_FCVodeGetUserData(farg1, farg2)
swig_result = fresult
end function

function FCVodePrintAllStats(cvode_mem, outfile, fmt) &
result(swig_result)
use, intrinsic :: ISO_C_BINDING
integer(C_INT) :: swig_result
type(C_PTR) :: cvode_mem
type(C_PTR) :: outfile
integer(SUNOutputFormat), intent(in) :: fmt
integer(C_INT) :: fresult 
type(C_PTR) :: farg1 
type(C_PTR) :: farg2 
integer(C_INT) :: farg3 

farg1 = cvode_mem
farg2 = outfile
farg3 = fmt
fresult = swigc_FCVodePrintAllStats(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 FCVodeGetReturnFlagName(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_FCVodeGetReturnFlagName(farg1)
call SWIG_chararray_to_string(fresult, swig_result)
if (.false.) call SWIG_free(fresult%data)
end function

subroutine FCVodeFree(cvode_mem)
use, intrinsic :: ISO_C_BINDING
type(C_PTR), target, intent(inout) :: cvode_mem
type(C_PTR) :: farg1 

farg1 = c_loc(cvode_mem)
call swigc_FCVodeFree(farg1)
end subroutine

function FCVodeSetJacTimesRhsFn(cvode_mem, jtimesrhsfn) &
result(swig_result)
use, intrinsic :: ISO_C_BINDING
integer(C_INT) :: swig_result
type(C_PTR) :: cvode_mem
type(C_FUNPTR), intent(in), value :: jtimesrhsfn
integer(C_INT) :: fresult 
type(C_PTR) :: farg1 
type(C_FUNPTR) :: farg2 

farg1 = cvode_mem
farg2 = jtimesrhsfn
fresult = swigc_FCVodeSetJacTimesRhsFn(farg1, farg2)
swig_result = fresult
end function

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

farg1 = cvode_mem
farg2 = fq
farg3 = c_loc(yq0)
fresult = swigc_FCVodeQuadInit(farg1, farg2, farg3)
swig_result = fresult
end function

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

farg1 = cvode_mem
farg2 = c_loc(yq0)
fresult = swigc_FCVodeQuadReInit(farg1, farg2)
swig_result = fresult
end function

function FCVodeQuadSStolerances(cvode_mem, reltolq, abstolq) &
result(swig_result)
use, intrinsic :: ISO_C_BINDING
integer(C_INT) :: swig_result
type(C_PTR) :: cvode_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 = cvode_mem
farg2 = reltolq
farg3 = abstolq
fresult = swigc_FCVodeQuadSStolerances(farg1, farg2, farg3)
swig_result = fresult
end function

function FCVodeQuadSVtolerances(cvode_mem, reltolq, abstolq) &
result(swig_result)
use, intrinsic :: ISO_C_BINDING
integer(C_INT) :: swig_result
type(C_PTR) :: cvode_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 = cvode_mem
farg2 = reltolq
farg3 = c_loc(abstolq)
fresult = swigc_FCVodeQuadSVtolerances(farg1, farg2, farg3)
swig_result = fresult
end function

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

farg1 = cvode_mem
farg2 = errconq
fresult = swigc_FCVodeSetQuadErrCon(farg1, farg2)
swig_result = fresult
end function

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

farg1 = cvode_mem
farg2 = c_loc(tret(1))
farg3 = c_loc(yqout)
fresult = swigc_FCVodeGetQuad(farg1, farg2, farg3)
swig_result = fresult
end function

function FCVodeGetQuadDky(cvode_mem, t, k, dky) &
result(swig_result)
use, intrinsic :: ISO_C_BINDING
integer(C_INT) :: swig_result
type(C_PTR) :: cvode_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 = cvode_mem
farg2 = t
farg3 = k
farg4 = c_loc(dky)
fresult = swigc_FCVodeGetQuadDky(farg1, farg2, farg3, farg4)
swig_result = fresult
end function

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

farg1 = cvode_mem
farg2 = c_loc(nfqevals(1))
fresult = swigc_FCVodeGetQuadNumRhsEvals(farg1, farg2)
swig_result = fresult
end function

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

farg1 = cvode_mem
farg2 = c_loc(nqetfails(1))
fresult = swigc_FCVodeGetQuadNumErrTestFails(farg1, farg2)
swig_result = fresult
end function

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

farg1 = cvode_mem
farg2 = c_loc(eqweight)
fresult = swigc_FCVodeGetQuadErrWeights(farg1, farg2)
swig_result = fresult
end function

function FCVodeGetQuadStats(cvode_mem, nfqevals, nqetfails) &
result(swig_result)
use, intrinsic :: ISO_C_BINDING
integer(C_INT) :: swig_result
type(C_PTR) :: cvode_mem
integer(C_LONG), dimension(*), target, intent(inout) :: nfqevals
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 = cvode_mem
farg2 = c_loc(nfqevals(1))
farg3 = c_loc(nqetfails(1))
fresult = swigc_FCVodeGetQuadStats(farg1, farg2, farg3)
swig_result = fresult
end function

subroutine FCVodeQuadFree(cvode_mem)
use, intrinsic :: ISO_C_BINDING
type(C_PTR) :: cvode_mem
type(C_PTR) :: farg1 

farg1 = cvode_mem
call swigc_FCVodeQuadFree(farg1)
end subroutine

function FCVodeSensInit(cvode_mem, ns, ism, fs, ys0) &
result(swig_result)
use, intrinsic :: ISO_C_BINDING
integer(C_INT) :: swig_result
type(C_PTR) :: cvode_mem
integer(C_INT), intent(in) :: ns
integer(C_INT), intent(in) :: ism
type(C_FUNPTR), intent(in), value :: fs
type(C_PTR) :: ys0
integer(C_INT) :: fresult 
type(C_PTR) :: farg1 
integer(C_INT) :: farg2 
integer(C_INT) :: farg3 
type(C_FUNPTR) :: farg4 
type(C_PTR) :: farg5 

farg1 = cvode_mem
farg2 = ns
farg3 = ism
farg4 = fs
farg5 = ys0
fresult = swigc_FCVodeSensInit(farg1, farg2, farg3, farg4, farg5)
swig_result = fresult
end function

function FCVodeSensInit1(cvode_mem, ns, ism, fs1, ys0) &
result(swig_result)
use, intrinsic :: ISO_C_BINDING
integer(C_INT) :: swig_result
type(C_PTR) :: cvode_mem
integer(C_INT), intent(in) :: ns
integer(C_INT), intent(in) :: ism
type(C_FUNPTR), intent(in), value :: fs1
type(C_PTR) :: ys0
integer(C_INT) :: fresult 
type(C_PTR) :: farg1 
integer(C_INT) :: farg2 
integer(C_INT) :: farg3 
type(C_FUNPTR) :: farg4 
type(C_PTR) :: farg5 

farg1 = cvode_mem
farg2 = ns
farg3 = ism
farg4 = fs1
farg5 = ys0
fresult = swigc_FCVodeSensInit1(farg1, farg2, farg3, farg4, farg5)
swig_result = fresult
end function

function FCVodeSensReInit(cvode_mem, ism, ys0) &
result(swig_result)
use, intrinsic :: ISO_C_BINDING
integer(C_INT) :: swig_result
type(C_PTR) :: cvode_mem
integer(C_INT), intent(in) :: ism
type(C_PTR) :: ys0
integer(C_INT) :: fresult 
type(C_PTR) :: farg1 
integer(C_INT) :: farg2 
type(C_PTR) :: farg3 

farg1 = cvode_mem
farg2 = ism
farg3 = ys0
fresult = swigc_FCVodeSensReInit(farg1, farg2, farg3)
swig_result = fresult
end function

function FCVodeSensSStolerances(cvode_mem, reltols, abstols) &
result(swig_result)
use, intrinsic :: ISO_C_BINDING
integer(C_INT) :: swig_result
type(C_PTR) :: cvode_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 = cvode_mem
farg2 = reltols
farg3 = c_loc(abstols(1))
fresult = swigc_FCVodeSensSStolerances(farg1, farg2, farg3)
swig_result = fresult
end function

function FCVodeSensSVtolerances(cvode_mem, reltols, abstols) &
result(swig_result)
use, intrinsic :: ISO_C_BINDING
integer(C_INT) :: swig_result
type(C_PTR) :: cvode_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 = cvode_mem
farg2 = reltols
farg3 = abstols
fresult = swigc_FCVodeSensSVtolerances(farg1, farg2, farg3)
swig_result = fresult
end function

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

farg1 = cvode_mem
fresult = swigc_FCVodeSensEEtolerances(farg1)
swig_result = fresult
end function

function FCVodeSetSensDQMethod(cvode_mem, dqtype, dqrhomax) &
result(swig_result)
use, intrinsic :: ISO_C_BINDING
integer(C_INT) :: swig_result
type(C_PTR) :: cvode_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 = cvode_mem
farg2 = dqtype
farg3 = dqrhomax
fresult = swigc_FCVodeSetSensDQMethod(farg1, farg2, farg3)
swig_result = fresult
end function

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

farg1 = cvode_mem
farg2 = errcons
fresult = swigc_FCVodeSetSensErrCon(farg1, farg2)
swig_result = fresult
end function

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

farg1 = cvode_mem
farg2 = maxcors
fresult = swigc_FCVodeSetSensMaxNonlinIters(farg1, farg2)
swig_result = fresult
end function

function FCVodeSetSensParams(cvode_mem, p, pbar, plist) &
result(swig_result)
use, intrinsic :: ISO_C_BINDING
integer(C_INT) :: swig_result
type(C_PTR) :: cvode_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 = cvode_mem
farg2 = c_loc(p(1))
farg3 = c_loc(pbar(1))
farg4 = c_loc(plist(1))
fresult = swigc_FCVodeSetSensParams(farg1, farg2, farg3, farg4)
swig_result = fresult
end function

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

farg1 = cvode_mem
farg2 = c_loc(nls)
fresult = swigc_FCVodeSetNonlinearSolverSensSim(farg1, farg2)
swig_result = fresult
end function

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

farg1 = cvode_mem
farg2 = c_loc(nls)
fresult = swigc_FCVodeSetNonlinearSolverSensStg(farg1, farg2)
swig_result = fresult
end function

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

farg1 = cvode_mem
farg2 = c_loc(nls)
fresult = swigc_FCVodeSetNonlinearSolverSensStg1(farg1, farg2)
swig_result = fresult
end function

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

farg1 = cvode_mem
fresult = swigc_FCVodeSensToggleOff(farg1)
swig_result = fresult
end function

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

farg1 = cvode_mem
farg2 = c_loc(tret(1))
farg3 = ysout
fresult = swigc_FCVodeGetSens(farg1, farg2, farg3)
swig_result = fresult
end function

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

farg1 = cvode_mem
farg2 = c_loc(tret(1))
farg3 = is
farg4 = c_loc(ysout)
fresult = swigc_FCVodeGetSens1(farg1, farg2, farg3, farg4)
swig_result = fresult
end function

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

farg1 = cvode_mem
farg2 = t
farg3 = k
farg4 = dkya
fresult = swigc_FCVodeGetSensDky(farg1, farg2, farg3, farg4)
swig_result = fresult
end function

function FCVodeGetSensDky1(cvode_mem, t, k, is, dky) &
result(swig_result)
use, intrinsic :: ISO_C_BINDING
integer(C_INT) :: swig_result
type(C_PTR) :: cvode_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) :: dky
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 = cvode_mem
farg2 = t
farg3 = k
farg4 = is
farg5 = c_loc(dky)
fresult = swigc_FCVodeGetSensDky1(farg1, farg2, farg3, farg4, farg5)
swig_result = fresult
end function

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

farg1 = cvode_mem
farg2 = c_loc(nfsevals(1))
fresult = swigc_FCVodeGetSensNumRhsEvals(farg1, farg2)
swig_result = fresult
end function

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

farg1 = cvode_mem
farg2 = c_loc(nfevalss(1))
fresult = swigc_FCVodeGetNumRhsEvalsSens(farg1, farg2)
swig_result = fresult
end function

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

farg1 = cvode_mem
farg2 = c_loc(nsetfails(1))
fresult = swigc_FCVodeGetSensNumErrTestFails(farg1, farg2)
swig_result = fresult
end function

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

farg1 = cvode_mem
farg2 = c_loc(nlinsetupss(1))
fresult = swigc_FCVodeGetSensNumLinSolvSetups(farg1, farg2)
swig_result = fresult
end function

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

farg1 = cvode_mem
farg2 = esweight
fresult = swigc_FCVodeGetSensErrWeights(farg1, farg2)
swig_result = fresult
end function

function FCVodeGetSensStats(cvode_mem, nfsevals, nfevalss, nsetfails, nlinsetupss) &
result(swig_result)
use, intrinsic :: ISO_C_BINDING
integer(C_INT) :: swig_result
type(C_PTR) :: cvode_mem
integer(C_LONG), dimension(*), target, intent(inout) :: nfsevals
integer(C_LONG), dimension(*), target, intent(inout) :: nfevalss
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 = cvode_mem
farg2 = c_loc(nfsevals(1))
farg3 = c_loc(nfevalss(1))
farg4 = c_loc(nsetfails(1))
farg5 = c_loc(nlinsetupss(1))
fresult = swigc_FCVodeGetSensStats(farg1, farg2, farg3, farg4, farg5)
swig_result = fresult
end function

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

farg1 = cvode_mem
farg2 = c_loc(nsniters(1))
fresult = swigc_FCVodeGetSensNumNonlinSolvIters(farg1, farg2)
swig_result = fresult
end function

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

farg1 = cvode_mem
farg2 = c_loc(nsnfails(1))
fresult = swigc_FCVodeGetSensNumNonlinSolvConvFails(farg1, farg2)
swig_result = fresult
end function

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

farg1 = cvode_mem
farg2 = c_loc(nsniters(1))
farg3 = c_loc(nsnfails(1))
fresult = swigc_FCVodeGetSensNonlinSolvStats(farg1, farg2, farg3)
swig_result = fresult
end function

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

farg1 = cvode_mem
farg2 = c_loc(nsncfails(1))
fresult = swigc_FCVodeGetNumStepSensSolveFails(farg1, farg2)
swig_result = fresult
end function

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

farg1 = cvode_mem
farg2 = c_loc(nstgr1niters(1))
fresult = swigc_FCVodeGetStgrSensNumNonlinSolvIters(farg1, farg2)
swig_result = fresult
end function

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

farg1 = cvode_mem
farg2 = c_loc(nstgr1nfails(1))
fresult = swigc_FCVodeGetStgrSensNumNonlinSolvConvFails(farg1, farg2)
swig_result = fresult
end function

function FCVodeGetStgrSensNonlinSolvStats(cvode_mem, nstgr1niters, nstgr1nfails) &
result(swig_result)
use, intrinsic :: ISO_C_BINDING
integer(C_INT) :: swig_result
type(C_PTR) :: cvode_mem
integer(C_LONG), dimension(*), target, intent(inout) :: nstgr1niters
integer(C_LONG), dimension(*), target, intent(inout) :: nstgr1nfails
integer(C_INT) :: fresult 
type(C_PTR) :: farg1 
type(C_PTR) :: farg2 
type(C_PTR) :: farg3 

farg1 = cvode_mem
farg2 = c_loc(nstgr1niters(1))
farg3 = c_loc(nstgr1nfails(1))
fresult = swigc_FCVodeGetStgrSensNonlinSolvStats(farg1, farg2, farg3)
swig_result = fresult
end function

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

farg1 = cvode_mem
farg2 = c_loc(nstgr1ncfails(1))
fresult = swigc_FCVodeGetNumStepStgrSensSolveFails(farg1, farg2)
swig_result = fresult
end function

subroutine FCVodeSensFree(cvode_mem)
use, intrinsic :: ISO_C_BINDING
type(C_PTR) :: cvode_mem
type(C_PTR) :: farg1 

farg1 = cvode_mem
call swigc_FCVodeSensFree(farg1)
end subroutine

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

farg1 = cvode_mem
farg2 = fqs
farg3 = yqs0
fresult = swigc_FCVodeQuadSensInit(farg1, farg2, farg3)
swig_result = fresult
end function

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

farg1 = cvode_mem
farg2 = yqs0
fresult = swigc_FCVodeQuadSensReInit(farg1, farg2)
swig_result = fresult
end function

function FCVodeQuadSensSStolerances(cvode_mem, reltolqs, abstolqs) &
result(swig_result)
use, intrinsic :: ISO_C_BINDING
integer(C_INT) :: swig_result
type(C_PTR) :: cvode_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 = cvode_mem
farg2 = reltolqs
farg3 = c_loc(abstolqs(1))
fresult = swigc_FCVodeQuadSensSStolerances(farg1, farg2, farg3)
swig_result = fresult
end function

function FCVodeQuadSensSVtolerances(cvode_mem, reltolqs, abstolqs) &
result(swig_result)
use, intrinsic :: ISO_C_BINDING
integer(C_INT) :: swig_result
type(C_PTR) :: cvode_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 = cvode_mem
farg2 = reltolqs
farg3 = abstolqs
fresult = swigc_FCVodeQuadSensSVtolerances(farg1, farg2, farg3)
swig_result = fresult
end function

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

farg1 = cvode_mem
fresult = swigc_FCVodeQuadSensEEtolerances(farg1)
swig_result = fresult
end function

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

farg1 = cvode_mem
farg2 = errconqs
fresult = swigc_FCVodeSetQuadSensErrCon(farg1, farg2)
swig_result = fresult
end function

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

farg1 = cvode_mem
farg2 = c_loc(tret(1))
farg3 = yqsout
fresult = swigc_FCVodeGetQuadSens(farg1, farg2, farg3)
swig_result = fresult
end function

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

farg1 = cvode_mem
farg2 = c_loc(tret(1))
farg3 = is
farg4 = c_loc(yqsout)
fresult = swigc_FCVodeGetQuadSens1(farg1, farg2, farg3, farg4)
swig_result = fresult
end function

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

farg1 = cvode_mem
farg2 = t
farg3 = k
farg4 = dkyqs_all
fresult = swigc_FCVodeGetQuadSensDky(farg1, farg2, farg3, farg4)
swig_result = fresult
end function

function FCVodeGetQuadSensDky1(cvode_mem, t, k, is, dkyqs) &
result(swig_result)
use, intrinsic :: ISO_C_BINDING
integer(C_INT) :: swig_result
type(C_PTR) :: cvode_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 = cvode_mem
farg2 = t
farg3 = k
farg4 = is
farg5 = c_loc(dkyqs)
fresult = swigc_FCVodeGetQuadSensDky1(farg1, farg2, farg3, farg4, farg5)
swig_result = fresult
end function

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

farg1 = cvode_mem
farg2 = c_loc(nfqsevals(1))
fresult = swigc_FCVodeGetQuadSensNumRhsEvals(farg1, farg2)
swig_result = fresult
end function

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

farg1 = cvode_mem
farg2 = c_loc(nqsetfails(1))
fresult = swigc_FCVodeGetQuadSensNumErrTestFails(farg1, farg2)
swig_result = fresult
end function

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

farg1 = cvode_mem
farg2 = eqsweight
fresult = swigc_FCVodeGetQuadSensErrWeights(farg1, farg2)
swig_result = fresult
end function

function FCVodeGetQuadSensStats(cvode_mem, nfqsevals, nqsetfails) &
result(swig_result)
use, intrinsic :: ISO_C_BINDING
integer(C_INT) :: swig_result
type(C_PTR) :: cvode_mem
integer(C_LONG), dimension(*), target, intent(inout) :: nfqsevals
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 = cvode_mem
farg2 = c_loc(nfqsevals(1))
farg3 = c_loc(nqsetfails(1))
fresult = swigc_FCVodeGetQuadSensStats(farg1, farg2, farg3)
swig_result = fresult
end function

subroutine FCVodeQuadSensFree(cvode_mem)
use, intrinsic :: ISO_C_BINDING
type(C_PTR) :: cvode_mem
type(C_PTR) :: farg1 

farg1 = cvode_mem
call swigc_FCVodeQuadSensFree(farg1)
end subroutine

function FCVodeAdjInit(cvode_mem, steps, interp) &
result(swig_result)
use, intrinsic :: ISO_C_BINDING
integer(C_INT) :: swig_result
type(C_PTR) :: cvode_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 = cvode_mem
farg2 = steps
farg3 = interp
fresult = swigc_FCVodeAdjInit(farg1, farg2, farg3)
swig_result = fresult
end function

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

farg1 = cvode_mem
fresult = swigc_FCVodeAdjReInit(farg1)
swig_result = fresult
end function

subroutine FCVodeAdjFree(cvode_mem)
use, intrinsic :: ISO_C_BINDING
type(C_PTR) :: cvode_mem
type(C_PTR) :: farg1 

farg1 = cvode_mem
call swigc_FCVodeAdjFree(farg1)
end subroutine

function FCVodeCreateB(cvode_mem, lmmb, which) &
result(swig_result)
use, intrinsic :: ISO_C_BINDING
integer(C_INT) :: swig_result
type(C_PTR) :: cvode_mem
integer(C_INT), intent(in) :: lmmb
integer(C_INT), dimension(*), target, intent(inout) :: which
integer(C_INT) :: fresult 
type(C_PTR) :: farg1 
integer(C_INT) :: farg2 
type(C_PTR) :: farg3 

farg1 = cvode_mem
farg2 = lmmb
farg3 = c_loc(which(1))
fresult = swigc_FCVodeCreateB(farg1, farg2, farg3)
swig_result = fresult
end function

function FCVodeInitB(cvode_mem, which, fb, tb0, yb0) &
result(swig_result)
use, intrinsic :: ISO_C_BINDING
integer(C_INT) :: swig_result
type(C_PTR) :: cvode_mem
integer(C_INT), intent(in) :: which
type(C_FUNPTR), intent(in), value :: fb
real(C_DOUBLE), intent(in) :: tb0
type(N_Vector), target, intent(inout) :: yb0
integer(C_INT) :: fresult 
type(C_PTR) :: farg1 
integer(C_INT) :: farg2 
type(C_FUNPTR) :: farg3 
real(C_DOUBLE) :: farg4 
type(C_PTR) :: farg5 

farg1 = cvode_mem
farg2 = which
farg3 = fb
farg4 = tb0
farg5 = c_loc(yb0)
fresult = swigc_FCVodeInitB(farg1, farg2, farg3, farg4, farg5)
swig_result = fresult
end function

function FCVodeInitBS(cvode_mem, which, fbs, tb0, yb0) &
result(swig_result)
use, intrinsic :: ISO_C_BINDING
integer(C_INT) :: swig_result
type(C_PTR) :: cvode_mem
integer(C_INT), intent(in) :: which
type(C_FUNPTR), intent(in), value :: fbs
real(C_DOUBLE), intent(in) :: tb0
type(N_Vector), target, intent(inout) :: yb0
integer(C_INT) :: fresult 
type(C_PTR) :: farg1 
integer(C_INT) :: farg2 
type(C_FUNPTR) :: farg3 
real(C_DOUBLE) :: farg4 
type(C_PTR) :: farg5 

farg1 = cvode_mem
farg2 = which
farg3 = fbs
farg4 = tb0
farg5 = c_loc(yb0)
fresult = swigc_FCVodeInitBS(farg1, farg2, farg3, farg4, farg5)
swig_result = fresult
end function

function FCVodeReInitB(cvode_mem, which, tb0, yb0) &
result(swig_result)
use, intrinsic :: ISO_C_BINDING
integer(C_INT) :: swig_result
type(C_PTR) :: cvode_mem
integer(C_INT), intent(in) :: which
real(C_DOUBLE), intent(in) :: tb0
type(N_Vector), target, intent(inout) :: yb0
integer(C_INT) :: fresult 
type(C_PTR) :: farg1 
integer(C_INT) :: farg2 
real(C_DOUBLE) :: farg3 
type(C_PTR) :: farg4 

farg1 = cvode_mem
farg2 = which
farg3 = tb0
farg4 = c_loc(yb0)
fresult = swigc_FCVodeReInitB(farg1, farg2, farg3, farg4)
swig_result = fresult
end function

function FCVodeSStolerancesB(cvode_mem, which, reltolb, abstolb) &
result(swig_result)
use, intrinsic :: ISO_C_BINDING
integer(C_INT) :: swig_result
type(C_PTR) :: cvode_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 = cvode_mem
farg2 = which
farg3 = reltolb
farg4 = abstolb
fresult = swigc_FCVodeSStolerancesB(farg1, farg2, farg3, farg4)
swig_result = fresult
end function

function FCVodeSVtolerancesB(cvode_mem, which, reltolb, abstolb) &
result(swig_result)
use, intrinsic :: ISO_C_BINDING
integer(C_INT) :: swig_result
type(C_PTR) :: cvode_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 = cvode_mem
farg2 = which
farg3 = reltolb
farg4 = c_loc(abstolb)
fresult = swigc_FCVodeSVtolerancesB(farg1, farg2, farg3, farg4)
swig_result = fresult
end function

function FCVodeQuadInitB(cvode_mem, which, fqb, yqb0) &
result(swig_result)
use, intrinsic :: ISO_C_BINDING
integer(C_INT) :: swig_result
type(C_PTR) :: cvode_mem
integer(C_INT), intent(in) :: which
type(C_FUNPTR), intent(in), value :: fqb
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 = cvode_mem
farg2 = which
farg3 = fqb
farg4 = c_loc(yqb0)
fresult = swigc_FCVodeQuadInitB(farg1, farg2, farg3, farg4)
swig_result = fresult
end function

function FCVodeQuadInitBS(cvode_mem, which, fqbs, yqb0) &
result(swig_result)
use, intrinsic :: ISO_C_BINDING
integer(C_INT) :: swig_result
type(C_PTR) :: cvode_mem
integer(C_INT), intent(in) :: which
type(C_FUNPTR), intent(in), value :: fqbs
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 = cvode_mem
farg2 = which
farg3 = fqbs
farg4 = c_loc(yqb0)
fresult = swigc_FCVodeQuadInitBS(farg1, farg2, farg3, farg4)
swig_result = fresult
end function

function FCVodeQuadReInitB(cvode_mem, which, yqb0) &
result(swig_result)
use, intrinsic :: ISO_C_BINDING
integer(C_INT) :: swig_result
type(C_PTR) :: cvode_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 = cvode_mem
farg2 = which
farg3 = c_loc(yqb0)
fresult = swigc_FCVodeQuadReInitB(farg1, farg2, farg3)
swig_result = fresult
end function

function FCVodeQuadSStolerancesB(cvode_mem, which, reltolqb, abstolqb) &
result(swig_result)
use, intrinsic :: ISO_C_BINDING
integer(C_INT) :: swig_result
type(C_PTR) :: cvode_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 = cvode_mem
farg2 = which
farg3 = reltolqb
farg4 = abstolqb
fresult = swigc_FCVodeQuadSStolerancesB(farg1, farg2, farg3, farg4)
swig_result = fresult
end function

function FCVodeQuadSVtolerancesB(cvode_mem, which, reltolqb, abstolqb) &
result(swig_result)
use, intrinsic :: ISO_C_BINDING
integer(C_INT) :: swig_result
type(C_PTR) :: cvode_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 = cvode_mem
farg2 = which
farg3 = reltolqb
farg4 = c_loc(abstolqb)
fresult = swigc_FCVodeQuadSVtolerancesB(farg1, farg2, farg3, farg4)
swig_result = fresult
end function

function FCVodeF(cvode_mem, tout, yout, tret, itask, ncheckptr) &
result(swig_result)
use, intrinsic :: ISO_C_BINDING
integer(C_INT) :: swig_result
type(C_PTR) :: cvode_mem
real(C_DOUBLE), intent(in) :: tout
type(N_Vector), target, intent(inout) :: yout
real(C_DOUBLE), dimension(*), target, intent(inout) :: tret
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 
integer(C_INT) :: farg5 
type(C_PTR) :: farg6 

farg1 = cvode_mem
farg2 = tout
farg3 = c_loc(yout)
farg4 = c_loc(tret(1))
farg5 = itask
farg6 = c_loc(ncheckptr(1))
fresult = swigc_FCVodeF(farg1, farg2, farg3, farg4, farg5, farg6)
swig_result = fresult
end function

function FCVodeB(cvode_mem, tbout, itaskb) &
result(swig_result)
use, intrinsic :: ISO_C_BINDING
integer(C_INT) :: swig_result
type(C_PTR) :: cvode_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 = cvode_mem
farg2 = tbout
farg3 = itaskb
fresult = swigc_FCVodeB(farg1, farg2, farg3)
swig_result = fresult
end function

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

farg1 = cvode_mem
fresult = swigc_FCVodeSetAdjNoSensi(farg1)
swig_result = fresult
end function

function FCVodeSetUserDataB(cvode_mem, which, user_datab) &
result(swig_result)
use, intrinsic :: ISO_C_BINDING
integer(C_INT) :: swig_result
type(C_PTR) :: cvode_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 = cvode_mem
farg2 = which
farg3 = user_datab
fresult = swigc_FCVodeSetUserDataB(farg1, farg2, farg3)
swig_result = fresult
end function

function FCVodeSetMaxOrdB(cvode_mem, which, maxordb) &
result(swig_result)
use, intrinsic :: ISO_C_BINDING
integer(C_INT) :: swig_result
type(C_PTR) :: cvode_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 = cvode_mem
farg2 = which
farg3 = maxordb
fresult = swigc_FCVodeSetMaxOrdB(farg1, farg2, farg3)
swig_result = fresult
end function

function FCVodeSetMaxNumStepsB(cvode_mem, which, mxstepsb) &
result(swig_result)
use, intrinsic :: ISO_C_BINDING
integer(C_INT) :: swig_result
type(C_PTR) :: cvode_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 = cvode_mem
farg2 = which
farg3 = mxstepsb
fresult = swigc_FCVodeSetMaxNumStepsB(farg1, farg2, farg3)
swig_result = fresult
end function

function FCVodeSetStabLimDetB(cvode_mem, which, stldetb) &
result(swig_result)
use, intrinsic :: ISO_C_BINDING
integer(C_INT) :: swig_result
type(C_PTR) :: cvode_mem
integer(C_INT), intent(in) :: which
integer(C_INT), intent(in) :: stldetb
integer(C_INT) :: fresult 
type(C_PTR) :: farg1 
integer(C_INT) :: farg2 
integer(C_INT) :: farg3 

farg1 = cvode_mem
farg2 = which
farg3 = stldetb
fresult = swigc_FCVodeSetStabLimDetB(farg1, farg2, farg3)
swig_result = fresult
end function

function FCVodeSetInitStepB(cvode_mem, which, hinb) &
result(swig_result)
use, intrinsic :: ISO_C_BINDING
integer(C_INT) :: swig_result
type(C_PTR) :: cvode_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 = cvode_mem
farg2 = which
farg3 = hinb
fresult = swigc_FCVodeSetInitStepB(farg1, farg2, farg3)
swig_result = fresult
end function

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

farg1 = cvode_mem
farg2 = which
farg3 = hminb
fresult = swigc_FCVodeSetMinStepB(farg1, farg2, farg3)
swig_result = fresult
end function

function FCVodeSetMaxStepB(cvode_mem, which, hmaxb) &
result(swig_result)
use, intrinsic :: ISO_C_BINDING
integer(C_INT) :: swig_result
type(C_PTR) :: cvode_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 = cvode_mem
farg2 = which
farg3 = hmaxb
fresult = swigc_FCVodeSetMaxStepB(farg1, farg2, farg3)
swig_result = fresult
end function

function FCVodeSetConstraintsB(cvode_mem, which, constraintsb) &
result(swig_result)
use, intrinsic :: ISO_C_BINDING
integer(C_INT) :: swig_result
type(C_PTR) :: cvode_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 = cvode_mem
farg2 = which
farg3 = c_loc(constraintsb)
fresult = swigc_FCVodeSetConstraintsB(farg1, farg2, farg3)
swig_result = fresult
end function

function FCVodeSetQuadErrConB(cvode_mem, which, errconqb) &
result(swig_result)
use, intrinsic :: ISO_C_BINDING
integer(C_INT) :: swig_result
type(C_PTR) :: cvode_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 = cvode_mem
farg2 = which
farg3 = errconqb
fresult = swigc_FCVodeSetQuadErrConB(farg1, farg2, farg3)
swig_result = fresult
end function

function FCVodeSetNonlinearSolverB(cvode_mem, which, nls) &
result(swig_result)
use, intrinsic :: ISO_C_BINDING
integer(C_INT) :: swig_result
type(C_PTR) :: cvode_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 = cvode_mem
farg2 = which
farg3 = c_loc(nls)
fresult = swigc_FCVodeSetNonlinearSolverB(farg1, farg2, farg3)
swig_result = fresult
end function

function FCVodeGetB(cvode_mem, which, tbret, yb) &
result(swig_result)
use, intrinsic :: ISO_C_BINDING
integer(C_INT) :: swig_result
type(C_PTR) :: cvode_mem
integer(C_INT), intent(in) :: which
real(C_DOUBLE), dimension(*), target, intent(inout) :: tbret
type(N_Vector), target, intent(inout) :: yb
integer(C_INT) :: fresult 
type(C_PTR) :: farg1 
integer(C_INT) :: farg2 
type(C_PTR) :: farg3 
type(C_PTR) :: farg4 

farg1 = cvode_mem
farg2 = which
farg3 = c_loc(tbret(1))
farg4 = c_loc(yb)
fresult = swigc_FCVodeGetB(farg1, farg2, farg3, farg4)
swig_result = fresult
end function

function FCVodeGetQuadB(cvode_mem, which, tbret, qb) &
result(swig_result)
use, intrinsic :: ISO_C_BINDING
integer(C_INT) :: swig_result
type(C_PTR) :: cvode_mem
integer(C_INT), intent(in) :: which
real(C_DOUBLE), dimension(*), target, intent(inout) :: tbret
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 = cvode_mem
farg2 = which
farg3 = c_loc(tbret(1))
farg4 = c_loc(qb)
fresult = swigc_FCVodeGetQuadB(farg1, farg2, farg3, farg4)
swig_result = fresult
end function

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

farg1 = cvode_mem
farg2 = which
fresult = swigc_FCVodeGetAdjCVodeBmem(farg1, farg2)
swig_result = fresult
end function

function FCVodeGetAdjY(cvode_mem, t, y) &
result(swig_result)
use, intrinsic :: ISO_C_BINDING
integer(C_INT) :: swig_result
type(C_PTR) :: cvode_mem
real(C_DOUBLE), intent(in) :: t
type(N_Vector), target, intent(inout) :: y
integer(C_INT) :: fresult 
type(C_PTR) :: farg1 
real(C_DOUBLE) :: farg2 
type(C_PTR) :: farg3 

farg1 = cvode_mem
farg2 = t
farg3 = c_loc(y)
fresult = swigc_FCVodeGetAdjY(farg1, farg2, farg3)
swig_result = fresult
end function

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

function swigf_create_CVadjCheckPointRec() &
result(self)
use, intrinsic :: ISO_C_BINDING
type(CVadjCheckPointRec) :: self
type(SwigClassWrapper) :: fresult 

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

subroutine swigf_release_CVadjCheckPointRec(self)
use, intrinsic :: ISO_C_BINDING
class(CVadjCheckPointRec), intent(inout) :: self
type(SwigClassWrapper) :: farg1 

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

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

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

function FCVodeGetAdjCheckPointsInfo(cvode_mem, ckpnt) &
result(swig_result)
use, intrinsic :: ISO_C_BINDING
integer(C_INT) :: swig_result
type(C_PTR) :: cvode_mem
class(CVadjCheckPointRec), intent(in) :: ckpnt
integer(C_INT) :: fresult 
type(C_PTR) :: farg1 
type(SwigClassWrapper) :: farg2 

farg1 = cvode_mem
farg2 = ckpnt%swigdata
fresult = swigc_FCVodeGetAdjCheckPointsInfo(farg1, farg2)
swig_result = fresult
end function

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

farg1 = cvode_mem
farg2 = which
farg3 = jtimesrhsfn
fresult = swigc_FCVodeSetJacTimesRhsFnB(farg1, farg2, farg3)
swig_result = fresult
end function

function FCVodeGetAdjDataPointHermite(cvode_mem, which, t, y, yd) &
result(swig_result)
use, intrinsic :: ISO_C_BINDING
integer(C_INT) :: swig_result
type(C_PTR) :: cvode_mem
integer(C_INT), intent(in) :: which
real(C_DOUBLE), dimension(*), target, intent(inout) :: t
type(N_Vector), target, intent(inout) :: y
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 = cvode_mem
farg2 = which
farg3 = c_loc(t(1))
farg4 = c_loc(y)
farg5 = c_loc(yd)
fresult = swigc_FCVodeGetAdjDataPointHermite(farg1, farg2, farg3, farg4, farg5)
swig_result = fresult
end function

function FCVodeGetAdjDataPointPolynomial(cvode_mem, which, t, order, y) &
result(swig_result)
use, intrinsic :: ISO_C_BINDING
integer(C_INT) :: swig_result
type(C_PTR) :: cvode_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 = cvode_mem
farg2 = which
farg3 = c_loc(t(1))
farg4 = c_loc(order(1))
farg5 = c_loc(y)
fresult = swigc_FCVodeGetAdjDataPointPolynomial(farg1, farg2, farg3, farg4, farg5)
swig_result = fresult
end function

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

farg1 = cvode_mem
farg2 = c_loc(addr)
fresult = swigc_FCVodeGetAdjCurrentCheckPoint(farg1, farg2)
swig_result = fresult
end function

function FCVBandPrecInit(cvode_mem, n, mu, ml) &
result(swig_result)
use, intrinsic :: ISO_C_BINDING
integer(C_INT) :: swig_result
type(C_PTR) :: cvode_mem
integer(C_INT64_T), intent(in) :: n
integer(C_INT64_T), intent(in) :: mu
integer(C_INT64_T), intent(in) :: ml
integer(C_INT) :: fresult 
type(C_PTR) :: farg1 
integer(C_INT64_T) :: farg2 
integer(C_INT64_T) :: farg3 
integer(C_INT64_T) :: farg4 

farg1 = cvode_mem
farg2 = n
farg3 = mu
farg4 = ml
fresult = swigc_FCVBandPrecInit(farg1, farg2, farg3, farg4)
swig_result = fresult
end function

function FCVBandPrecGetWorkSpace(cvode_mem, lenrwls, leniwls) &
result(swig_result)
use, intrinsic :: ISO_C_BINDING
integer(C_INT) :: swig_result
type(C_PTR) :: cvode_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 = cvode_mem
farg2 = c_loc(lenrwls(1))
farg3 = c_loc(leniwls(1))
fresult = swigc_FCVBandPrecGetWorkSpace(farg1, farg2, farg3)
swig_result = fresult
end function

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

farg1 = cvode_mem
farg2 = c_loc(nfevalsbp(1))
fresult = swigc_FCVBandPrecGetNumRhsEvals(farg1, farg2)
swig_result = fresult
end function

function FCVBandPrecInitB(cvode_mem, which, nb, mub, mlb) &
result(swig_result)
use, intrinsic :: ISO_C_BINDING
integer(C_INT) :: swig_result
type(C_PTR) :: cvode_mem
integer(C_INT), intent(in) :: which
integer(C_INT64_T), intent(in) :: nb
integer(C_INT64_T), intent(in) :: mub
integer(C_INT64_T), intent(in) :: mlb
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 

farg1 = cvode_mem
farg2 = which
farg3 = nb
farg4 = mub
farg5 = mlb
fresult = swigc_FCVBandPrecInitB(farg1, farg2, farg3, farg4, farg5)
swig_result = fresult
end function

function FCVBBDPrecInit(cvode_mem, nlocal, mudq, mldq, mukeep, mlkeep, dqrely, gloc, cfn) &
result(swig_result)
use, intrinsic :: ISO_C_BINDING
integer(C_INT) :: swig_result
type(C_PTR) :: cvode_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) :: dqrely
type(C_FUNPTR), intent(in), value :: gloc
type(C_FUNPTR), intent(in), value :: cfn
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 = cvode_mem
farg2 = nlocal
farg3 = mudq
farg4 = mldq
farg5 = mukeep
farg6 = mlkeep
farg7 = dqrely
farg8 = gloc
farg9 = cfn
fresult = swigc_FCVBBDPrecInit(farg1, farg2, farg3, farg4, farg5, farg6, farg7, farg8, farg9)
swig_result = fresult
end function

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

farg1 = cvode_mem
farg2 = mudq
farg3 = mldq
farg4 = dqrely
fresult = swigc_FCVBBDPrecReInit(farg1, farg2, farg3, farg4)
swig_result = fresult
end function

function FCVBBDPrecGetWorkSpace(cvode_mem, lenrwbbdp, leniwbbdp) &
result(swig_result)
use, intrinsic :: ISO_C_BINDING
integer(C_INT) :: swig_result
type(C_PTR) :: cvode_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 = cvode_mem
farg2 = c_loc(lenrwbbdp(1))
farg3 = c_loc(leniwbbdp(1))
fresult = swigc_FCVBBDPrecGetWorkSpace(farg1, farg2, farg3)
swig_result = fresult
end function

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

farg1 = cvode_mem
farg2 = c_loc(ngevalsbbdp(1))
fresult = swigc_FCVBBDPrecGetNumGfnEvals(farg1, farg2)
swig_result = fresult
end function

function FCVBBDPrecInitB(cvode_mem, which, nlocalb, mudqb, mldqb, mukeepb, mlkeepb, dqrelyb, glocb, cfnb) &
result(swig_result)
use, intrinsic :: ISO_C_BINDING
integer(C_INT) :: swig_result
type(C_PTR) :: cvode_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) :: dqrelyb
type(C_FUNPTR), intent(in), value :: glocb
type(C_FUNPTR), intent(in), value :: cfnb
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 = cvode_mem
farg2 = which
farg3 = nlocalb
farg4 = mudqb
farg5 = mldqb
farg6 = mukeepb
farg7 = mlkeepb
farg8 = dqrelyb
farg9 = glocb
farg10 = cfnb
fresult = swigc_FCVBBDPrecInitB(farg1, farg2, farg3, farg4, farg5, farg6, farg7, farg8, farg9, farg10)
swig_result = fresult
end function

function FCVBBDPrecReInitB(cvode_mem, which, mudqb, mldqb, dqrelyb) &
result(swig_result)
use, intrinsic :: ISO_C_BINDING
integer(C_INT) :: swig_result
type(C_PTR) :: cvode_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) :: dqrelyb
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 = cvode_mem
farg2 = which
farg3 = mudqb
farg4 = mldqb
farg5 = dqrelyb
fresult = swigc_FCVBBDPrecReInitB(farg1, farg2, farg3, farg4, farg5)
swig_result = fresult
end function

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

farg1 = cvode_mem
fresult = swigc_FCVDiag(farg1)
swig_result = fresult
end function

function FCVDiagGetWorkSpace(cvode_mem, lenrwls, leniwls) &
result(swig_result)
use, intrinsic :: ISO_C_BINDING
integer(C_INT) :: swig_result
type(C_PTR) :: cvode_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 = cvode_mem
farg2 = c_loc(lenrwls(1))
farg3 = c_loc(leniwls(1))
fresult = swigc_FCVDiagGetWorkSpace(farg1, farg2, farg3)
swig_result = fresult
end function

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

farg1 = cvode_mem
farg2 = c_loc(nfevalsls(1))
fresult = swigc_FCVDiagGetNumRhsEvals(farg1, farg2)
swig_result = fresult
end function

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

farg1 = cvode_mem
farg2 = c_loc(flag(1))
fresult = swigc_FCVDiagGetLastFlag(farg1, farg2)
swig_result = fresult
end function

function FCVDiagGetReturnFlagName(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_FCVDiagGetReturnFlagName(farg1)
call SWIG_chararray_to_string(fresult, swig_result)
if (.false.) call SWIG_free(fresult%data)
end function

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

farg1 = cvode_mem
farg2 = which
fresult = swigc_FCVDiagB(farg1, farg2)
swig_result = fresult
end function

function FCVodeSetLinearSolver(cvode_mem, ls, a) &
result(swig_result)
use, intrinsic :: ISO_C_BINDING
integer(C_INT) :: swig_result
type(C_PTR) :: cvode_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 = cvode_mem
farg2 = c_loc(ls)
farg3 = c_loc(a)
fresult = swigc_FCVodeSetLinearSolver(farg1, farg2, farg3)
swig_result = fresult
end function

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

farg1 = cvode_mem
farg2 = jac
fresult = swigc_FCVodeSetJacFn(farg1, farg2)
swig_result = fresult
end function

function FCVodeSetJacEvalFrequency(cvode_mem, msbj) &
result(swig_result)
use, intrinsic :: ISO_C_BINDING
integer(C_INT) :: swig_result
type(C_PTR) :: cvode_mem
integer(C_LONG), intent(in) :: msbj
integer(C_INT) :: fresult 
type(C_PTR) :: farg1 
integer(C_LONG) :: farg2 

farg1 = cvode_mem
farg2 = msbj
fresult = swigc_FCVodeSetJacEvalFrequency(farg1, farg2)
swig_result = fresult
end function

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

farg1 = cvode_mem
farg2 = onoff
fresult = swigc_FCVodeSetLinearSolutionScaling(farg1, farg2)
swig_result = fresult
end function

function FCVodeSetDeltaGammaMaxBadJac(cvode_mem, dgmax_jbad) &
result(swig_result)
use, intrinsic :: ISO_C_BINDING
integer(C_INT) :: swig_result
type(C_PTR) :: cvode_mem
real(C_DOUBLE), intent(in) :: dgmax_jbad
integer(C_INT) :: fresult 
type(C_PTR) :: farg1 
real(C_DOUBLE) :: farg2 

farg1 = cvode_mem
farg2 = dgmax_jbad
fresult = swigc_FCVodeSetDeltaGammaMaxBadJac(farg1, farg2)
swig_result = fresult
end function

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

farg1 = cvode_mem
farg2 = eplifac
fresult = swigc_FCVodeSetEpsLin(farg1, farg2)
swig_result = fresult
end function

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

farg1 = arkode_mem
farg2 = nrmfac
fresult = swigc_FCVodeSetLSNormFactor(farg1, farg2)
swig_result = fresult
end function

function FCVodeSetPreconditioner(cvode_mem, pset, psolve) &
result(swig_result)
use, intrinsic :: ISO_C_BINDING
integer(C_INT) :: swig_result
type(C_PTR) :: cvode_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 = cvode_mem
farg2 = pset
farg3 = psolve
fresult = swigc_FCVodeSetPreconditioner(farg1, farg2, farg3)
swig_result = fresult
end function

function FCVodeSetJacTimes(cvode_mem, jtsetup, jtimes) &
result(swig_result)
use, intrinsic :: ISO_C_BINDING
integer(C_INT) :: swig_result
type(C_PTR) :: cvode_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 = cvode_mem
farg2 = jtsetup
farg3 = jtimes
fresult = swigc_FCVodeSetJacTimes(farg1, farg2, farg3)
swig_result = fresult
end function

function FCVodeSetLinSysFn(cvode_mem, linsys) &
result(swig_result)
use, intrinsic :: ISO_C_BINDING
integer(C_INT) :: swig_result
type(C_PTR) :: cvode_mem
type(C_FUNPTR), intent(in), value :: linsys
integer(C_INT) :: fresult 
type(C_PTR) :: farg1 
type(C_FUNPTR) :: farg2 

farg1 = cvode_mem
farg2 = linsys
fresult = swigc_FCVodeSetLinSysFn(farg1, farg2)
swig_result = fresult
end function

function FCVodeGetJac(cvode_mem, j) &
result(swig_result)
use, intrinsic :: ISO_C_BINDING
integer(C_INT) :: swig_result
type(C_PTR) :: cvode_mem
type(C_PTR), target, intent(inout) :: j
integer(C_INT) :: fresult 
type(C_PTR) :: farg1 
type(C_PTR) :: farg2 

farg1 = cvode_mem
farg2 = c_loc(j)
fresult = swigc_FCVodeGetJac(farg1, farg2)
swig_result = fresult
end function

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

farg1 = cvode_mem
farg2 = c_loc(t_j(1))
fresult = swigc_FCVodeGetJacTime(farg1, farg2)
swig_result = fresult
end function

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

farg1 = cvode_mem
farg2 = c_loc(nst_j(1))
fresult = swigc_FCVodeGetJacNumSteps(farg1, farg2)
swig_result = fresult
end function

function FCVodeGetLinWorkSpace(cvode_mem, lenrwls, leniwls) &
result(swig_result)
use, intrinsic :: ISO_C_BINDING
integer(C_INT) :: swig_result
type(C_PTR) :: cvode_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 = cvode_mem
farg2 = c_loc(lenrwls(1))
farg3 = c_loc(leniwls(1))
fresult = swigc_FCVodeGetLinWorkSpace(farg1, farg2, farg3)
swig_result = fresult
end function

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

farg1 = cvode_mem
farg2 = c_loc(njevals(1))
fresult = swigc_FCVodeGetNumJacEvals(farg1, farg2)
swig_result = fresult
end function

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

farg1 = cvode_mem
farg2 = c_loc(npevals(1))
fresult = swigc_FCVodeGetNumPrecEvals(farg1, farg2)
swig_result = fresult
end function

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

farg1 = cvode_mem
farg2 = c_loc(npsolves(1))
fresult = swigc_FCVodeGetNumPrecSolves(farg1, farg2)
swig_result = fresult
end function

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

farg1 = cvode_mem
farg2 = c_loc(nliters(1))
fresult = swigc_FCVodeGetNumLinIters(farg1, farg2)
swig_result = fresult
end function

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

farg1 = cvode_mem
farg2 = c_loc(nlcfails(1))
fresult = swigc_FCVodeGetNumLinConvFails(farg1, farg2)
swig_result = fresult
end function

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

farg1 = cvode_mem
farg2 = c_loc(njtsetups(1))
fresult = swigc_FCVodeGetNumJTSetupEvals(farg1, farg2)
swig_result = fresult
end function

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

farg1 = cvode_mem
farg2 = c_loc(njvevals(1))
fresult = swigc_FCVodeGetNumJtimesEvals(farg1, farg2)
swig_result = fresult
end function

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

farg1 = cvode_mem
farg2 = c_loc(nfevalsls(1))
fresult = swigc_FCVodeGetNumLinRhsEvals(farg1, farg2)
swig_result = fresult
end function

function FCVodeGetLinSolveStats(cvode_mem, njevals, nfevalsls, nliters, nlcfails, npevals, npsolves, njtsetups, njtimes) &
result(swig_result)
use, intrinsic :: ISO_C_BINDING
integer(C_INT) :: swig_result
type(C_PTR) :: cvode_mem
integer(C_LONG), dimension(*), target, intent(inout) :: njevals
integer(C_LONG), dimension(*), target, intent(inout) :: nfevalsls
integer(C_LONG), dimension(*), target, intent(inout) :: nliters
integer(C_LONG), dimension(*), target, intent(inout) :: nlcfails
integer(C_LONG), dimension(*), target, intent(inout) :: npevals
integer(C_LONG), dimension(*), target, intent(inout) :: npsolves
integer(C_LONG), dimension(*), target, intent(inout) :: njtsetups
integer(C_LONG), dimension(*), target, intent(inout) :: njtimes
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 = cvode_mem
farg2 = c_loc(njevals(1))
farg3 = c_loc(nfevalsls(1))
farg4 = c_loc(nliters(1))
farg5 = c_loc(nlcfails(1))
farg6 = c_loc(npevals(1))
farg7 = c_loc(npsolves(1))
farg8 = c_loc(njtsetups(1))
farg9 = c_loc(njtimes(1))
fresult = swigc_FCVodeGetLinSolveStats(farg1, farg2, farg3, farg4, farg5, farg6, farg7, farg8, farg9)
swig_result = fresult
end function

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

farg1 = cvode_mem
farg2 = c_loc(flag(1))
fresult = swigc_FCVodeGetLastLinFlag(farg1, farg2)
swig_result = fresult
end function

function FCVodeGetLinReturnFlagName(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_FCVodeGetLinReturnFlagName(farg1)
call SWIG_chararray_to_string(fresult, swig_result)
if (.false.) call SWIG_free(fresult%data)
end function

function FCVodeSetLinearSolverB(cvode_mem, which, ls, a) &
result(swig_result)
use, intrinsic :: ISO_C_BINDING
integer(C_INT) :: swig_result
type(C_PTR) :: cvode_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 = cvode_mem
farg2 = which
farg3 = c_loc(ls)
farg4 = c_loc(a)
fresult = swigc_FCVodeSetLinearSolverB(farg1, farg2, farg3, farg4)
swig_result = fresult
end function

function FCVodeSetJacFnB(cvode_mem, which, jacb) &
result(swig_result)
use, intrinsic :: ISO_C_BINDING
integer(C_INT) :: swig_result
type(C_PTR) :: cvode_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 = cvode_mem
farg2 = which
farg3 = jacb
fresult = swigc_FCVodeSetJacFnB(farg1, farg2, farg3)
swig_result = fresult
end function

function FCVodeSetJacFnBS(cvode_mem, which, jacbs) &
result(swig_result)
use, intrinsic :: ISO_C_BINDING
integer(C_INT) :: swig_result
type(C_PTR) :: cvode_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 = cvode_mem
farg2 = which
farg3 = jacbs
fresult = swigc_FCVodeSetJacFnBS(farg1, farg2, farg3)
swig_result = fresult
end function

function FCVodeSetEpsLinB(cvode_mem, which, eplifacb) &
result(swig_result)
use, intrinsic :: ISO_C_BINDING
integer(C_INT) :: swig_result
type(C_PTR) :: cvode_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 = cvode_mem
farg2 = which
farg3 = eplifacb
fresult = swigc_FCVodeSetEpsLinB(farg1, farg2, farg3)
swig_result = fresult
end function

function FCVodeSetLSNormFactorB(arkode_mem, which, nrmfacb) &
result(swig_result)
use, intrinsic :: ISO_C_BINDING
integer(C_INT) :: swig_result
type(C_PTR) :: arkode_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 = arkode_mem
farg2 = which
farg3 = nrmfacb
fresult = swigc_FCVodeSetLSNormFactorB(farg1, farg2, farg3)
swig_result = fresult
end function

function FCVodeSetLinearSolutionScalingB(cvode_mem, which, onoffb) &
result(swig_result)
use, intrinsic :: ISO_C_BINDING
integer(C_INT) :: swig_result
type(C_PTR) :: cvode_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 = cvode_mem
farg2 = which
farg3 = onoffb
fresult = swigc_FCVodeSetLinearSolutionScalingB(farg1, farg2, farg3)
swig_result = fresult
end function

function FCVodeSetPreconditionerB(cvode_mem, which, psetb, psolveb) &
result(swig_result)
use, intrinsic :: ISO_C_BINDING
integer(C_INT) :: swig_result
type(C_PTR) :: cvode_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 = cvode_mem
farg2 = which
farg3 = psetb
farg4 = psolveb
fresult = swigc_FCVodeSetPreconditionerB(farg1, farg2, farg3, farg4)
swig_result = fresult
end function

function FCVodeSetPreconditionerBS(cvode_mem, which, psetbs, psolvebs) &
result(swig_result)
use, intrinsic :: ISO_C_BINDING
integer(C_INT) :: swig_result
type(C_PTR) :: cvode_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 = cvode_mem
farg2 = which
farg3 = psetbs
farg4 = psolvebs
fresult = swigc_FCVodeSetPreconditionerBS(farg1, farg2, farg3, farg4)
swig_result = fresult
end function

function FCVodeSetJacTimesB(cvode_mem, which, jtsetupb, jtimesb) &
result(swig_result)
use, intrinsic :: ISO_C_BINDING
integer(C_INT) :: swig_result
type(C_PTR) :: cvode_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 = cvode_mem
farg2 = which
farg3 = jtsetupb
farg4 = jtimesb
fresult = swigc_FCVodeSetJacTimesB(farg1, farg2, farg3, farg4)
swig_result = fresult
end function

function FCVodeSetJacTimesBS(cvode_mem, which, jtsetupbs, jtimesbs) &
result(swig_result)
use, intrinsic :: ISO_C_BINDING
integer(C_INT) :: swig_result
type(C_PTR) :: cvode_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 = cvode_mem
farg2 = which
farg3 = jtsetupbs
farg4 = jtimesbs
fresult = swigc_FCVodeSetJacTimesBS(farg1, farg2, farg3, farg4)
swig_result = fresult
end function

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

farg1 = cvode_mem
farg2 = which
farg3 = linsys
fresult = swigc_FCVodeSetLinSysFnB(farg1, farg2, farg3)
swig_result = fresult
end function

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

farg1 = cvode_mem
farg2 = which
farg3 = linsys
fresult = swigc_FCVodeSetLinSysFnBS(farg1, farg2, farg3)
swig_result = fresult
end function


end module
