Skip to content

Instantly share code, notes, and snippets.

@agarny
Created July 28, 2019 16:15
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save agarny/ade4fcea45832ac60e6c0f2e94895f6b to your computer and use it in GitHub Desktop.
Save agarny/ade4fcea45832ac60e6c0f2e94895f6b to your computer and use it in GitHub Desktop.
#include <math.h>
#include <stdio.h>
void initializeConstants(double *states, double *variables)
{
states[0] = 0.9308;
states[1] = 6.181512e-9;
states[2] = 4.595622e-10;
states[3] = 0.069199;
states[4] = 0.409551;
states[5] = 0.844449;
states[6] = 0.017929;
states[7] = 0.259947;
states[8] = 0.653777;
states[9] = 0.217311;
states[10] = 0.158521;
states[11] = 0.138975;
states[12] = 9.15641e-6;
states[13] = 0.435148;
states[14] = 0.009508;
states[15] = 0.447724;
states[16] = 0.003058;
states[17] = 0.846702;
states[18] = 0.268909;
states[19] = 0.020484;
states[20] = 0.430836;
states[21] = 0.014523;
states[22] = 0.283185;
states[23] = 0.011068;
states[24] = 0.709051;
states[25] = 0.00277;
states[26] = 0.011845;
states[27] = 0.845304;
states[28] = 0.1162;
states[29] = 0.001921;
states[30] = 6.226104e-5;
states[31] = -47.787168;
states[32] = 5.0;
variables[0] = 0.45;
variables[1] = 2.5;
variables[2] = 15.0;
variables[3] = 1.0;
variables[4] = 500.0;
variables[5] = 5.0;
variables[6] = 10000.0;
variables[7] = 660.0;
variables[8] = 148041085.1;
variables[9] = 0.045;
variables[10] = 10.0;
variables[11] = 2.5;
variables[12] = 0.031;
variables[13] = 0.062;
variables[14] = 542.0;
variables[15] = 445.0;
variables[16] = 446.0;
variables[17] = 7.51;
variables[18] = 751.0;
variables[19] = 1.642e6;
variables[20] = 175.4;
variables[21] = 88800.0;
variables[22] = 227700.0;
variables[23] = 2277.0;
variables[24] = 0.000286113;
variables[25] = 5.0;
variables[26] = 5.0e-5;
variables[27] = 5.469e-5;
variables[28] = 0.04;
variables[29] = 67.0;
variables[30] = 0.02;
variables[31] = 3.9;
variables[32] = 0.46;
variables[33] = 0.0012;
variables[34] = 0.0116;
variables[35] = 1.8;
variables[36] = 140.0;
variables[37] = 5.4;
variables[38] = 140.0;
variables[39] = 5.7e-5;
variables[40] = 96485.3415;
variables[41] = 8314.472;
variables[42] = 310.0;
variables[43] = 0.0;
variables[44] = 1.0;
variables[45] = 0.0;
variables[46] = 0.0;
variables[47] = -45.0;
variables[48] = -35.0;
variables[49] = 0.5;
variables[50] = 0.5;
variables[51] = 0.4578;
variables[52] = -16.4508;
variables[53] = 4.3371;
variables[54] = 0.000338;
variables[55] = 0.0075;
variables[56] = 0.0;
variables[57] = 0.0;
variables[58] = 0.04132;
variables[59] = 0.0;
variables[60] = 1.0;
variables[61] = 0.00345;
variables[62] = 0.00424;
variables[63] = 0.00065;
variables[64] = 0.1539e-3;
variables[65] = 0.0223;
variables[66] = 0.0;
variables[67] = 395.3;
variables[68] = 1628.0;
variables[69] = 2.289;
variables[70] = 561.4;
variables[71] = 26.44;
variables[72] = 4.663;
variables[73] = 3.343;
variables[74] = 0.0207;
variables[75] = 26.44;
variables[76] = 3.663;
variables[77] = 0.1369;
variables[78] = 0.0;
variables[79] = 0.4315;
variables[80] = 0.0;
variables[81] = 1.4;
variables[82] = 14.0;
variables[83] = 0.08105;
variables[84] = 1.0e-5;
variables[85] = 45.0;
variables[86] = 0.5927;
variables[87] = 0.0;
variables[88] = 0.00427;
variables[89] = 0.0;
variables[90] = 3.5e-3;
}
void computeComputedConstants(double *variables)
{
variables[92] = (variables[46] > 0.0)?1.2:1.0;
variables[94] = variables[38]/(variables[72]+variables[38]);
variables[101] = (variables[46] > 0.0)?-0.25:(variables[45] > 0.0)?0.7*variables[45]/(0.00009+variables[45]):0.0;
variables[102] = variables[25]*(1.0-variables[101]);
variables[112] = 0.000000001*3.14159265358979*pow(variables[31], 2.0)*variables[29];
variables[113] = 0.000000001*2.0*3.14159265358979*variables[30]*(variables[31]-variables[30]/2.0)*variables[29];
variables[114] = variables[33]*variables[112];
variables[115] = variables[32]*variables[112]-variables[113];
variables[116] = variables[34]*variables[112];
variables[117] = variables[41]*variables[42]/variables[40];
variables[119] = variables[88]/(variables[37]/(variables[37]+variables[85]));
variables[120] = variables[119]/(variables[86]+1.0);
variables[121] = variables[86]*variables[120];
variables[122] = variables[121]*variables[37]/(variables[37]+variables[85]);
variables[123] = variables[120]*variables[37]/(variables[37]+variables[85]);
variables[124] = (variables[45] > 0.0)?-1.0-9.898*pow(1.0*variables[45], 0.618)/(pow(1.0*variables[45], 0.618)+0.00122423):0.0;
variables[125] = (variables[46] > 0.0)?7.5:0.0;
variables[127] = (variables[46] > 0.0)?1.23:1.0;
variables[128] = 0.31*variables[45]/(variables[45]+0.00009);
variables[129] = (variables[46] > 0.0)?-8.0:0.0;
variables[130] = (variables[46] > 0.0)?-27.0:0.0;
variables[133] = (variables[46] > 0.0)?1.2*variables[63]:variables[63];
variables[135] = (variables[46] > 0.0)?-14.0:0.0;
variables[136] = (3.5988-0.025641)/(1.0+0.0000012155/pow(1.0*variables[45], 1.6951))+0.025641;
variables[138] = variables[117]*log(variables[37]/variables[36]);
}
void computeRates(double voi, double *states, double *rates, double *variables)
{
variables[97] = variables[2]-(variables[2]-variables[3])/(1.0+pow(variables[0]/states[4], variables[1]));
variables[99] = variables[4]*variables[97];
variables[98] = variables[6]/variables[97];
rates[0] = variables[5]*states[3]-variables[99]*states[30]*states[0]-(variables[98]*pow(states[30], 2.0)*states[0]-variables[7]*states[1]);
rates[1] = variables[98]*pow(states[30], 2.0)*states[0]-variables[7]*states[1]-(variables[99]*states[30]*states[1]-variables[5]*states[2]);
rates[2] = variables[99]*states[30]*states[1]-variables[5]*states[2]-(variables[7]*states[2]-variables[98]*pow(states[30], 2.0)*states[3]);
rates[3] = variables[7]*states[2]-variables[98]*pow(states[30], 2.0)*states[3]-(variables[5]*states[3]-variables[99]*states[30]*states[0]);
variables[105] = (states[13]-states[4])/variables[28];
variables[95] = variables[8]*states[1]*(states[4]-states[30]);
variables[111] = variables[20]*states[4]*(1.0-states[11])-variables[15]*states[11];
rates[4] = variables[105]-(variables[95]+variables[10]*variables[111]);
variables[131] = variables[54]/(variables[54]+states[30]);
variables[132] = 0.001*variables[131]/variables[55];
rates[5] = (variables[131]-states[5])/variables[132];
variables[106] = variables[21]*states[12]*(1.0-states[6])-variables[16]*states[6];
rates[6] = variables[106];
variables[107] = variables[22]*states[12]*(1.0-(states[7]+states[8]))-variables[17]*states[7];
rates[7] = variables[107];
variables[108] = variables[23]*variables[11]*(1.0-(states[7]+states[8]))-variables[18]*states[8];
rates[8] = variables[108];
variables[109] = variables[19]*states[12]*(1.0-states[9])-variables[14]*states[9];
rates[9] = variables[109];
variables[110] = variables[19]*states[30]*(1.0-states[10])-variables[14]*states[10];
rates[10] = variables[110];
rates[11] = variables[111];
variables[103] = (states[30]-states[12])/variables[27];
variables[104] = variables[102]/(1.0+exp((-states[12]+variables[24])/variables[26]));
rates[12] = 1.0*(variables[103]*variables[113]-variables[104]*variables[116])/variables[115]-(variables[9]*variables[109]+variables[12]*variables[106]+variables[13]*variables[107]);
rates[13] = variables[104]-variables[105]*variables[114]/variables[116];
variables[118] = ((voi > variables[49]) && (voi < variables[49]+variables[50]))?variables[48]:variables[47];
variables[140] = (variables[43] >= 1.0)?variables[118]:states[31];
variables[145] = (variables[140] < -(80.0-variables[124]-variables[125]-variables[89]))?0.01329+0.99921/(1.0+exp((variables[140]+97.134-variables[124]-variables[125]-variables[89])/8.1752)):0.0002501*exp(-(variables[140]-variables[124]-variables[125]-variables[89])/12.861);
variables[144] = 1.0/(0.36*(variables[140]+148.8-variables[124]-variables[125])/(exp(0.066*(variables[140]+148.8-variables[124]-variables[125]))-1.0)+0.1*(variables[140]+87.3-variables[124]-variables[125])/(1.0-exp(-0.2*(variables[140]+87.3-variables[124]-variables[125]))))-0.054;
rates[14] = (variables[145]-states[14])/variables[144];
variables[149] = 1.0/(1.0+exp(-(variables[140]+42.0504)/8.3106));
variables[150] = variables[140]+41.0;
variables[151] = (fabs(variables[150]) < variables[84])?2000.0:200.0*variables[150]/(1.0-exp(-0.1*variables[150]));
variables[152] = 8000.0*exp(-0.056*(variables[140]+66.0));
variables[153] = 1.0/(variables[151]+variables[152]);
rates[15] = (variables[149]-states[15])/variables[153];
variables[154] = 1.0/(1.0+exp((variables[140]+69.804)/4.4565));
variables[155] = 20.0*exp(-0.125*(variables[140]+75.0));
variables[156] = 2000.0/(320.0*exp(-0.1*(variables[140]+75.0))+1.0);
variables[157] = 1.0/(variables[155]+variables[156]);
rates[16] = (variables[154]-states[16])/variables[157];
variables[170] = 1.0/(1.0+exp((variables[140]+37.4+variables[57])/(5.3+variables[56])));
variables[171] = 0.001*(44.3+230.0*exp(-pow((variables[140]+36.0)/10.0, 2.0)));
rates[17] = (variables[170]-states[17])/variables[171];
variables[173] = 1.0/(1.0+exp(-(variables[140]+38.3)/5.5));
variables[174] = 0.001/(1.068*exp((variables[140]+38.3)/30.0)+1.068*exp(-(variables[140]+38.3)/30.0));
rates[18] = (variables[173]-states[18])/variables[174];
variables[175] = 1.0/(1.0+exp((variables[140]+58.7)/3.8));
variables[176] = 1.0/(16.67*exp(-(variables[140]+75.0)/83.3)+16.67*exp((variables[140]+75.0)/15.38))+variables[59];
rates[19] = (variables[175]-states[19])/variables[176];
variables[178] = 1.0/(1.0+exp((variables[140]+49.0)/13.0));
variables[179] = 0.001*0.6*(65.17/(0.57*exp(-0.08*(variables[140]+44.0))+0.065*exp(0.1*(variables[140]+45.93)))+10.1);
rates[20] = (variables[178]-states[20])/variables[179];
variables[180] = 1.0/(1.0+exp(-(variables[140]-19.3)/15.0));
variables[181] = 0.001*0.66*1.4*(15.59/(1.037*exp(0.09*(variables[140]+30.61))+0.369*exp(-0.12*(variables[140]+23.84)))+2.98);
rates[21] = (variables[180]-states[21])/variables[181];
variables[185] = 1.0/(1.0+exp(-(variables[140]+10.0144)/7.6607));
variables[186] = 0.84655354/(4.2*exp(variables[140]/17.0)+0.15*exp(-variables[140]/21.6));
rates[22] = (variables[185]-states[22])/variables[186];
variables[187] = 1.0/(30.0*exp(variables[140]/10.0)+exp(-variables[140]/12.0));
rates[23] = (variables[185]-states[23])/variables[187];
variables[189] = 1.0/(1.0+exp((variables[140]+28.6)/17.1));
variables[188] = 1.0/(100.0*exp(-variables[140]/54.645)+656.0*exp(variables[140]/106.157));
rates[24] = (variables[189]-states[24])/variables[188];
variables[195] = 10.0*exp(0.0133*(variables[140]+40.0));
variables[196] = variables[136]/(variables[136]+variables[195]);
variables[197] = 1.0/(variables[136]+variables[195]);
rates[25] = (variables[196]-states[25])/variables[197];
variables[159] = 1.0/(1.0+exp((variables[140]+6.0)/-8.6));
variables[160] = 0.009/(1.0+exp((variables[140]+5.0)/12.0))+0.0005;
rates[26] = (variables[159]-states[26])/variables[160];
variables[161] = 1.0/(1.0+exp((variables[140]+7.5)/10.0));
variables[162] = 0.59/(1.0+exp((variables[140]+60.0)/10.0))+3.05;
rates[27] = (variables[161]-states[27])/variables[162];
variables[191] = sqrt(1.0/(1.0+exp(-(variables[140]+0.6383-variables[135])/10.7071)));
variables[192] = 28.0/(1.0+exp(-(variables[140]-40.0-variables[135])/3.0));
variables[193] = 1.0*exp(-(variables[140]-variables[135]-5.0)/25.0);
variables[205] = 1.0/(variables[192]+variables[193]);
rates[28] = (variables[191]-states[28])/variables[205];
variables[167] = 1.0/(1.0+exp(-(variables[140]-variables[52]-variables[129])/(variables[53]*(1.0+variables[130]/100.0))));
variables[168] = (variables[140] == -41.8)?-41.80001:(variables[140] == 0.0)?0.0:(variables[140] == -6.8)?-6.80001:variables[140];
variables[203] = -0.02839*(variables[168]+41.8)/(exp(-(variables[168]+41.8)/2.5)-1.0)-0.0849*(variables[168]+6.8)/(exp(-(variables[168]+6.8)/4.8)-1.0);
variables[169] = (variables[140] == -1.8)?-1.80001:variables[140];
variables[204] = 0.01143*(variables[169]+1.8)/(exp((variables[169]+1.8)/2.5)-1.0);
variables[210] = 0.001/(variables[203]+variables[204]);
rates[29] = (variables[167]-states[29])/variables[210];
variables[163] = 2.0*variables[51]*(variables[140]-0.0)/(variables[117]*(1.0-exp(-1.0*(variables[140]-0.0)*2.0/variables[117])))*(states[30]-variables[35]*exp(-2.0*(variables[140]-0.0)/variables[117]))*states[29]*states[17]*states[5];
variables[172] = 2.0*variables[58]*variables[140]/(variables[117]*(1.0-exp(-1.0*variables[140]*2.0/variables[117])))*(states[30]-variables[35]*exp(-2.0*variables[140]/variables[117]))*states[18]*states[19];
variables[202] = 1.0+variables[35]/variables[76]*(1.0+exp(variables[78]*variables[140]/variables[117]))+variables[38]/variables[68]*(1.0+variables[38]/variables[70]*(1.0+variables[38]/variables[72]));
variables[208] = variables[35]/variables[76]*exp(variables[78]*variables[140]/variables[117])/variables[202];
variables[91] = states[32];
variables[200] = 1.0+states[30]/variables[74]*(1.0+exp(-variables[77]*variables[140]/variables[117])+variables[91]/variables[75])+variables[91]/variables[67]*(1.0+variables[91]/variables[69]*(1.0+variables[91]/variables[71]));
variables[206] = states[30]/variables[74]*exp(-variables[77]*variables[140]/variables[117])/variables[200];
variables[93] = variables[91]/(variables[71]+variables[91]);
variables[201] = exp(variables[79]*variables[140]/(2.0*variables[117]));
variables[199] = exp(-variables[79]*variables[140]/(2.0*variables[117]));
variables[207] = variables[91]/variables[67]*variables[91]/variables[69]*(1.0+variables[91]/variables[71])*exp(variables[79]*variables[140]/(2.0*variables[117]))/variables[200];
variables[212] = variables[201]*variables[93]*(variables[207]+variables[206])+variables[199]*variables[206]*(variables[94]+variables[201]);
variables[209] = variables[38]/variables[68]*variables[38]/variables[70]*(1.0+variables[38]/variables[72])*exp(-variables[79]*variables[140]/(2.0*variables[117]))/variables[202];
variables[211] = variables[199]*variables[94]*(variables[209]+variables[208])+variables[208]*variables[201]*(variables[93]+variables[199]);
variables[214] = variables[209]*variables[94]*(variables[207]+variables[206])+variables[207]*variables[208]*(variables[94]+variables[201]);
variables[213] = variables[207]*variables[93]*(variables[209]+variables[208])+variables[206]*variables[209]*(variables[93]+variables[199]);
variables[215] = (1.0-variables[80])*variables[73]*(variables[212]*variables[208]-variables[211]*variables[206])/(variables[211]+variables[212]+variables[213]+variables[214]);
rates[30] = variables[95]*variables[114]/variables[113]-((variables[163]+variables[172]-2.0*variables[215])/(2.0*variables[40]*variables[113])+variables[103]+variables[9]*variables[110]);
variables[137] = variables[117]*log(variables[38]/variables[91]);
variables[141] = states[14]*variables[122]*(variables[140]-variables[137])*(1.0-variables[87]);
variables[142] = states[14]*variables[123]*(variables[140]-variables[138])*(1.0-variables[87]);
variables[143] = variables[141]+variables[142];
variables[158] = variables[64]*states[26]*states[27]*(variables[140]-variables[138]);
variables[194] = (variables[45] > 0.0)?variables[60]*variables[61]*(variables[140]-variables[138])*(1.0+exp((variables[140]+20.0)/20.0))*states[25]:0.0;
variables[165] = 0.0000185*variables[51]*(variables[140]-0.0)/(variables[117]*(1.0-exp(-1.0*(variables[140]-0.0)/variables[117])))*(variables[91]-variables[38]*exp(-1.0*(variables[140]-0.0)/variables[117]))*states[29]*states[17]*states[5];
variables[164] = 0.000365*variables[51]*(variables[140]-0.0)/(variables[117]*(1.0-exp(-1.0*(variables[140]-0.0)/variables[117])))*(variables[36]-variables[37]*exp(-1.0*(variables[140]-0.0)/variables[117]))*states[29]*states[17]*states[5];
variables[166] = (variables[163]+variables[164]+variables[165])*(1.0-variables[128])*1.0*variables[127];
variables[126] = variables[117]*log((variables[38]+0.12*variables[37])/(variables[91]+0.12*variables[36]));
variables[146] = variables[65]*pow(states[15], 3.0)*states[16]*(variables[140]-variables[126]);
variables[147] = variables[66]*pow(states[15], 3.0)*(variables[140]-variables[126]);
variables[148] = variables[146]+variables[147];
variables[198] = variables[92]*variables[83]*pow(1.0+pow(variables[81]/variables[37], 1.2), -1.0)*pow(1.0+pow(variables[82]/variables[91], 1.3), -1.0)*pow(1.0+exp(-(variables[140]-variables[137]+110.0)/20.0), -1.0);
variables[177] = variables[90]*(variables[140]-variables[138])*states[20]*states[21];
variables[134] = variables[117]*log((variables[37]+0.12*variables[38])/(variables[36]+0.12*variables[91]));
variables[190] = variables[133]*(variables[140]-variables[134])*pow(states[28], 2.0);
variables[182] = variables[62]*(variables[140]-variables[138])*(0.9*states[23]+0.1*states[22])*states[24];
variables[216] = variables[143]+variables[182]+variables[190]+variables[177]+variables[198]+variables[215]+variables[148]+variables[166]+variables[172]+variables[194]+variables[158];
rates[31] = -variables[216]/variables[39];
rates[32] = (1.0-variables[44])*-1.0*(variables[148]+variables[141]+variables[165]+3.0*variables[198]+3.0*variables[215])/(1.0*(variables[115]+variables[113])*variables[40]);
}
void computeVariables(double voi, double *states, double *rates, double *variables)
{
variables[91] = states[32];
variables[93] = variables[91]/(variables[71]+variables[91]);
variables[95] = variables[8]*states[1]*(states[4]-states[30]);
variables[96] = states[4]-states[30];
variables[97] = variables[2]-(variables[2]-variables[3])/(1.0+pow(variables[0]/states[4], variables[1]));
variables[98] = variables[6]/variables[97];
variables[99] = variables[4]*variables[97];
variables[100] = states[0]+states[1]+states[2]+states[3];
variables[103] = (states[30]-states[12])/variables[27];
variables[104] = variables[102]/(1.0+exp((-states[12]+variables[24])/variables[26]));
variables[105] = (states[13]-states[4])/variables[28];
variables[106] = variables[21]*states[12]*(1.0-states[6])-variables[16]*states[6];
variables[107] = variables[22]*states[12]*(1.0-(states[7]+states[8]))-variables[17]*states[7];
variables[108] = variables[23]*variables[11]*(1.0-(states[7]+states[8]))-variables[18]*states[8];
variables[109] = variables[19]*states[12]*(1.0-states[9])-variables[14]*states[9];
variables[110] = variables[19]*states[30]*(1.0-states[10])-variables[14]*states[10];
variables[111] = variables[20]*states[4]*(1.0-states[11])-variables[15]*states[11];
variables[126] = variables[117]*log((variables[38]+0.12*variables[37])/(variables[91]+0.12*variables[36]));
variables[131] = variables[54]/(variables[54]+states[30]);
variables[132] = 0.001*variables[131]/variables[55];
variables[134] = variables[117]*log((variables[37]+0.12*variables[38])/(variables[36]+0.12*variables[91]));
variables[137] = variables[117]*log(variables[38]/variables[91]);
variables[139] = 0.5*variables[117]*log(variables[35]/states[30]);
variables[140] = (variables[43] >= 1.0)?variables[118]:states[31];
variables[141] = states[14]*variables[122]*(variables[140]-variables[137])*(1.0-variables[87]);
variables[142] = states[14]*variables[123]*(variables[140]-variables[138])*(1.0-variables[87]);
variables[143] = variables[141]+variables[142];
variables[144] = 1.0/(0.36*(variables[140]+148.8-variables[124]-variables[125])/(exp(0.066*(variables[140]+148.8-variables[124]-variables[125]))-1.0)+0.1*(variables[140]+87.3-variables[124]-variables[125])/(1.0-exp(-0.2*(variables[140]+87.3-variables[124]-variables[125]))))-0.054;
variables[145] = (variables[140] < -(80.0-variables[124]-variables[125]-variables[89]))?0.01329+0.99921/(1.0+exp((variables[140]+97.134-variables[124]-variables[125]-variables[89])/8.1752)):0.0002501*exp(-(variables[140]-variables[124]-variables[125]-variables[89])/12.861);
variables[146] = variables[65]*pow(states[15], 3.0)*states[16]*(variables[140]-variables[126]);
variables[147] = variables[66]*pow(states[15], 3.0)*(variables[140]-variables[126]);
variables[148] = variables[146]+variables[147];
variables[149] = 1.0/(1.0+exp(-(variables[140]+42.0504)/8.3106));
variables[150] = variables[140]+41.0;
variables[151] = (fabs(variables[150]) < variables[84])?2000.0:200.0*variables[150]/(1.0-exp(-0.1*variables[150]));
variables[152] = 8000.0*exp(-0.056*(variables[140]+66.0));
variables[153] = 1.0/(variables[151]+variables[152]);
variables[154] = 1.0/(1.0+exp((variables[140]+69.804)/4.4565));
variables[155] = 20.0*exp(-0.125*(variables[140]+75.0));
variables[156] = 2000.0/(320.0*exp(-0.1*(variables[140]+75.0))+1.0);
variables[157] = 1.0/(variables[155]+variables[156]);
variables[158] = variables[64]*states[26]*states[27]*(variables[140]-variables[138]);
variables[159] = 1.0/(1.0+exp((variables[140]+6.0)/-8.6));
variables[160] = 0.009/(1.0+exp((variables[140]+5.0)/12.0))+0.0005;
variables[161] = 1.0/(1.0+exp((variables[140]+7.5)/10.0));
variables[162] = 0.59/(1.0+exp((variables[140]+60.0)/10.0))+3.05;
variables[163] = 2.0*variables[51]*(variables[140]-0.0)/(variables[117]*(1.0-exp(-1.0*(variables[140]-0.0)*2.0/variables[117])))*(states[30]-variables[35]*exp(-2.0*(variables[140]-0.0)/variables[117]))*states[29]*states[17]*states[5];
variables[164] = 0.000365*variables[51]*(variables[140]-0.0)/(variables[117]*(1.0-exp(-1.0*(variables[140]-0.0)/variables[117])))*(variables[36]-variables[37]*exp(-1.0*(variables[140]-0.0)/variables[117]))*states[29]*states[17]*states[5];
variables[165] = 0.0000185*variables[51]*(variables[140]-0.0)/(variables[117]*(1.0-exp(-1.0*(variables[140]-0.0)/variables[117])))*(variables[91]-variables[38]*exp(-1.0*(variables[140]-0.0)/variables[117]))*states[29]*states[17]*states[5];
variables[166] = (variables[163]+variables[164]+variables[165])*(1.0-variables[128])*1.0*variables[127];
variables[167] = 1.0/(1.0+exp(-(variables[140]-variables[52]-variables[129])/(variables[53]*(1.0+variables[130]/100.0))));
variables[168] = (variables[140] == -41.8)?-41.80001:(variables[140] == 0.0)?0.0:(variables[140] == -6.8)?-6.80001:variables[140];
variables[169] = (variables[140] == -1.8)?-1.80001:variables[140];
variables[170] = 1.0/(1.0+exp((variables[140]+37.4+variables[57])/(5.3+variables[56])));
variables[171] = 0.001*(44.3+230.0*exp(-pow((variables[140]+36.0)/10.0, 2.0)));
variables[172] = 2.0*variables[58]*variables[140]/(variables[117]*(1.0-exp(-1.0*variables[140]*2.0/variables[117])))*(states[30]-variables[35]*exp(-2.0*variables[140]/variables[117]))*states[18]*states[19];
variables[173] = 1.0/(1.0+exp(-(variables[140]+38.3)/5.5));
variables[174] = 0.001/(1.068*exp((variables[140]+38.3)/30.0)+1.068*exp(-(variables[140]+38.3)/30.0));
variables[175] = 1.0/(1.0+exp((variables[140]+58.7)/3.8));
variables[176] = 1.0/(16.67*exp(-(variables[140]+75.0)/83.3)+16.67*exp((variables[140]+75.0)/15.38))+variables[59];
variables[177] = variables[90]*(variables[140]-variables[138])*states[20]*states[21];
variables[178] = 1.0/(1.0+exp((variables[140]+49.0)/13.0));
variables[179] = 0.001*0.6*(65.17/(0.57*exp(-0.08*(variables[140]+44.0))+0.065*exp(0.1*(variables[140]+45.93)))+10.1);
variables[180] = 1.0/(1.0+exp(-(variables[140]-19.3)/15.0));
variables[181] = 0.001*0.66*1.4*(15.59/(1.037*exp(0.09*(variables[140]+30.61))+0.369*exp(-0.12*(variables[140]+23.84)))+2.98);
variables[182] = variables[62]*(variables[140]-variables[138])*(0.9*states[23]+0.1*states[22])*states[24];
variables[183] = 1.0/(1.0+exp(-(variables[140]+23.2)/6.6))/(0.84655354/(37.2*exp(variables[140]/11.9)+0.96*exp(-variables[140]/18.5)));
variables[184] = 4.0*((37.2*exp(variables[140]/15.9)+0.96*exp(-variables[140]/22.5))/0.84655354-1.0/(1.0+exp(-(variables[140]+23.2)/10.6))/(0.84655354/(37.2*exp(variables[140]/15.9)+0.96*exp(-variables[140]/22.5))));
variables[185] = 1.0/(1.0+exp(-(variables[140]+10.0144)/7.6607));
variables[186] = 0.84655354/(4.2*exp(variables[140]/17.0)+0.15*exp(-variables[140]/21.6));
variables[187] = 1.0/(30.0*exp(variables[140]/10.0)+exp(-variables[140]/12.0));
variables[188] = 1.0/(100.0*exp(-variables[140]/54.645)+656.0*exp(variables[140]/106.157));
variables[189] = 1.0/(1.0+exp((variables[140]+28.6)/17.1));
variables[190] = variables[133]*(variables[140]-variables[134])*pow(states[28], 2.0);
variables[191] = sqrt(1.0/(1.0+exp(-(variables[140]+0.6383-variables[135])/10.7071)));
variables[192] = 28.0/(1.0+exp(-(variables[140]-40.0-variables[135])/3.0));
variables[193] = 1.0*exp(-(variables[140]-variables[135]-5.0)/25.0);
variables[194] = (variables[45] > 0.0)?variables[60]*variables[61]*(variables[140]-variables[138])*(1.0+exp((variables[140]+20.0)/20.0))*states[25]:0.0;
variables[195] = 10.0*exp(0.0133*(variables[140]+40.0));
variables[196] = variables[136]/(variables[136]+variables[195]);
variables[197] = 1.0/(variables[136]+variables[195]);
variables[198] = variables[92]*variables[83]*pow(1.0+pow(variables[81]/variables[37], 1.2), -1.0)*pow(1.0+pow(variables[82]/variables[91], 1.3), -1.0)*pow(1.0+exp(-(variables[140]-variables[137]+110.0)/20.0), -1.0);
variables[199] = exp(-variables[79]*variables[140]/(2.0*variables[117]));
variables[200] = 1.0+states[30]/variables[74]*(1.0+exp(-variables[77]*variables[140]/variables[117])+variables[91]/variables[75])+variables[91]/variables[67]*(1.0+variables[91]/variables[69]*(1.0+variables[91]/variables[71]));
variables[201] = exp(variables[79]*variables[140]/(2.0*variables[117]));
variables[202] = 1.0+variables[35]/variables[76]*(1.0+exp(variables[78]*variables[140]/variables[117]))+variables[38]/variables[68]*(1.0+variables[38]/variables[70]*(1.0+variables[38]/variables[72]));
variables[203] = -0.02839*(variables[168]+41.8)/(exp(-(variables[168]+41.8)/2.5)-1.0)-0.0849*(variables[168]+6.8)/(exp(-(variables[168]+6.8)/4.8)-1.0);
variables[204] = 0.01143*(variables[169]+1.8)/(exp((variables[169]+1.8)/2.5)-1.0);
variables[205] = 1.0/(variables[192]+variables[193]);
variables[206] = states[30]/variables[74]*exp(-variables[77]*variables[140]/variables[117])/variables[200];
variables[207] = variables[91]/variables[67]*variables[91]/variables[69]*(1.0+variables[91]/variables[71])*exp(variables[79]*variables[140]/(2.0*variables[117]))/variables[200];
variables[208] = variables[35]/variables[76]*exp(variables[78]*variables[140]/variables[117])/variables[202];
variables[209] = variables[38]/variables[68]*variables[38]/variables[70]*(1.0+variables[38]/variables[72])*exp(-variables[79]*variables[140]/(2.0*variables[117]))/variables[202];
variables[210] = 0.001/(variables[203]+variables[204]);
variables[211] = variables[199]*variables[94]*(variables[209]+variables[208])+variables[208]*variables[201]*(variables[93]+variables[199]);
variables[212] = variables[201]*variables[93]*(variables[207]+variables[206])+variables[199]*variables[206]*(variables[94]+variables[201]);
variables[213] = variables[207]*variables[93]*(variables[209]+variables[208])+variables[206]*variables[209]*(variables[93]+variables[199]);
variables[214] = variables[209]*variables[94]*(variables[207]+variables[206])+variables[207]*variables[208]*(variables[94]+variables[201]);
variables[215] = (1.0-variables[80])*variables[73]*(variables[212]*variables[208]-variables[211]*variables[206])/(variables[211]+variables[212]+variables[213]+variables[214]);
variables[216] = variables[143]+variables[182]+variables[190]+variables[177]+variables[198]+variables[215]+variables[148]+variables[166]+variables[172]+variables[194]+variables[158];
}
#define NB_OF_STATES 33
#define NB_OF_VARIABLES 217
#define DELTA_T 0.00001
void outputData(double voi, double *states, double *variables)
{
printf("%f", voi);
for (int i = 0; i < NB_OF_STATES; ++i) {
printf (",%f", states[i]);
}
for (int i = 0; i < NB_OF_VARIABLES; ++i) {
printf (",%f", variables[i]);
}
printf("\n");
}
int main()
{
double states[NB_OF_STATES];
double rates[NB_OF_STATES];
double variables[NB_OF_VARIABLES];
initializeConstants(states, variables);
computeComputedConstants(variables);
computeRates(0.0, states, rates, variables);
computeVariables(0.0, states, rates, variables);
outputData(0.0, states, variables);
for (int i = 0; i < 300000; ++i) {
double voi = i*DELTA_T;
computeRates(voi, states, rates, variables);
for (int j = 0; j < NB_OF_STATES; ++j) {
states[j] += DELTA_T*rates[j];
}
if ((i+1) % 100 == 0) {
computeVariables(voi, states, rates, variables);
outputData((i+1)*DELTA_T, states, variables);
}
}
return 0;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment