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 28 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 108 entries in the constant variable array.
 */
/*
 * VOI is time in component environment (second).
 * STATES[0] is ADP_m in component ADP_m (millimolar).
 * ALGEBRAIC[18] is V_ANT in component calcium_dynamics (flux).
 * ALGEBRAIC[24] is V_ATPase in component oxidative_phosphorylation (flux).
 * ALGEBRAIC[9] is V_SL in component V_SL (flux).
 * STATES[1] is NADH in component NADH (millimolar).
 * ALGEBRAIC[20] is V_O2 in component oxidative_phosphorylation (flux).
 * ALGEBRAIC[7] is V_IDH in component V_IDH (flux).
 * ALGEBRAIC[8] is V_KGDH in component V_KGDH (flux).
 * ALGEBRAIC[11] is V_MDH in component V_MDH (flux).
 * STATES[2] is ISOC in component ISOC (millimolar).
 * ALGEBRAIC[6] is V_ACO in component V_ACO (flux).
 * STATES[3] is alpha_KG in component alpha_KG (millimolar).
 * ALGEBRAIC[13] is V_AAT in component V_AAT (flux).
 * STATES[4] is SCoA in component SCoA (millimolar).
 * STATES[5] is Suc in component Suc (millimolar).
 * ALGEBRAIC[10] is V_SDH in component V_SDH (flux).
 * STATES[6] is FUM in component FUM (millimolar).
 * ALGEBRAIC[12] is V_FH in component V_FH (flux).
 * STATES[7] is MAL in component MAL (millimolar).
 * STATES[8] is OAA in component OAA (millimolar).
 * ALGEBRAIC[5] is V_CS in component V_CS (flux).
 * STATES[9] is ASP in component ASP (millimolar).
 * ALGEBRAIC[14] is V_C_ASP in component V_C_ASP (flux).
 * STATES[10] is Ca_m in component Ca_m (micromolar).
 * CONSTANTS[0] is f in component Ca_m (dimensionless).
 * ALGEBRAIC[26] is V_uni in component calcium_dynamics (flux).
 * ALGEBRAIC[27] is V_NaCa in component calcium_dynamics (flux).
 * ALGEBRAIC[19] is Ca_i in component Ca_i (micromolar).
 * CONSTANTS[1] is stim_start in component Ca_i (second).
 * CONSTANTS[2] is stim_end in component Ca_i (second).
 * ALGEBRAIC[0] is stim_period in component Ca_i (second).
 * CONSTANTS[3] is stim_duration in component Ca_i (second).
 * CONSTANTS[4] is pulse_value in component Ca_i (micromolar).
 * CONSTANTS[5] is Na_i in component Na_i (millimolar).
 * CONSTANTS[6] is ATP_i in component ATP_i (millimolar).
 * ALGEBRAIC[1] is ATP_m in component ATP_m (millimolar).
 * CONSTANTS[7] is Cm in component ATP_m (millimolar).
 * ALGEBRAIC[2] is ADP_i in component ADP_i (millimolar).
 * CONSTANTS[8] is pulse_value in component ADP_i (millimolar).
 * CONSTANTS[9] is GLU in component GLU (millimolar).
 * CONSTANTS[10] is Mg in component Mg (millimolar).
 * CONSTANTS[11] is H in component H (millimolar).
 * CONSTANTS[12] is Pi in component Pi (millimolar).
 * CONSTANTS[13] is CoA in component CoA (millimolar).
 * CONSTANTS[14] is AcCoA in component AcCoA (millimolar).
 * CONSTANTS[15] is FAD in component FAD (millimolar).
 * CONSTANTS[16] is FADH2 in component FADH2 (millimolar).
 * ALGEBRAIC[3] is NAD in component NAD (millimolar).
 * CONSTANTS[17] is C_PN in component NAD (millimolar).
 * ALGEBRAIC[4] is CIT in component CIT (millimolar).
 * CONSTANTS[18] is C_Kint in component CIT (millimolar).
 * STATES[11] is delta_psi_m in component mitochondrial_membrane (volt).
 * CONSTANTS[19] is R in component mitochondrial_membrane (volt_coulomb_per_mole_kelvin).
 * CONSTANTS[20] is T in component mitochondrial_membrane (kelvin).
 * CONSTANTS[21] is F in component mitochondrial_membrane (coulomb_per_mole).
 * CONSTANTS[22] is C_mito in component mitochondrial_membrane (millimolar_per_volt).
 * ALGEBRAIC[21] is V_He in component oxidative_phosphorylation (flux).
 * ALGEBRAIC[22] is V_He_F in component oxidative_phosphorylation (flux).
 * ALGEBRAIC[25] is V_Hu in component oxidative_phosphorylation (flux).
 * ALGEBRAIC[23] is V_Hleak in component oxidative_phosphorylation (flux).
 * CONSTANTS[23] is Km_AcCoA in component V_CS (millimolar).
 * CONSTANTS[24] is Km_OAA in component V_CS (millimolar).
 * CONSTANTS[25] is Kcat_CS in component V_CS (first_order_rate_constant).
 * CONSTANTS[26] is ET_CS in component V_CS (millimolar).
 * CONSTANTS[27] is Kf_ACO in component V_ACO (first_order_rate_constant).
 * CONSTANTS[28] is KE_ACO in component V_ACO (dimensionless).
 * CONSTANTS[29] is Kh_1 in component V_IDH (millimolar).
 * CONSTANTS[30] is Kh_2 in component V_IDH (millimolar).
 * CONSTANTS[31] is Km_ISOC in component V_IDH (millimolar).
 * CONSTANTS[32] is Ka_ADP in component V_IDH (millimolar).
 * CONSTANTS[33] is Ka_Ca in component V_IDH (micromolar).
 * CONSTANTS[34] is Km_NAD in component V_IDH (millimolar).
 * CONSTANTS[35] is Ki_NADH in component V_IDH (millimolar).
 * CONSTANTS[36] is Kcat_IDH in component V_IDH (first_order_rate_constant).
 * CONSTANTS[37] is ET_IDH in component V_IDH (millimolar).
 * CONSTANTS[38] is ni in component V_IDH (dimensionless).
 * CONSTANTS[39] is Km_alpha_KG in component V_KGDH (millimolar).
 * CONSTANTS[40] is Kcat_KGDH in component V_KGDH (first_order_rate_constant).
 * CONSTANTS[41] is ET_KGDH in component V_KGDH (millimolar).
 * CONSTANTS[42] is Kd_Mg in component V_KGDH (millimolar).
 * CONSTANTS[43] is Kd_Ca in component V_KGDH (micromolar).
 * CONSTANTS[44] is n_alpha_KG in component V_KGDH (dimensionless).
 * CONSTANTS[45] is Km_NAD in component V_KGDH (millimolar).
 * CONSTANTS[46] is kf_SL in component V_SL (second_order_rate_constant).
 * CONSTANTS[47] is Ke_SL in component V_SL (millimolar).
 * CONSTANTS[48] is Kisdh_OAA in component V_SDH (millimolar).
 * CONSTANTS[49] is Kcat_SDH in component V_SDH (first_order_rate_constant).
 * CONSTANTS[50] is ET_SDH in component V_SDH (millimolar).
 * CONSTANTS[51] is Km_Suc in component V_SDH (millimolar).
 * CONSTANTS[52] is Ki_FUM in component V_SDH (millimolar).
 * CONSTANTS[53] is Km_MAL in component V_MDH (millimolar).
 * CONSTANTS[54] is Kcat_MDH in component V_MDH (first_order_rate_constant).
 * CONSTANTS[55] is ET_MDH in component V_MDH (millimolar).
 * CONSTANTS[56] is Ki_OAA in component V_MDH (millimolar).
 * CONSTANTS[106] is fh_a in component V_MDH (dimensionless).
 * CONSTANTS[107] is fh_i in component V_MDH (dimensionless).
 * CONSTANTS[57] is Km_NAD in component V_MDH (millimolar).
 * CONSTANTS[58] is kh1 in component V_MDH (millimolar).
 * CONSTANTS[59] is kh2 in component V_MDH (millimolar).
 * CONSTANTS[60] is kh3 in component V_MDH (millimolar).
 * CONSTANTS[61] is kh4 in component V_MDH (millimolar).
 * CONSTANTS[62] is k_offset in component V_MDH (dimensionless).
 * CONSTANTS[63] is Ke_FH in component V_FH (dimensionless).
 * CONSTANTS[64] is kf_FH in component V_FH (first_order_rate_constant).
 * CONSTANTS[65] is Ke_AAT in component V_AAT (dimensionless).
 * CONSTANTS[66] is kf_AAT in component V_AAT (second_order_rate_constant).
 * CONSTANTS[67] is k_C_ASP in component V_C_ASP (first_order_rate_constant).
 * CONSTANTS[68] is rho_res in component oxidative_phosphorylation (millimolar).
 * CONSTANTS[69] is rho_res_F in component oxidative_phosphorylation (millimolar).
 * CONSTANTS[70] is ra in component oxidative_phosphorylation (first_order_rate_constant).
 * CONSTANTS[71] is rc1 in component oxidative_phosphorylation (first_order_rate_constant).
 * ALGEBRAIC[15] is Ares in component oxidative_phosphorylation (volt).
 * CONSTANTS[105] is Ares_F in component oxidative_phosphorylation (volt).
 * CONSTANTS[72] is r1 in component oxidative_phosphorylation (dimensionless).
 * CONSTANTS[73] is r2 in component oxidative_phosphorylation (dimensionless).
 * CONSTANTS[74] is r3 in component oxidative_phosphorylation (dimensionless).
 * CONSTANTS[75] is rb in component oxidative_phosphorylation (first_order_rate_constant).
 * CONSTANTS[76] is rc2 in component oxidative_phosphorylation (first_order_rate_constant).
 * CONSTANTS[77] is Kres in component oxidative_phosphorylation (dimensionless).
 * CONSTANTS[78] is Kres_F in component oxidative_phosphorylation (dimensionless).
 * CONSTANTS[79] is gH in component oxidative_phosphorylation (millimolar_per_second_volt).
 * CONSTANTS[80] is delta_psi_B in component oxidative_phosphorylation (volt).
 * CONSTANTS[81] is g in component oxidative_phosphorylation (dimensionless).
 * ALGEBRAIC[16] is delta_mu_H in component oxidative_phosphorylation (volt).
 * CONSTANTS[82] is delta_pH in component oxidative_phosphorylation (dimensionless).
 * CONSTANTS[83] is rho_F1 in component oxidative_phosphorylation (millimolar).
 * CONSTANTS[84] is pa in component oxidative_phosphorylation (first_order_rate_constant).
 * CONSTANTS[85] is pc1 in component oxidative_phosphorylation (first_order_rate_constant).
 * ALGEBRAIC[17] is AF1 in component oxidative_phosphorylation (volt).
 * CONSTANTS[86] is p1 in component oxidative_phosphorylation (dimensionless).
 * CONSTANTS[87] is p2 in component oxidative_phosphorylation (dimensionless).
 * CONSTANTS[88] is p3 in component oxidative_phosphorylation (dimensionless).
 * CONSTANTS[89] is pb in component oxidative_phosphorylation (first_order_rate_constant).
 * CONSTANTS[90] is pc2 in component oxidative_phosphorylation (first_order_rate_constant).
 * CONSTANTS[91] is KF1 in component oxidative_phosphorylation (millimolar).
 * CONSTANTS[92] is h in component calcium_dynamics (dimensionless).
 * CONSTANTS[93] is delta_psi_0 in component calcium_dynamics (volt).
 * CONSTANTS[94] is Vmax_ANT in component calcium_dynamics (flux).
 * CONSTANTS[95] is L in component calcium_dynamics (dimensionless).
 * CONSTANTS[96] is na in component calcium_dynamics (dimensionless).
 * CONSTANTS[97] is Vmax_uni in component calcium_dynamics (flux).
 * CONSTANTS[98] is K_act in component calcium_dynamics (micromolar).
 * CONSTANTS[99] is K_trans in component calcium_dynamics (micromolar).
 * CONSTANTS[100] is n in component calcium_dynamics (dimensionless).
 * CONSTANTS[101] is Vmax_NaCa in component calcium_dynamics (flux).
 * CONSTANTS[102] is KNa in component calcium_dynamics (millimolar).
 * CONSTANTS[103] is KCa in component calcium_dynamics (micromolar).
 * CONSTANTS[104] is b in component calcium_dynamics (dimensionless).
 * RATES[0] is d/dt ADP_m in component ADP_m (millimolar).
 * RATES[1] is d/dt NADH in component NADH (millimolar).
 * RATES[2] is d/dt ISOC in component ISOC (millimolar).
 * RATES[3] is d/dt alpha_KG in component alpha_KG (millimolar).
 * RATES[4] is d/dt SCoA in component SCoA (millimolar).
 * RATES[5] is d/dt Suc in component Suc (millimolar).
 * RATES[6] is d/dt FUM in component FUM (millimolar).
 * RATES[7] is d/dt MAL in component MAL (millimolar).
 * RATES[8] is d/dt OAA in component OAA (millimolar).
 * RATES[9] is d/dt ASP in component ASP (millimolar).
 * RATES[10] is d/dt Ca_m in component Ca_m (micromolar).
 * RATES[11] is d/dt delta_psi_m in component mitochondrial_membrane (volt).
 * There are a total of 7 condition variables.
 */
