Generated Code

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

The raw code is available.

/*
   There are a total of 51 entries in the algebraic variable array.
   There are a total of 13 entries in each of the rate and state variable arrays.
   There are a total of 58 entries in the constant variable array.
 */
/*
 * VOI is t in component environment (ms).
 * CONSTANTS[0] is R in component environment (mJ_per_mole_kelvin).
 * CONSTANTS[1] is T in component environment (kelvin).
 * CONSTANTS[2] is F in component environment (coulomb_per_mole).
 * CONSTANTS[48] is V_tau in component environment (mV).
 * CONSTANTS[3] is Ca_o in component environment (mM).
 * CONSTANTS[4] is Na_o in component environment (mM).
 * CONSTANTS[5] is K_o in component environment (mM).
 * CONSTANTS[49] is vol_cyt in component environment (pl).
 * CONSTANTS[6] is vol_pmu in component environment (pl).
 * CONSTANTS[7] is fr_cyt in component environment (dimensionless).
 * STATES[0] is V in component Membrane (mV).
 * ALGEBRAIC[0] is VD in component Membrane (dimensionless).
 * CONSTANTS[8] is C_sp in component Membrane (pF_per_sqcm).
 * STATES[1] is Ca_i in component Cytosol (mM).
 * STATES[2] is Na_i in component Cytosol (mM).
 * STATES[3] is K_i in component Cytosol (mM).
 * ALGEBRAIC[2] is V_Ca in component Membrane (dimensionless).
 * ALGEBRAIC[4] is V_Na in component Membrane (dimensionless).
 * ALGEBRAIC[6] is V_K in component Membrane (dimensionless).
 * CONSTANTS[55] is A_pmu in component Membrane (sqcm).
 * CONSTANTS[9] is SVR_pmu in component Membrane (per_cm).
 * ALGEBRAIC[40] is J_Ca in component calcium_dynamics (mM_per_ms).
 * ALGEBRAIC[48] is J_Na in component sodium_dynamics (mM_per_ms).
 * ALGEBRAIC[50] is J_K in component potassium_dynamics (mM_per_ms).
 * CONSTANTS[10] is atp in component Cytosol (mM).
 * ALGEBRAIC[39] is J_ca in component calcium_dynamics (mM_per_ms).
 * ALGEBRAIC[19] is I_CaL in component L_type_Ca_channel (pA).
 * ALGEBRAIC[34] is I_pmca in component PMCA (pA).
 * ALGEBRAIC[38] is I_xm in component NaCa (pA).
 * ALGEBRAIC[15] is J_calb in component calcium_buffer_dynamics (mM_per_ms).
 * ALGEBRAIC[17] is J_cam in component calcium_buffer_dynamics (mM_per_ms).
 * ALGEBRAIC[21] is I_Na in component transient_Na_channel (pA).
 * ALGEBRAIC[22] is I_Nalk in component Leak_Na_channel (pA).
 * ALGEBRAIC[23] is I_NaHCN in component HCN_channel (pA).
 * ALGEBRAIC[46] is I_nk in component sodium_pump (pA).
 * ALGEBRAIC[30] is I_K in component potassium_dynamics (pA).
 * ALGEBRAIC[25] is I_Ksk in component SK_K_channel (pA).
 * ALGEBRAIC[27] is I_Kdr in component DR_K_channel (pA).
 * ALGEBRAIC[29] is I_Kir in component IR_K_channel (pA).
 * STATES[4] is Calb in component calcium_buffer_dynamics (mM).
 * STATES[5] is Cam in component calcium_buffer_dynamics (mM).
 * CONSTANTS[11] is Calbtot in component calcium_buffer_dynamics (mM).
 * CONSTANTS[12] is Camtot in component calcium_buffer_dynamics (mM).
 * ALGEBRAIC[14] is CaCalb in component calcium_buffer_dynamics (mM).
 * ALGEBRAIC[16] is CaCam in component calcium_buffer_dynamics (mM).
 * CONSTANTS[13] is kcal_1 in component calcium_buffer_dynamics (per_mM_ms).
 * CONSTANTS[14] is kcal_2 in component calcium_buffer_dynamics (per_ms).
 * ALGEBRAIC[8] is kcam_cb in component calcium_buffer_dynamics (per_ms).
 * CONSTANTS[15] is kcam_cd in component calcium_buffer_dynamics (per_ms).
 * ALGEBRAIC[10] is kcam_nb in component calcium_buffer_dynamics (per_ms).
 * CONSTANTS[16] is kcam_nd in component calcium_buffer_dynamics (per_ms).
 * ALGEBRAIC[12] is alpha_cam in component calcium_buffer_dynamics (per_ms).
 * ALGEBRAIC[13] is beta_cam in component calcium_buffer_dynamics (per_ms).
 * STATES[6] is m_cal in component L_type_Ca_channel (dimensionless).
 * ALGEBRAIC[18] is h_cal in component L_type_Ca_channel (dimensionless).
 * CONSTANTS[17] is g_cal in component L_type_Ca_channel (pA_per_mM).
 * CONSTANTS[18] is g_na in component transient_Na_channel (pA_per_mM).
 * ALGEBRAIC[20] is O_na in component transient_Na_channel (dimensionless).
 * STATES[7] is m_na in component transient_Na_channel (dimensionless).
 * STATES[8] is h_na in component transient_Na_channel (dimensionless).
 * CONSTANTS[19] is A_mna in component transient_Na_channel (per_ms).
 * CONSTANTS[20] is B_mna in component transient_Na_channel (per_ms).
 * CONSTANTS[21] is A_hna in component transient_Na_channel (per_ms).
 * CONSTANTS[22] is B_hna in component transient_Na_channel (per_ms).
 * CONSTANTS[23] is za_mna in component transient_Na_channel (dimensionless).
 * CONSTANTS[24] is zb_mna in component transient_Na_channel (dimensionless).
 * CONSTANTS[25] is za_hna in component transient_Na_channel (dimensionless).
 * CONSTANTS[26] is zb_hna in component transient_Na_channel (dimensionless).
 * CONSTANTS[27] is g_nalk in component Leak_Na_channel (pA_per_mM).
 * CONSTANTS[28] is g_nahcn in component HCN_channel (pA_per_mM).
 * STATES[9] is O_hcn in component HCN_channel (dimensionless).
 * ALGEBRAIC[7] is kf_hcn in component HCN_channel (per_ms).
 * ALGEBRAIC[11] is kr_hcn in component HCN_channel (per_ms).
 * ALGEBRAIC[1] is kf_free in component HCN_channel (per_ms).
 * ALGEBRAIC[3] is kr_free in component HCN_channel (per_ms).
 * ALGEBRAIC[5] is kf_bnd in component HCN_channel (per_ms).
 * ALGEBRAIC[9] is kr_bnd in component HCN_channel (per_ms).
 * CONSTANTS[50] is P_c in component HCN_channel (dimensionless).
 * CONSTANTS[51] is P_o in component HCN_channel (dimensionless).
 * CONSTANTS[29] is cAMP in component HCN_channel (mM).
 * ALGEBRAIC[24] is O_sk in component SK_K_channel (dimensionless).
 * CONSTANTS[30] is g_ksk in component SK_K_channel (pA_per_mM).
 * ALGEBRAIC[26] is O_kdr in component DR_K_channel (dimensionless).
 * STATES[10] is m_kdr in component DR_K_channel (dimensionless).
 * CONSTANTS[31] is g_kdr in component DR_K_channel (nS).
 * ALGEBRAIC[28] is O_kir in component IR_K_channel (dimensionless).
 * CONSTANTS[32] is g_kir in component IR_K_channel (nS).
 * STATES[11] is y_pc in component PMCA (dimensionless).
 * ALGEBRAIC[31] is K_pmca in component PMCA (pA).
 * CONSTANTS[52] is k_1pc in component PMCA (per_ms).
 * CONSTANTS[33] is k_2pc in component PMCA (per_ms).
 * CONSTANTS[34] is k_3pc in component PMCA (per_ms).
 * CONSTANTS[35] is k_4pc in component PMCA (per_ms).
 * ALGEBRAIC[33] is P_E1Spc in component PMCA (dimensionless).
 * CONSTANTS[53] is P_E2Spc in component PMCA (dimensionless).
 * ALGEBRAIC[35] is P_E1pc in component PMCA (dimensionless).
 * CONSTANTS[56] is P_E2pc in component PMCA (dimensionless).
 * ALGEBRAIC[37] is alpha_pc in component PMCA (per_ms).
 * CONSTANTS[57] is beta_pc in component PMCA (per_ms).
 * ALGEBRAIC[32] is K_pci in component PMCA (mM).
 * CONSTANTS[36] is K_pco in component PMCA (mM).
 * CONSTANTS[37] is k_pmca in component PMCA (dimensionless).
 * CONSTANTS[38] is del in component NaCa (dimensionless).
 * CONSTANTS[39] is k_xm in component NaCa (pA).
 * ALGEBRAIC[36] is Dr in component NaCa (mM4).
 * ALGEBRAIC[41] is Na_eff in component sodium_pump (mM).
 * STATES[12] is y_nk in component sodium_pump (dimensionless).
 * ALGEBRAIC[44] is alpha_nk in component sodium_pump (per_ms).
 * ALGEBRAIC[49] is beta_nk in component sodium_pump (per_ms).
 * ALGEBRAIC[42] is P_E1Snk in component sodium_pump (dimensionless).
 * ALGEBRAIC[45] is P_E2Snk in component sodium_pump (dimensionless).
 * ALGEBRAIC[43] is P_E1Dnk in component sodium_pump (dimensionless).
 * ALGEBRAIC[47] is P_E2Dnk in component sodium_pump (dimensionless).
 * CONSTANTS[54] is k_1nk in component sodium_pump (per_ms).
 * CONSTANTS[40] is k_2nk in component sodium_pump (per_ms).
 * CONSTANTS[41] is k_3nk in component sodium_pump (per_ms).
 * CONSTANTS[42] is k_4nk in component sodium_pump (per_ms).
 * CONSTANTS[43] is K_nknai in component sodium_pump (mM).
 * CONSTANTS[44] is K_nknao in component sodium_pump (mM).
 * CONSTANTS[45] is K_nkki in component sodium_pump (mM).
 * CONSTANTS[46] is K_nkko in component sodium_pump (mM).
 * CONSTANTS[47] is k_nk in component sodium_pump (pA).
 * RATES[0] is d/dt V in component Membrane (mV).
 * RATES[1] is d/dt Ca_i in component Cytosol (mM).
 * RATES[2] is d/dt Na_i in component Cytosol (mM).
 * RATES[3] is d/dt K_i in component Cytosol (mM).
 * RATES[4] is d/dt Calb in component calcium_buffer_dynamics (mM).
 * RATES[5] is d/dt Cam in component calcium_buffer_dynamics (mM).
 * RATES[6] is d/dt m_cal in component L_type_Ca_channel (dimensionless).
 * RATES[7] is d/dt m_na in component transient_Na_channel (dimensionless).
 * RATES[8] is d/dt h_na in component transient_Na_channel (dimensionless).
 * RATES[9] is d/dt O_hcn in component HCN_channel (dimensionless).
 * RATES[10] is d/dt m_kdr in component DR_K_channel (dimensionless).
 * RATES[11] is d/dt y_pc in component PMCA (dimensionless).
 * RATES[12] is d/dt y_nk in component sodium_pump (dimensionless).
 */
