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 34 entries in the algebraic variable array.
   There are a total of 15 entries in each of the rate and state variable arrays.
   There are a total of 59 entries in the constant variable array.
 */
/*
 * VOI is time in component environment (second).
 * ALGEBRAIC[0] is L_iso in component beta_1_adrenergic_parameters (uM).
 * CONSTANTS[0] is K_H in component beta_1_adrenergic_parameters (uM).
 * CONSTANTS[1] is K_L in component beta_1_adrenergic_parameters (uM).
 * CONSTANTS[2] is K_C in component beta_1_adrenergic_parameters (uM).
 * ALGEBRAIC[1] is L_ach in component muscarinic_parameters (uM).
 * CONSTANTS[3] is K_H in component muscarinic_parameters (uM).
 * CONSTANTS[4] is K_L in component muscarinic_parameters (uM).
 * CONSTANTS[5] is K_C in component muscarinic_parameters (uM).
 * CONSTANTS[6] is k_PDE2 in component PDE_parameters (per_sec).
 * CONSTANTS[7] is Km_PDE2 in component PDE_parameters (uM).
 * CONSTANTS[8] is k_PDE3 in component PDE_parameters (per_sec).
 * CONSTANTS[9] is Km_PDE3 in component PDE_parameters (uM).
 * CONSTANTS[10] is k_PDE4 in component PDE_parameters (per_sec).
 * CONSTANTS[11] is Km_PDE4 in component PDE_parameters (uM).
 * CONSTANTS[12] is k_act1 in component G_s_parameters (per_sec).
 * CONSTANTS[13] is k_act2 in component G_s_parameters (per_sec).
 * CONSTANTS[14] is k_hydr in component G_s_parameters (per_sec).
 * CONSTANTS[15] is k_reas in component G_s_parameters (per_uM_per_sec).
 * CONSTANTS[16] is k_act1 in component G_i_parameters (per_sec).
 * CONSTANTS[17] is k_act2 in component G_i_parameters (per_sec).
 * CONSTANTS[18] is k_hydr in component G_i_parameters (per_sec).
 * CONSTANTS[19] is k_reas in component G_i_parameters (per_uM_per_sec).
 * ALGEBRAIC[12] is R in component caveolar_beta_1_adrenergic_receptor_module (uM).
 * ALGEBRAIC[13] is LR in component caveolar_beta_1_adrenergic_receptor_module (uM).
 * ALGEBRAIC[14] is LRG in component caveolar_beta_1_adrenergic_receptor_module (uM).
 * ALGEBRAIC[15] is RG in component caveolar_beta_1_adrenergic_receptor_module (uM).
 * CONSTANTS[20] is R_Total in component caveolar_beta_1_adrenergic_receptor_module (uM).
 * ALGEBRAIC[5] is Gs_alpha_beta_gamma in component caveolar_G_s_protein_activation_module (uM).
 * ALGEBRAIC[16] is R in component caveolar_muscarinic_receptor_module (uM).
 * ALGEBRAIC[17] is LR in component caveolar_muscarinic_receptor_module (uM).
 * ALGEBRAIC[18] is LRG in component caveolar_muscarinic_receptor_module (uM).
 * ALGEBRAIC[19] is RG in component caveolar_muscarinic_receptor_module (uM).
 * CONSTANTS[21] is R_Total in component caveolar_muscarinic_receptor_module (uM).
 * ALGEBRAIC[6] is Gi_alpha_beta_gamma in component caveolar_G_i_protein_activation_module (uM).
 * STATES[0] is Gs_alpha_GTP in component caveolar_G_s_protein_activation_module (uM).
 * STATES[1] is Gs_beta_gamma in component caveolar_G_s_protein_activation_module (uM).
 * STATES[2] is Gs_alpha_GDP in component caveolar_G_s_protein_activation_module (uM).
 * CONSTANTS[22] is Gs_Total in component caveolar_G_s_protein_activation_module (uM).
 * STATES[3] is Gi_alpha_GTP in component caveolar_G_i_protein_activation_module (uM).
 * STATES[4] is Gi_beta_gamma in component caveolar_G_i_protein_activation_module (uM).
 * STATES[5] is Gi_alpha_GDP in component caveolar_G_i_protein_activation_module (uM).
 * CONSTANTS[23] is Gi_Total in component caveolar_G_i_protein_activation_module (uM).
 * ALGEBRAIC[20] is R in component extracaveolar_beta_1_adrenergic_receptor_module (uM).
 * ALGEBRAIC[21] is LR in component extracaveolar_beta_1_adrenergic_receptor_module (uM).
 * ALGEBRAIC[22] is LRG in component extracaveolar_beta_1_adrenergic_receptor_module (uM).
 * ALGEBRAIC[23] is RG in component extracaveolar_beta_1_adrenergic_receptor_module (uM).
 * CONSTANTS[24] is R_Total in component extracaveolar_beta_1_adrenergic_receptor_module (uM).
 * ALGEBRAIC[7] is Gs_alpha_beta_gamma in component extracaveolar_G_s_protein_activation_module (uM).
 * ALGEBRAIC[24] is R in component extracaveolar_muscarinic_receptor_module (uM).
 * ALGEBRAIC[25] is LR in component extracaveolar_muscarinic_receptor_module (uM).
 * ALGEBRAIC[26] is LRG in component extracaveolar_muscarinic_receptor_module (uM).
 * ALGEBRAIC[27] is RG in component extracaveolar_muscarinic_receptor_module (uM).
 * CONSTANTS[25] is R_Total in component extracaveolar_muscarinic_receptor_module (uM).
 * ALGEBRAIC[8] is Gi_alpha_beta_gamma in component extracaveolar_G_i_protein_activation_module (uM).
 * STATES[6] is Gs_alpha_GTP in component extracaveolar_G_s_protein_activation_module (uM).
 * STATES[7] is Gs_beta_gamma in component extracaveolar_G_s_protein_activation_module (uM).
 * STATES[8] is Gs_alpha_GDP in component extracaveolar_G_s_protein_activation_module (uM).
 * CONSTANTS[26] is Gs_Total in component extracaveolar_G_s_protein_activation_module (uM).
 * STATES[9] is Gi_alpha_GTP in component extracaveolar_G_i_protein_activation_module (uM).
 * STATES[10] is Gi_beta_gamma in component extracaveolar_G_i_protein_activation_module (uM).
 * STATES[11] is Gi_alpha_GDP in component extracaveolar_G_i_protein_activation_module (uM).
 * CONSTANTS[27] is Gi_Total in component extracaveolar_G_i_protein_activation_module (uM).
 * ALGEBRAIC[9] is dcAMP_AC_56_dt in component AC56_module (uM_per_sec).
 * ALGEBRAIC[2] is k_AC56 in component AC56_module (per_sec).
 * CONSTANTS[28] is AC_56 in component AC56_module (uM).
 * CONSTANTS[29] is AF56 in component AC56_module (dimensionless).
 * CONSTANTS[30] is MW_AC56 in component AC56_module (kDa).
 * CONSTANTS[31] is ATP in component AC56_module (uM).
 * CONSTANTS[32] is Km_ATP in component AC56_module (uM).
 * ALGEBRAIC[10] is dcAMP_AC_47_ecav_dt in component AC47_ecav_module (uM_per_sec).
 * ALGEBRAIC[3] is k_AC47_ecav in component AC47_ecav_module (per_sec).
 * CONSTANTS[33] is AC_47_ecav in component AC47_ecav_module (uM).
 * CONSTANTS[34] is AF47 in component AC47_ecav_module (dimensionless).
 * CONSTANTS[35] is MW_AC47 in component AC47_ecav_module (kDa).
 * CONSTANTS[36] is ATP in component AC47_ecav_module (uM).
 * CONSTANTS[37] is Km_ATP in component AC47_ecav_module (uM).
 * CONSTANTS[55] is dcAMP_AC_47_cyt_dt in component AC47_cyt_module (uM_per_sec).
 * CONSTANTS[38] is k_AC47_cyt in component AC47_cyt_module (per_sec).
 * CONSTANTS[39] is AC_47_cyt in component AC47_cyt_module (uM).
 * CONSTANTS[40] is AF47 in component AC47_cyt_module (dimensionless).
 * CONSTANTS[41] is ATP in component AC47_cyt_module (uM).
 * CONSTANTS[42] is Km_ATP in component AC47_cyt_module (uM).
 * ALGEBRAIC[28] is dcAMP_cav_PDE2_dt in component caveolar_PDE_module (uM_per_sec).
 * ALGEBRAIC[31] is dcAMP_cav_PDE3_dt in component caveolar_PDE_module (uM_per_sec).
 * ALGEBRAIC[33] is dcAMP_cav_PDE4_dt in component caveolar_PDE_module (uM_per_sec).
 * STATES[12] is cAMP_cav in component cAMP_flux_module (uM).
 * CONSTANTS[43] is PDE2 in component caveolar_PDE_module (uM).
 * CONSTANTS[44] is PDE3 in component caveolar_PDE_module (uM).
 * CONSTANTS[45] is PDE4 in component caveolar_PDE_module (uM).
 * ALGEBRAIC[29] is dcAMP_ecav_PDE2_dt in component extracaveolar_PDE_module (uM_per_sec).
 * ALGEBRAIC[32] is dcAMP_ecav_PDE4_dt in component extracaveolar_PDE_module (uM_per_sec).
 * STATES[13] is cAMP_ecav in component cAMP_flux_module (uM).
 * CONSTANTS[46] is PDE2 in component extracaveolar_PDE_module (uM).
 * CONSTANTS[47] is PDE4 in component extracaveolar_PDE_module (uM).
 * ALGEBRAIC[4] is dcAMP_cyt_PDE2_dt in component bulk_cytoplasmic_PDE_module (uM_per_sec).
 * ALGEBRAIC[11] is dcAMP_cyt_PDE3_dt in component bulk_cytoplasmic_PDE_module (uM_per_sec).
 * ALGEBRAIC[30] is dcAMP_cyt_PDE4_dt in component bulk_cytoplasmic_PDE_module (uM_per_sec).
 * STATES[14] is cAMP_cyt in component cAMP_flux_module (uM).
 * CONSTANTS[48] is PDE2 in component bulk_cytoplasmic_PDE_module (uM).
 * CONSTANTS[49] is PDE3 in component bulk_cytoplasmic_PDE_module (uM).
 * CONSTANTS[50] is PDE4 in component bulk_cytoplasmic_PDE_module (uM).
 * CONSTANTS[56] is V_cav in component cAMP_flux_module (liter).
 * CONSTANTS[57] is V_ecav in component cAMP_flux_module (liter).
 * CONSTANTS[58] is V_cyt in component cAMP_flux_module (liter).
 * CONSTANTS[51] is V_cell in component cAMP_flux_module (liter).
 * CONSTANTS[52] is J_cav_ecav in component cAMP_flux_module (liters_per_second).
 * CONSTANTS[53] is J_cav_cyt in component cAMP_flux_module (liters_per_second).
 * CONSTANTS[54] is J_ecav_cyt in component cAMP_flux_module (liters_per_second).
 * RATES[0] is d/dt Gs_alpha_GTP in component caveolar_G_s_protein_activation_module (uM).
 * RATES[1] is d/dt Gs_beta_gamma in component caveolar_G_s_protein_activation_module (uM).
 * RATES[2] is d/dt Gs_alpha_GDP in component caveolar_G_s_protein_activation_module (uM).
 * RATES[3] is d/dt Gi_alpha_GTP in component caveolar_G_i_protein_activation_module (uM).
 * RATES[4] is d/dt Gi_beta_gamma in component caveolar_G_i_protein_activation_module (uM).
 * RATES[5] is d/dt Gi_alpha_GDP in component caveolar_G_i_protein_activation_module (uM).
 * RATES[6] is d/dt Gs_alpha_GTP in component extracaveolar_G_s_protein_activation_module (uM).
 * RATES[7] is d/dt Gs_beta_gamma in component extracaveolar_G_s_protein_activation_module (uM).
 * RATES[8] is d/dt Gs_alpha_GDP in component extracaveolar_G_s_protein_activation_module (uM).
 * RATES[9] is d/dt Gi_alpha_GTP in component extracaveolar_G_i_protein_activation_module (uM).
 * RATES[10] is d/dt Gi_beta_gamma in component extracaveolar_G_i_protein_activation_module (uM).
 * RATES[11] is d/dt Gi_alpha_GDP in component extracaveolar_G_i_protein_activation_module (uM).
 * RATES[12] is d/dt cAMP_cav in component cAMP_flux_module (uM).
 * RATES[13] is d/dt cAMP_ecav in component cAMP_flux_module (uM).
 * RATES[14] is d/dt cAMP_cyt in component cAMP_flux_module (uM).
 */
