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 69 entries in the algebraic variable array.
   There are a total of 22 entries in each of the rate and state variable arrays.
   There are a total of 63 entries in the constant variable array.
 */
/*
 * VOI is time in component Time (time_units).
 * CONSTANTS[0] is T in component Environment (Temperature_units).
 * CONSTANTS[1] is F in component Environment (F_units).
 * CONSTANTS[2] is R in component Environment (R_units).
 * CONSTANTS[3] is Ca_o in component Environment (millimolar).
 * CONSTANTS[4] is Na_o in component Environment (millimolar).
 * CONSTANTS[5] is K_o in component Environment (millimolar).
 * CONSTANTS[57] is FoRT in component Environment (inverse_voltage_units).
 * CONSTANTS[58] is RToF in component Environment (voltage_units).
 * CONSTANTS[6] is Cm in component membrane (capacitance_units).
 * STATES[0] is Vm in component membrane (voltage_units).
 * STATES[1] is Ca_i_peripheral in component membrane (millimolar).
 * STATES[2] is Ca_i_bulk in component membrane (millimolar).
 * STATES[3] is Ca_sr in component membrane (millimolar).
 * STATES[4] is Na_i in component membrane (millimolar).
 * STATES[5] is K_i in component membrane (millimolar).
 * ALGEBRAIC[43] is i_k1 in component i_k1 (current_units).
 * ALGEBRAIC[33] is i_to_fast in component i_to_fast (current_units).
 * ALGEBRAIC[36] is i_to_sustained in component i_to_sustained (current_units).
 * ALGEBRAIC[46] is i_kr in component i_kr (current_units).
 * ALGEBRAIC[48] is i_ks in component i_ks (current_units).
 * ALGEBRAIC[54] is i_kb in component i_kb (current_units).
 * ALGEBRAIC[52] is i_nak in component i_nak (current_units).
 * ALGEBRAIC[31] is i_cal in component i_cal (current_units).
 * ALGEBRAIC[25] is i_cat in component i_cat (current_units).
 * ALGEBRAIC[38] is i_na_fast in component i_na_fast (current_units).
 * ALGEBRAIC[40] is i_na_late in component i_na_late (current_units).
 * ALGEBRAIC[59] is i_pmca in component i_pmca (current_units).
 * ALGEBRAIC[58] is i_cab in component i_cab (current_units).
 * ALGEBRAIC[66] is i_f_na in component i_f_na (current_units).
 * ALGEBRAIC[62] is i_f_k in component i_f_k (current_units).
 * ALGEBRAIC[49] is i_naca in component i_naca (current_units).
 * ALGEBRAIC[56] is i_nab in component i_nab (current_units).
 * ALGEBRAIC[0] is i_stim in component membrane (current_units).
 * ALGEBRAIC[61] is i_rel_per in component i_rel_per (current_units).
 * ALGEBRAIC[63] is i_serca_per in component i_serca_per (current_units).
 * ALGEBRAIC[65] is i_serca_bulk in component i_serca_bulk (current_units).
 * ALGEBRAIC[68] is i_diff in component i_diff (current_units).
 * ALGEBRAIC[67] is i_leak in component i_leak (current_units).
 * CONSTANTS[60] is peripheral_volume in component membrane (volume_units).
 * CONSTANTS[59] is bulk_volume in component membrane (volume_units).
 * CONSTANTS[62] is diffusable_volume in component membrane (volume_units).
 * CONSTANTS[61] is sr_volume in component membrane (volume_units).
 * CONSTANTS[7] is cell_volume in component membrane (volume_units).
 * CONSTANTS[8] is bulk_fraction in component membrane (dimensionless).
 * CONSTANTS[9] is periphery_fraction in component membrane (dimensionless).
 * CONSTANTS[10] is sr_fraction in component membrane (dimensionless).
 * CONSTANTS[11] is stim_start in component membrane (time_units).
 * CONSTANTS[12] is stim_end in component membrane (time_units).
 * CONSTANTS[13] is stim_period in component membrane (time_units).
 * CONSTANTS[14] is stim_duration in component membrane (time_units).
 * CONSTANTS[15] is stim_amplitude in component membrane (current_units).
 * ALGEBRAIC[1] is x_inf_Ttype in component x_Ttype (dimensionless).
 * CONSTANTS[16] is tau_x_Ttype in component x_Ttype (time_units).
 * STATES[6] is x_Ttype in component x_Ttype (dimensionless).
 * ALGEBRAIC[2] is y_inf_Ttype in component y_Ttype (dimensionless).
 * ALGEBRAIC[17] is tau_y_Ttype in component y_Ttype (time_units).
 * STATES[7] is y_Ttype in component y_Ttype (dimensionless).
 * ALGEBRAIC[16] is E_Ca in component i_cat (voltage_units).
 * CONSTANTS[17] is G_max_Ttype in component i_cat (conductance_units).
 * ALGEBRAIC[3] is x_inf_Ltype in component x_Ltype (dimensionless).
 * CONSTANTS[18] is tau_x_Ltype in component x_Ltype (time_units).
 * STATES[8] is x_Ltype in component x_Ltype (dimensionless).
 * ALGEBRAIC[4] is y_inf_Ltype in component y_Ltype (dimensionless).
 * ALGEBRAIC[18] is tau_y_Ltype in component y_Ltype (time_units).
 * STATES[9] is y_Ltype in component y_Ltype (dimensionless).
 * ALGEBRAIC[5] is y_ca_inf_Ltype in component y_ca_Ltype (dimensionless).
 * ALGEBRAIC[19] is tau_y_ca_Ltype in component y_ca_Ltype (time_units).
 * STATES[10] is y_ca_Ltype in component y_ca_Ltype (dimensionless).
 * ALGEBRAIC[28] is E_Ca in component i_cal (voltage_units).
 * CONSTANTS[19] is G_max_Ltype in component i_cal (conductance_units).
 * ALGEBRAIC[6] is x_inf_to_fast in component x_to_fast (dimensionless).
 * CONSTANTS[20] is tau_x_to_fast in component x_to_fast (time_units).
 * STATES[11] is x_to_fast in component x_to_fast (dimensionless).
 * ALGEBRAIC[7] is y_inf_to_fast in component y_to_fast (dimensionless).
 * CONSTANTS[21] is tau_y_to_fast in component y_to_fast (time_units).
 * STATES[12] is y_to_fast in component y_to_fast (dimensionless).
 * ALGEBRAIC[32] is E_k in component i_to_fast (voltage_units).
 * CONSTANTS[22] is G_max_to_fast in component i_to_fast (conductance_units).
 * ALGEBRAIC[34] is x_to_sustained in component x_to_sustained (dimensionless).
 * ALGEBRAIC[35] is E_k in component i_to_sustained (voltage_units).
 * CONSTANTS[23] is G_max_to_sustained in component i_to_sustained (conductance_units).
 * ALGEBRAIC[8] is x_inf_na_fast in component x_na_fast (dimensionless).
 * CONSTANTS[24] is tau_x_na_fast in component x_na_fast (time_units).
 * STATES[13] is x_na_fast in component x_na_fast (dimensionless).
 * ALGEBRAIC[9] is y_inf_na_fast in component y_na_fast (dimensionless).
 * CONSTANTS[25] is tau_y_na_fast in component y_na_fast (time_units).
 * STATES[14] is y_na_fast in component y_na_fast (dimensionless).
 * ALGEBRAIC[37] is E_na in component i_na_fast (voltage_units).
 * CONSTANTS[26] is G_max_na_fast in component i_na_fast (conductance_units).
 * ALGEBRAIC[10] is x_inf_na_late in component x_na_late (dimensionless).
 * CONSTANTS[27] is tau_x_na_late in component x_na_late (time_units).
 * STATES[15] is x_na_late in component x_na_late (dimensionless).
 * ALGEBRAIC[11] is y_inf_na_late in component y_na_late (dimensionless).
 * ALGEBRAIC[20] is tau_y_na_late in component y_na_late (time_units).
 * STATES[16] is y_na_late in component y_na_late (dimensionless).
 * ALGEBRAIC[39] is E_na in component i_na_late (voltage_units).
 * CONSTANTS[28] is G_max_na_late in component i_na_late (conductance_units).
 * ALGEBRAIC[41] is x_k1 in component x_k1 (dimensionless).
 * ALGEBRAIC[42] is E_k in component i_k1 (voltage_units).
 * CONSTANTS[29] is G_max_k1 in component i_k1 (conductance_units).
 * ALGEBRAIC[44] is x_kr in component x_kr (dimensionless).
 * ALGEBRAIC[12] is y_inf_kr in component y_kr (dimensionless).
 * ALGEBRAIC[29] is tau_y_kr in component y_kr (time_units).
 * STATES[17] is y_kr in component y_kr (dimensionless).
 * ALGEBRAIC[21] is ykrv1 in component y_kr (rate_constants_units).
 * ALGEBRAIC[26] is ykrv2 in component y_kr (rate_constants_units).
 * ALGEBRAIC[45] is E_k in component i_kr (voltage_units).
 * CONSTANTS[30] is G_max_kr in component i_kr (conductance_units).
 * ALGEBRAIC[13] is x_inf_ks in component x_ks (dimensionless).
 * ALGEBRAIC[22] is tau_x_ks in component x_ks (time_units).
 * STATES[18] is x_ks in component x_ks (dimensionless).
 * ALGEBRAIC[27] is y_inf_ks in component y_ks (dimensionless).
 * ALGEBRAIC[30] is tau_y_ks in component y_ks (time_units).
 * STATES[19] is y_ks in component y_ks (dimensionless).
 * ALGEBRAIC[47] is E_k in component i_ks (voltage_units).
 * CONSTANTS[31] is G_max_ks in component i_ks (conductance_units).
 * CONSTANTS[32] is n_NaCa in component i_naca (dimensionless).
 * CONSTANTS[33] is g_NaCa in component i_naca (current_units).
 * CONSTANTS[34] is d_NaCa in component i_naca (dimensionless).
 * CONSTANTS[35] is gamma in component i_naca (dimensionless).
 * ALGEBRAIC[50] is x_nak in component x_nak (dimensionless).
 * ALGEBRAIC[51] is y_nak in component y_nak (dimensionless).
 * CONSTANTS[36] is g_nak in component i_nak (current_units).
 * ALGEBRAIC[53] is E_k in component i_kb (voltage_units).
 * CONSTANTS[37] is G_max_kb in component i_kb (conductance_units).
 * ALGEBRAIC[55] is E_na in component i_nab (voltage_units).
 * CONSTANTS[38] is G_max_nab in component i_nab (conductance_units).
 * ALGEBRAIC[57] is E_ca in component i_cab (voltage_units).
 * CONSTANTS[39] is G_max_cab in component i_cab (conductance_units).
 * CONSTANTS[40] is PMCA_max in component i_pmca (current_units).
 * CONSTANTS[41] is Kpmca in component i_pmca (millimolar).
 * CONSTANTS[42] is Hpmca in component i_pmca (dimensionless).
 * CONSTANTS[43] is G_f_k in component i_f_k (conductance_units).
 * ALGEBRAIC[60] is E_k in component i_f_k (voltage_units).
 * STATES[20] is y_gate_f_k in component y_gate_f_k (dimensionless).
 * CONSTANTS[44] is G_f_na in component i_f_na (conductance_units).
 * ALGEBRAIC[64] is E_na in component i_f_na (voltage_units).
 * STATES[21] is y_gate_f_na in component y_gate_f_na (dimensionless).
 * ALGEBRAIC[14] is y_inf_f_gate in component y_gate_f_k (dimensionless).
 * ALGEBRAIC[23] is tau_y_f_gate in component y_gate_f_k (time_units).
 * ALGEBRAIC[15] is y_inf_f_gate in component y_gate_f_na (dimensionless).
 * ALGEBRAIC[24] is tau_y_f_gate in component y_gate_f_na (time_units).
 * CONSTANTS[45] is REL_max in component i_rel_per (current_per_millimolar_units).
 * CONSTANTS[46] is Krel in component i_rel_per (millimolar).
 * CONSTANTS[47] is SERCA_max in component i_serca_per (current_units).
 * CONSTANTS[48] is Kmf in component i_serca_per (millimolar).
 * CONSTANTS[49] is Kmr in component i_serca_per (millimolar).
 * CONSTANTS[50] is H in component i_serca_per (dimensionless).
 * CONSTANTS[51] is SERCA_max in component i_serca_bulk (current_units).
 * CONSTANTS[52] is Kmf in component i_serca_bulk (millimolar).
 * CONSTANTS[53] is Kmr in component i_serca_bulk (millimolar).
 * CONSTANTS[54] is H in component i_serca_bulk (dimensionless).
 * CONSTANTS[55] is LEAK_max in component i_leak (current_per_millimolar_units).
 * CONSTANTS[56] is DIFF_max in component i_diff (current_per_millimolar_units).
 * RATES[0] is d/dt Vm in component membrane (voltage_units).
 * RATES[1] is d/dt Ca_i_peripheral in component membrane (millimolar).
 * RATES[2] is d/dt Ca_i_bulk in component membrane (millimolar).
 * RATES[3] is d/dt Ca_sr in component membrane (millimolar).
 * RATES[5] is d/dt K_i in component membrane (millimolar).
 * RATES[4] is d/dt Na_i in component membrane (millimolar).
 * RATES[6] is d/dt x_Ttype in component x_Ttype (dimensionless).
 * RATES[7] is d/dt y_Ttype in component y_Ttype (dimensionless).
 * RATES[8] is d/dt x_Ltype in component x_Ltype (dimensionless).
 * RATES[9] is d/dt y_Ltype in component y_Ltype (dimensionless).
 * RATES[10] is d/dt y_ca_Ltype in component y_ca_Ltype (dimensionless).
 * RATES[11] is d/dt x_to_fast in component x_to_fast (dimensionless).
 * RATES[12] is d/dt y_to_fast in component y_to_fast (dimensionless).
 * RATES[13] is d/dt x_na_fast in component x_na_fast (dimensionless).
 * RATES[14] is d/dt y_na_fast in component y_na_fast (dimensionless).
 * RATES[15] is d/dt x_na_late in component x_na_late (dimensionless).
 * RATES[16] is d/dt y_na_late in component y_na_late (dimensionless).
 * RATES[17] is d/dt y_kr in component y_kr (dimensionless).
 * RATES[18] is d/dt x_ks in component x_ks (dimensionless).
 * RATES[19] is d/dt y_ks in component y_ks (dimensionless).
 * RATES[20] is d/dt y_gate_f_k in component y_gate_f_k (dimensionless).
 * RATES[21] is d/dt y_gate_f_na in component y_gate_f_na (dimensionless).
 */
