Generated Code

The following is c_ida code generated by the CellML API from this CellML file. (Back to language selection)

The raw code is available.

/*
   There are a total of 58 entries in the algebraic variable array.
   There are a total of 12 entries in each of the rate and state variable arrays.
   There are a total of 60 entries in the constant variable array.
 */
/*
 * VOI is time in component environment (ms).
 * STATES[0] is V in component membrane (mV).
 * CONSTANTS[0] is R in component membrane (gas_constant_units).
 * CONSTANTS[1] is T in component membrane (kelvin).
 * CONSTANTS[2] is F in component membrane (faradays_constant_units).
 * ALGEBRAIC[57] is dV_dt in component membrane (mV_per_ms).
 * CONSTANTS[3] is Cm in component membrane (uF_per_mm2).
 * ALGEBRAIC[0] is I_st in component membrane (uA_per_mm2).
 * ALGEBRAIC[45] is i_Na in component fast_sodium_current (uA_per_mm2).
 * ALGEBRAIC[49] is i_Ca_L in component L_type_Ca_channel (uA_per_mm2).
 * ALGEBRAIC[52] is i_K in component time_dependent_potassium_current (uA_per_mm2).
 * ALGEBRAIC[40] is i_NaCa in component Na_Ca_exchanger (uA_per_mm2).
 * ALGEBRAIC[53] is i_K1 in component time_independent_potassium_current (uA_per_mm2).
 * ALGEBRAIC[28] is i_Kp in component plateau_potassium_current (uA_per_mm2).
 * ALGEBRAIC[29] is i_p_Ca in component sarcolemmal_calcium_pump (uA_per_mm2).
 * ALGEBRAIC[31] is i_Na_b in component sodium_background_current (uA_per_mm2).
 * ALGEBRAIC[33] is i_Ca_b in component calcium_background_current (uA_per_mm2).
 * ALGEBRAIC[35] is i_NaK in component sodium_potassium_pump (uA_per_mm2).
 * ALGEBRAIC[56] is i_ns_Ca in component non_specific_calcium_activated_current (uA_per_mm2).
 * CONSTANTS[4] is stimPeriod in component membrane (dimensionless).
 * CONSTANTS[5] is stimDuration in component membrane (dimensionless).
 * CONSTANTS[6] is stimCurrent in component membrane (dimensionless).
 * ALGEBRAIC[1] is E_Na in component fast_sodium_current (mV).
 * CONSTANTS[7] is g_Na in component fast_sodium_current (mS_per_mm2).
 * STATES[1] is Nai in component ionic_concentrations (mM).
 * CONSTANTS[8] is Nao in component ionic_concentrations (mM).
 * STATES[2] is m in component fast_sodium_current_m_gate (dimensionless).
 * STATES[3] is h in component fast_sodium_current_h_gate (dimensionless).
 * STATES[4] is j in component fast_sodium_current_j_gate (dimensionless).
 * ALGEBRAIC[2] is alpha_m in component fast_sodium_current_m_gate (per_ms).
 * ALGEBRAIC[3] is beta_m in component fast_sodium_current_m_gate (per_ms).
 * ALGEBRAIC[4] is alpha_h in component fast_sodium_current_h_gate (per_ms).
 * ALGEBRAIC[5] is beta_h in component fast_sodium_current_h_gate (per_ms).
 * ALGEBRAIC[6] is alpha_j in component fast_sodium_current_j_gate (per_ms).
 * ALGEBRAIC[7] is beta_j in component fast_sodium_current_j_gate (per_ms).
 * ALGEBRAIC[46] is i_CaCa in component L_type_Ca_channel (uA_per_mm2).
 * ALGEBRAIC[48] is i_CaK in component L_type_Ca_channel (uA_per_mm2).
 * ALGEBRAIC[47] is i_CaNa in component L_type_Ca_channel (uA_per_mm2).
 * CONSTANTS[9] is gamma_Nai in component L_type_Ca_channel (dimensionless).
 * CONSTANTS[10] is gamma_Nao in component L_type_Ca_channel (dimensionless).
 * CONSTANTS[11] is gamma_Ki in component L_type_Ca_channel (dimensionless).
 * CONSTANTS[12] is gamma_Ko in component L_type_Ca_channel (dimensionless).
 * ALGEBRAIC[8] is I_CaCa in component L_type_Ca_channel (uA_per_mm2).
 * ALGEBRAIC[10] is I_CaK in component L_type_Ca_channel (uA_per_mm2).
 * ALGEBRAIC[9] is I_CaNa in component L_type_Ca_channel (uA_per_mm2).
 * CONSTANTS[13] is P_Ca in component L_type_Ca_channel (mm_per_ms).
 * CONSTANTS[14] is P_Na in component L_type_Ca_channel (mm_per_ms).
 * CONSTANTS[15] is P_K in component L_type_Ca_channel (mm_per_ms).
 * CONSTANTS[16] is gamma_Cai in component L_type_Ca_channel (dimensionless).
 * CONSTANTS[17] is gamma_Cao in component L_type_Ca_channel (dimensionless).
 * STATES[5] is Cai in component ionic_concentrations (mM).
 * CONSTANTS[18] is Cao in component ionic_concentrations (mM).
 * CONSTANTS[19] is Ko in component ionic_concentrations (mM).
 * STATES[6] is Ki in component ionic_concentrations (mM).
 * STATES[7] is d in component L_type_Ca_channel_d_gate (dimensionless).
 * STATES[8] is f in component L_type_Ca_channel_f_gate (dimensionless).
 * ALGEBRAIC[17] is f_Ca in component L_type_Ca_channel_f_Ca_gate (dimensionless).
 * ALGEBRAIC[50] is alpha_d in component L_type_Ca_channel_d_gate (per_ms).
 * ALGEBRAIC[13] is beta_d in component L_type_Ca_channel_d_gate (per_ms).
 * ALGEBRAIC[11] is d_infinity in component L_type_Ca_channel_d_gate (dimensionless).
 * ALGEBRAIC[12] is tau_d in component L_type_Ca_channel_d_gate (ms).
 * ALGEBRAIC[51] is alpha_f in component L_type_Ca_channel_f_gate (per_ms).
 * ALGEBRAIC[16] is beta_f in component L_type_Ca_channel_f_gate (per_ms).
 * ALGEBRAIC[14] is f_infinity in component L_type_Ca_channel_f_gate (dimensionless).
 * ALGEBRAIC[15] is tau_f in component L_type_Ca_channel_f_gate (ms).
 * CONSTANTS[20] is Km_Ca in component L_type_Ca_channel_f_Ca_gate (mM).
 * CONSTANTS[21] is g_K_max in component time_dependent_potassium_current (mS_per_mm2).
 * CONSTANTS[54] is g_K in component time_dependent_potassium_current (mS_per_mm2).
 * ALGEBRAIC[18] is E_K in component time_dependent_potassium_current (mV).
 * CONSTANTS[22] is PR_NaK in component time_dependent_potassium_current (dimensionless).
 * STATES[9] is X in component time_dependent_potassium_current_X_gate (dimensionless).
 * ALGEBRAIC[21] is Xi in component time_dependent_potassium_current_Xi_gate (dimensionless).
 * ALGEBRAIC[19] is alpha_X in component time_dependent_potassium_current_X_gate (per_ms).
 * ALGEBRAIC[20] is beta_X in component time_dependent_potassium_current_X_gate (per_ms).
 * ALGEBRAIC[22] is E_K1 in component time_independent_potassium_current (mV).
 * CONSTANTS[23] is g_K1_max in component time_independent_potassium_current (mS_per_mm2).
 * CONSTANTS[55] is g_K1 in component time_independent_potassium_current (mS_per_mm2).
 * ALGEBRAIC[25] is K1_infinity in component time_independent_potassium_current_K1_gate (dimensionless).
 * ALGEBRAIC[23] is alpha_K1 in component time_independent_potassium_current_K1_gate (per_ms).
 * ALGEBRAIC[24] is beta_K1 in component time_independent_potassium_current_K1_gate (per_ms).
 * ALGEBRAIC[26] is E_Kp in component plateau_potassium_current (mV).
 * CONSTANTS[24] is g_Kp in component plateau_potassium_current (mS_per_mm2).
 * ALGEBRAIC[27] is Kp in component plateau_potassium_current (dimensionless).
 * CONSTANTS[25] is K_mpCa in component sarcolemmal_calcium_pump (mM).
 * CONSTANTS[26] is I_pCa in component sarcolemmal_calcium_pump (uA_per_mm2).
 * CONSTANTS[27] is g_Nab in component sodium_background_current (mS_per_mm2).
 * ALGEBRAIC[30] is E_NaN in component sodium_background_current (mV).
 * CONSTANTS[28] is g_Cab in component calcium_background_current (mS_per_mm2).
 * ALGEBRAIC[32] is E_CaN in component calcium_background_current (mV).
 * CONSTANTS[29] is I_NaK in component sodium_potassium_pump (uA_per_mm2).
 * ALGEBRAIC[34] is f_NaK in component sodium_potassium_pump (dimensionless).
 * CONSTANTS[30] is K_mNai in component sodium_potassium_pump (mM).
 * CONSTANTS[31] is K_mKo in component sodium_potassium_pump (mM).
 * CONSTANTS[56] is sigma in component sodium_potassium_pump (dimensionless).
 * ALGEBRAIC[54] is i_ns_Na in component non_specific_calcium_activated_current (uA_per_mm2).
 * ALGEBRAIC[55] is i_ns_K in component non_specific_calcium_activated_current (uA_per_mm2).
 * CONSTANTS[32] is P_ns_Ca in component non_specific_calcium_activated_current (mm_per_ms).
 * ALGEBRAIC[38] is I_ns_Na in component non_specific_calcium_activated_current (uA_per_mm2).
 * ALGEBRAIC[39] is I_ns_K in component non_specific_calcium_activated_current (uA_per_mm2).
 * CONSTANTS[33] is K_m_ns_Ca in component non_specific_calcium_activated_current (mM).
 * ALGEBRAIC[37] is Vns in component non_specific_calcium_activated_current (mV).
 * ALGEBRAIC[36] is EnsCa in component non_specific_calcium_activated_current (mV).
 * CONSTANTS[34] is K_NaCa in component Na_Ca_exchanger (uA_per_mm2).
 * CONSTANTS[35] is K_mNa in component Na_Ca_exchanger (mM).
 * CONSTANTS[36] is K_mCa in component Na_Ca_exchanger (mM).
 * CONSTANTS[37] is K_sat in component Na_Ca_exchanger (dimensionless).
 * CONSTANTS[38] is eta in component Na_Ca_exchanger (dimensionless).
 * ALGEBRAIC[41] is i_rel in component calcium_fluxes_in_the_SR (mM_per_ms).
 * ALGEBRAIC[42] is i_up in component calcium_fluxes_in_the_SR (mM_per_ms).
 * ALGEBRAIC[43] is i_leak in component calcium_fluxes_in_the_SR (mM_per_ms).
 * ALGEBRAIC[44] is i_tr in component calcium_fluxes_in_the_SR (mM_per_ms).
 * CONSTANTS[59] is G_rel in component calcium_fluxes_in_the_SR (per_ms).
 * CONSTANTS[57] is G_rel_peak in component calcium_fluxes_in_the_SR (per_ms).
 * CONSTANTS[39] is G_rel_max in component calcium_fluxes_in_the_SR (per_ms).
 * CONSTANTS[40] is tau_on in component calcium_fluxes_in_the_SR (ms).
 * CONSTANTS[41] is tau_off in component calcium_fluxes_in_the_SR (ms).
 * CONSTANTS[42] is t_CICR in component calcium_fluxes_in_the_SR (ms).
 * CONSTANTS[43] is tau_tr in component calcium_fluxes_in_the_SR (ms).
 * CONSTANTS[44] is K_mrel in component calcium_fluxes_in_the_SR (mM).
 * CONSTANTS[45] is K_mup in component calcium_fluxes_in_the_SR (mM).
 * CONSTANTS[58] is K_leak in component calcium_fluxes_in_the_SR (per_ms).
 * CONSTANTS[46] is I_up in component calcium_fluxes_in_the_SR (mM_per_ms).
 * CONSTANTS[47] is Ca_NSR_max in component calcium_fluxes_in_the_SR (mM).
 * CONSTANTS[48] is delta_Ca_i2 in component calcium_fluxes_in_the_SR (mM).
 * CONSTANTS[49] is delta_Ca_ith in component calcium_fluxes_in_the_SR (mM).
 * STATES[10] is Ca_JSR in component ionic_concentrations (mM).
 * STATES[11] is Ca_NSR in component ionic_concentrations (mM).
 * CONSTANTS[50] is Am in component ionic_concentrations (per_mm).
 * CONSTANTS[51] is V_myo in component ionic_concentrations (dimensionless).
 * CONSTANTS[52] is V_JSR in component ionic_concentrations (dimensionless).
 * CONSTANTS[53] is V_NSR in component ionic_concentrations (dimensionless).
 * RATES[0] is d/dt V in component membrane (mV).
 * RATES[2] is d/dt m in component fast_sodium_current_m_gate (dimensionless).
 * RATES[3] is d/dt h in component fast_sodium_current_h_gate (dimensionless).
 * RATES[4] is d/dt j in component fast_sodium_current_j_gate (dimensionless).
 * RATES[7] is d/dt d in component L_type_Ca_channel_d_gate (dimensionless).
 * RATES[8] is d/dt f in component L_type_Ca_channel_f_gate (dimensionless).
 * RATES[9] is d/dt X in component time_dependent_potassium_current_X_gate (dimensionless).
 * RATES[1] is d/dt Nai in component ionic_concentrations (mM).
 * RATES[5] is d/dt Cai in component ionic_concentrations (mM).
 * RATES[6] is d/dt Ki in component ionic_concentrations (mM).
 * RATES[10] is d/dt Ca_JSR in component ionic_concentrations (mM).
 * RATES[11] is d/dt Ca_NSR in component ionic_concentrations (mM).
 * There are a total of 5 condition variables.
 */