void
initConsts(double* CONSTANTS, double* RATES, double *STATES)
{
CONSTANTS[0] = 0.035;
CONSTANTS[1] = 0.386;
CONSTANTS[2] = 8.809;
CONSTANTS[3] = 0.16;
CONSTANTS[4] = 11;
CONSTANTS[5] = 30;
CONSTANTS[6] = 20;
CONSTANTS[7] = 50;
CONSTANTS[8] = 1.25;
CONSTANTS[9] = 0.08;
CONSTANTS[10] = 2.5;
CONSTANTS[11] = 2.2;
CONSTANTS[12] = 5;
CONSTANTS[13] = 0.1;
CONSTANTS[14] = 0.8;
CONSTANTS[15] = 1.21e3;
CONSTANTS[16] = 2.5;
CONSTANTS[17] = 0.05;
CONSTANTS[18] = 0.8;
CONSTANTS[19] = 1.21e3;
CONSTANTS[20] = 0.633;
CONSTANTS[21] = 0.633;
STATES[0] = 0.041983438;
STATES[1] = 0.042634499;
STATES[2] = 0.000651061;
CONSTANTS[22] = 10;
STATES[3] = 0.012644961;
STATES[4] = 0.013274751;
STATES[5] = 0.00062979;
CONSTANTS[23] = 20;
CONSTANTS[24] = 0.633;
CONSTANTS[25] = 0.633;
STATES[6] = 0.083866891;
STATES[7] = 0.084522918;
STATES[8] = 0.000656025;
CONSTANTS[26] = 10;
STATES[9] = 0.001018705;
STATES[10] = 0.001475253;
STATES[11] = 0.000456548;
CONSTANTS[27] = 1;
CONSTANTS[28] = 3.379;
CONSTANTS[29] = 500;
CONSTANTS[30] = 130;
CONSTANTS[31] = 5000;
CONSTANTS[32] = 315;
CONSTANTS[33] = 0.2;
CONSTANTS[34] = 130;
CONSTANTS[35] = 130;
CONSTANTS[36] = 5000;
CONSTANTS[37] = 315;
CONSTANTS[38] = 1.08e-3;
CONSTANTS[39] = 0.136;
CONSTANTS[40] = 130;
CONSTANTS[41] = 5000;
CONSTANTS[42] = 315;
STATES[12] = 0.11750433;
CONSTANTS[43] = 4.5;
CONSTANTS[44] = 5.6;
CONSTANTS[45] = 2;
STATES[13] = 1.092200547;
CONSTANTS[46] = 0.02;
CONSTANTS[47] = 0.16;
STATES[14] = 0.992583576;
CONSTANTS[48] = 5e-3;
CONSTANTS[49] = 7.5e-3;
CONSTANTS[50] = 5e-3;
CONSTANTS[51] = 38e-12;
CONSTANTS[52] = 7.5e-15;
CONSTANTS[53] = 7.5e-14;
CONSTANTS[54] = 1.5e-17;
CONSTANTS[55] = ( CONSTANTS[38]*CONSTANTS[39]*CONSTANTS[40]*CONSTANTS[41])/(CONSTANTS[42]+CONSTANTS[41]);
CONSTANTS[56] =  0.0100000*CONSTANTS[51];
CONSTANTS[57] =  0.0200000*CONSTANTS[51];
CONSTANTS[58] =  0.500000*CONSTANTS[51];
}
void
computeRates(double VOI, double* CONSTANTS, double* RATES, double* STATES, double* ALGEBRAIC)
{
RATES[2] =  STATES[0]*CONSTANTS[14] -  STATES[2]*STATES[1]*CONSTANTS[15];
RATES[5] =  STATES[3]*CONSTANTS[18] -  STATES[5]*STATES[4]*CONSTANTS[19];
RATES[8] =  STATES[6]*CONSTANTS[14] -  STATES[8]*STATES[7]*CONSTANTS[15];
RATES[11] =  STATES[9]*CONSTANTS[18] -  STATES[11]*STATES[10]*CONSTANTS[19];
ALGEBRAIC[0] = (VOI>120.000&&VOI<=720.000 ? 1.00000 : 1.00000);
ALGEBRAIC[5] = (CONSTANTS[22] - STATES[0]) - STATES[2];
rootfind_0(VOI, CONSTANTS, RATES, STATES, ALGEBRAIC, pret);
RATES[0] = ( ALGEBRAIC[15]*CONSTANTS[13]+ ALGEBRAIC[14]*CONSTANTS[12]) -  STATES[0]*CONSTANTS[14];
RATES[1] = ( ALGEBRAIC[15]*CONSTANTS[13]+ ALGEBRAIC[14]*CONSTANTS[12]) -  STATES[2]*STATES[1]*CONSTANTS[15];
ALGEBRAIC[1] = (VOI>240.000&&VOI<=540.000 ? 0.00000 : 0.00000);
ALGEBRAIC[6] = (CONSTANTS[23] - STATES[3]) - STATES[5];
rootfind_1(VOI, CONSTANTS, RATES, STATES, ALGEBRAIC, pret);
RATES[3] = ( ALGEBRAIC[19]*CONSTANTS[17]+ ALGEBRAIC[18]*CONSTANTS[16]) -  STATES[3]*CONSTANTS[18];
RATES[4] = ( ALGEBRAIC[19]*CONSTANTS[17]+ ALGEBRAIC[18]*CONSTANTS[16]) -  STATES[5]*STATES[4]*CONSTANTS[19];
ALGEBRAIC[7] = (CONSTANTS[26] - STATES[6]) - STATES[8];
rootfind_2(VOI, CONSTANTS, RATES, STATES, ALGEBRAIC, pret);
RATES[6] = ( ALGEBRAIC[23]*CONSTANTS[13]+ ALGEBRAIC[22]*CONSTANTS[12]) -  STATES[6]*CONSTANTS[14];
RATES[7] = ( ALGEBRAIC[23]*CONSTANTS[13]+ ALGEBRAIC[22]*CONSTANTS[12]) -  STATES[8]*STATES[7]*CONSTANTS[15];
ALGEBRAIC[8] = (CONSTANTS[27] - STATES[9]) - STATES[11];
rootfind_3(VOI, CONSTANTS, RATES, STATES, ALGEBRAIC, pret);
RATES[9] = ( ALGEBRAIC[27]*CONSTANTS[17]+ ALGEBRAIC[26]*CONSTANTS[16]) -  STATES[9]*CONSTANTS[18];
RATES[10] = ( ALGEBRAIC[27]*CONSTANTS[17]+ ALGEBRAIC[26]*CONSTANTS[16]) -  STATES[11]*STATES[10]*CONSTANTS[19];
ALGEBRAIC[4] = ( CONSTANTS[6]*CONSTANTS[48]*STATES[14])/(CONSTANTS[7]+STATES[14]);
ALGEBRAIC[11] = ( CONSTANTS[8]*CONSTANTS[49]*STATES[14])/(CONSTANTS[9]+STATES[14]);
ALGEBRAIC[30] = ( CONSTANTS[10]*CONSTANTS[50]*STATES[14])/(CONSTANTS[11]+STATES[14]);
RATES[14] = (CONSTANTS[55] - (ALGEBRAIC[4]+ALGEBRAIC[11]+ALGEBRAIC[30]))+( CONSTANTS[53]*(STATES[12] - STATES[14]))/CONSTANTS[58]+( CONSTANTS[54]*(STATES[13] - STATES[14]))/CONSTANTS[58];
ALGEBRAIC[3] =  (( (0.0630000+( 2.01000*pow( STATES[6]*1000.00, 1.00430))/(31.5440+pow( STATES[6]*1000.00, 1.00430)))*(1.00000+( (1.00000/3.01000)*49.1000*pow( STATES[10]*1000.00, 0.892100))/(25.4400+pow( STATES[10]*1000.00, 0.892100)))*CONSTANTS[35])/60.0000)*0.00100000;
ALGEBRAIC[10] = ( ALGEBRAIC[3]*CONSTANTS[33]*CONSTANTS[34]*CONSTANTS[36])/(CONSTANTS[37]+CONSTANTS[36]);
ALGEBRAIC[29] = ( CONSTANTS[6]*CONSTANTS[46]*STATES[13])/(CONSTANTS[7]+STATES[13]);
ALGEBRAIC[32] = ( CONSTANTS[10]*CONSTANTS[47]*STATES[13])/(CONSTANTS[11]+STATES[13]);
RATES[13] = ((ALGEBRAIC[10] - (ALGEBRAIC[29]+ALGEBRAIC[32]))+( CONSTANTS[52]*(STATES[12] - STATES[13]))/CONSTANTS[57]) - ( CONSTANTS[54]*(STATES[13] - STATES[14]))/CONSTANTS[57];
ALGEBRAIC[2] =  (( (0.700000+( 3.82340*pow(STATES[0]/1.00000, 0.978700))/(0.198600+pow(STATES[0]/1.00000, 0.978700)))*(1.00000+( (1.00000/1.44320)*- 1.00610*pow(STATES[3]/1.00000, 0.835600))/(0.191800+pow(STATES[3]/1.00000, 0.835600)))*CONSTANTS[30])/60.0000)*0.00100000;
ALGEBRAIC[9] = ( ALGEBRAIC[2]*CONSTANTS[28]*CONSTANTS[29]*CONSTANTS[31])/(CONSTANTS[32]+CONSTANTS[31]);
ALGEBRAIC[28] = ( CONSTANTS[6]*CONSTANTS[43]*STATES[12])/(CONSTANTS[7]+STATES[12]);
ALGEBRAIC[31] = ( CONSTANTS[8]*CONSTANTS[44]*STATES[12])/(CONSTANTS[9]+STATES[12]);
ALGEBRAIC[33] = ( CONSTANTS[10]*CONSTANTS[45]*STATES[12])/(CONSTANTS[11]+STATES[12]);
RATES[12] = ((ALGEBRAIC[9] - (ALGEBRAIC[28]+ALGEBRAIC[31]+ALGEBRAIC[33])) - ( CONSTANTS[52]*(STATES[12] - STATES[13]))/CONSTANTS[56]) - ( CONSTANTS[53]*(STATES[12] - STATES[14]))/CONSTANTS[56];
}
void
computeVariables(double VOI, double* CONSTANTS, double* RATES, double* STATES, double* ALGEBRAIC)
{
ALGEBRAIC[0] = (VOI>120.000&&VOI<=720.000 ? 1.00000 : 1.00000);
ALGEBRAIC[5] = (CONSTANTS[22] - STATES[0]) - STATES[2];
ALGEBRAIC[1] = (VOI>240.000&&VOI<=540.000 ? 0.00000 : 0.00000);
ALGEBRAIC[6] = (CONSTANTS[23] - STATES[3]) - STATES[5];
ALGEBRAIC[7] = (CONSTANTS[26] - STATES[6]) - STATES[8];
ALGEBRAIC[8] = (CONSTANTS[27] - STATES[9]) - STATES[11];
ALGEBRAIC[4] = ( CONSTANTS[6]*CONSTANTS[48]*STATES[14])/(CONSTANTS[7]+STATES[14]);
ALGEBRAIC[11] = ( CONSTANTS[8]*CONSTANTS[49]*STATES[14])/(CONSTANTS[9]+STATES[14]);
ALGEBRAIC[30] = ( CONSTANTS[10]*CONSTANTS[50]*STATES[14])/(CONSTANTS[11]+STATES[14]);
ALGEBRAIC[3] =  (( (0.0630000+( 2.01000*pow( STATES[6]*1000.00, 1.00430))/(31.5440+pow( STATES[6]*1000.00, 1.00430)))*(1.00000+( (1.00000/3.01000)*49.1000*pow( STATES[10]*1000.00, 0.892100))/(25.4400+pow( STATES[10]*1000.00, 0.892100)))*CONSTANTS[35])/60.0000)*0.00100000;
ALGEBRAIC[10] = ( ALGEBRAIC[3]*CONSTANTS[33]*CONSTANTS[34]*CONSTANTS[36])/(CONSTANTS[37]+CONSTANTS[36]);
ALGEBRAIC[29] = ( CONSTANTS[6]*CONSTANTS[46]*STATES[13])/(CONSTANTS[7]+STATES[13]);
ALGEBRAIC[32] = ( CONSTANTS[10]*CONSTANTS[47]*STATES[13])/(CONSTANTS[11]+STATES[13]);
ALGEBRAIC[2] =  (( (0.700000+( 3.82340*pow(STATES[0]/1.00000, 0.978700))/(0.198600+pow(STATES[0]/1.00000, 0.978700)))*(1.00000+( (1.00000/1.44320)*- 1.00610*pow(STATES[3]/1.00000, 0.835600))/(0.191800+pow(STATES[3]/1.00000, 0.835600)))*CONSTANTS[30])/60.0000)*0.00100000;
ALGEBRAIC[9] = ( ALGEBRAIC[2]*CONSTANTS[28]*CONSTANTS[29]*CONSTANTS[31])/(CONSTANTS[32]+CONSTANTS[31]);
ALGEBRAIC[28] = ( CONSTANTS[6]*CONSTANTS[43]*STATES[12])/(CONSTANTS[7]+STATES[12]);
ALGEBRAIC[31] = ( CONSTANTS[8]*CONSTANTS[44]*STATES[12])/(CONSTANTS[9]+STATES[12]);
ALGEBRAIC[33] = ( CONSTANTS[10]*CONSTANTS[45]*STATES[12])/(CONSTANTS[11]+STATES[12]);
}

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];
  ALGEBRAIC[14] = p[2];
  ALGEBRAIC[15] = p[3];
  hx[0] = ALGEBRAIC[12] - (((CONSTANTS[20] - ALGEBRAIC[13]) - ALGEBRAIC[14]) - ALGEBRAIC[15]);
  hx[1] = ALGEBRAIC[13] - ( ALGEBRAIC[0]*ALGEBRAIC[12])/CONSTANTS[1];
  hx[2] = ALGEBRAIC[14] - ( ALGEBRAIC[0]*ALGEBRAIC[12]*ALGEBRAIC[5])/( CONSTANTS[0]*CONSTANTS[2]);
  hx[3] = ALGEBRAIC[15] - ( ALGEBRAIC[12]*ALGEBRAIC[5])/CONSTANTS[2];
