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 22 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 67 entries in the constant variable array.
 */
/*
 * VOI is time in component environment (second).
 * STATES[0] is GlcI in component GlcI (millimolar).
 * ALGEBRAIC[5] is vHK in component vHK (flux).
 * ALGEBRAIC[4] is vGlcTr in component vGlcTr (flux).
 * STATES[1] is hexose_P in component hexose_P (millimolar).
 * ALGEBRAIC[6] is vPFK in component vPFK (flux).
 * STATES[2] is Fru16BP in component Fru16BP (millimolar).
 * ALGEBRAIC[14] is vALD in component vALD (flux).
 * STATES[3] is triose_P in component triose_P (millimolar).
 * ALGEBRAIC[16] is vGAPDH in component vGAPDH (flux).
 * ALGEBRAIC[17] is vGDH in component vGDH (flux).
 * ALGEBRAIC[8] is vGPO in component vGPO (flux).
 * STATES[4] is BPGA13 in component BPGA13 (millimolar).
 * ALGEBRAIC[20] is vPGK in component vPGK (flux).
 * STATES[5] is N in component N (millimolar).
 * ALGEBRAIC[21] is vPK in component vPK (flux).
 * STATES[6] is Pyr in component Pyr (millimolar).
 * ALGEBRAIC[9] is vPyrTr in component vPyrTr (flux).
 * STATES[7] is NADH in component NADH (millimolar).
 * STATES[8] is NAD in component NAD (millimolar).
 * STATES[9] is Gly3P in component Gly3P (millimolar).
 * ALGEBRAIC[11] is vGlyK in component vGlyK (flux).
 * STATES[10] is Gly in component Gly (millimolar).
 * STATES[11] is P in component P (millimolar).
 * ALGEBRAIC[10] is vATPase in component vATPase (flux).
 * ALGEBRAIC[0] is ATP in component ATP (millimolar).
 * CONSTANTS[0] is sumA in component ATP (millimolar).
 * CONSTANTS[1] is Keq_AK in component ATP (dimensionless).
 * ALGEBRAIC[1] is ADP in component ADP (millimolar).
 * ALGEBRAIC[12] is DHAP in component DHAP (millimolar).
 * ALGEBRAIC[3] is Fru6P in component Fru6P (millimolar).
 * ALGEBRAIC[13] is GAP in component GAP (millimolar).
 * STATES[12] is Glc6P in component Glc6P (millimolar).
 * CONSTANTS[2] is sumc4 in component DHAP (millimolar).
 * CONSTANTS[3] is sumc5 in component DHAP (millimolar).
 * ALGEBRAIC[2] is GlcE in component GlcE (millimolar).
 * ALGEBRAIC[7] is vPGI in component vPGI (flux).
 * ALGEBRAIC[18] is PGA3 in component PGA3 (millimolar).
 * ALGEBRAIC[19] is PEP in component PEP (millimolar).
 * CONSTANTS[4] is Keq_ENO in component PEP (dimensionless).
 * CONSTANTS[5] is Keq_PGM in component PEP (dimensionless).
 * CONSTANTS[6] is K_Glc in component vGlcTr (millimolar).
 * CONSTANTS[7] is alpha in component vGlcTr (dimensionless).
 * CONSTANTS[8] is vGlcTr_max in component vGlcTr (flux).
 * CONSTANTS[9] is K_GlcI in component vHK (millimolar).
 * CONSTANTS[10] is K_Glc6P in component vHK (millimolar).
 * CONSTANTS[11] is K_ATP in component vHK (millimolar).
 * CONSTANTS[12] is K_ADP in component vHK (millimolar).
 * CONSTANTS[13] is vHK_max in component vHK (flux).
 * CONSTANTS[14] is K_Glc6P in component vPGI (millimolar).
 * CONSTANTS[15] is K_Fru6P in component vPGI (millimolar).
 * CONSTANTS[16] is vPGI_max in component vPGI (flux).
 * CONSTANTS[17] is Ki_1 in component vPFK (millimolar).
 * CONSTANTS[18] is Ki_2 in component vPFK (millimolar).
 * CONSTANTS[19] is KM_Fru6P in component vPFK (millimolar).
 * CONSTANTS[20] is KM_ATP in component vPFK (millimolar).
 * CONSTANTS[21] is vPFK_max in component vPFK (flux).
 * CONSTANTS[22] is sumA in component vALD (millimolar).
 * CONSTANTS[23] is KM_GAP in component vALD (millimolar).
 * CONSTANTS[24] is Ki_GAP in component vALD (millimolar).
 * CONSTANTS[25] is KM_DHAP in component vALD (millimolar).
 * CONSTANTS[26] is vALD_max_forward in component vALD (flux).
 * CONSTANTS[27] is vALD_max_reverse in component vALD (flux).
 * ALGEBRAIC[15] is vTPI in component vTPI (flux).
 * CONSTANTS[28] is K_DHAP in component vTPI (millimolar).
 * CONSTANTS[29] is K_GAP in component vTPI (millimolar).
 * CONSTANTS[30] is vTPI_max in component vTPI (flux).
 * CONSTANTS[31] is K_NAD in component vGAPDH (millimolar).
 * CONSTANTS[32] is K_GAP in component vGAPDH (millimolar).
 * CONSTANTS[33] is K_BPGA13 in component vGAPDH (millimolar).
 * CONSTANTS[34] is K_NADH in component vGAPDH (millimolar).
 * CONSTANTS[35] is vGAPDH_max_forward in component vGAPDH (flux).
 * CONSTANTS[36] is vGAPDH_max_reverse in component vGAPDH (flux).
 * CONSTANTS[37] is vGAPDH_max in component vGAPDH (dimensionless).
 * CONSTANTS[38] is K_NADH in component vGDH (millimolar).
 * CONSTANTS[39] is K_Gly3P in component vGDH (millimolar).
 * CONSTANTS[40] is K_DHAP in component vGDH (millimolar).
 * CONSTANTS[41] is K_NAD in component vGDH (millimolar).
 * CONSTANTS[42] is vGDH_max_forward in component vGDH (flux).
 * CONSTANTS[43] is vGDH_max_reverse in component vGDH (flux).
 * CONSTANTS[44] is vGDH_max in component vGDH (dimensionless).
 * CONSTANTS[45] is K_Gly3P in component vGPO (millimolar).
 * CONSTANTS[46] is vGPO_max in component vGPO (flux).
 * CONSTANTS[47] is K_pyruvate in component vPyrTr (millimolar).
 * CONSTANTS[48] is vPyrTr_max in component vPyrTr (flux).
 * CONSTANTS[49] is K_ADP in component vPGK (millimolar).
 * CONSTANTS[50] is K_BPGA13 in component vPGK (millimolar).
 * CONSTANTS[51] is K_PGA3 in component vPGK (millimolar).
 * CONSTANTS[52] is K_ATP in component vPGK (millimolar).
 * CONSTANTS[53] is vPGK_max_forward in component vPGK (flux).
 * CONSTANTS[54] is vPGK_max_reverse in component vPGK (flux).
 * CONSTANTS[55] is vPGK_max in component vPGK (dimensionless).
 * CONSTANTS[56] is KM_ADP in component vPK (millimolar).
 * CONSTANTS[57] is n in component vPK (dimensionless).
 * CONSTANTS[58] is vPK_max in component vPK (flux).
 * CONSTANTS[59] is k in component vATPase (flux).
 * CONSTANTS[60] is K_ADP in component vGlyK (millimolar).
 * CONSTANTS[61] is K_Gly3P in component vGlyK (millimolar).
 * CONSTANTS[62] is K_Gly in component vGlyK (millimolar).
 * CONSTANTS[63] is K_ATP in component vGlyK (millimolar).
 * CONSTANTS[64] is vGlyK_max_forward in component vGlyK (flux).
 * CONSTANTS[65] is vGlyK_max_reverse in component vGlyK (flux).
 * CONSTANTS[66] is vGlyK_max in component vGlyK (dimensionless).
 * RATES[0] is d/dt GlcI in component GlcI (millimolar).
 * RATES[1] is d/dt hexose_P in component hexose_P (millimolar).
 * RATES[2] is d/dt Fru16BP in component Fru16BP (millimolar).
 * RATES[3] is d/dt triose_P in component triose_P (millimolar).
 * RATES[4] is d/dt BPGA13 in component BPGA13 (millimolar).
 * RATES[5] is d/dt N in component N (millimolar).
 * RATES[6] is d/dt Pyr in component Pyr (millimolar).
 * RATES[7] is d/dt NADH in component NADH (millimolar).
 * RATES[8] is d/dt NAD in component NAD (millimolar).
 * RATES[9] is d/dt Gly3P in component Gly3P (millimolar).
 * RATES[10] is d/dt Gly in component Gly (millimolar).
 * RATES[11] is d/dt P in component P (millimolar).
 * RATES[12] is d/dt Glc6P in component Glc6P (millimolar).
 */
void
initConsts(double* CONSTANTS, double* RATES, double *STATES)
{
STATES[0] = 0.0340009;
STATES[1] = 2.583763;
STATES[2] = 16.5371;
STATES[3] = 3.9391429;
STATES[4] = 0.0326745;
STATES[5] = 1.59603;
STATES[6] = 4.77413;
STATES[7] = 0.0448639;
STATES[8] = 0.0448639;
STATES[9] = 0.0;
STATES[10] = 0.0;
STATES[11] = 7.63936;
CONSTANTS[0] = 3.9;
CONSTANTS[1] = 0.442;
STATES[12] = 2.07199;
CONSTANTS[2] = 45.0;
CONSTANTS[3] = 5.0;
CONSTANTS[4] = 6.7;
CONSTANTS[5] = 0.187;
CONSTANTS[6] = 2.0;
CONSTANTS[7] = 0.75;
CONSTANTS[8] = 106.2;
CONSTANTS[9] = 0.1;
CONSTANTS[10] = 12.0;
CONSTANTS[11] = 0.116;
CONSTANTS[12] = 0.126;
CONSTANTS[13] = 625.0;
CONSTANTS[14] = 0.4;
CONSTANTS[15] = 0.12;
CONSTANTS[16] = 848.0;
CONSTANTS[17] = 15.8;
CONSTANTS[18] = 10.7;
CONSTANTS[19] = 0.82;
CONSTANTS[20] = 0.026;
CONSTANTS[21] = 780.0;
CONSTANTS[22] = 6.0;
CONSTANTS[23] = 0.067;
CONSTANTS[24] = 0.098;
CONSTANTS[25] = 0.015;
CONSTANTS[26] = 184.5;
CONSTANTS[27] = 219.555;
CONSTANTS[28] = 1.2;
CONSTANTS[29] = 0.25;
CONSTANTS[30] = 842.0;
CONSTANTS[31] = 0.45;
CONSTANTS[32] = 0.15;
CONSTANTS[33] = 0.1;
CONSTANTS[34] = 0.02;
CONSTANTS[35] = 1470.0;
CONSTANTS[36] = 984.9;
CONSTANTS[37] = 1.0;
CONSTANTS[38] = 0.01;
CONSTANTS[39] = 2.0;
CONSTANTS[40] = 0.1;
CONSTANTS[41] = 0.4;
CONSTANTS[42] = 533.0;
CONSTANTS[43] = 149.24;
CONSTANTS[44] = 1.0;
CONSTANTS[45] = 1.7;
CONSTANTS[46] = 368.0;
CONSTANTS[47] = 1.96;
CONSTANTS[48] = 200.0;
CONSTANTS[49] = 0.1;
CONSTANTS[50] = 0.05;
CONSTANTS[51] = 1.62;
CONSTANTS[52] = 0.29;
CONSTANTS[53] = 640.0;
CONSTANTS[54] = 18.56;
CONSTANTS[55] = 1.0;
CONSTANTS[56] = 0.114;
CONSTANTS[57] = 2.5;
CONSTANTS[58] = 2600;
CONSTANTS[59] = 50;
CONSTANTS[60] = 0.12;
CONSTANTS[61] = 5.1;
CONSTANTS[62] = 0.12;
CONSTANTS[63] = 0.19;
CONSTANTS[64] = 220.0;
CONSTANTS[65] = 334000.0;
CONSTANTS[66] = 1.0;
}
void
computeRates(double VOI, double* CONSTANTS, double* RATES, double* STATES, double* ALGEBRAIC)
{
ALGEBRAIC[0] = (( STATES[11]*(1.00000 -  4.00000*CONSTANTS[1]) - CONSTANTS[0])+pow(pow(CONSTANTS[0] -  (1.00000 -  4.00000*CONSTANTS[1])*STATES[11], 2.00000)+ 4.00000*(1.00000 -  4.00000*CONSTANTS[1])*( - CONSTANTS[1]*pow(STATES[11], 2.00000)), 0.500000))/( 2.00000*(1.00000 -  4.00000*CONSTANTS[1]));
ALGEBRAIC[1] = STATES[11] -  2.00000*ALGEBRAIC[0];
ALGEBRAIC[5] = ( CONSTANTS[13]*STATES[0]*ALGEBRAIC[0])/( CONSTANTS[11]*CONSTANTS[9]*(1.00000+STATES[12]/CONSTANTS[10]+STATES[0]/CONSTANTS[9])*(1.00000+ALGEBRAIC[0]/CONSTANTS[11]+ALGEBRAIC[1]/CONSTANTS[12]));
ALGEBRAIC[2] = (VOI>=60.0000&&VOI<61.0000 ? 5.00000 : 0.0500000);
ALGEBRAIC[4] =  CONSTANTS[8]*((ALGEBRAIC[2] - STATES[0])/(CONSTANTS[6]+ALGEBRAIC[2]+STATES[0]+ CONSTANTS[7]*ALGEBRAIC[2]*(STATES[0]/CONSTANTS[6])));
RATES[0] = ALGEBRAIC[4] - ALGEBRAIC[5];
ALGEBRAIC[3] = STATES[1] - STATES[12];
ALGEBRAIC[6] = ( CONSTANTS[17]*CONSTANTS[21]*ALGEBRAIC[3]*ALGEBRAIC[0])/( CONSTANTS[20]*CONSTANTS[19]*(STATES[2]+CONSTANTS[17])*(1.00000+STATES[2]/CONSTANTS[18]+ALGEBRAIC[3]/CONSTANTS[19])*(1.00000+ALGEBRAIC[0]/CONSTANTS[20]));
RATES[1] = ALGEBRAIC[5] - ALGEBRAIC[6];
ALGEBRAIC[7] = ( CONSTANTS[16]*(STATES[12]/CONSTANTS[14] - ALGEBRAIC[3]/CONSTANTS[15]))/(1.00000+STATES[12]/CONSTANTS[14]+ALGEBRAIC[3]/CONSTANTS[15]);
RATES[12] = ALGEBRAIC[5] - ALGEBRAIC[7];
ALGEBRAIC[11] = ( CONSTANTS[66]*(( CONSTANTS[64]*ALGEBRAIC[1]*STATES[9])/( CONSTANTS[60]*CONSTANTS[61]) - ( CONSTANTS[65]*ALGEBRAIC[0]*STATES[10])/( CONSTANTS[63]*CONSTANTS[62])))/( (1.00000+STATES[9]/CONSTANTS[61]+STATES[10]/CONSTANTS[62])*(1.00000+ALGEBRAIC[1]/CONSTANTS[60]+ALGEBRAIC[0]/CONSTANTS[63]));
RATES[10] = ALGEBRAIC[11];
rootfind_0(VOI, CONSTANTS, RATES, STATES, ALGEBRAIC, pret);
ALGEBRAIC[14] = (( CONSTANTS[26]*STATES[2])/( 0.00900000*(1.00000+ALGEBRAIC[0]/0.680000+ALGEBRAIC[1]/1.51000+(CONSTANTS[22] - (ALGEBRAIC[0]+ALGEBRAIC[1]))/3.65000)) - ( CONSTANTS[27]*ALGEBRAIC[13]*ALGEBRAIC[12])/( CONSTANTS[25]*CONSTANTS[23]))/(1.00000+ALGEBRAIC[13]/CONSTANTS[23]+ALGEBRAIC[12]/CONSTANTS[25]+( ALGEBRAIC[13]*ALGEBRAIC[12])/( CONSTANTS[25]*CONSTANTS[23])+STATES[2]/( 0.00900000*(1.00000+ALGEBRAIC[0]/0.680000+ALGEBRAIC[1]/1.51000+(CONSTANTS[22] - (ALGEBRAIC[0]+ALGEBRAIC[1]))/3.65000))+( STATES[2]*ALGEBRAIC[13])/( CONSTANTS[24]*0.00900000*(1.00000+ALGEBRAIC[0]/0.680000+ALGEBRAIC[1]/1.51000+(CONSTANTS[22] - (ALGEBRAIC[0]+ALGEBRAIC[1]))/3.65000)));
RATES[2] = ALGEBRAIC[6] - ALGEBRAIC[14];
ALGEBRAIC[16] =  CONSTANTS[37]*(( CONSTANTS[35]*( ALGEBRAIC[13]*((STATES[8]/CONSTANTS[32])/CONSTANTS[31]) -  (CONSTANTS[36]/CONSTANTS[35])*((( STATES[4]*STATES[7])/CONSTANTS[33])/CONSTANTS[34])))/( (1.00000+ALGEBRAIC[13]/CONSTANTS[32]+STATES[4]/CONSTANTS[33])*(1.00000+STATES[8]/CONSTANTS[31]+STATES[7]/CONSTANTS[34])));
ALGEBRAIC[17] = ( CONSTANTS[44]*CONSTANTS[42]*(( STATES[7]*ALGEBRAIC[12])/( CONSTANTS[38]*CONSTANTS[40]) - ( CONSTANTS[43]*STATES[8]*STATES[9])/( CONSTANTS[39]*CONSTANTS[41]*CONSTANTS[42])))/( (1.00000+STATES[8]/CONSTANTS[41]+STATES[7]/CONSTANTS[38])*(1.00000+ALGEBRAIC[12]/CONSTANTS[40]+STATES[9]/CONSTANTS[39]));
ALGEBRAIC[8] = ( CONSTANTS[46]*STATES[9])/(STATES[9]+CONSTANTS[45]);
RATES[3] = ( 2.00000*ALGEBRAIC[14]+ALGEBRAIC[8]) - (ALGEBRAIC[16]+ALGEBRAIC[17]);
RATES[7] = ALGEBRAIC[16] - ALGEBRAIC[17];
RATES[8] = ALGEBRAIC[17] - ALGEBRAIC[16];
RATES[9] = ALGEBRAIC[17] - (ALGEBRAIC[11]+ALGEBRAIC[8]);
rootfind_1(VOI, CONSTANTS, RATES, STATES, ALGEBRAIC, pret);
ALGEBRAIC[20] = ( CONSTANTS[55]*CONSTANTS[53]*(( - CONSTANTS[54]*ALGEBRAIC[18]*ALGEBRAIC[0])/( CONSTANTS[52]*CONSTANTS[51]*CONSTANTS[53])+( STATES[4]*ALGEBRAIC[1])/( CONSTANTS[50]*CONSTANTS[49])))/( (1.00000+STATES[4]/CONSTANTS[50]+ALGEBRAIC[18]/CONSTANTS[51])*(1.00000+ALGEBRAIC[1]/CONSTANTS[49]+ALGEBRAIC[0]/CONSTANTS[52]));
RATES[4] = ALGEBRAIC[16] - ALGEBRAIC[20];
ALGEBRAIC[21] = (( CONSTANTS[58]*pow(ALGEBRAIC[19]/( 0.340000*(1.00000+ALGEBRAIC[0]/0.570000+ALGEBRAIC[1]/0.640000)), CONSTANTS[57])*ALGEBRAIC[1])/CONSTANTS[56])/( (1.00000+pow(ALGEBRAIC[19]/( 0.340000*(1.00000+ALGEBRAIC[0]/0.570000+ALGEBRAIC[1]/0.640000)), CONSTANTS[57]))*(1.00000+ALGEBRAIC[1]/CONSTANTS[56]));
RATES[5] = ALGEBRAIC[20] - ALGEBRAIC[21];
ALGEBRAIC[9] = (( CONSTANTS[48]*STATES[6])/CONSTANTS[47])/(1.00000+STATES[6]/CONSTANTS[47]);
RATES[6] = ALGEBRAIC[21] - ALGEBRAIC[9];
ALGEBRAIC[10] = ( CONSTANTS[59]*ALGEBRAIC[0])/ALGEBRAIC[1];
RATES[11] = (ALGEBRAIC[20]+ALGEBRAIC[11]+ALGEBRAIC[21]) - (ALGEBRAIC[5]+ALGEBRAIC[6]+ALGEBRAIC[10]);
}
void
computeVariables(double VOI, double* CONSTANTS, double* RATES, double* STATES, double* ALGEBRAIC)
{
ALGEBRAIC[0] = (( STATES[11]*(1.00000 -  4.00000*CONSTANTS[1]) - CONSTANTS[0])+pow(pow(CONSTANTS[0] -  (1.00000 -  4.00000*CONSTANTS[1])*STATES[11], 2.00000)+ 4.00000*(1.00000 -  4.00000*CONSTANTS[1])*( - CONSTANTS[1]*pow(STATES[11], 2.00000)), 0.500000))/( 2.00000*(1.00000 -  4.00000*CONSTANTS[1]));
ALGEBRAIC[1] = STATES[11] -  2.00000*ALGEBRAIC[0];
ALGEBRAIC[5] = ( CONSTANTS[13]*STATES[0]*ALGEBRAIC[0])/( CONSTANTS[11]*CONSTANTS[9]*(1.00000+STATES[12]/CONSTANTS[10]+STATES[0]/CONSTANTS[9])*(1.00000+ALGEBRAIC[0]/CONSTANTS[11]+ALGEBRAIC[1]/CONSTANTS[12]));
ALGEBRAIC[2] = (VOI>=60.0000&&VOI<61.0000 ? 5.00000 : 0.0500000);
ALGEBRAIC[4] =  CONSTANTS[8]*((ALGEBRAIC[2] - STATES[0])/(CONSTANTS[6]+ALGEBRAIC[2]+STATES[0]+ CONSTANTS[7]*ALGEBRAIC[2]*(STATES[0]/CONSTANTS[6])));
ALGEBRAIC[3] = STATES[1] - STATES[12];
ALGEBRAIC[6] = ( CONSTANTS[17]*CONSTANTS[21]*ALGEBRAIC[3]*ALGEBRAIC[0])/( CONSTANTS[20]*CONSTANTS[19]*(STATES[2]+CONSTANTS[17])*(1.00000+STATES[2]/CONSTANTS[18]+ALGEBRAIC[3]/CONSTANTS[19])*(1.00000+ALGEBRAIC[0]/CONSTANTS[20]));
ALGEBRAIC[7] = ( CONSTANTS[16]*(STATES[12]/CONSTANTS[14] - ALGEBRAIC[3]/CONSTANTS[15]))/(1.00000+STATES[12]/CONSTANTS[14]+ALGEBRAIC[3]/CONSTANTS[15]);
ALGEBRAIC[11] = ( CONSTANTS[66]*(( CONSTANTS[64]*ALGEBRAIC[1]*STATES[9])/( CONSTANTS[60]*CONSTANTS[61]) - ( CONSTANTS[65]*ALGEBRAIC[0]*STATES[10])/( CONSTANTS[63]*CONSTANTS[62])))/( (1.00000+STATES[9]/CONSTANTS[61]+STATES[10]/CONSTANTS[62])*(1.00000+ALGEBRAIC[1]/CONSTANTS[60]+ALGEBRAIC[0]/CONSTANTS[63]));
ALGEBRAIC[14] = (( CONSTANTS[26]*STATES[2])/( 0.00900000*(1.00000+ALGEBRAIC[0]/0.680000+ALGEBRAIC[1]/1.51000+(CONSTANTS[22] - (ALGEBRAIC[0]+ALGEBRAIC[1]))/3.65000)) - ( CONSTANTS[27]*ALGEBRAIC[13]*ALGEBRAIC[12])/( CONSTANTS[25]*CONSTANTS[23]))/(1.00000+ALGEBRAIC[13]/CONSTANTS[23]+ALGEBRAIC[12]/CONSTANTS[25]+( ALGEBRAIC[13]*ALGEBRAIC[12])/( CONSTANTS[25]*CONSTANTS[23])+STATES[2]/( 0.00900000*(1.00000+ALGEBRAIC[0]/0.680000+ALGEBRAIC[1]/1.51000+(CONSTANTS[22] - (ALGEBRAIC[0]+ALGEBRAIC[1]))/3.65000))+( STATES[2]*ALGEBRAIC[13])/( CONSTANTS[24]*0.00900000*(1.00000+ALGEBRAIC[0]/0.680000+ALGEBRAIC[1]/1.51000+(CONSTANTS[22] - (ALGEBRAIC[0]+ALGEBRAIC[1]))/3.65000)));
ALGEBRAIC[16] =  CONSTANTS[37]*(( CONSTANTS[35]*( ALGEBRAIC[13]*((STATES[8]/CONSTANTS[32])/CONSTANTS[31]) -  (CONSTANTS[36]/CONSTANTS[35])*((( STATES[4]*STATES[7])/CONSTANTS[33])/CONSTANTS[34])))/( (1.00000+ALGEBRAIC[13]/CONSTANTS[32]+STATES[4]/CONSTANTS[33])*(1.00000+STATES[8]/CONSTANTS[31]+STATES[7]/CONSTANTS[34])));
ALGEBRAIC[17] = ( CONSTANTS[44]*CONSTANTS[42]*(( STATES[7]*ALGEBRAIC[12])/( CONSTANTS[38]*CONSTANTS[40]) - ( CONSTANTS[43]*STATES[8]*STATES[9])/( CONSTANTS[39]*CONSTANTS[41]*CONSTANTS[42])))/( (1.00000+STATES[8]/CONSTANTS[41]+STATES[7]/CONSTANTS[38])*(1.00000+ALGEBRAIC[12]/CONSTANTS[40]+STATES[9]/CONSTANTS[39]));
ALGEBRAIC[8] = ( CONSTANTS[46]*STATES[9])/(STATES[9]+CONSTANTS[45]);
ALGEBRAIC[20] = ( CONSTANTS[55]*CONSTANTS[53]*(( - CONSTANTS[54]*ALGEBRAIC[18]*ALGEBRAIC[0])/( CONSTANTS[52]*CONSTANTS[51]*CONSTANTS[53])+( STATES[4]*ALGEBRAIC[1])/( CONSTANTS[50]*CONSTANTS[49])))/( (1.00000+STATES[4]/CONSTANTS[50]+ALGEBRAIC[18]/CONSTANTS[51])*(1.00000+ALGEBRAIC[1]/CONSTANTS[49]+ALGEBRAIC[0]/CONSTANTS[52]));
ALGEBRAIC[21] = (( CONSTANTS[58]*pow(ALGEBRAIC[19]/( 0.340000*(1.00000+ALGEBRAIC[0]/0.570000+ALGEBRAIC[1]/0.640000)), CONSTANTS[57])*ALGEBRAIC[1])/CONSTANTS[56])/( (1.00000+pow(ALGEBRAIC[19]/( 0.340000*(1.00000+ALGEBRAIC[0]/0.570000+ALGEBRAIC[1]/0.640000)), CONSTANTS[57]))*(1.00000+ALGEBRAIC[1]/CONSTANTS[56]));
ALGEBRAIC[9] = (( CONSTANTS[48]*STATES[6])/CONSTANTS[47])/(1.00000+STATES[6]/CONSTANTS[47]);
ALGEBRAIC[10] = ( CONSTANTS[59]*ALGEBRAIC[0])/ALGEBRAIC[1];
ALGEBRAIC[15] = ( CONSTANTS[30]*(ALGEBRAIC[12]/CONSTANTS[28] - ( 5.70000*ALGEBRAIC[13])/CONSTANTS[29]))/(1.00000+ALGEBRAIC[13]/CONSTANTS[29]+ALGEBRAIC[12]/CONSTANTS[28]);
}

void objfunc_0(double *p, double *hx, int m, int n, void *adata)
{
  struct rootfind_info* rfi = (struct rootfind_info*)adata;
#define VOI rfi->aVOI
#define CONSTANTS rfi->aCONSTANTS
#define RATES rfi->aRATES
#define STATES rfi->aSTATES
#define ALGEBRAIC rfi->aALGEBRAIC
#define pret rfi->aPRET
  ALGEBRAIC[12] = p[0];
  ALGEBRAIC[13] = p[1];
  hx[0] = ALGEBRAIC[12] - ( CONSTANTS[3]*ALGEBRAIC[12])/((CONSTANTS[2]+CONSTANTS[3]) - (STATES[4]+ 2.00000*STATES[2]+ALGEBRAIC[3]+ALGEBRAIC[13]+STATES[12]+STATES[11]));
  hx[1] = ALGEBRAIC[13] - (STATES[3] - ALGEBRAIC[12]);
#undef VOI
#undef CONSTANTS
#undef RATES
#undef STATES
#undef ALGEBRAIC
#undef pret
}
void rootfind_0(double VOI, double* CONSTANTS, double* RATES,
double* STATES, double* ALGEBRAIC, int* pret)
{
  static double p[2] = {0.1,0.1};
  double bp[2], work[LM_DIF_WORKSZ(2, 2)];
  struct rootfind_info rfi;
  rfi.aVOI = VOI;
  rfi.aCONSTANTS = CONSTANTS;
  rfi.aRATES = RATES;
  rfi.aSTATES = STATES;
  rfi.aALGEBRAIC = ALGEBRAIC;
  rfi.aPRET = pret;
  do_levmar(objfunc_0, p, bp, work, pret, 2, &rfi);
  ALGEBRAIC[12] = p[0];
  ALGEBRAIC[13] = p[1];
}