void
initConsts(double* CONSTANTS, double* RATES, double *STATES)
{
STATES[0] = -84.624;
CONSTANTS[0] = 8.3145e3;
CONSTANTS[1] = 310.0;
CONSTANTS[2] = 96845.0;
CONSTANTS[3] = 0.01;
CONSTANTS[4] = 1e3;
CONSTANTS[5] = 0.5;
CONSTANTS[6] = 0.5;
CONSTANTS[7] = 0.16;
STATES[1] = 10.0;
CONSTANTS[8] = 140.0;
STATES[2] = 0.0;
STATES[3] = 1.0;
STATES[4] = 1.0;
CONSTANTS[9] = 0.75;
CONSTANTS[10] = 0.75;
CONSTANTS[11] = 0.75;
CONSTANTS[12] = 0.75;
CONSTANTS[13] = 5.4e-6;
CONSTANTS[14] = 6.75e-9;
CONSTANTS[15] = 1.93e-9;
CONSTANTS[16] = 1.0;
CONSTANTS[17] = 0.34;
STATES[5] = 0.12e-3;
CONSTANTS[18] = 1.8;
CONSTANTS[19] = 5.4;
STATES[6] = 145.0;
STATES[7] = 0.0;
STATES[8] = 1.0;
CONSTANTS[20] = 0.6e-3;
CONSTANTS[21] = 2.82e-3;
CONSTANTS[22] = 0.01833;
STATES[9] = 0.0;
CONSTANTS[23] = 7.5e-3;
CONSTANTS[24] = 1.83e-4;
CONSTANTS[25] = 0.5e-3;
CONSTANTS[26] = 1.15e-2;
CONSTANTS[27] = 1.41e-5;
CONSTANTS[28] = 3.016e-5;
CONSTANTS[29] = 1.5e-2;
CONSTANTS[30] = 10.0;
CONSTANTS[31] = 1.5;
CONSTANTS[32] = 1.75e-9;
CONSTANTS[33] = 1.2e-3;
CONSTANTS[34] = 20.0;
CONSTANTS[35] = 87.5;
CONSTANTS[36] = 1.38;
CONSTANTS[37] = 0.1;
CONSTANTS[38] = 0.35;
CONSTANTS[39] = 60.0;
CONSTANTS[40] = 2.0;
CONSTANTS[41] = 2.0;
CONSTANTS[42] = 0.0;
CONSTANTS[43] = 180.0;
CONSTANTS[44] = 0.8e-3;
CONSTANTS[45] = 0.92e-3;
CONSTANTS[46] = 0.005;
CONSTANTS[47] = 15.0;
CONSTANTS[48] = 0.0;
CONSTANTS[49] = 0.18e-3;
STATES[10] = 1.8;
STATES[11] = 1.8;
CONSTANTS[50] = 200;
CONSTANTS[51] = 0.68;
CONSTANTS[52] = 0.0048;
CONSTANTS[53] = 0.0552;
CONSTANTS[54] =  CONSTANTS[21]* pow((CONSTANTS[19]/5.40000), 1.0 / 2);
CONSTANTS[55] =  CONSTANTS[23]* pow((CONSTANTS[19]/5.40000), 1.0 / 2);
CONSTANTS[56] =  (1.00000/7.00000)*(exp(CONSTANTS[8]/67.3000) - 1.00000);
CONSTANTS[57] = (CONSTANTS[48]<CONSTANTS[49] ? 0.00000 : CONSTANTS[39]);
CONSTANTS[58] = CONSTANTS[46]/CONSTANTS[47];
CONSTANTS[59] =  CONSTANTS[57]*((CONSTANTS[48] - CONSTANTS[49])/((CONSTANTS[44]+CONSTANTS[48]) - CONSTANTS[49]))*(1.00000 - exp(- (CONSTANTS[42]/CONSTANTS[40])))*exp(- (CONSTANTS[42]/CONSTANTS[41]));
RATES[0] = 0.1001;
RATES[2] = 0.1001;
RATES[3] = 0.1001;
RATES[4] = 0.1001;
RATES[7] = 0.1001;
RATES[8] = 0.1001;
RATES[9] = 0.1001;
RATES[1] = 0.1001;
RATES[5] = 0.1001;
RATES[6] = 0.1001;
RATES[10] = 0.1001;
RATES[11] = 0.1001;
}
void
computeResiduals(double VOI, double* CONSTANTS, double* RATES, double* OLDRATES, double* STATES,
                 double* OLDSTATES, double* ALGEBRAIC, double* CONDVARS)
{
resid[0] = RATES[0] - ALGEBRAIC[57];
resid[1] = RATES[2] -  ALGEBRAIC[2]*(1.00000 - STATES[2]) -  ALGEBRAIC[3]*STATES[2];
resid[2] = RATES[3] -  ALGEBRAIC[4]*(1.00000 - STATES[3]) -  ALGEBRAIC[5]*STATES[3];
resid[3] = RATES[4] -  ALGEBRAIC[6]*(1.00000 - STATES[4]) -  ALGEBRAIC[7]*STATES[4];
resid[4] = RATES[7] -  ALGEBRAIC[50]*(1.00000 - STATES[7]) -  ALGEBRAIC[13]*STATES[7];
resid[5] = RATES[8] -  ALGEBRAIC[51]*(1.00000 - STATES[8]) -  ALGEBRAIC[16]*STATES[8];
resid[6] = RATES[9] -  ALGEBRAIC[19]*(1.00000 - STATES[9]) -  ALGEBRAIC[20]*STATES[9];
resid[7] = RATES[1] -  - (ALGEBRAIC[45]+ALGEBRAIC[47]+ALGEBRAIC[31]+ALGEBRAIC[54]+ ALGEBRAIC[40]*3.00000+ ALGEBRAIC[35]*3.00000)*(CONSTANTS[50]/( CONSTANTS[51]*CONSTANTS[2]));
resid[8] = RATES[5] -  - ((ALGEBRAIC[46]+ALGEBRAIC[29]+ALGEBRAIC[33]) - ALGEBRAIC[40])*(CONSTANTS[50]/( 2.00000*CONSTANTS[51]*CONSTANTS[2]))+ ALGEBRAIC[41]*(CONSTANTS[52]/CONSTANTS[51])+ (ALGEBRAIC[43] - ALGEBRAIC[42])*(CONSTANTS[53]/CONSTANTS[51]);
resid[9] = RATES[6] -  - (ALGEBRAIC[48]+ALGEBRAIC[52]+ALGEBRAIC[53]+ALGEBRAIC[28]+ALGEBRAIC[55]+- ( ALGEBRAIC[35]*2.00000))*(CONSTANTS[50]/( CONSTANTS[51]*CONSTANTS[2]));
resid[10] = RATES[10] - - (ALGEBRAIC[41] -  ALGEBRAIC[44]*(CONSTANTS[53]/CONSTANTS[52]));
resid[11] = RATES[11] - - ((ALGEBRAIC[43]+ALGEBRAIC[44]) - ALGEBRAIC[42]);
}
void
computeVariables(double VOI, double* CONSTANTS, double* RATES, double* STATES, double* ALGEBRAIC)
{
}
void
computeEssentialVariables(double VOI, double* CONSTANTS, double* RATES, double* STATES, double* ALGEBRAIC)
{
ALGEBRAIC[2] = ( 0.320000*(STATES[0]+47.1300))/(1.00000 - exp( -0.100000*(STATES[0]+47.1300)));
ALGEBRAIC[3] =  0.0800000*exp(- STATES[0]/11.0000);
ALGEBRAIC[4] = (CONDVAR[1]<0.00000 ?  0.135000*exp((80.0000+STATES[0])/-6.80000) : 0.00000);
ALGEBRAIC[5] = (CONDVAR[2]<0.00000 ?  3.56000*exp( 0.0790000*STATES[0])+ 310000.*exp( 0.350000*STATES[0]) : 1.00000/( 0.130000*(1.00000+exp((STATES[0]+10.6600)/-11.1000))));
ALGEBRAIC[6] = (CONDVAR[3]<0.00000 ?  ( -127140.*exp( 0.244400*STATES[0]) -  3.47400e-05*exp( -0.0439100*STATES[0]))*((STATES[0]+37.7800)/(1.00000+exp( 0.311000*(STATES[0]+79.2300)))) : 0.00000);
ALGEBRAIC[7] = (CONDVAR[4]<0.00000 ? ( 0.121200*exp( -0.0105200*STATES[0]))/(1.00000+exp( -0.137800*(STATES[0]+40.1400))) : ( 0.300000*exp( -2.53500e-07*STATES[0]))/(1.00000+exp( -0.100000*(STATES[0]+32.0000))));
ALGEBRAIC[11] = 1.00000/(1.00000+exp(- ((STATES[0]+10.0000)/6.24000)));
ALGEBRAIC[12] =  ALGEBRAIC[11]*((1.00000 - exp(- ((STATES[0]+10.0000)/6.24000)))/( 0.0350000*(STATES[0]+10.0000)));
ALGEBRAIC[13] = (1.00000 - ALGEBRAIC[11])/ALGEBRAIC[12];
ALGEBRAIC[14] = 1.00000/(1.00000+exp((STATES[0]+35.0600)/8.60000))+0.600000/(1.00000+exp((50.0000 - STATES[0])/20.0000));
ALGEBRAIC[15] = 1.00000/( 0.0197000*exp(- pow( 0.0337000*(STATES[0]+10.0000), 2.00000))+0.0200000);
ALGEBRAIC[16] = (1.00000 - ALGEBRAIC[14])/ALGEBRAIC[15];
ALGEBRAIC[19] = ( 7.19000e-05*(STATES[0]+30.0000))/(1.00000 - exp( -0.148000*(STATES[0]+30.0000)));
ALGEBRAIC[20] = ( 0.000131000*(STATES[0]+30.0000))/(-1.00000+exp( 0.0687000*(STATES[0]+30.0000)));
ALGEBRAIC[22] =  (( CONSTANTS[0]*CONSTANTS[1])/CONSTANTS[2])*log(CONSTANTS[19]/STATES[6]);
ALGEBRAIC[26] = ALGEBRAIC[22];
ALGEBRAIC[27] = 1.00000/(1.00000+exp((7.48800 - STATES[0])/5.98000));
ALGEBRAIC[28] =  CONSTANTS[24]*ALGEBRAIC[27]*(STATES[0] - ALGEBRAIC[26]);
ALGEBRAIC[29] =  CONSTANTS[26]*(STATES[5]/(CONSTANTS[25]+STATES[5]));
ALGEBRAIC[1] =  (( CONSTANTS[0]*CONSTANTS[1])/CONSTANTS[2])*log(CONSTANTS[8]/STATES[1]);
ALGEBRAIC[30] = ALGEBRAIC[1];
ALGEBRAIC[31] =  CONSTANTS[27]*(STATES[0] - ALGEBRAIC[30]);
ALGEBRAIC[32] =  (( CONSTANTS[0]*CONSTANTS[1])/( 2.00000*CONSTANTS[2]))*log(CONSTANTS[18]/STATES[5]);
ALGEBRAIC[33] =  CONSTANTS[28]*(STATES[0] - ALGEBRAIC[32]);
ALGEBRAIC[34] = 1.00000/((1.00000+ 0.124500*exp( -0.100000*(( STATES[0]*CONSTANTS[2])/( CONSTANTS[0]*CONSTANTS[1]))))+ 0.0365000*CONSTANTS[56]*exp(- (( STATES[0]*CONSTANTS[2])/( CONSTANTS[0]*CONSTANTS[1]))));
ALGEBRAIC[35] =  CONSTANTS[29]*ALGEBRAIC[34]*(1.00000/(1.00000+pow(CONSTANTS[30]/STATES[1], 1.50000)))*(CONSTANTS[19]/(CONSTANTS[19]+CONSTANTS[31]));
ALGEBRAIC[40] =  CONSTANTS[34]*(1.00000/(pow(CONSTANTS[35], 3.00000)+pow(CONSTANTS[8], 3.00000)))*(1.00000/(CONSTANTS[36]+CONSTANTS[18]))*(1.00000/(1.00000+ CONSTANTS[37]*exp( (CONSTANTS[38] - 1.00000)*STATES[0]*(CONSTANTS[2]/( CONSTANTS[0]*CONSTANTS[1])))))*( exp( CONSTANTS[38]*STATES[0]*(CONSTANTS[2]/( CONSTANTS[0]*CONSTANTS[1])))*pow(STATES[1], 3.00000)*CONSTANTS[18] -  exp( (CONSTANTS[38] - 1.00000)*STATES[0]*(CONSTANTS[2]/( CONSTANTS[0]*CONSTANTS[1])))*pow(CONSTANTS[8], 3.00000)*STATES[5]);
ALGEBRAIC[41] =  CONSTANTS[59]*(STATES[10] - STATES[5]);
ALGEBRAIC[42] =  CONSTANTS[46]*(STATES[5]/(STATES[5]+CONSTANTS[45]));
ALGEBRAIC[43] =  CONSTANTS[58]*STATES[11];
ALGEBRAIC[44] = (STATES[11] - STATES[10])/CONSTANTS[43];
ALGEBRAIC[45] =  CONSTANTS[7]*pow(STATES[2], 3.00000)*STATES[3]*STATES[4]*(STATES[0] - ALGEBRAIC[1]);
ALGEBRAIC[8] =  CONSTANTS[13]*pow(2.00000, 2.00000)*(( STATES[0]*pow(CONSTANTS[2], 2.00000))/( CONSTANTS[0]*CONSTANTS[1]))*(( CONSTANTS[16]*STATES[5]*exp(( 2.00000*STATES[0]*CONSTANTS[2])/( CONSTANTS[0]*CONSTANTS[1])) -  CONSTANTS[17]*CONSTANTS[18])/(exp(( 2.00000*STATES[0]*CONSTANTS[2])/( CONSTANTS[0]*CONSTANTS[1])) - 1.00000));
ALGEBRAIC[17] = 1.00000/(1.00000+pow(STATES[5]/CONSTANTS[20], 2.00000));
ALGEBRAIC[46] =  STATES[7]*STATES[8]*ALGEBRAIC[17]*ALGEBRAIC[8];
ALGEBRAIC[9] =  CONSTANTS[14]*pow(1.00000, 2.00000)*(( STATES[0]*pow(CONSTANTS[2], 2.00000))/( CONSTANTS[0]*CONSTANTS[1]))*(( CONSTANTS[9]*STATES[1]*exp(( 1.00000*STATES[0]*CONSTANTS[2])/( CONSTANTS[0]*CONSTANTS[1])) -  CONSTANTS[10]*CONSTANTS[8])/(exp(( 1.00000*STATES[0]*CONSTANTS[2])/( CONSTANTS[0]*CONSTANTS[1])) - 1.00000));
ALGEBRAIC[47] =  STATES[7]*STATES[8]*ALGEBRAIC[17]*ALGEBRAIC[9];
ALGEBRAIC[10] =  CONSTANTS[15]*pow(1.00000, 2.00000)*(( STATES[0]*pow(CONSTANTS[2], 2.00000))/( CONSTANTS[0]*CONSTANTS[1]))*(( CONSTANTS[11]*STATES[6]*exp(( 1.00000*STATES[0]*CONSTANTS[2])/( CONSTANTS[0]*CONSTANTS[1])) -  CONSTANTS[12]*CONSTANTS[19])/(exp(( 1.00000*STATES[0]*CONSTANTS[2])/( CONSTANTS[0]*CONSTANTS[1])) - 1.00000));
ALGEBRAIC[48] =  STATES[7]*STATES[8]*ALGEBRAIC[17]*ALGEBRAIC[10];
ALGEBRAIC[50] = ALGEBRAIC[11]/ALGEBRAIC[12];
ALGEBRAIC[51] = ALGEBRAIC[14]/ALGEBRAIC[15];
ALGEBRAIC[18] =  (( CONSTANTS[0]*CONSTANTS[1])/CONSTANTS[2])*log((CONSTANTS[19]+ CONSTANTS[22]*CONSTANTS[8])/(STATES[6]+ CONSTANTS[22]*STATES[1]));
ALGEBRAIC[21] = 1.00000/(1.00000+exp((STATES[0] - 56.2600)/32.1000));
ALGEBRAIC[52] =  CONSTANTS[54]*pow(STATES[9], 2.00000)*ALGEBRAIC[21]*(STATES[0] - ALGEBRAIC[18]);
ALGEBRAIC[23] = 1.02000/(1.00000+exp( 0.238500*((STATES[0] - ALGEBRAIC[22]) - 59.2150)));
ALGEBRAIC[24] = ( 0.491240*exp( 0.0803200*((STATES[0]+5.47600) - ALGEBRAIC[22]))+exp( 0.0617500*(STATES[0] - (ALGEBRAIC[22]+594.310))))/(1.00000+exp( -0.514300*((STATES[0] - ALGEBRAIC[22])+4.75300)));
ALGEBRAIC[25] = ALGEBRAIC[23]/(ALGEBRAIC[23]+ALGEBRAIC[24]);
ALGEBRAIC[53] =  CONSTANTS[55]*ALGEBRAIC[25]*(STATES[0] - ALGEBRAIC[22]);
ALGEBRAIC[36] =  (( CONSTANTS[0]*CONSTANTS[1])/CONSTANTS[2])*log((CONSTANTS[19]+CONSTANTS[8])/(STATES[6]+STATES[1]));
ALGEBRAIC[37] = STATES[0] - ALGEBRAIC[36];
ALGEBRAIC[38] =  CONSTANTS[32]*pow(1.00000, 2.00000)*(( ALGEBRAIC[37]*pow(CONSTANTS[2], 2.00000))/( CONSTANTS[0]*CONSTANTS[1]))*(( CONSTANTS[9]*STATES[1]*exp(( 1.00000*ALGEBRAIC[37]*CONSTANTS[2])/( CONSTANTS[0]*CONSTANTS[1])) -  CONSTANTS[10]*CONSTANTS[8])/(exp(( 1.00000*ALGEBRAIC[37]*CONSTANTS[2])/( CONSTANTS[0]*CONSTANTS[1])) - 1.00000));
ALGEBRAIC[54] =  ALGEBRAIC[38]*(1.00000/(1.00000+pow(CONSTANTS[33]/STATES[5], 3.00000)));
ALGEBRAIC[39] =  CONSTANTS[32]*pow(1.00000, 2.00000)*(( ALGEBRAIC[37]*pow(CONSTANTS[2], 2.00000))/( CONSTANTS[0]*CONSTANTS[1]))*(( CONSTANTS[11]*STATES[6]*exp(( 1.00000*ALGEBRAIC[37]*CONSTANTS[2])/( CONSTANTS[0]*CONSTANTS[1])) -  CONSTANTS[12]*CONSTANTS[19])/(exp(( 1.00000*ALGEBRAIC[37]*CONSTANTS[2])/( CONSTANTS[0]*CONSTANTS[1])) - 1.00000));
ALGEBRAIC[55] =  ALGEBRAIC[39]*(1.00000/(1.00000+pow(CONSTANTS[33]/STATES[5], 3.00000)));
ALGEBRAIC[0] = (CONDVAR[0]<0.00000 ? CONSTANTS[6] : 0.00000);
ALGEBRAIC[49] = ALGEBRAIC[46]+ALGEBRAIC[48]+ALGEBRAIC[47];
ALGEBRAIC[56] = ALGEBRAIC[54]+ALGEBRAIC[55];
ALGEBRAIC[57] = (ALGEBRAIC[0] - (ALGEBRAIC[45]+ALGEBRAIC[49]+ALGEBRAIC[52]+ALGEBRAIC[53]+ALGEBRAIC[28]+ALGEBRAIC[40]+ALGEBRAIC[29]+ALGEBRAIC[31]+ALGEBRAIC[33]+ALGEBRAIC[35]+ALGEBRAIC[56]))/CONSTANTS[3];
}
void
getStateInformation(double* SI)
{
SI[0] = 1.0;
SI[1] = 1.0;
SI[2] = 1.0;
SI[3] = 1.0;
SI[4] = 1.0;
SI[5] = 1.0;
SI[6] = 1.0;
SI[7] = 1.0;
SI[8] = 1.0;
SI[9] = 1.0;
SI[10] = 1.0;
SI[11] = 1.0;
}
void
computeRoots(double VOI, double* CONSTANTS, double* RATES, double* OLDRATES, double* STATES,
             double* OLDSTATES, double* ALGEBRAIC, double* CONDVARS)
{
CONDVAR[0] =  (int)(VOI) % (int)(CONSTANTS[4]) - CONSTANTS[5];
CONDVAR[1] = STATES[0] - -40.0000;
CONDVAR[2] = STATES[0] - -40.0000;
CONDVAR[3] = STATES[0] - -40.0000;
CONDVAR[4] = STATES[0] - -40.0000;
}