#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[4] = {0.1,0.1,0.1,0.1};
  double bp[4], work[LM_DIF_WORKSZ(4, 4)];
  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, 4, &rfi);
  ALGEBRAIC[12] = p[0];
  ALGEBRAIC[13] = p[1];
  ALGEBRAIC[14] = p[2];
  ALGEBRAIC[15] = p[3];
}

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[16] = p[0];
  ALGEBRAIC[17] = p[1];
  ALGEBRAIC[18] = p[2];
  ALGEBRAIC[19] = p[3];
  hx[0] = ALGEBRAIC[16] - (((CONSTANTS[21] - ALGEBRAIC[17]) - ALGEBRAIC[18]) - ALGEBRAIC[19]);
  hx[1] = ALGEBRAIC[17] - ( ALGEBRAIC[1]*ALGEBRAIC[16])/CONSTANTS[4];
  hx[2] = ALGEBRAIC[18] - ( ALGEBRAIC[1]*ALGEBRAIC[16]*ALGEBRAIC[6])/( CONSTANTS[3]*CONSTANTS[5]);
  hx[3] = ALGEBRAIC[19] - ( ALGEBRAIC[16]*ALGEBRAIC[6])/CONSTANTS[5];
#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[4] = {0.1,0.1,0.1,0.1};
  double bp[4], work[LM_DIF_WORKSZ(4, 4)];
  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, 4, &rfi);
  ALGEBRAIC[16] = p[0];
  ALGEBRAIC[17] = p[1];
  ALGEBRAIC[18] = p[2];
  ALGEBRAIC[19] = p[3];
}