void
initConsts(double* CONSTANTS, double* RATES, double *STATES)
{
CONSTANTS[0] = 310.0;
CONSTANTS[1] = 96485.3415;
CONSTANTS[2] = 8314.472;
CONSTANTS[3] = 2.0;
CONSTANTS[4] = 140;
CONSTANTS[5] = 5.4;
CONSTANTS[6] = 69.0;
STATES[0] = -88.34;
STATES[1] = 0.00001;
STATES[2] = 0.000032;
STATES[3] = 0.17;
STATES[4] = 6.7;
STATES[5] = 140;
CONSTANTS[7] = 13266.5;
CONSTANTS[8] = 0.6;
CONSTANTS[9] = 0.2;
CONSTANTS[10] = 0.06;
CONSTANTS[11] = 700;
CONSTANTS[12] = 9000000;
CONSTANTS[13] = 500;
CONSTANTS[14] = 0.5;
CONSTANTS[15] = -4320.0;
CONSTANTS[16] = 1.0;
STATES[6] = 0.001337;
STATES[7] = 0.01;
CONSTANTS[17] = 0.9;
CONSTANTS[18] = 0.7;
STATES[8] = 0.000003;
STATES[9] = 0.1;
STATES[10] = 0.7;
CONSTANTS[19] = 5.4;
CONSTANTS[20] = 5.0;
STATES[11] = 0.0;
CONSTANTS[21] = 350.0;
STATES[12] = 0.7;
CONSTANTS[22] = 10.0;
CONSTANTS[23] = 3.0;
CONSTANTS[24] = 0.005;
STATES[13] = 0.000007;
CONSTANTS[25] = 2.0;
STATES[14] = 0.978861;
CONSTANTS[26] = 1140.0;
CONSTANTS[27] = 15.0;
STATES[15] = 0.000012;
STATES[16] = 0.864489;
CONSTANTS[28] = 2.0;
CONSTANTS[29] = 20.0;
STATES[17] = 0.25;
CONSTANTS[30] = 1.5;
STATES[18] = 1.0;
STATES[19] = 0.0;
CONSTANTS[31] = 3.0;
CONSTANTS[32] = 3;
CONSTANTS[33] = 0.001;
CONSTANTS[34] = 0.001;
CONSTANTS[35] = 0.5;
CONSTANTS[36] = 442.2;
CONSTANTS[37] = 0.01;
CONSTANTS[38] = 0.01;
CONSTANTS[39] = 0.0001;
CONSTANTS[40] = 5.0;
CONSTANTS[41] = 0.0001;
CONSTANTS[42] = 1.5;
CONSTANTS[43] = 0.188709677;
STATES[20] = 0.011099;
CONSTANTS[44] = 0.045290323;
STATES[21] = 0.011099;
CONSTANTS[45] = 2500.0;
CONSTANTS[46] = 0.001;
CONSTANTS[47] = 120.0;
CONSTANTS[48] = 0.000246;
CONSTANTS[49] = 1.7;
CONSTANTS[50] = 1.6;
CONSTANTS[51] = 120.0;
CONSTANTS[52] = 0.000246;
CONSTANTS[53] = 1.7;
CONSTANTS[54] = 1.6;
CONSTANTS[55] = 10.0;
CONSTANTS[56] = 5000.0;
CONSTANTS[57] = CONSTANTS[1]/( CONSTANTS[2]*CONSTANTS[0]);
CONSTANTS[58] = ( CONSTANTS[2]*CONSTANTS[0])/CONSTANTS[1];
CONSTANTS[59] =  CONSTANTS[8]*CONSTANTS[7];
CONSTANTS[60] =  CONSTANTS[9]*CONSTANTS[7];
CONSTANTS[61] =  CONSTANTS[10]*CONSTANTS[7];
CONSTANTS[62] =  (CONSTANTS[8]+CONSTANTS[9])*CONSTANTS[7];
}
void
computeRates(double VOI, double* CONSTANTS, double* RATES, double* STATES, double* ALGEBRAIC)
{
ALGEBRAIC[1] = 1.00000/(1.00000+exp((STATES[0]+47.8000)/-5.50000));
RATES[6] = (ALGEBRAIC[1] - STATES[6])/CONSTANTS[16];
ALGEBRAIC[3] = 1.00000/(1.00000+exp((STATES[0]+14.6000)/-5.50000));
RATES[8] = (ALGEBRAIC[3] - STATES[8])/CONSTANTS[18];
ALGEBRAIC[6] = 1.00000/(1.00000+exp((STATES[0]+-7.00000)/-9.00000));
RATES[11] = (ALGEBRAIC[6] - STATES[11])/CONSTANTS[20];
ALGEBRAIC[7] = 1.00000/(1.00000+exp((STATES[0]+27.5000)/8.00000));
RATES[12] = (ALGEBRAIC[7] - STATES[12])/CONSTANTS[21];
ALGEBRAIC[8] = 1.00000/(1.00000+exp((STATES[0]+25.0000)/-5.00000));
RATES[13] = (ALGEBRAIC[8] - STATES[13])/CONSTANTS[24];
ALGEBRAIC[9] = 1.00000/(1.00000+exp((STATES[0]+69.0000)/3.96000));
RATES[14] = (ALGEBRAIC[9] - STATES[14])/CONSTANTS[25];
ALGEBRAIC[10] = 1.00000/(1.00000+exp((STATES[0]+30.0000)/-5.00000));
RATES[15] = (ALGEBRAIC[10] - STATES[15])/CONSTANTS[27];
ALGEBRAIC[2] = 1.00000/(1.00000+exp((STATES[0]+67.9000)/3.87000));
ALGEBRAIC[17] =  1.42271*exp( -0.0511900*STATES[0]);
RATES[7] = (ALGEBRAIC[2] - STATES[7])/ALGEBRAIC[17];
ALGEBRAIC[4] = 1.00000/(1.00000+exp((STATES[0]+31.0000)/5.54000));
ALGEBRAIC[18] = 25.1000/(0.0400000+ 0.700000*exp( -1.00000*pow( 0.0280000*(STATES[0]+14.5000), 2.00000)));
RATES[9] = (ALGEBRAIC[4] - STATES[9])/ALGEBRAIC[18];
ALGEBRAIC[5] = 0.400000+0.600000/(1.00000+pow(STATES[1]/0.000100000, 2.00000));
ALGEBRAIC[19] = 2.00000+80.0000/(1.00000+pow(STATES[1]/0.000100000, 2.00000));
RATES[10] = (ALGEBRAIC[5] - STATES[10])/ALGEBRAIC[19];
ALGEBRAIC[11] = 0.100000+0.900000/(1.00000+exp((STATES[0]+75.6000)/6.30000));
ALGEBRAIC[20] = 120.000+ 1.00000*exp((STATES[0]+100.000)/25.0000);
RATES[16] = (ALGEBRAIC[11] - STATES[16])/ALGEBRAIC[20];
ALGEBRAIC[13] = 1.00000/(1.00000+exp((STATES[0] - 1.50000)/-16.7000));
ALGEBRAIC[22] = (fabs(STATES[0]+30.0000)<0.0145000 ? 417.946 : 1.00000/(( 7.19000e-05*(STATES[0]+30.0000))/(1.00000 - exp( -0.148000*(STATES[0]+30.0000)))+( 0.000131000*(STATES[0]+30.0000))/(exp( 0.0687000*(STATES[0]+30.0000)) - 1.00000)));
RATES[18] = (ALGEBRAIC[13] - STATES[18])/ALGEBRAIC[22];
ALGEBRAIC[14] = 1.00000/(1.00000+exp((STATES[0]+109.000)/10.0000));
ALGEBRAIC[23] = 6000.00/(exp( -1.00000*(2.90000+ 0.0400000*STATES[0]))+exp( 1.00000*(3.60000+ 0.110000*STATES[0])));
RATES[20] = (ALGEBRAIC[14] - STATES[20])/ALGEBRAIC[23];
ALGEBRAIC[15] = 1.00000/(1.00000+exp((STATES[0]+109.000)/10.0000));
ALGEBRAIC[24] = 6000.00/(exp( -1.00000*(2.90000+ 0.0400000*STATES[0]))+exp( 1.00000*(3.60000+ 0.110000*STATES[0])));
RATES[21] = (ALGEBRAIC[15] - STATES[21])/ALGEBRAIC[24];
ALGEBRAIC[12] = 1.00000/(1.00000+exp((STATES[0]+50.0000)/-7.50000));
ALGEBRAIC[21] = (fabs(STATES[0]+7.00000)>0.00100000 ? ( 0.00138000*1.00000*(STATES[0]+7.00000))/(1.00000 - exp( -0.123000*(STATES[0]+7.00000))) : 0.00138000/0.123000);
ALGEBRAIC[26] = (fabs(STATES[0]+10.0000)>0.00100000 ? ( 6.10000e-05*1.00000*(STATES[0]+10.0000))/(exp( 0.145000*(STATES[0]+10.0000)) - 1.00000) : 0.000610000/0.145000);
ALGEBRAIC[29] = 1.00000/(ALGEBRAIC[21]+ALGEBRAIC[26]);
RATES[17] = (ALGEBRAIC[12] - STATES[17])/ALGEBRAIC[29];
ALGEBRAIC[27] = ALGEBRAIC[13];
ALGEBRAIC[30] =  4.00000*ALGEBRAIC[22];
RATES[19] = (ALGEBRAIC[27] - STATES[19])/ALGEBRAIC[30];
ALGEBRAIC[41] = 1.00000/(1.00000+exp((92.0000+STATES[0])/10.0000));
ALGEBRAIC[42] =  CONSTANTS[58]*log(CONSTANTS[5]/STATES[5]);
ALGEBRAIC[43] =  CONSTANTS[29]*pow(CONSTANTS[5]/5.40000, 0.800000)*ALGEBRAIC[41]*(STATES[0] - ALGEBRAIC[42]);
ALGEBRAIC[32] =  CONSTANTS[58]*log(CONSTANTS[5]/STATES[5]);
ALGEBRAIC[33] =  CONSTANTS[22]*STATES[11]*STATES[12]*(STATES[0] - ALGEBRAIC[32]);
ALGEBRAIC[34] = 1.00000/(1.00000+exp((5.00000 - STATES[0])/17.0000));
ALGEBRAIC[35] =  CONSTANTS[58]*log(CONSTANTS[5]/STATES[5]);
ALGEBRAIC[36] =  CONSTANTS[23]*ALGEBRAIC[34]*(STATES[0] - ALGEBRAIC[35]);
ALGEBRAIC[44] = 1.00000/(1.00000+exp((33.0000+STATES[0])/22.4000));
ALGEBRAIC[45] =  CONSTANTS[58]*log(CONSTANTS[5]/STATES[5]);
ALGEBRAIC[46] =  CONSTANTS[30]*pow(CONSTANTS[5]/5.40000, 1.00000)*ALGEBRAIC[44]*STATES[17]*(STATES[0] - ALGEBRAIC[45]);
ALGEBRAIC[47] =  CONSTANTS[58]*log(CONSTANTS[5]/STATES[5]);
ALGEBRAIC[48] =  CONSTANTS[31]*STATES[18]*STATES[19]*(STATES[0] - ALGEBRAIC[47]);
ALGEBRAIC[53] =  CONSTANTS[58]*log(CONSTANTS[5]/STATES[5]);
ALGEBRAIC[54] =  CONSTANTS[37]*(STATES[0] - ALGEBRAIC[53]);
ALGEBRAIC[50] = 1.00000/(1.00000+exp((STATES[0]+80.0000)/-45.0000));
ALGEBRAIC[51] = 1.00000/(1.00000+exp((STATES[0]+0.00000)/125.000));
ALGEBRAIC[52] =  CONSTANTS[36]*ALGEBRAIC[50]*ALGEBRAIC[51]*(1.00000/(1.00000+pow(1.90000/CONSTANTS[5], 1.45000)))*(1.00000/(1.00000+pow(31.9800/STATES[4], 1.00000)));
ALGEBRAIC[60] =  CONSTANTS[58]*log(CONSTANTS[5]/STATES[5]);
ALGEBRAIC[62] =  CONSTANTS[43]*STATES[20]*(STATES[0] - ALGEBRAIC[60]);
ALGEBRAIC[0] = (VOI>=CONSTANTS[11]&&VOI<=CONSTANTS[12]&&(VOI - CONSTANTS[11]) -  floor((VOI - CONSTANTS[11])/CONSTANTS[13])*CONSTANTS[13]<=CONSTANTS[14] ? CONSTANTS[15] : 0.00000);
RATES[5] = ( ( -1.00000*ALGEBRAIC[33]+ -1.00000*ALGEBRAIC[36]+ -1.00000*ALGEBRAIC[46]+ -1.00000*ALGEBRAIC[48]+ -1.00000*ALGEBRAIC[43]+ -1.00000*ALGEBRAIC[54]+ -1.00000*ALGEBRAIC[62]+ -1.00000*ALGEBRAIC[0]+ 2.00000*ALGEBRAIC[52])*1000.00)/( CONSTANTS[1]*CONSTANTS[62]);
ALGEBRAIC[28] =  0.500000*CONSTANTS[58]*log(CONSTANTS[3]/STATES[1]);
ALGEBRAIC[31] =  CONSTANTS[19]*STATES[8]*STATES[9]*STATES[10]*(STATES[0] - ALGEBRAIC[28]);
ALGEBRAIC[16] =  0.500000*CONSTANTS[58]*log(CONSTANTS[3]/STATES[1]);
ALGEBRAIC[25] =  CONSTANTS[17]*STATES[6]*STATES[7]*(STATES[0] - ALGEBRAIC[16]);
ALGEBRAIC[37] =  CONSTANTS[58]*log(CONSTANTS[4]/STATES[4]);
ALGEBRAIC[38] =  CONSTANTS[26]*STATES[13]*STATES[14]*(STATES[0] - ALGEBRAIC[37]);
ALGEBRAIC[39] =  CONSTANTS[58]*log(CONSTANTS[4]/STATES[4]);
ALGEBRAIC[40] =  CONSTANTS[28]*STATES[15]*STATES[16]*(STATES[0] - ALGEBRAIC[39]);
ALGEBRAIC[59] =  CONSTANTS[40]*(1.00000/(1.00000+pow(CONSTANTS[41]/STATES[1], CONSTANTS[42])));
ALGEBRAIC[57] =  0.500000*CONSTANTS[58]*log(CONSTANTS[3]/STATES[1]);
ALGEBRAIC[58] =  CONSTANTS[39]*(STATES[0] - ALGEBRAIC[57]);
ALGEBRAIC[64] =  CONSTANTS[58]*log(CONSTANTS[4]/STATES[4]);
ALGEBRAIC[66] =  CONSTANTS[44]*STATES[21]*(STATES[0] - ALGEBRAIC[64]);
ALGEBRAIC[49] = ( 512.009*CONSTANTS[33]*( exp(( CONSTANTS[35]*(CONSTANTS[32] - 2.00000)*STATES[0])/CONSTANTS[58])*pow(STATES[4], CONSTANTS[32])*CONSTANTS[3] -  STATES[1]*exp(( (CONSTANTS[35] - 1.00000)*(CONSTANTS[32] - 2.00000)*STATES[0])/CONSTANTS[58])*pow(CONSTANTS[4], CONSTANTS[32])))/( (1.00000+ CONSTANTS[34]*( STATES[1]*pow(CONSTANTS[4], CONSTANTS[32])+ CONSTANTS[3]*pow(STATES[4], CONSTANTS[32])))*(1.00000+STATES[1]/0.00690000));
ALGEBRAIC[55] =  CONSTANTS[58]*log(CONSTANTS[4]/STATES[4]);
ALGEBRAIC[56] =  CONSTANTS[38]*(STATES[0] - ALGEBRAIC[55]);
RATES[0] =  (( - 1.00000*1.00000)/CONSTANTS[6])*(ALGEBRAIC[43]+ALGEBRAIC[33]+ALGEBRAIC[36]+ALGEBRAIC[46]+ALGEBRAIC[48]+ALGEBRAIC[54]+ALGEBRAIC[52]+ALGEBRAIC[31]+ALGEBRAIC[25]+ALGEBRAIC[38]+ALGEBRAIC[40]+ALGEBRAIC[59]+ALGEBRAIC[58]+ALGEBRAIC[66]+ALGEBRAIC[62]+ALGEBRAIC[49]+ALGEBRAIC[56]+ALGEBRAIC[0]);
ALGEBRAIC[61] =  CONSTANTS[45]*(STATES[3]/(1.00000+pow(CONSTANTS[46]/STATES[1], 2.00000)));
ALGEBRAIC[63] =  CONSTANTS[47]*((pow(STATES[1]/CONSTANTS[48], CONSTANTS[50]) - pow(STATES[3]/CONSTANTS[49], CONSTANTS[50]))/(1.00000+pow(STATES[1]/CONSTANTS[48], CONSTANTS[50])+pow(STATES[3]/CONSTANTS[49], CONSTANTS[50])));
ALGEBRAIC[65] =  CONSTANTS[51]*((pow(STATES[2]/CONSTANTS[52], CONSTANTS[54]) - pow(STATES[3]/CONSTANTS[53], CONSTANTS[54]))/(1.00000+pow(STATES[2]/CONSTANTS[52], CONSTANTS[54])+pow(STATES[3]/CONSTANTS[53], CONSTANTS[54])));
ALGEBRAIC[67] =  CONSTANTS[55]*(STATES[3] - STATES[2]);
RATES[3] = ( ( -1.00000*ALGEBRAIC[61]+ -1.00000*ALGEBRAIC[67]+ALGEBRAIC[65]+ALGEBRAIC[63])*1000.00)/( 2.00000*CONSTANTS[1]*CONSTANTS[61]);
RATES[4] = ( ( -1.00000*ALGEBRAIC[38]+ -1.00000*ALGEBRAIC[40]+ -3.00000*ALGEBRAIC[52]+ -3.00000*ALGEBRAIC[49]+ -1.00000*ALGEBRAIC[66]+ -1.00000*ALGEBRAIC[56])*1000.00)/( CONSTANTS[1]*CONSTANTS[62]);
ALGEBRAIC[68] =  CONSTANTS[56]*(STATES[1] - STATES[2]);
RATES[1] = ( ( -1.00000*ALGEBRAIC[31]+ -1.00000*ALGEBRAIC[25]+ -1.00000*ALGEBRAIC[58]+ 1.00000*ALGEBRAIC[61]+ -1.00000*ALGEBRAIC[63]+ -1.00000*ALGEBRAIC[68]+ 2.00000*ALGEBRAIC[49]+ -1.00000*ALGEBRAIC[59])*1000.00)/( 2.00000*CONSTANTS[1]*CONSTANTS[60]);
RATES[2] = ( ( -1.00000*ALGEBRAIC[65]+ALGEBRAIC[68]+ALGEBRAIC[67])*1000.00)/( 2.00000*CONSTANTS[1]*CONSTANTS[59]);
}
void
computeVariables(double VOI, double* CONSTANTS, double* RATES, double* STATES, double* ALGEBRAIC)
{
ALGEBRAIC[1] = 1.00000/(1.00000+exp((STATES[0]+47.8000)/-5.50000));
ALGEBRAIC[3] = 1.00000/(1.00000+exp((STATES[0]+14.6000)/-5.50000));
ALGEBRAIC[6] = 1.00000/(1.00000+exp((STATES[0]+-7.00000)/-9.00000));
ALGEBRAIC[7] = 1.00000/(1.00000+exp((STATES[0]+27.5000)/8.00000));
ALGEBRAIC[8] = 1.00000/(1.00000+exp((STATES[0]+25.0000)/-5.00000));
ALGEBRAIC[9] = 1.00000/(1.00000+exp((STATES[0]+69.0000)/3.96000));
ALGEBRAIC[10] = 1.00000/(1.00000+exp((STATES[0]+30.0000)/-5.00000));
ALGEBRAIC[2] = 1.00000/(1.00000+exp((STATES[0]+67.9000)/3.87000));
ALGEBRAIC[17] =  1.42271*exp( -0.0511900*STATES[0]);
ALGEBRAIC[4] = 1.00000/(1.00000+exp((STATES[0]+31.0000)/5.54000));
ALGEBRAIC[18] = 25.1000/(0.0400000+ 0.700000*exp( -1.00000*pow( 0.0280000*(STATES[0]+14.5000), 2.00000)));
ALGEBRAIC[5] = 0.400000+0.600000/(1.00000+pow(STATES[1]/0.000100000, 2.00000));
ALGEBRAIC[19] = 2.00000+80.0000/(1.00000+pow(STATES[1]/0.000100000, 2.00000));
ALGEBRAIC[11] = 0.100000+0.900000/(1.00000+exp((STATES[0]+75.6000)/6.30000));
ALGEBRAIC[20] = 120.000+ 1.00000*exp((STATES[0]+100.000)/25.0000);
ALGEBRAIC[13] = 1.00000/(1.00000+exp((STATES[0] - 1.50000)/-16.7000));
ALGEBRAIC[22] = (fabs(STATES[0]+30.0000)<0.0145000 ? 417.946 : 1.00000/(( 7.19000e-05*(STATES[0]+30.0000))/(1.00000 - exp( -0.148000*(STATES[0]+30.0000)))+( 0.000131000*(STATES[0]+30.0000))/(exp( 0.0687000*(STATES[0]+30.0000)) - 1.00000)));
ALGEBRAIC[14] = 1.00000/(1.00000+exp((STATES[0]+109.000)/10.0000));
ALGEBRAIC[23] = 6000.00/(exp( -1.00000*(2.90000+ 0.0400000*STATES[0]))+exp( 1.00000*(3.60000+ 0.110000*STATES[0])));
ALGEBRAIC[15] = 1.00000/(1.00000+exp((STATES[0]+109.000)/10.0000));
ALGEBRAIC[24] = 6000.00/(exp( -1.00000*(2.90000+ 0.0400000*STATES[0]))+exp( 1.00000*(3.60000+ 0.110000*STATES[0])));
ALGEBRAIC[12] = 1.00000/(1.00000+exp((STATES[0]+50.0000)/-7.50000));
ALGEBRAIC[21] = (fabs(STATES[0]+7.00000)>0.00100000 ? ( 0.00138000*1.00000*(STATES[0]+7.00000))/(1.00000 - exp( -0.123000*(STATES[0]+7.00000))) : 0.00138000/0.123000);
ALGEBRAIC[26] = (fabs(STATES[0]+10.0000)>0.00100000 ? ( 6.10000e-05*1.00000*(STATES[0]+10.0000))/(exp( 0.145000*(STATES[0]+10.0000)) - 1.00000) : 0.000610000/0.145000);
ALGEBRAIC[29] = 1.00000/(ALGEBRAIC[21]+ALGEBRAIC[26]);
ALGEBRAIC[27] = ALGEBRAIC[13];
ALGEBRAIC[30] =  4.00000*ALGEBRAIC[22];
ALGEBRAIC[41] = 1.00000/(1.00000+exp((92.0000+STATES[0])/10.0000));
ALGEBRAIC[42] =  CONSTANTS[58]*log(CONSTANTS[5]/STATES[5]);
ALGEBRAIC[43] =  CONSTANTS[29]*pow(CONSTANTS[5]/5.40000, 0.800000)*ALGEBRAIC[41]*(STATES[0] - ALGEBRAIC[42]);
ALGEBRAIC[32] =  CONSTANTS[58]*log(CONSTANTS[5]/STATES[5]);
ALGEBRAIC[33] =  CONSTANTS[22]*STATES[11]*STATES[12]*(STATES[0] - ALGEBRAIC[32]);
ALGEBRAIC[34] = 1.00000/(1.00000+exp((5.00000 - STATES[0])/17.0000));
ALGEBRAIC[35] =  CONSTANTS[58]*log(CONSTANTS[5]/STATES[5]);
ALGEBRAIC[36] =  CONSTANTS[23]*ALGEBRAIC[34]*(STATES[0] - ALGEBRAIC[35]);
ALGEBRAIC[44] = 1.00000/(1.00000+exp((33.0000+STATES[0])/22.4000));
ALGEBRAIC[45] =  CONSTANTS[58]*log(CONSTANTS[5]/STATES[5]);
ALGEBRAIC[46] =  CONSTANTS[30]*pow(CONSTANTS[5]/5.40000, 1.00000)*ALGEBRAIC[44]*STATES[17]*(STATES[0] - ALGEBRAIC[45]);
ALGEBRAIC[47] =  CONSTANTS[58]*log(CONSTANTS[5]/STATES[5]);
ALGEBRAIC[48] =  CONSTANTS[31]*STATES[18]*STATES[19]*(STATES[0] - ALGEBRAIC[47]);
ALGEBRAIC[53] =  CONSTANTS[58]*log(CONSTANTS[5]/STATES[5]);
ALGEBRAIC[54] =  CONSTANTS[37]*(STATES[0] - ALGEBRAIC[53]);
ALGEBRAIC[50] = 1.00000/(1.00000+exp((STATES[0]+80.0000)/-45.0000));
ALGEBRAIC[51] = 1.00000/(1.00000+exp((STATES[0]+0.00000)/125.000));
ALGEBRAIC[52] =  CONSTANTS[36]*ALGEBRAIC[50]*ALGEBRAIC[51]*(1.00000/(1.00000+pow(1.90000/CONSTANTS[5], 1.45000)))*(1.00000/(1.00000+pow(31.9800/STATES[4], 1.00000)));
ALGEBRAIC[60] =  CONSTANTS[58]*log(CONSTANTS[5]/STATES[5]);
ALGEBRAIC[62] =  CONSTANTS[43]*STATES[20]*(STATES[0] - ALGEBRAIC[60]);
ALGEBRAIC[0] = (VOI>=CONSTANTS[11]&&VOI<=CONSTANTS[12]&&(VOI - CONSTANTS[11]) -  floor((VOI - CONSTANTS[11])/CONSTANTS[13])*CONSTANTS[13]<=CONSTANTS[14] ? CONSTANTS[15] : 0.00000);
ALGEBRAIC[28] =  0.500000*CONSTANTS[58]*log(CONSTANTS[3]/STATES[1]);
ALGEBRAIC[31] =  CONSTANTS[19]*STATES[8]*STATES[9]*STATES[10]*(STATES[0] - ALGEBRAIC[28]);
ALGEBRAIC[16] =  0.500000*CONSTANTS[58]*log(CONSTANTS[3]/STATES[1]);
ALGEBRAIC[25] =  CONSTANTS[17]*STATES[6]*STATES[7]*(STATES[0] - ALGEBRAIC[16]);
ALGEBRAIC[37] =  CONSTANTS[58]*log(CONSTANTS[4]/STATES[4]);
ALGEBRAIC[38] =  CONSTANTS[26]*STATES[13]*STATES[14]*(STATES[0] - ALGEBRAIC[37]);
ALGEBRAIC[39] =  CONSTANTS[58]*log(CONSTANTS[4]/STATES[4]);
ALGEBRAIC[40] =  CONSTANTS[28]*STATES[15]*STATES[16]*(STATES[0] - ALGEBRAIC[39]);
ALGEBRAIC[59] =  CONSTANTS[40]*(1.00000/(1.00000+pow(CONSTANTS[41]/STATES[1], CONSTANTS[42])));
ALGEBRAIC[57] =  0.500000*CONSTANTS[58]*log(CONSTANTS[3]/STATES[1]);
ALGEBRAIC[58] =  CONSTANTS[39]*(STATES[0] - ALGEBRAIC[57]);
ALGEBRAIC[64] =  CONSTANTS[58]*log(CONSTANTS[4]/STATES[4]);
ALGEBRAIC[66] =  CONSTANTS[44]*STATES[21]*(STATES[0] - ALGEBRAIC[64]);
ALGEBRAIC[49] = ( 512.009*CONSTANTS[33]*( exp(( CONSTANTS[35]*(CONSTANTS[32] - 2.00000)*STATES[0])/CONSTANTS[58])*pow(STATES[4], CONSTANTS[32])*CONSTANTS[3] -  STATES[1]*exp(( (CONSTANTS[35] - 1.00000)*(CONSTANTS[32] - 2.00000)*STATES[0])/CONSTANTS[58])*pow(CONSTANTS[4], CONSTANTS[32])))/( (1.00000+ CONSTANTS[34]*( STATES[1]*pow(CONSTANTS[4], CONSTANTS[32])+ CONSTANTS[3]*pow(STATES[4], CONSTANTS[32])))*(1.00000+STATES[1]/0.00690000));
ALGEBRAIC[55] =  CONSTANTS[58]*log(CONSTANTS[4]/STATES[4]);
ALGEBRAIC[56] =  CONSTANTS[38]*(STATES[0] - ALGEBRAIC[55]);
ALGEBRAIC[61] =  CONSTANTS[45]*(STATES[3]/(1.00000+pow(CONSTANTS[46]/STATES[1], 2.00000)));
ALGEBRAIC[63] =  CONSTANTS[47]*((pow(STATES[1]/CONSTANTS[48], CONSTANTS[50]) - pow(STATES[3]/CONSTANTS[49], CONSTANTS[50]))/(1.00000+pow(STATES[1]/CONSTANTS[48], CONSTANTS[50])+pow(STATES[3]/CONSTANTS[49], CONSTANTS[50])));
ALGEBRAIC[65] =  CONSTANTS[51]*((pow(STATES[2]/CONSTANTS[52], CONSTANTS[54]) - pow(STATES[3]/CONSTANTS[53], CONSTANTS[54]))/(1.00000+pow(STATES[2]/CONSTANTS[52], CONSTANTS[54])+pow(STATES[3]/CONSTANTS[53], CONSTANTS[54])));
ALGEBRAIC[67] =  CONSTANTS[55]*(STATES[3] - STATES[2]);
ALGEBRAIC[68] =  CONSTANTS[56]*(STATES[1] - STATES[2]);
}