void
initConsts(double* CONSTANTS, double* RATES, double *STATES)
{
CONSTANTS[0] = 8314.472;
CONSTANTS[1] = 310.15;
CONSTANTS[2] = 96485.30929;
CONSTANTS[3] = 1.8;
CONSTANTS[4] = 137;
CONSTANTS[5] = 5.4;
CONSTANTS[6] = 5;
CONSTANTS[7] = 0.5;
STATES[0] = -49.42;
CONSTANTS[8] = 0.9e6;
STATES[1] = 0.000188;
STATES[2] = 4.6876;
STATES[3] = 126.05893;
CONSTANTS[9] = 1.6667e4;
CONSTANTS[10] = 2;
STATES[4] = 0.0026;
STATES[5] = 0.0222;
CONSTANTS[11] = 0.005;
CONSTANTS[12] = 0.0235;
CONSTANTS[13] = 10;
CONSTANTS[14] = 2e-3;
CONSTANTS[15] = 0.003;
CONSTANTS[16] = 3;
STATES[6] = 0.006271;
CONSTANTS[17] = 2101.2;
CONSTANTS[18] = 907.68;
STATES[7] = 0.0952;
STATES[8] = 0.1848;
CONSTANTS[19] = 1.9651;
CONSTANTS[20] = 0.0424;
CONSTANTS[21] = 9.566e-5;
CONSTANTS[22] = 0.5296;
CONSTANTS[23] = 1.7127;
CONSTANTS[24] = 1.5581;
CONSTANTS[25] = -2.4317;
CONSTANTS[26] = -1.1868;
CONSTANTS[27] = 0.0053;
CONSTANTS[28] = 51.1;
STATES[9] = 0.003;
CONSTANTS[29] = 1e-5;
CONSTANTS[30] = 2.2515;
STATES[10] = 0.0932;
CONSTANTS[31] = 31.237;
CONSTANTS[32] = 13.816;
STATES[11] = 0.483;
CONSTANTS[33] = 0.001;
CONSTANTS[34] = 0.001;
CONSTANTS[35] = 1;
CONSTANTS[36] = 2;
CONSTANTS[37] = 2.233;
CONSTANTS[38] = 0.35;
CONSTANTS[39] = 0.0166;
STATES[12] = 0.6213;
CONSTANTS[40] = 0.04;
CONSTANTS[41] = 0.01;
CONSTANTS[42] = 0.165;
CONSTANTS[43] = 4.05;
CONSTANTS[44] = 69.8;
CONSTANTS[45] = 32.88;
CONSTANTS[46] = 0.258;
CONSTANTS[47] = 1085.7;
CONSTANTS[48] = ( CONSTANTS[0]*CONSTANTS[1])/CONSTANTS[2];
CONSTANTS[49] =  CONSTANTS[7]*CONSTANTS[6];
CONSTANTS[50] = 1.00000/(1.00000+CONSTANTS[29]/0.00116300);
CONSTANTS[51] = 1.00000/(1.00000+CONSTANTS[29]/1.45000e-05);
CONSTANTS[52] = 1.00000/(1.00000+0.100000/CONSTANTS[10]);
CONSTANTS[53] = 1.00000/(1.00000+CONSTANTS[36]/CONSTANTS[3]);
CONSTANTS[54] = 0.370000/(1.00000+0.0940000/CONSTANTS[10]);
CONSTANTS[55] = ( CONSTANTS[9]*CONSTANTS[6]*0.00100000*0.00100000*0.00100000)/1.00000;
CONSTANTS[56] = 1.00000 - CONSTANTS[53];
CONSTANTS[57] =  CONSTANTS[33]*CONSTANTS[53]+ CONSTANTS[35]*CONSTANTS[56];
}
void
computeRates(double VOI, double* CONSTANTS, double* RATES, double* STATES, double* ALGEBRAIC)
{
RATES[6] = (1.00000/(1.00000+exp(- (STATES[0]+15.0000)/7.00000)) - STATES[6])/( 7.68000*exp(- pow((STATES[0]+65.0000)/17.3300, 2.00000))+0.723100);
RATES[10] = (1.00000/(1.00000+exp(- (STATES[0]+25.0000)/12.0000)) - STATES[10])/(18.0000/(1.00000+exp((STATES[0]+39.0000)/8.00000))+1.00000);
ALGEBRAIC[0] = STATES[0]/CONSTANTS[48];
RATES[7] =  CONSTANTS[19]*exp( CONSTANTS[23]*ALGEBRAIC[0])*(1.00000 - STATES[7]) -  CONSTANTS[20]*exp( - CONSTANTS[24]*ALGEBRAIC[0])*STATES[7];
RATES[8] =  CONSTANTS[21]*exp( CONSTANTS[25]*ALGEBRAIC[0])*(1.00000 - STATES[8]) -  CONSTANTS[22]*exp( - CONSTANTS[26]*ALGEBRAIC[0])*STATES[8];
ALGEBRAIC[1] = 0.00600000/(1.00000+exp((STATES[0]+87.7000)/6.45000));
ALGEBRAIC[5] = 0.0268000/(1.00000+exp((STATES[0]+94.2000)/13.3000));
ALGEBRAIC[7] =  ALGEBRAIC[1]*CONSTANTS[50]+ ALGEBRAIC[5]*(1.00000 - CONSTANTS[50]);
ALGEBRAIC[3] = 0.0800000/(1.00000+exp(- (STATES[0]+51.7000)/7.00000));
ALGEBRAIC[9] = 0.0800000/(1.00000+exp(- (STATES[0]+35.5000)/7.00000));
ALGEBRAIC[11] =  ALGEBRAIC[3]*CONSTANTS[51]+ ALGEBRAIC[9]*(1.00000 - CONSTANTS[51]);
RATES[9] =  ALGEBRAIC[7]*(1.00000 - STATES[9]) -  ALGEBRAIC[11]*STATES[9];
ALGEBRAIC[14] = CONSTANTS[11] - STATES[4];
ALGEBRAIC[15] =  CONSTANTS[13]*STATES[4]*STATES[1] -  CONSTANTS[14]*ALGEBRAIC[14];
RATES[4] = - ALGEBRAIC[15];
ALGEBRAIC[16] = CONSTANTS[12] - STATES[5];
ALGEBRAIC[8] =  12000.0*pow(STATES[1], 2.00000);
ALGEBRAIC[10] =  3.70000e+06*pow(STATES[1], 2.00000);
ALGEBRAIC[12] =  ALGEBRAIC[8]*ALGEBRAIC[10]*(1.00000/(ALGEBRAIC[8]+CONSTANTS[16])+1.00000/(CONSTANTS[15]+CONSTANTS[16]));
ALGEBRAIC[13] =  CONSTANTS[15]*CONSTANTS[16]*(1.00000/(ALGEBRAIC[8]+CONSTANTS[16])+1.00000/(CONSTANTS[15]+CONSTANTS[16]));
ALGEBRAIC[17] =  ALGEBRAIC[12]*STATES[5] -  ALGEBRAIC[13]*ALGEBRAIC[16];
RATES[5] = - ALGEBRAIC[17];
ALGEBRAIC[32] =  (173.600/(1.00000+ALGEBRAIC[16]/5.00000e-05)+6.40000)*1.00000e-05;
ALGEBRAIC[33] = 1.00000/(1.00000+ALGEBRAIC[32]/STATES[1]);
ALGEBRAIC[35] = 1.00000 - ALGEBRAIC[33];
ALGEBRAIC[37] =  CONSTANTS[52]*ALGEBRAIC[33]+ CONSTANTS[34]*ALGEBRAIC[35];
RATES[11] =  CONSTANTS[57]*(1.00000 - STATES[11]) -  ALGEBRAIC[37]*STATES[11];
ALGEBRAIC[2] =  0.500000*log(CONSTANTS[3]/STATES[1]);
ALGEBRAIC[18] = 0.000450000/(0.000450000+STATES[1]);
ALGEBRAIC[19] = ( CONSTANTS[17]*STATES[6]*ALGEBRAIC[18]* pow(( STATES[1]*CONSTANTS[3]), 1.0 / 2)* sinh(ALGEBRAIC[0] - ALGEBRAIC[2]))/( sinh(ALGEBRAIC[0])/ALGEBRAIC[0]);
ALGEBRAIC[31] =  CONSTANTS[37]*(( 10.5600*ALGEBRAIC[16])/(ALGEBRAIC[16]+5.00000e-05)+1.20000);
ALGEBRAIC[34] =  ALGEBRAIC[31]*( CONSTANTS[52]*ALGEBRAIC[33]*STATES[11] -  CONSTANTS[33]*CONSTANTS[53]*(1.00000 - STATES[11]))*1.00000;
ALGEBRAIC[36] =  (1.00000+ 0.00100000*( pow(STATES[2], 3.00000)*CONSTANTS[3]+ pow(CONSTANTS[4], 3.00000)*STATES[1]))*(1.00000+STATES[1]/0.00690000);
ALGEBRAIC[38] = ( CONSTANTS[39]*( pow(STATES[2], 3.00000)*CONSTANTS[3]*exp( CONSTANTS[38]*ALGEBRAIC[0]) -  pow(CONSTANTS[4], 3.00000)*STATES[1]*exp( (CONSTANTS[38] - 1.00000)*ALGEBRAIC[0])))/ALGEBRAIC[36];
ALGEBRAIC[39] =  (- 1.00000/( 2.00000*CONSTANTS[2]*CONSTANTS[49]))*((ALGEBRAIC[19]+ 2.00000*ALGEBRAIC[34]) -  2.00000*ALGEBRAIC[38]);
ALGEBRAIC[40] = ALGEBRAIC[39] - (ALGEBRAIC[15]+ 4.00000*ALGEBRAIC[17]);
RATES[1] = ALGEBRAIC[40];
ALGEBRAIC[4] = log(CONSTANTS[4]/STATES[2]);
ALGEBRAIC[20] =  pow(STATES[7], 3.00000)*STATES[8];
ALGEBRAIC[21] = ( CONSTANTS[18]*ALGEBRAIC[20]* pow(( STATES[2]*CONSTANTS[4]), 1.0 / 2)* sinh( 0.500000*(ALGEBRAIC[0] - ALGEBRAIC[4])))/( sinh( 0.500000*ALGEBRAIC[0])/( 0.500000*ALGEBRAIC[0]));
ALGEBRAIC[22] = ( CONSTANTS[27]* pow(( STATES[2]*CONSTANTS[4]), 1.0 / 2)* sinh( 0.500000*(ALGEBRAIC[0] - ALGEBRAIC[4])))/( sinh( 0.500000*ALGEBRAIC[0])/( 0.500000*ALGEBRAIC[0]));
ALGEBRAIC[23] = ( CONSTANTS[28]*STATES[9]* pow(( STATES[2]*CONSTANTS[4]), 1.0 / 2)* sinh( 0.500000*(ALGEBRAIC[0] - ALGEBRAIC[4])))/( sinh( 0.500000*ALGEBRAIC[0])/( 0.500000*ALGEBRAIC[0]));
ALGEBRAIC[42] = 1.00000/(1.00000+ (CONSTANTS[43]/STATES[2])*(1.00000+STATES[3]/CONSTANTS[45]));
ALGEBRAIC[41] =  CONSTANTS[4]*exp( - 0.820000*ALGEBRAIC[0]);
ALGEBRAIC[45] = 1.00000/(1.00000+ (CONSTANTS[44]/ALGEBRAIC[41])*(1.00000+CONSTANTS[5]/CONSTANTS[46]));
ALGEBRAIC[46] =  CONSTANTS[47]*( CONSTANTS[54]*ALGEBRAIC[42]*STATES[12] -  CONSTANTS[40]*ALGEBRAIC[45]*(1.00000 - STATES[12]))*1.00000;
ALGEBRAIC[48] =  (- 1.00000/( CONSTANTS[2]*CONSTANTS[49]))*( 3.00000*ALGEBRAIC[46]+ 3.00000*ALGEBRAIC[38]+ALGEBRAIC[21]+ALGEBRAIC[22]+ALGEBRAIC[23]);
RATES[2] = ALGEBRAIC[48];
ALGEBRAIC[43] = 1.00000/(1.00000+ (CONSTANTS[45]/STATES[3])*(1.00000+STATES[2]/CONSTANTS[43]));
ALGEBRAIC[44] =  CONSTANTS[54]*ALGEBRAIC[42]+ CONSTANTS[41]*ALGEBRAIC[43];
ALGEBRAIC[47] = 1.00000/(1.00000+ (CONSTANTS[46]/CONSTANTS[5])*(1.00000+ALGEBRAIC[41]/CONSTANTS[44]));
ALGEBRAIC[49] =  CONSTANTS[40]*ALGEBRAIC[45]+ CONSTANTS[42]*ALGEBRAIC[47];
RATES[12] =  ALGEBRAIC[49]*(1.00000 - STATES[12]) -  ALGEBRAIC[44]*STATES[12];
ALGEBRAIC[6] = log(CONSTANTS[5]/STATES[3]);
ALGEBRAIC[24] = pow(STATES[1], 4.20000)/(pow(0.000350000, 4.20000)+pow(STATES[1], 4.20000));
ALGEBRAIC[25] = ( CONSTANTS[30]*ALGEBRAIC[24]* pow(( STATES[3]*CONSTANTS[5]), 1.0 / 2)* sinh( 0.500000*(ALGEBRAIC[0] - ALGEBRAIC[6])))/( sinh( 0.500000*ALGEBRAIC[0])/( 0.500000*ALGEBRAIC[0]));
ALGEBRAIC[26] = pow(STATES[10], 3.00000);
ALGEBRAIC[27] =  CONSTANTS[31]*ALGEBRAIC[26]*(STATES[0] -  ALGEBRAIC[6]*CONSTANTS[48]);
ALGEBRAIC[28] = 1.00000/(1.00000+exp((STATES[0]+85.0000)/12.1000));
ALGEBRAIC[29] =  CONSTANTS[32]*ALGEBRAIC[28]*(STATES[0] -  ALGEBRAIC[6]*CONSTANTS[48]);
ALGEBRAIC[30] = ALGEBRAIC[25]+ALGEBRAIC[27]+ALGEBRAIC[29];
ALGEBRAIC[50] =  (- 1.00000/( CONSTANTS[2]*CONSTANTS[49]))*(ALGEBRAIC[30] -  2.00000*ALGEBRAIC[46]);
RATES[0] =  (( CONSTANTS[2]*CONSTANTS[49])/( CONSTANTS[8]*CONSTANTS[55]))*(ALGEBRAIC[48]+ALGEBRAIC[50]+ 2.00000*ALGEBRAIC[40]);
RATES[3] = ALGEBRAIC[50];
}
void
computeVariables(double VOI, double* CONSTANTS, double* RATES, double* STATES, double* ALGEBRAIC)
{
ALGEBRAIC[0] = STATES[0]/CONSTANTS[48];
ALGEBRAIC[1] = 0.00600000/(1.00000+exp((STATES[0]+87.7000)/6.45000));
ALGEBRAIC[5] = 0.0268000/(1.00000+exp((STATES[0]+94.2000)/13.3000));
ALGEBRAIC[7] =  ALGEBRAIC[1]*CONSTANTS[50]+ ALGEBRAIC[5]*(1.00000 - CONSTANTS[50]);
ALGEBRAIC[3] = 0.0800000/(1.00000+exp(- (STATES[0]+51.7000)/7.00000));
ALGEBRAIC[9] = 0.0800000/(1.00000+exp(- (STATES[0]+35.5000)/7.00000));
ALGEBRAIC[11] =  ALGEBRAIC[3]*CONSTANTS[51]+ ALGEBRAIC[9]*(1.00000 - CONSTANTS[51]);
ALGEBRAIC[14] = CONSTANTS[11] - STATES[4];
ALGEBRAIC[15] =  CONSTANTS[13]*STATES[4]*STATES[1] -  CONSTANTS[14]*ALGEBRAIC[14];
ALGEBRAIC[16] = CONSTANTS[12] - STATES[5];
ALGEBRAIC[8] =  12000.0*pow(STATES[1], 2.00000);
ALGEBRAIC[10] =  3.70000e+06*pow(STATES[1], 2.00000);
ALGEBRAIC[12] =  ALGEBRAIC[8]*ALGEBRAIC[10]*(1.00000/(ALGEBRAIC[8]+CONSTANTS[16])+1.00000/(CONSTANTS[15]+CONSTANTS[16]));
ALGEBRAIC[13] =  CONSTANTS[15]*CONSTANTS[16]*(1.00000/(ALGEBRAIC[8]+CONSTANTS[16])+1.00000/(CONSTANTS[15]+CONSTANTS[16]));
ALGEBRAIC[17] =  ALGEBRAIC[12]*STATES[5] -  ALGEBRAIC[13]*ALGEBRAIC[16];
ALGEBRAIC[32] =  (173.600/(1.00000+ALGEBRAIC[16]/5.00000e-05)+6.40000)*1.00000e-05;
ALGEBRAIC[33] = 1.00000/(1.00000+ALGEBRAIC[32]/STATES[1]);
ALGEBRAIC[35] = 1.00000 - ALGEBRAIC[33];
ALGEBRAIC[37] =  CONSTANTS[52]*ALGEBRAIC[33]+ CONSTANTS[34]*ALGEBRAIC[35];
ALGEBRAIC[2] =  0.500000*log(CONSTANTS[3]/STATES[1]);
ALGEBRAIC[18] = 0.000450000/(0.000450000+STATES[1]);
ALGEBRAIC[19] = ( CONSTANTS[17]*STATES[6]*ALGEBRAIC[18]* pow(( STATES[1]*CONSTANTS[3]), 1.0 / 2)* sinh(ALGEBRAIC[0] - ALGEBRAIC[2]))/( sinh(ALGEBRAIC[0])/ALGEBRAIC[0]);
ALGEBRAIC[31] =  CONSTANTS[37]*(( 10.5600*ALGEBRAIC[16])/(ALGEBRAIC[16]+5.00000e-05)+1.20000);
ALGEBRAIC[34] =  ALGEBRAIC[31]*( CONSTANTS[52]*ALGEBRAIC[33]*STATES[11] -  CONSTANTS[33]*CONSTANTS[53]*(1.00000 - STATES[11]))*1.00000;
ALGEBRAIC[36] =  (1.00000+ 0.00100000*( pow(STATES[2], 3.00000)*CONSTANTS[3]+ pow(CONSTANTS[4], 3.00000)*STATES[1]))*(1.00000+STATES[1]/0.00690000);
ALGEBRAIC[38] = ( CONSTANTS[39]*( pow(STATES[2], 3.00000)*CONSTANTS[3]*exp( CONSTANTS[38]*ALGEBRAIC[0]) -  pow(CONSTANTS[4], 3.00000)*STATES[1]*exp( (CONSTANTS[38] - 1.00000)*ALGEBRAIC[0])))/ALGEBRAIC[36];
ALGEBRAIC[39] =  (- 1.00000/( 2.00000*CONSTANTS[2]*CONSTANTS[49]))*((ALGEBRAIC[19]+ 2.00000*ALGEBRAIC[34]) -  2.00000*ALGEBRAIC[38]);
ALGEBRAIC[40] = ALGEBRAIC[39] - (ALGEBRAIC[15]+ 4.00000*ALGEBRAIC[17]);
ALGEBRAIC[4] = log(CONSTANTS[4]/STATES[2]);
ALGEBRAIC[20] =  pow(STATES[7], 3.00000)*STATES[8];
ALGEBRAIC[21] = ( CONSTANTS[18]*ALGEBRAIC[20]* pow(( STATES[2]*CONSTANTS[4]), 1.0 / 2)* sinh( 0.500000*(ALGEBRAIC[0] - ALGEBRAIC[4])))/( sinh( 0.500000*ALGEBRAIC[0])/( 0.500000*ALGEBRAIC[0]));
ALGEBRAIC[22] = ( CONSTANTS[27]* pow(( STATES[2]*CONSTANTS[4]), 1.0 / 2)* sinh( 0.500000*(ALGEBRAIC[0] - ALGEBRAIC[4])))/( sinh( 0.500000*ALGEBRAIC[0])/( 0.500000*ALGEBRAIC[0]));
ALGEBRAIC[23] = ( CONSTANTS[28]*STATES[9]* pow(( STATES[2]*CONSTANTS[4]), 1.0 / 2)* sinh( 0.500000*(ALGEBRAIC[0] - ALGEBRAIC[4])))/( sinh( 0.500000*ALGEBRAIC[0])/( 0.500000*ALGEBRAIC[0]));
ALGEBRAIC[42] = 1.00000/(1.00000+ (CONSTANTS[43]/STATES[2])*(1.00000+STATES[3]/CONSTANTS[45]));
ALGEBRAIC[41] =  CONSTANTS[4]*exp( - 0.820000*ALGEBRAIC[0]);
ALGEBRAIC[45] = 1.00000/(1.00000+ (CONSTANTS[44]/ALGEBRAIC[41])*(1.00000+CONSTANTS[5]/CONSTANTS[46]));
ALGEBRAIC[46] =  CONSTANTS[47]*( CONSTANTS[54]*ALGEBRAIC[42]*STATES[12] -  CONSTANTS[40]*ALGEBRAIC[45]*(1.00000 - STATES[12]))*1.00000;
ALGEBRAIC[48] =  (- 1.00000/( CONSTANTS[2]*CONSTANTS[49]))*( 3.00000*ALGEBRAIC[46]+ 3.00000*ALGEBRAIC[38]+ALGEBRAIC[21]+ALGEBRAIC[22]+ALGEBRAIC[23]);
ALGEBRAIC[43] = 1.00000/(1.00000+ (CONSTANTS[45]/STATES[3])*(1.00000+STATES[2]/CONSTANTS[43]));
ALGEBRAIC[44] =  CONSTANTS[54]*ALGEBRAIC[42]+ CONSTANTS[41]*ALGEBRAIC[43];
ALGEBRAIC[47] = 1.00000/(1.00000+ (CONSTANTS[46]/CONSTANTS[5])*(1.00000+ALGEBRAIC[41]/CONSTANTS[44]));
ALGEBRAIC[49] =  CONSTANTS[40]*ALGEBRAIC[45]+ CONSTANTS[42]*ALGEBRAIC[47];
ALGEBRAIC[6] = log(CONSTANTS[5]/STATES[3]);
ALGEBRAIC[24] = pow(STATES[1], 4.20000)/(pow(0.000350000, 4.20000)+pow(STATES[1], 4.20000));
ALGEBRAIC[25] = ( CONSTANTS[30]*ALGEBRAIC[24]* pow(( STATES[3]*CONSTANTS[5]), 1.0 / 2)* sinh( 0.500000*(ALGEBRAIC[0] - ALGEBRAIC[6])))/( sinh( 0.500000*ALGEBRAIC[0])/( 0.500000*ALGEBRAIC[0]));
ALGEBRAIC[26] = pow(STATES[10], 3.00000);
ALGEBRAIC[27] =  CONSTANTS[31]*ALGEBRAIC[26]*(STATES[0] -  ALGEBRAIC[6]*CONSTANTS[48]);
ALGEBRAIC[28] = 1.00000/(1.00000+exp((STATES[0]+85.0000)/12.1000));
ALGEBRAIC[29] =  CONSTANTS[32]*ALGEBRAIC[28]*(STATES[0] -  ALGEBRAIC[6]*CONSTANTS[48]);
ALGEBRAIC[30] = ALGEBRAIC[25]+ALGEBRAIC[27]+ALGEBRAIC[29];
ALGEBRAIC[50] =  (- 1.00000/( CONSTANTS[2]*CONSTANTS[49]))*(ALGEBRAIC[30] -  2.00000*ALGEBRAIC[46]);
}