void objfunc_2(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[20] = p[0];
  ALGEBRAIC[21] = p[1];
  ALGEBRAIC[22] = p[2];
  ALGEBRAIC[23] = p[3];
  hx[0] = ALGEBRAIC[20] - (((CONSTANTS[24] - ALGEBRAIC[21]) - ALGEBRAIC[22]) - ALGEBRAIC[23]);
  hx[1] = ALGEBRAIC[21] - ( ALGEBRAIC[0]*ALGEBRAIC[20])/CONSTANTS[1];
  hx[2] = ALGEBRAIC[22] - ( ALGEBRAIC[0]*ALGEBRAIC[20]*ALGEBRAIC[7])/( CONSTANTS[0]*CONSTANTS[2]);
  hx[3] = ALGEBRAIC[23] - ( ALGEBRAIC[20]*ALGEBRAIC[7])/CONSTANTS[2];
#undef VOI
#undef CONSTANTS
#undef RATES
#undef STATES
#undef ALGEBRAIC
#undef pret
}
void rootfind_2(double VOI, double* CONSTANTS, double* RATES,
double* STATES, double* ALGEBRAIC, int* pret)
{
  static double p[4] = {0.1,0.1,0.1,0.1};
  double bp[4], work[LM_DIF_WORKSZ(4, 4)];
  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_2, p, bp, work, pret, 4, &rfi);
  ALGEBRAIC[20] = p[0];
  ALGEBRAIC[21] = p[1];
  ALGEBRAIC[22] = p[2];
  ALGEBRAIC[23] = p[3];
}