void objfunc_1(double *p, double *hx, int m, int n, void *adata)
{
  struct rootfind_info* rfi = (struct rootfind_info*)adata;
#define VOI rfi->aVOI
#define CONSTANTS rfi->aCONSTANTS
#define RATES rfi->aRATES
#define STATES rfi->aSTATES
#define ALGEBRAIC rfi->aALGEBRAIC
#define pret rfi->aPRET
  ALGEBRAIC[18] = p[0];
  ALGEBRAIC[19] = p[1];
  hx[0] = ALGEBRAIC[18] - (STATES[5] - ALGEBRAIC[19]);
  hx[1] = ALGEBRAIC[19] -  CONSTANTS[4]*CONSTANTS[5]*ALGEBRAIC[18];
#undef VOI
#undef CONSTANTS
#undef RATES
#undef STATES
#undef ALGEBRAIC
#undef pret
}
void rootfind_1(double VOI, double* CONSTANTS, double* RATES,
double* STATES, double* ALGEBRAIC, int* pret)
{
  static double p[2] = {0.1,0.1};
  double bp[2], work[LM_DIF_WORKSZ(2, 2)];
  struct rootfind_info rfi;
  rfi.aVOI = VOI;
  rfi.aCONSTANTS = CONSTANTS;
  rfi.aRATES = RATES;
  rfi.aSTATES = STATES;
  rfi.aALGEBRAIC = ALGEBRAIC;
  rfi.aPRET = pret;
  do_levmar(objfunc_1, p, bp, work, pret, 2, &rfi);
  ALGEBRAIC[18] = p[0];
  ALGEBRAIC[19] = p[1];
}