void
initConsts(double* CONSTANTS, double* RATES, double *STATES)
{
STATES[0] = 0.1;
STATES[1] = 0.01;
STATES[2] = 0.01;
STATES[3] = 0.01;
STATES[4] = 0.01;
STATES[5] = 0.01;
STATES[6] = 0.01;
STATES[7] = 0.01;
STATES[8] = 0.01;
STATES[9] = 0.01;
STATES[10] = 0.01;
CONSTANTS[0] = 0.0003;
CONSTANTS[1] = 0;
CONSTANTS[2] = 10000;
CONSTANTS[3] = 0.4;
CONSTANTS[4] = 1;
CONSTANTS[5] = 10.0;
CONSTANTS[6] = 6.5;
CONSTANTS[7] = 15.0;
CONSTANTS[8] = 0.15;
CONSTANTS[9] = 20;
CONSTANTS[10] = 0.4;
CONSTANTS[11] = 2.5E-5;
CONSTANTS[12] = 20.0;
CONSTANTS[13] = 0.02;
CONSTANTS[14] = 0.0002;
CONSTANTS[15] = 0.01;
CONSTANTS[16] = 1.24;
CONSTANTS[17] = 10.0;
CONSTANTS[18] = 1.0;
STATES[11] = 0.01;
CONSTANTS[19] = 8.315;
CONSTANTS[20] = 310.16;
CONSTANTS[21] = 96480;
CONSTANTS[22] = 1.812;
CONSTANTS[23] = 1.26E-2;
CONSTANTS[24] = 6.4E-4;
CONSTANTS[25] = 3.2;
CONSTANTS[26] = 0.4;
CONSTANTS[27] = 12.5;
CONSTANTS[28] = 2.22;
CONSTANTS[29] = 8.1E-5;
CONSTANTS[30] = 5.98E-5;
CONSTANTS[31] = 1.52;
CONSTANTS[32] = 6.2E-2;
CONSTANTS[33] = 1.41;
CONSTANTS[34] = 0.923;
CONSTANTS[35] = 0.19;
CONSTANTS[36] = 1.94;
CONSTANTS[37] = 0.109;
CONSTANTS[38] = 1;
CONSTANTS[39] = 1.94;
CONSTANTS[40] = 0.15;
CONSTANTS[41] = 0.5;
CONSTANTS[42] = 0.0308;
CONSTANTS[43] = 1.27;
CONSTANTS[44] = 1.2;
CONSTANTS[45] = 38.7;
CONSTANTS[46] = 0.127;
CONSTANTS[47] = 3.115;
CONSTANTS[48] = 0.15;
CONSTANTS[49] = 1.0;
CONSTANTS[50] = 0.5;
CONSTANTS[51] = 3.0E-2;
CONSTANTS[52] = 1.3;
CONSTANTS[53] = 1.493;
CONSTANTS[54] = 2.775E1;
CONSTANTS[55] = 0.154;
CONSTANTS[56] = 3.1E-3;
CONSTANTS[57] = 0.2244;
CONSTANTS[58] = 1.13E-5;
CONSTANTS[59] = 26.7;
CONSTANTS[60] = 6.68E-9;
CONSTANTS[61] = 5.62E-6;
CONSTANTS[62] = 3.99E-2;
CONSTANTS[63] = 1.0;
CONSTANTS[64] = 0.83;
CONSTANTS[65] = 6.6;
CONSTANTS[66] = 0.644;
CONSTANTS[67] = 0.01;
CONSTANTS[68] = 0.0006;
CONSTANTS[69] = 0.0045;
CONSTANTS[70] = 6.394E-10;
CONSTANTS[71] = 2.656E-19;
CONSTANTS[72] = 2.077E-18;
CONSTANTS[73] = 1.728E-9;
CONSTANTS[74] = 1.059E-26;
CONSTANTS[75] = 1.762E-13;
CONSTANTS[76] = 8.632E-27;
CONSTANTS[77] = 1.35E18;
CONSTANTS[78] = 5.765E13;
CONSTANTS[79] = 0.01;
CONSTANTS[80] = 0.05;
CONSTANTS[81] = 0.85;
CONSTANTS[82] = -0.6;
CONSTANTS[83] = 0.06;
CONSTANTS[84] = 1.656E-5;
CONSTANTS[85] = 9.651E-14;
CONSTANTS[86] = 1.346E-8;
CONSTANTS[87] = 7.739E-7;
CONSTANTS[88] = 6.65E-15;
CONSTANTS[89] = 3.373E-7;
CONSTANTS[90] = 4.585E-14;
CONSTANTS[91] = 1.71E6;
CONSTANTS[92] = 0.5;
CONSTANTS[93] = 0.091;
CONSTANTS[94] = 0.05;
CONSTANTS[95] = 110.0;
CONSTANTS[96] = 2.8;
CONSTANTS[97] = 0.000625;
CONSTANTS[98] = 0.38;
CONSTANTS[99] = 19.0;
CONSTANTS[100] = 3.0;
CONSTANTS[101] = 0.005;
CONSTANTS[102] = 9.4;
CONSTANTS[103] = 3.75E-1;
CONSTANTS[104] = 0.5;
CONSTANTS[105] =  (( CONSTANTS[19]*CONSTANTS[20])/CONSTANTS[21])*log( CONSTANTS[78]*pow(CONSTANTS[16]/CONSTANTS[15], 0.500000));
CONSTANTS[106] = 1.00000/(1.00000+CONSTANTS[11]/CONSTANTS[58]+pow(CONSTANTS[11], 2.00000)/( CONSTANTS[58]*CONSTANTS[59]))+CONSTANTS[62];
CONSTANTS[107] = pow(1.00000/(1.00000+CONSTANTS[60]/CONSTANTS[11]+( CONSTANTS[60]*CONSTANTS[61])/pow(CONSTANTS[11], 2.00000)), 2.00000);
RATES[0] = 0.1001;
RATES[1] = 0.1001;
RATES[2] = 0.1001;
RATES[3] = 0.1001;
RATES[4] = 0.1001;
RATES[5] = 0.1001;
RATES[6] = 0.1001;
RATES[7] = 0.1001;
RATES[8] = 0.1001;
RATES[9] = 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[18] - (ALGEBRAIC[24]+ALGEBRAIC[9]);
resid[1] = RATES[1] - - ALGEBRAIC[20]+ALGEBRAIC[7]+ALGEBRAIC[8]+ALGEBRAIC[11];
resid[2] = RATES[2] - ALGEBRAIC[6] - ALGEBRAIC[7];
resid[3] = RATES[3] - ALGEBRAIC[13]+ALGEBRAIC[7]+- ALGEBRAIC[8];
resid[4] = RATES[4] - ALGEBRAIC[8] - ALGEBRAIC[9];
resid[5] = RATES[5] - ALGEBRAIC[9] - ALGEBRAIC[10];
resid[6] = RATES[6] - ALGEBRAIC[10] - ALGEBRAIC[12];
resid[7] = RATES[7] - ALGEBRAIC[12] - ALGEBRAIC[11];
resid[8] = RATES[8] - ALGEBRAIC[11] - (ALGEBRAIC[5]+ALGEBRAIC[13]);
resid[9] = RATES[9] - ALGEBRAIC[13] - ALGEBRAIC[14];
resid[10] = RATES[10] -  CONSTANTS[0]*1.00000*(ALGEBRAIC[26] - ALGEBRAIC[27]);
resid[11] = RATES[11] - (ALGEBRAIC[21]+ALGEBRAIC[22]+- (ALGEBRAIC[25]+ALGEBRAIC[18]+ALGEBRAIC[23]+ALGEBRAIC[27]+ 2.00000*ALGEBRAIC[26]))/CONSTANTS[22];
}
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[5] = ( CONSTANTS[25]*CONSTANTS[26])/(1.00000+CONSTANTS[23]/CONSTANTS[14]+CONSTANTS[24]/STATES[8]+ (CONSTANTS[23]/CONSTANTS[14])*(CONSTANTS[24]/STATES[8]));
ALGEBRAIC[4] = CONSTANTS[18] - (STATES[2]+STATES[3]+STATES[4]+STATES[5]+STATES[6]+STATES[7]+STATES[8]);
ALGEBRAIC[6] =  CONSTANTS[27]*(ALGEBRAIC[4] - STATES[2]/CONSTANTS[28]);
ALGEBRAIC[3] = CONSTANTS[17] - STATES[1];
ALGEBRAIC[7] = ( CONSTANTS[36]*CONSTANTS[37])/(1.00000+CONSTANTS[11]/CONSTANTS[29]+CONSTANTS[30]/CONSTANTS[11]+pow(CONSTANTS[31]/STATES[2], CONSTANTS[38])/( (1.00000+STATES[0]/CONSTANTS[32])*(1.00000+STATES[10]/CONSTANTS[33]))+ (CONSTANTS[34]/ALGEBRAIC[3])*(1.00000+STATES[1]/CONSTANTS[35])+( pow(CONSTANTS[31]/STATES[2], CONSTANTS[38])*(CONSTANTS[34]/ALGEBRAIC[3])*(1.00000+STATES[1]/CONSTANTS[35]))/( (1.00000+STATES[0]/CONSTANTS[32])*(1.00000+STATES[10]/CONSTANTS[33])));
ALGEBRAIC[8] = ( CONSTANTS[40]*CONSTANTS[41])/(1.00000+pow(CONSTANTS[39]/STATES[3], CONSTANTS[44])/( (1.00000+CONSTANTS[10]/CONSTANTS[42])*(1.00000+STATES[10]/CONSTANTS[43]))+(CONSTANTS[45]/ALGEBRAIC[3])/( (1.00000+CONSTANTS[10]/CONSTANTS[42])*(1.00000+STATES[10]/CONSTANTS[43])));
ALGEBRAIC[1] = CONSTANTS[7] - STATES[0];
ALGEBRAIC[9] =  CONSTANTS[46]*( STATES[4]*STATES[0] - ( STATES[5]*ALGEBRAIC[1]*CONSTANTS[13])/CONSTANTS[47]);
ALGEBRAIC[10] = ( CONSTANTS[49]*CONSTANTS[50])/(1.00000+ (CONSTANTS[51]/STATES[5])*(1.00000+STATES[8]/CONSTANTS[48])*(1.00000+STATES[6]/CONSTANTS[52]));
ALGEBRAIC[11] = ( CONSTANTS[54]*CONSTANTS[55]*CONSTANTS[106]*CONSTANTS[107])/(1.00000+ (CONSTANTS[53]/STATES[7])*(1.00000+STATES[8]/CONSTANTS[56])+CONSTANTS[57]/ALGEBRAIC[3]+ (CONSTANTS[53]/STATES[7])*(1.00000+STATES[8]/CONSTANTS[56])*(CONSTANTS[57]/ALGEBRAIC[3]));
ALGEBRAIC[12] =  CONSTANTS[64]*(STATES[6] - STATES[7]/CONSTANTS[63]);
ALGEBRAIC[13] =  CONSTANTS[66]*( STATES[8]*CONSTANTS[9] - ( STATES[3]*STATES[9])/CONSTANTS[65]);
ALGEBRAIC[14] =  CONSTANTS[67]*STATES[9];
ALGEBRAIC[2] = (CONDVAR[5]>=0.00000&&CONDVAR[6]<0.00000 ? CONSTANTS[8] : 0.0500000);
ALGEBRAIC[18] =  CONSTANTS[94]*((1.00000 - ( 0.0500000*CONSTANTS[6]*0.450000*0.800000*STATES[0])/( 0.450000*ALGEBRAIC[2]*0.0500000*ALGEBRAIC[1]))/( (1.00000+ (( 0.0500000*CONSTANTS[6])/( 0.450000*ALGEBRAIC[2]))*exp(( - CONSTANTS[92]*CONSTANTS[21]*CONSTANTS[93])/( CONSTANTS[19]*CONSTANTS[20])))*(1.00000+( 0.450000*0.800000*STATES[0])/( 0.0500000*ALGEBRAIC[1]))));
ALGEBRAIC[15] =  (( CONSTANTS[19]*CONSTANTS[20])/CONSTANTS[21])*log( CONSTANTS[77]*pow(STATES[1]/ALGEBRAIC[3], 0.500000));
ALGEBRAIC[16] =  (( CONSTANTS[19]*CONSTANTS[20])/CONSTANTS[21])*CONSTANTS[82]+STATES[11];
ALGEBRAIC[20] =  0.500000*CONSTANTS[68]*((( (CONSTANTS[70]+ CONSTANTS[71]*exp(( 6.00000*CONSTANTS[21]*CONSTANTS[80])/( CONSTANTS[19]*CONSTANTS[20])))*exp(( ALGEBRAIC[15]*CONSTANTS[21])/( CONSTANTS[19]*CONSTANTS[20])) -  CONSTANTS[70]*exp(( CONSTANTS[81]*6.00000*CONSTANTS[21]*ALGEBRAIC[16])/( CONSTANTS[19]*CONSTANTS[20])))+ CONSTANTS[76]*exp(( ALGEBRAIC[15]*CONSTANTS[21])/( CONSTANTS[19]*CONSTANTS[20]))*exp(( CONSTANTS[81]*6.00000*CONSTANTS[21]*ALGEBRAIC[16])/( CONSTANTS[19]*CONSTANTS[20])))/( (1.00000+ CONSTANTS[72]*exp(( CONSTANTS[21]*ALGEBRAIC[15])/( CONSTANTS[19]*CONSTANTS[20])))*exp(( 6.00000*CONSTANTS[21]*CONSTANTS[80])/( CONSTANTS[19]*CONSTANTS[20]))+ (CONSTANTS[73]+ CONSTANTS[74]*exp(( CONSTANTS[21]*ALGEBRAIC[15])/( CONSTANTS[19]*CONSTANTS[20])))*exp(( CONSTANTS[81]*6.00000*CONSTANTS[21]*ALGEBRAIC[16])/( CONSTANTS[19]*CONSTANTS[20]))));
ALGEBRAIC[21] =  6.00000*CONSTANTS[68]*(( CONSTANTS[70]*exp(( CONSTANTS[21]*ALGEBRAIC[15])/( CONSTANTS[19]*CONSTANTS[20])) -  (CONSTANTS[70]+CONSTANTS[75])*exp(( CONSTANTS[81]*6.00000*CONSTANTS[21]*ALGEBRAIC[16])/( CONSTANTS[19]*CONSTANTS[20])))/( (1.00000+ CONSTANTS[72]*exp(( CONSTANTS[21]*ALGEBRAIC[15])/( CONSTANTS[19]*CONSTANTS[20])))*exp(( 6.00000*CONSTANTS[21]*CONSTANTS[80])/( CONSTANTS[19]*CONSTANTS[20]))+ (CONSTANTS[73]+ CONSTANTS[74]*exp(( CONSTANTS[21]*ALGEBRAIC[15])/( CONSTANTS[19]*CONSTANTS[20])))*exp(( CONSTANTS[81]*6.00000*CONSTANTS[21]*ALGEBRAIC[16])/( CONSTANTS[19]*CONSTANTS[20]))));
ALGEBRAIC[22] =  6.00000*CONSTANTS[69]*(( CONSTANTS[70]*exp(( CONSTANTS[21]*CONSTANTS[105])/( CONSTANTS[19]*CONSTANTS[20])) -  (CONSTANTS[70]+CONSTANTS[75])*exp(( CONSTANTS[81]*6.00000*CONSTANTS[21]*ALGEBRAIC[16])/( CONSTANTS[19]*CONSTANTS[20])))/( (1.00000+ CONSTANTS[72]*exp(( CONSTANTS[21]*CONSTANTS[105])/( CONSTANTS[19]*CONSTANTS[20])))*exp(( 6.00000*CONSTANTS[21]*CONSTANTS[80])/( CONSTANTS[19]*CONSTANTS[20]))+ (CONSTANTS[73]+ CONSTANTS[74]*exp(( CONSTANTS[21]*CONSTANTS[105])/( CONSTANTS[19]*CONSTANTS[20])))*exp(( CONSTANTS[81]*6.00000*CONSTANTS[21]*ALGEBRAIC[16])/( CONSTANTS[19]*CONSTANTS[20]))));
ALGEBRAIC[23] =  CONSTANTS[79]*ALGEBRAIC[16];
ALGEBRAIC[17] =  (( CONSTANTS[19]*CONSTANTS[20])/CONSTANTS[21])*log( CONSTANTS[91]*(ALGEBRAIC[1]/( STATES[0]*CONSTANTS[12])));
ALGEBRAIC[24] =  - CONSTANTS[83]*(( ( 100.000*CONSTANTS[84]+ CONSTANTS[85]*exp(( 3.00000*CONSTANTS[21]*CONSTANTS[80])/( CONSTANTS[19]*CONSTANTS[20])))*exp(( ALGEBRAIC[17]*CONSTANTS[21])/( CONSTANTS[19]*CONSTANTS[20])) - ( CONSTANTS[84]*exp(( 3.00000*CONSTANTS[21]*ALGEBRAIC[16])/( CONSTANTS[19]*CONSTANTS[20]))+ CONSTANTS[90]*exp(( ALGEBRAIC[17]*CONSTANTS[21])/( CONSTANTS[19]*CONSTANTS[20]))*exp(( 3.00000*CONSTANTS[21]*ALGEBRAIC[16])/( CONSTANTS[19]*CONSTANTS[20]))))/( (1.00000+ CONSTANTS[86]*exp(( CONSTANTS[21]*ALGEBRAIC[17])/( CONSTANTS[19]*CONSTANTS[20])))*exp(( 3.00000*CONSTANTS[21]*CONSTANTS[80])/( CONSTANTS[19]*CONSTANTS[20]))+ (CONSTANTS[87]+ CONSTANTS[88]*exp(( CONSTANTS[21]*ALGEBRAIC[17])/( CONSTANTS[19]*CONSTANTS[20])))*exp(( 3.00000*CONSTANTS[21]*ALGEBRAIC[16])/( CONSTANTS[19]*CONSTANTS[20]))));
ALGEBRAIC[25] =  -3.00000*CONSTANTS[83]*(( 100.000*CONSTANTS[84]*(1.00000+exp(( CONSTANTS[21]*ALGEBRAIC[17])/( CONSTANTS[19]*CONSTANTS[20]))) -  (CONSTANTS[84]+CONSTANTS[89])*exp(( 3.00000*CONSTANTS[21]*ALGEBRAIC[16])/( CONSTANTS[19]*CONSTANTS[20])))/( (1.00000+ CONSTANTS[86]*exp(( CONSTANTS[21]*ALGEBRAIC[17])/( CONSTANTS[19]*CONSTANTS[20])))*exp(( 3.00000*CONSTANTS[21]*CONSTANTS[80])/( CONSTANTS[19]*CONSTANTS[20]))+ (CONSTANTS[87]+ CONSTANTS[88]*exp(( CONSTANTS[21]*ALGEBRAIC[17])/( CONSTANTS[19]*CONSTANTS[20])))*exp(( 3.00000*CONSTANTS[21]*ALGEBRAIC[16])/( CONSTANTS[19]*CONSTANTS[20]))));
ALGEBRAIC[0] = (CONDVAR[3]>=0.00000&&CONDVAR[4]<0.00000 ? 0.500000 : 4.00000);
ALGEBRAIC[19] = (CONDVAR[0]>=0.00000&&CONDVAR[1]<=0.00000&&CONDVAR[2]<=0.00000 ? CONSTANTS[4] : 0.100000);
ALGEBRAIC[26] =  CONSTANTS[97]*(( (ALGEBRAIC[19]/CONSTANTS[99])*pow(1.00000+ALGEBRAIC[19]/CONSTANTS[99], 3.00000)*(( 2.00000*CONSTANTS[21]*(STATES[11] - CONSTANTS[93]))/( CONSTANTS[19]*CONSTANTS[20])))/(pow(1.00000+ALGEBRAIC[19]/CONSTANTS[99], 4.00000)+ (CONSTANTS[95]/pow(1.00000+ALGEBRAIC[19]/CONSTANTS[98], CONSTANTS[96]))*(1.00000 - exp(( -2.00000*CONSTANTS[21]*(STATES[11] - CONSTANTS[93]))/( CONSTANTS[19]*CONSTANTS[20])))));
ALGEBRAIC[27] =  CONSTANTS[101]*(( exp(( CONSTANTS[104]*CONSTANTS[21]*(STATES[11] - CONSTANTS[93]))/( CONSTANTS[19]*CONSTANTS[20]))*exp(log(ALGEBRAIC[19]/STATES[10])))/( pow(1.00000+CONSTANTS[102]/CONSTANTS[5], CONSTANTS[100])*(1.00000+CONSTANTS[103]/STATES[10])));
}
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] = VOI - CONSTANTS[1];
CONDVAR[1] = VOI - CONSTANTS[2];
CONDVAR[2] = ((VOI - CONSTANTS[1]) -  floor((VOI - CONSTANTS[1])/ALGEBRAIC[0])*ALGEBRAIC[0]) - CONSTANTS[3];
CONDVAR[3] = VOI - 100.000;
CONDVAR[4] = VOI - 300.000;
CONDVAR[5] = VOI - 100.000;
CONDVAR[6] = VOI - 300.000;
}