void objfunc_3(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[24] = p[0];
  ALGEBRAIC[25] = p[1];
  ALGEBRAIC[26] = p[2];
  ALGEBRAIC[27] = p[3];
  hx[0] = ALGEBRAIC[24] - (((CONSTANTS[25] - ALGEBRAIC[25]) - ALGEBRAIC[26]) - ALGEBRAIC[27]);
  hx[1] = ALGEBRAIC[25] - ( ALGEBRAIC[1]*ALGEBRAIC[24])/CONSTANTS[4];
  hx[2] = ALGEBRAIC[26] - ( ALGEBRAIC[1]*ALGEBRAIC[24]*ALGEBRAIC[8])/( CONSTANTS[3]*CONSTANTS[5]);
  hx[3] = ALGEBRAIC[27] - ( ALGEBRAIC[24]*ALGEBRAIC[8])/CONSTANTS[5];
#undef VOI
#undef CONSTANTS
#undef RATES
#undef STATES
#undef ALGEBRAIC
#undef pret
}
void rootfind_3(double VOI, double* CONSTANTS, double* RATES,
double* STATES, double* ALGEBRAIC, int* pret)
{
  static double p[4] = {0.1,0.1,0.1,0.1};
  double bp[4], work[LM_DIF_WORKSZ(4, 4)];
  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_3, p, bp, work, pret, 4, &rfi);
  ALGEBRAIC[24] = p[0];
  ALGEBRAIC[25] = p[1];
  ALGEBRAIC[26] = p[2];
  ALGEBRAIC[27] = p[3];
}