# Generated Code

The following is matlab code generated by the CellML API from this CellML file. (Back to language selection)

The raw code is available.

```function [VOI, STATES, ALGEBRAIC, CONSTANTS] = mainFunction()
% This is the "main function".  In Matlab, things work best if you rename this function to match the filename.
[VOI, STATES, ALGEBRAIC, CONSTANTS] = solveModel();
end

function [algebraicVariableCount] = getAlgebraicVariableCount()
% Used later when setting a global variable with the number of algebraic variables.
% Note: This is not the "main method".
algebraicVariableCount =85;
end
% There are a total of 25 entries in each of the rate and state variable arrays.
% There are a total of 81 entries in the constant variable array.
%

function [VOI, STATES, ALGEBRAIC, CONSTANTS] = solveModel()
% Create ALGEBRAIC of correct size
global algebraicVariableCount;  algebraicVariableCount = getAlgebraicVariableCount();
% Initialise constants and state variables
[INIT_STATES, CONSTANTS] = initConsts;

% Set timespan to solve over
tspan = [0, 10];

% Set numerical accuracy options for ODE solver
options = odeset('RelTol', 1e-06, 'AbsTol', 1e-06, 'MaxStep', 1);

% Solve model with ODE solver
[VOI, STATES] = ode15s(@(VOI, STATES)computeRates(VOI, STATES, CONSTANTS), tspan, INIT_STATES, options);

% Compute algebraic variables
[RATES, ALGEBRAIC] = computeRates(VOI, STATES, CONSTANTS);
ALGEBRAIC = computeAlgebraic(ALGEBRAIC, CONSTANTS, STATES, VOI);

% Plot state variables against variable of integration
[LEGEND_STATES, LEGEND_ALGEBRAIC, LEGEND_VOI, LEGEND_CONSTANTS] = createLegends();
figure();
plot(VOI, STATES);
xlabel(LEGEND_VOI);
l = legend(LEGEND_STATES);
set(l,'Interpreter','none');
end

function [LEGEND_STATES, LEGEND_ALGEBRAIC, LEGEND_VOI, LEGEND_CONSTANTS] = createLegends()
LEGEND_STATES = ''; LEGEND_ALGEBRAIC = ''; LEGEND_VOI = ''; LEGEND_CONSTANTS = '';
LEGEND_VOI = strpad('time in component environment (ms)');
LEGEND_STATES(:,1) = strpad('V in component cell (millivolt)');
LEGEND_CONSTANTS(:,1) = strpad('R in component cell (joule_per_kilomole_kelvin)');
LEGEND_CONSTANTS(:,2) = strpad('T in component cell (kelvin)');
LEGEND_CONSTANTS(:,3) = strpad('F in component cell (coulomb_per_mole)');
LEGEND_ALGEBRAIC(:,4) = strpad('I_st in component cell (microA_per_microF)');
LEGEND_ALGEBRAIC(:,29) = strpad('i_Na in component fast_sodium_current (microA_per_microF)');
LEGEND_ALGEBRAIC(:,46) = strpad('i_Ca_L in component L_type_Ca_channel (microA_per_microF)');
LEGEND_ALGEBRAIC(:,68) = strpad('i_Ca_T in component T_type_Ca_channel (microA_per_microF)');
LEGEND_ALGEBRAIC(:,52) = strpad('i_Kr in component rapid_delayed_rectifier_potassium_current (microA_per_microF)');
LEGEND_ALGEBRAIC(:,50) = strpad('i_Ks in component slow_delayed_rectifier_potassium_current (microA_per_microF)');
LEGEND_ALGEBRAIC(:,61) = strpad('i_K_Na in component sodium_activated_potassium_current (microA_per_microF)');
LEGEND_ALGEBRAIC(:,62) = strpad('i_K_ATP in component ATP_sensitive_potassium_current (microA_per_microF)');
LEGEND_ALGEBRAIC(:,64) = strpad('i_to in component transient_outward_current (microA_per_microF)');
LEGEND_ALGEBRAIC(:,77) = strpad('i_NaCa in component Na_Ca_exchanger (microA_per_microF)');
LEGEND_ALGEBRAIC(:,56) = strpad('i_K1 in component time_independent_potassium_current (microA_per_microF)');
LEGEND_ALGEBRAIC(:,58) = strpad('i_Kp in component plateau_potassium_current (microA_per_microF)');
LEGEND_ALGEBRAIC(:,65) = strpad('i_p_Ca in component sarcolemmal_calcium_pump (microA_per_microF)');
LEGEND_ALGEBRAIC(:,66) = strpad('i_Na_b in component sodium_background_current (microA_per_microF)');
LEGEND_ALGEBRAIC(:,69) = strpad('i_Ca_b in component calcium_background_current (microA_per_microF)');
LEGEND_ALGEBRAIC(:,71) = strpad('i_NaK in component sodium_potassium_pump (microA_per_microF)');
LEGEND_ALGEBRAIC(:,76) = strpad('i_ns_Ca in component non_specific_calcium_activated_current (microA_per_microF)');
LEGEND_ALGEBRAIC(:,78) = strpad('dVdt in component cell (microA_per_microF)');
LEGEND_CONSTANTS(:,4) = strpad('stim_start in component cell (ms)');
LEGEND_CONSTANTS(:,5) = strpad('stim_end in component cell (ms)');
LEGEND_CONSTANTS(:,6) = strpad('stim_period in component cell (ms)');
LEGEND_CONSTANTS(:,7) = strpad('stim_duration in component cell (ms)');
LEGEND_CONSTANTS(:,8) = strpad('stim_amplitude in component cell (microA_per_microF)');
LEGEND_ALGEBRAIC(:,18) = strpad('E_Na in component fast_sodium_current (millivolt)');
LEGEND_CONSTANTS(:,9) = strpad('g_Na in component fast_sodium_current (milliS_per_microF)');
LEGEND_STATES(:,2) = strpad('Nai in component ionic_concentrations (millimolar)');
LEGEND_CONSTANTS(:,10) = strpad('Nao in component ionic_concentrations (millimolar)');
LEGEND_STATES(:,3) = strpad('m in component fast_sodium_current_m_gate (dimensionless)');
LEGEND_STATES(:,4) = strpad('h in component fast_sodium_current_h_gate (dimensionless)');
LEGEND_STATES(:,5) = strpad('j in component fast_sodium_current_j_gate (dimensionless)');
LEGEND_ALGEBRAIC(:,15) = strpad('alpha_m in component fast_sodium_current_m_gate (per_ms)');
LEGEND_ALGEBRAIC(:,28) = strpad('beta_m in component fast_sodium_current_m_gate (per_ms)');
LEGEND_CONSTANTS(:,11) = strpad('delta_m in component fast_sodium_current_m_gate (millivolt)');
LEGEND_ALGEBRAIC(:,1) = strpad('E0_m in component fast_sodium_current_m_gate (millivolt)');
LEGEND_ALGEBRAIC(:,2) = strpad('alpha_h in component fast_sodium_current_h_gate (per_ms)');
LEGEND_ALGEBRAIC(:,16) = strpad('beta_h in component fast_sodium_current_h_gate (per_ms)');
LEGEND_ALGEBRAIC(:,3) = strpad('alpha_j in component fast_sodium_current_j_gate (per_ms)');
LEGEND_ALGEBRAIC(:,17) = strpad('beta_j in component fast_sodium_current_j_gate (per_ms)');
LEGEND_ALGEBRAIC(:,43) = strpad('i_CaCa in component L_type_Ca_channel (microA_per_microF)');
LEGEND_ALGEBRAIC(:,45) = strpad('i_CaK in component L_type_Ca_channel (microA_per_microF)');
LEGEND_ALGEBRAIC(:,44) = strpad('i_CaNa in component L_type_Ca_channel (microA_per_microF)');
LEGEND_CONSTANTS(:,12) = strpad('gamma_Nai in component L_type_Ca_channel (dimensionless)');
LEGEND_CONSTANTS(:,13) = strpad('gamma_Nao in component L_type_Ca_channel (dimensionless)');
LEGEND_CONSTANTS(:,14) = strpad('gamma_Ki in component L_type_Ca_channel (dimensionless)');
LEGEND_CONSTANTS(:,15) = strpad('gamma_Ko in component L_type_Ca_channel (dimensionless)');
LEGEND_CONSTANTS(:,16) = strpad('gamma_Cai in component L_type_Ca_channel (dimensionless)');
LEGEND_CONSTANTS(:,17) = strpad('gamma_Cao in component L_type_Ca_channel (dimensionless)');
LEGEND_ALGEBRAIC(:,34) = strpad('I_CaCa in component L_type_Ca_channel (microA_per_microF)');
LEGEND_ALGEBRAIC(:,41) = strpad('I_CaK in component L_type_Ca_channel (microA_per_microF)');
LEGEND_ALGEBRAIC(:,39) = strpad('I_CaNa in component L_type_Ca_channel (microA_per_microF)');
LEGEND_STATES(:,6) = strpad('Cai in component calcium_dynamics (millimolar)');
LEGEND_CONSTANTS(:,21) = strpad('Cao in component calcium_dynamics (millimolar)');
LEGEND_CONSTANTS(:,22) = strpad('Ko in component ionic_concentrations (millimolar)');
LEGEND_STATES(:,7) = strpad('Ki in component ionic_concentrations (millimolar)');
LEGEND_STATES(:,8) = strpad('d in component L_type_Ca_channel_d_gate (dimensionless)');
LEGEND_STATES(:,9) = strpad('f in component L_type_Ca_channel_f_gate (dimensionless)');
LEGEND_ALGEBRAIC(:,42) = strpad('f_Ca in component L_type_Ca_channel_f_Ca_gate (dimensionless)');
LEGEND_ALGEBRAIC(:,35) = strpad('alpha_d in component L_type_Ca_channel_d_gate (per_ms)');
LEGEND_ALGEBRAIC(:,40) = strpad('beta_d in component L_type_Ca_channel_d_gate (per_ms)');
LEGEND_ALGEBRAIC(:,19) = strpad('d_infinity in component L_type_Ca_channel_d_gate (dimensionless)');
LEGEND_ALGEBRAIC(:,30) = strpad('tau_d in component L_type_Ca_channel_d_gate (ms)');
LEGEND_ALGEBRAIC(:,5) = strpad('E0_d in component L_type_Ca_channel_d_gate (millivolt)');
LEGEND_ALGEBRAIC(:,31) = strpad('alpha_f in component L_type_Ca_channel_f_gate (per_ms)');
LEGEND_ALGEBRAIC(:,36) = strpad('beta_f in component L_type_Ca_channel_f_gate (per_ms)');
LEGEND_ALGEBRAIC(:,6) = strpad('f_infinity in component L_type_Ca_channel_f_gate (dimensionless)');
LEGEND_ALGEBRAIC(:,20) = strpad('tau_f in component L_type_Ca_channel_f_gate (ms)');
LEGEND_CONSTANTS(:,23) = strpad('Km_Ca in component L_type_Ca_channel_f_Ca_gate (millimolar)');
LEGEND_CONSTANTS(:,24) = strpad('g_CaT in component T_type_Ca_channel (milliS_per_microF)');
LEGEND_ALGEBRAIC(:,67) = strpad('E_Ca in component calcium_background_current (millivolt)');
LEGEND_STATES(:,10) = strpad('b in component T_type_Ca_channel_b_gate (dimensionless)');
LEGEND_STATES(:,11) = strpad('g in component T_type_Ca_channel_g_gate (dimensionless)');
LEGEND_ALGEBRAIC(:,7) = strpad('b_inf in component T_type_Ca_channel_b_gate (dimensionless)');
LEGEND_ALGEBRAIC(:,21) = strpad('tau_b in component T_type_Ca_channel_b_gate (ms)');
LEGEND_ALGEBRAIC(:,8) = strpad('g_inf in component T_type_Ca_channel_g_gate (dimensionless)');
LEGEND_ALGEBRAIC(:,22) = strpad('tau_g in component T_type_Ca_channel_g_gate (ms)');
LEGEND_CONSTANTS(:,70) = strpad('g_Kr in component rapid_delayed_rectifier_potassium_current (milliS_per_microF)');
LEGEND_CONSTANTS(:,25) = strpad('G_Kr in component rapid_delayed_rectifier_potassium_current (milliS_per_microF)');
LEGEND_ALGEBRAIC(:,47) = strpad('Rect in component rapid_delayed_rectifier_potassium_current (dimensionless)');
LEGEND_ALGEBRAIC(:,51) = strpad('E_K in component time_independent_potassium_current (millivolt)');
LEGEND_STATES(:,12) = strpad('xr in component rapid_delayed_rectifier_potassium_current_xr_gate (dimensionless)');
LEGEND_ALGEBRAIC(:,9) = strpad('xr_infinity in component rapid_delayed_rectifier_potassium_current_xr_gate (dimensionless)');
LEGEND_ALGEBRAIC(:,23) = strpad('tau_xr in component rapid_delayed_rectifier_potassium_current_xr_gate (ms)');
LEGEND_ALGEBRAIC(:,49) = strpad('g_Ks in component slow_delayed_rectifier_potassium_current (milliS_per_microF)');
LEGEND_CONSTANTS(:,26) = strpad('G_Ks in component slow_delayed_rectifier_potassium_current (milliS_per_microF)');
LEGEND_ALGEBRAIC(:,48) = strpad('E_Ks in component slow_delayed_rectifier_potassium_current (millivolt)');
LEGEND_CONSTANTS(:,27) = strpad('PNaK in component slow_delayed_rectifier_potassium_current (dimensionless)');
LEGEND_STATES(:,13) = strpad('xs1 in component slow_delayed_rectifier_potassium_current_xs1_gate (dimensionless)');
LEGEND_STATES(:,14) = strpad('xs2 in component slow_delayed_rectifier_potassium_current_xs2_gate (dimensionless)');
LEGEND_ALGEBRAIC(:,10) = strpad('xs1_infinity in component slow_delayed_rectifier_potassium_current_xs1_gate (dimensionless)');
LEGEND_ALGEBRAIC(:,24) = strpad('tau_xs1 in component slow_delayed_rectifier_potassium_current_xs1_gate (ms)');
LEGEND_ALGEBRAIC(:,11) = strpad('xs2_infinity in component slow_delayed_rectifier_potassium_current_xs2_gate (dimensionless)');
LEGEND_ALGEBRAIC(:,25) = strpad('tau_xs2 in component slow_delayed_rectifier_potassium_current_xs2_gate (ms)');
LEGEND_CONSTANTS(:,71) = strpad('g_K1 in component time_independent_potassium_current (milliS_per_microF)');
LEGEND_CONSTANTS(:,28) = strpad('G_K1 in component time_independent_potassium_current (milliS_per_microF)');
LEGEND_ALGEBRAIC(:,55) = strpad('K1_infinity in component time_independent_potassium_current_K1_gate (dimensionless)');
LEGEND_ALGEBRAIC(:,53) = strpad('alpha_K1 in component time_independent_potassium_current_K1_gate (per_ms)');
LEGEND_ALGEBRAIC(:,54) = strpad('beta_K1 in component time_independent_potassium_current_K1_gate (per_ms)');
LEGEND_CONSTANTS(:,29) = strpad('g_Kp in component plateau_potassium_current (milliS_per_microF)');
LEGEND_ALGEBRAIC(:,57) = strpad('Kp in component plateau_potassium_current (dimensionless)');
LEGEND_CONSTANTS(:,30) = strpad('g_K_Na in component sodium_activated_potassium_current (milliS_per_microF)');
LEGEND_CONSTANTS(:,31) = strpad('nKNa in component sodium_activated_potassium_current (dimensionless)');
LEGEND_ALGEBRAIC(:,59) = strpad('pona in component sodium_activated_potassium_current (dimensionless)');
LEGEND_ALGEBRAIC(:,60) = strpad('pov in component sodium_activated_potassium_current (dimensionless)');
LEGEND_CONSTANTS(:,32) = strpad('kdKNa in component sodium_activated_potassium_current (millimolar)');
LEGEND_CONSTANTS(:,72) = strpad('g_K_ATP in component ATP_sensitive_potassium_current (milliS_per_microF)');
LEGEND_CONSTANTS(:,33) = strpad('i_K_ATP_on in component ATP_sensitive_potassium_current (dimensionless)');
LEGEND_CONSTANTS(:,34) = strpad('nATP in component ATP_sensitive_potassium_current (dimensionless)');
LEGEND_CONSTANTS(:,35) = strpad('nicholsarea in component ATP_sensitive_potassium_current (dimensionless)');
LEGEND_CONSTANTS(:,36) = strpad('ATPi in component ATP_sensitive_potassium_current (millimolar)');
LEGEND_CONSTANTS(:,37) = strpad('hATP in component ATP_sensitive_potassium_current (dimensionless)');
LEGEND_CONSTANTS(:,38) = strpad('kATP in component ATP_sensitive_potassium_current (millimolar)');
LEGEND_CONSTANTS(:,78) = strpad('pATP in component ATP_sensitive_potassium_current (dimensionless)');
LEGEND_CONSTANTS(:,80) = strpad('GKbaraATP in component ATP_sensitive_potassium_current (milliS_per_microF)');
LEGEND_CONSTANTS(:,73) = strpad('g_to in component transient_outward_current (milliS_per_microF)');
LEGEND_ALGEBRAIC(:,63) = strpad('rvdv in component transient_outward_current (dimensionless)');
LEGEND_STATES(:,15) = strpad('zdv in component transient_outward_current_zdv_gate (dimensionless)');
LEGEND_STATES(:,16) = strpad('ydv in component transient_outward_current_ydv_gate (dimensionless)');
LEGEND_ALGEBRAIC(:,12) = strpad('alpha_zdv in component transient_outward_current_zdv_gate (per_ms)');
LEGEND_ALGEBRAIC(:,26) = strpad('beta_zdv in component transient_outward_current_zdv_gate (per_ms)');
LEGEND_ALGEBRAIC(:,32) = strpad('tau_zdv in component transient_outward_current_zdv_gate (ms)');
LEGEND_ALGEBRAIC(:,37) = strpad('zdv_ss in component transient_outward_current_zdv_gate (dimensionless)');
LEGEND_ALGEBRAIC(:,13) = strpad('alpha_ydv in component transient_outward_current_ydv_gate (per_ms)');
LEGEND_ALGEBRAIC(:,27) = strpad('beta_ydv in component transient_outward_current_ydv_gate (per_ms)');
LEGEND_ALGEBRAIC(:,33) = strpad('tau_ydv in component transient_outward_current_ydv_gate (ms)');
LEGEND_ALGEBRAIC(:,38) = strpad('ydv_ss in component transient_outward_current_ydv_gate (dimensionless)');
LEGEND_CONSTANTS(:,39) = strpad('K_mpCa in component sarcolemmal_calcium_pump (millimolar)');
LEGEND_CONSTANTS(:,40) = strpad('I_pCa in component sarcolemmal_calcium_pump (microA_per_microF)');
LEGEND_CONSTANTS(:,41) = strpad('g_Nab in component sodium_background_current (milliS_per_microF)');
LEGEND_CONSTANTS(:,42) = strpad('g_Cab in component calcium_background_current (milliS_per_microF)');
LEGEND_CONSTANTS(:,43) = strpad('I_NaK in component sodium_potassium_pump (microA_per_microF)');
LEGEND_ALGEBRAIC(:,70) = strpad('f_NaK in component sodium_potassium_pump (dimensionless)');
LEGEND_CONSTANTS(:,44) = strpad('K_mNai in component sodium_potassium_pump (millimolar)');
LEGEND_CONSTANTS(:,45) = strpad('K_mKo in component sodium_potassium_pump (millimolar)');
LEGEND_CONSTANTS(:,74) = strpad('sigma in component sodium_potassium_pump (dimensionless)');
LEGEND_ALGEBRAIC(:,74) = strpad('i_ns_Na in component non_specific_calcium_activated_current (microA_per_microF)');
LEGEND_ALGEBRAIC(:,75) = strpad('i_ns_K in component non_specific_calcium_activated_current (microA_per_microF)');
LEGEND_ALGEBRAIC(:,72) = strpad('I_ns_Na in component non_specific_calcium_activated_current (microA_per_microF)');
LEGEND_ALGEBRAIC(:,73) = strpad('I_ns_K in component non_specific_calcium_activated_current (microA_per_microF)');
LEGEND_CONSTANTS(:,46) = strpad('K_m_ns_Ca in component non_specific_calcium_activated_current (millimolar)');
LEGEND_CONSTANTS(:,47) = strpad('c1 in component Na_Ca_exchanger (microA_per_microF)');
LEGEND_CONSTANTS(:,48) = strpad('c2 in component Na_Ca_exchanger (dimensionless)');
LEGEND_CONSTANTS(:,49) = strpad('gamma in component Na_Ca_exchanger (dimensionless)');
LEGEND_ALGEBRAIC(:,82) = strpad('i_rel in component calcium_dynamics (millimolar_per_ms)');
LEGEND_ALGEBRAIC(:,83) = strpad('i_up in component calcium_dynamics (millimolar_per_ms)');
LEGEND_ALGEBRAIC(:,84) = strpad('i_leak in component calcium_dynamics (millimolar_per_ms)');
LEGEND_ALGEBRAIC(:,85) = strpad('i_tr in component calcium_dynamics (millimolar_per_ms)');
LEGEND_ALGEBRAIC(:,81) = strpad('G_rel in component calcium_dynamics (per_ms)');
LEGEND_ALGEBRAIC(:,14) = strpad('G_rel_Viswanathan in component calcium_dynamics (per_ms)');
LEGEND_CONSTANTS(:,50) = strpad('G_rel_max in component calcium_dynamics (per_ms)');
LEGEND_CONSTANTS(:,52) = strpad('tau_tr in component calcium_dynamics (ms)');
LEGEND_CONSTANTS(:,53) = strpad('K_mrel in component calcium_dynamics (millimolar)');
LEGEND_CONSTANTS(:,54) = strpad('delta_Ca_ith in component calcium_dynamics (millimolar)');
LEGEND_CONSTANTS(:,55) = strpad('CSQN_max in component calcium_dynamics (millimolar)');
LEGEND_CONSTANTS(:,56) = strpad('K_mCSQN in component calcium_dynamics (millimolar)');
LEGEND_CONSTANTS(:,57) = strpad('K_mup in component calcium_dynamics (millimolar)');
LEGEND_CONSTANTS(:,76) = strpad('K_leak in component calcium_dynamics (per_ms)');
LEGEND_CONSTANTS(:,58) = strpad('I_up in component calcium_dynamics (millimolar_per_ms)');
LEGEND_CONSTANTS(:,59) = strpad('Ca_NSR_max in component calcium_dynamics (millimolar)');
LEGEND_STATES(:,17) = strpad('Ca_JSR in component calcium_dynamics (millimolar)');
LEGEND_STATES(:,18) = strpad('Ca_NSR in component calcium_dynamics (millimolar)');
LEGEND_CONSTANTS(:,77) = strpad('V_myo in component geometry (micro_litre)');
LEGEND_CONSTANTS(:,60) = strpad('A_cap in component geometry (cm2)');
LEGEND_CONSTANTS(:,79) = strpad('V_JSR in component geometry (micro_litre)');
LEGEND_CONSTANTS(:,81) = strpad('V_NSR in component geometry (micro_litre)');
LEGEND_CONSTANTS(:,61) = strpad('K_mTn in component calcium_dynamics (millimolar)');
LEGEND_CONSTANTS(:,62) = strpad('K_mCMDN in component calcium_dynamics (millimolar)');
LEGEND_CONSTANTS(:,63) = strpad('Tn_max in component calcium_dynamics (millimolar)');
LEGEND_CONSTANTS(:,64) = strpad('CMDN_max in component calcium_dynamics (millimolar)');
LEGEND_STATES(:,19) = strpad('APtrack in component calcium_dynamics (dimensionless)');
LEGEND_STATES(:,20) = strpad('APtrack2 in component calcium_dynamics (dimensionless)');
LEGEND_STATES(:,21) = strpad('APtrack3 in component calcium_dynamics (dimensionless)');
LEGEND_STATES(:,22) = strpad('Cainfluxtrack in component calcium_dynamics (millimolar)');
LEGEND_STATES(:,23) = strpad('OVRLDtrack in component calcium_dynamics (dimensionless)');
LEGEND_STATES(:,24) = strpad('OVRLDtrack2 in component calcium_dynamics (dimensionless)');
LEGEND_STATES(:,25) = strpad('OVRLDtrack3 in component calcium_dynamics (dimensionless)');
LEGEND_CONSTANTS(:,65) = strpad('CSQNthresh in component calcium_dynamics (dimensionless)');
LEGEND_CONSTANTS(:,66) = strpad('Logicthresh in component calcium_dynamics (dimensionless)');
LEGEND_ALGEBRAIC(:,79) = strpad('RyRopen in component calcium_dynamics (dimensionless)');
LEGEND_ALGEBRAIC(:,80) = strpad('RyRclose in component calcium_dynamics (dimensionless)');
LEGEND_CONSTANTS(:,67) = strpad('preplength in component geometry (mm)');
LEGEND_CONSTANTS(:,69) = strpad('volume in component geometry (micro_litre)');
LEGEND_RATES(:,1) = strpad('d/dt V in component cell (millivolt)');
LEGEND_RATES(:,3) = strpad('d/dt m in component fast_sodium_current_m_gate (dimensionless)');
LEGEND_RATES(:,4) = strpad('d/dt h in component fast_sodium_current_h_gate (dimensionless)');
LEGEND_RATES(:,5) = strpad('d/dt j in component fast_sodium_current_j_gate (dimensionless)');
LEGEND_RATES(:,8) = strpad('d/dt d in component L_type_Ca_channel_d_gate (dimensionless)');
LEGEND_RATES(:,9) = strpad('d/dt f in component L_type_Ca_channel_f_gate (dimensionless)');
LEGEND_RATES(:,10) = strpad('d/dt b in component T_type_Ca_channel_b_gate (dimensionless)');
LEGEND_RATES(:,11) = strpad('d/dt g in component T_type_Ca_channel_g_gate (dimensionless)');
LEGEND_RATES(:,12) = strpad('d/dt xr in component rapid_delayed_rectifier_potassium_current_xr_gate (dimensionless)');
LEGEND_RATES(:,13) = strpad('d/dt xs1 in component slow_delayed_rectifier_potassium_current_xs1_gate (dimensionless)');
LEGEND_RATES(:,14) = strpad('d/dt xs2 in component slow_delayed_rectifier_potassium_current_xs2_gate (dimensionless)');
LEGEND_RATES(:,15) = strpad('d/dt zdv in component transient_outward_current_zdv_gate (dimensionless)');
LEGEND_RATES(:,16) = strpad('d/dt ydv in component transient_outward_current_ydv_gate (dimensionless)');
LEGEND_RATES(:,19) = strpad('d/dt APtrack in component calcium_dynamics (dimensionless)');
LEGEND_RATES(:,20) = strpad('d/dt APtrack2 in component calcium_dynamics (dimensionless)');
LEGEND_RATES(:,21) = strpad('d/dt APtrack3 in component calcium_dynamics (dimensionless)');
LEGEND_RATES(:,22) = strpad('d/dt Cainfluxtrack in component calcium_dynamics (millimolar)');
LEGEND_RATES(:,23) = strpad('d/dt OVRLDtrack in component calcium_dynamics (dimensionless)');
LEGEND_RATES(:,24) = strpad('d/dt OVRLDtrack2 in component calcium_dynamics (dimensionless)');
LEGEND_RATES(:,25) = strpad('d/dt OVRLDtrack3 in component calcium_dynamics (dimensionless)');
LEGEND_RATES(:,17) = strpad('d/dt Ca_JSR in component calcium_dynamics (millimolar)');
LEGEND_RATES(:,18) = strpad('d/dt Ca_NSR in component calcium_dynamics (millimolar)');
LEGEND_RATES(:,6) = strpad('d/dt Cai in component calcium_dynamics (millimolar)');
LEGEND_RATES(:,2) = strpad('d/dt Nai in component ionic_concentrations (millimolar)');
LEGEND_RATES(:,7) = strpad('d/dt Ki in component ionic_concentrations (millimolar)');
LEGEND_STATES  = LEGEND_STATES';
LEGEND_ALGEBRAIC = LEGEND_ALGEBRAIC';
LEGEND_RATES = LEGEND_RATES';
LEGEND_CONSTANTS = LEGEND_CONSTANTS';
end

function [STATES, CONSTANTS] = initConsts()
VOI = 0; CONSTANTS = []; STATES = []; ALGEBRAIC = [];
STATES(:,1) = -85.2132259244751;
CONSTANTS(:,1) = 8314;
CONSTANTS(:,2) = 310;
CONSTANTS(:,3) = 96485;
CONSTANTS(:,4) = 100;
CONSTANTS(:,5) = 9000000;
CONSTANTS(:,6) = 1000;
CONSTANTS(:,7) = 2;
CONSTANTS(:,8) = -25.5;
CONSTANTS(:,9) = 16;
STATES(:,2) = 13.2866380281237;
CONSTANTS(:,10) = 140;
STATES(:,3) = 0.00149150667653466;
STATES(:,4) = 0.98560077662336;
STATES(:,5) = 0.990900988999238;
CONSTANTS(:,11) = 1e-5;
CONSTANTS(:,12) = 0.75;
CONSTANTS(:,13) = 0.75;
CONSTANTS(:,14) = 0.75;
CONSTANTS(:,15) = 0.75;
CONSTANTS(:,16) = 1;
CONSTANTS(:,17) = 0.341;
CONSTANTS(:,18) = 0.00054;
CONSTANTS(:,19) = 6.75e-7;
CONSTANTS(:,20) = 1.93e-7;
STATES(:,6) = 0.000115992251742132;
CONSTANTS(:,21) = 1.8;
CONSTANTS(:,22) = 5.4;
STATES(:,7) = 141.139802226909;
STATES(:,8) = 5.82475230952394e-06;
STATES(:,9) = 0.997765766850281;
CONSTANTS(:,23) = 0.0006;
CONSTANTS(:,24) = 0.056;
STATES(:,10) = 0.00087306703919284;
STATES(:,11) = 0.964644023670238;
CONSTANTS(:,25) = 0.02614;
STATES(:,12) = 0.000204664013529778;
CONSTANTS(:,26) = 0.433;
CONSTANTS(:,27) = 0.01833;
STATES(:,13) = 0.00661079879810885;
STATES(:,14) = 0.0302962988340647;
CONSTANTS(:,28) = 0.75;
CONSTANTS(:,29) = 0.00552;
CONSTANTS(:,30) = 0.12848;
CONSTANTS(:,31) = 2.8;
CONSTANTS(:,32) = 66;
CONSTANTS(:,33) = 1;
CONSTANTS(:,34) = 0.24;
CONSTANTS(:,35) = 5e-5;
CONSTANTS(:,36) = 3;
CONSTANTS(:,37) = 2;
CONSTANTS(:,38) = 0.00025;
STATES(:,15) = 0.0144611004317138;
STATES(:,16) = 0.999945263077137;
CONSTANTS(:,39) = 0.0005;
CONSTANTS(:,40) = 1.15;
CONSTANTS(:,41) = 0.004;
CONSTANTS(:,42) = 0.003016;
CONSTANTS(:,43) = 2.25;
CONSTANTS(:,44) = 10;
CONSTANTS(:,45) = 1.5;
CONSTANTS(:,46) = 0.0012;
CONSTANTS(:,47) = 0.00025;
CONSTANTS(:,48) = 0.0001;
CONSTANTS(:,49) = 0.15;
CONSTANTS(:,50) = 60;
CONSTANTS(:,51) = 4;
CONSTANTS(:,52) = 180;
CONSTANTS(:,53) = 0.0008;
CONSTANTS(:,54) = 0.00018;
CONSTANTS(:,55) = 10;
CONSTANTS(:,56) = 0.8;
CONSTANTS(:,57) = 0.00092;
CONSTANTS(:,58) = 0.00875;
CONSTANTS(:,59) = 15;
STATES(:,17) = 1.10786985002835;
STATES(:,18) = 1.74647588622419;
CONSTANTS(:,60) = 0.0001534;
CONSTANTS(:,61) = 0.0005;
CONSTANTS(:,62) = 0.00238;
CONSTANTS(:,63) = 0.07;
CONSTANTS(:,64) = 0.05;
STATES(:,19) = 1.05741719313009e-195;
STATES(:,20) = 5.84534012971144e-195;
STATES(:,21) = 0.000129513799736416;
STATES(:,22) = 2.82367737273297e-196;
STATES(:,23) = 0;
STATES(:,24) = 0;
STATES(:,25) = 0;
CONSTANTS(:,65) = 0.7;
CONSTANTS(:,66) = 0.98;
CONSTANTS(:,67) = 0.1;
CONSTANTS(:,68) = 0.011;
CONSTANTS(:,69) =   pi.*CONSTANTS(:,67).*power(CONSTANTS(:,68), 2.00000);
CONSTANTS(:,70) =  CONSTANTS(:,25).*power((CONSTANTS(:,22)./5.40000), 1.0 ./ 2);
CONSTANTS(:,71) =  CONSTANTS(:,28).*power((CONSTANTS(:,22)./5.40000), 1.0 ./ 2);
CONSTANTS(:,72) = ( CONSTANTS(:,33).*0.000193000)./CONSTANTS(:,35);
CONSTANTS(:,73) =  0.00000.*0.500000;
CONSTANTS(:,74) =  (1.00000./7.00000).*(exp(CONSTANTS(:,10)./67.3000) - 1.00000);
CONSTANTS(:,75) = 1.75000e-07;
CONSTANTS(:,76) = CONSTANTS(:,58)./CONSTANTS(:,59);
CONSTANTS(:,77) =  0.680000.*CONSTANTS(:,69);
CONSTANTS(:,78) = 1.00000./(1.00000+power(CONSTANTS(:,36)./CONSTANTS(:,38), CONSTANTS(:,37)));
CONSTANTS(:,79) =  0.00480000.*CONSTANTS(:,69);
CONSTANTS(:,80) =  CONSTANTS(:,72).*CONSTANTS(:,78).*power(CONSTANTS(:,22)./4.00000, CONSTANTS(:,34));
CONSTANTS(:,81) =  0.0552000.*CONSTANTS(:,69);
if (isempty(STATES)), warning('Initial values for states not set');, end
end

function [RATES, ALGEBRAIC] = computeRates(VOI, STATES, CONSTANTS)
global algebraicVariableCount;
statesSize = size(STATES);
statesColumnCount = statesSize(2);
if ( statesColumnCount == 1)
STATES = STATES';
ALGEBRAIC = zeros(1, algebraicVariableCount);
utilOnes = 1;
else
statesRowCount = statesSize(1);
ALGEBRAIC = zeros(statesRowCount, algebraicVariableCount);
RATES = zeros(statesRowCount, statesColumnCount);
utilOnes = ones(statesRowCount, 1);
end
RATES(:,20) = piecewise({STATES(:,19)<0.200000&STATES(:,19)>0.180000,  100.000.*(1.00000 - STATES(:,20)) -  0.500000.*STATES(:,20) },   - 0.500000.*STATES(:,20));
RATES(:,21) = piecewise({STATES(:,19)<0.200000&STATES(:,19)>0.180000,  100.000.*(1.00000 - STATES(:,21)) -  0.500000.*STATES(:,21) },   - 0.0100000.*STATES(:,21));
RATES(:,23) = piecewise({1.00000./(1.00000+CONSTANTS(:,56)./STATES(:,17))>CONSTANTS(:,65)&STATES(:,25)<0.370000&STATES(:,21)<0.370000,  50.0000.*(1.00000 - STATES(:,23)) },   - 0.500000.*STATES(:,23));
RATES(:,24) = piecewise({STATES(:,23)>CONSTANTS(:,66)&STATES(:,24)<CONSTANTS(:,66),  50.0000.*(1.00000 - STATES(:,24)) },   - 0.500000.*STATES(:,24));
RATES(:,25) = piecewise({STATES(:,23)>CONSTANTS(:,66)&STATES(:,25)<CONSTANTS(:,66),  50.0000.*(1.00000 - STATES(:,25)) },   - 0.0100000.*STATES(:,25));
ALGEBRAIC(:,2) = piecewise({STATES(:,1)< - 40.0000,  0.135000.*exp((80.0000+STATES(:,1))./ - 6.80000) }, 0.00000);
ALGEBRAIC(:,16) = piecewise({STATES(:,1)< - 40.0000,  3.56000.*exp( 0.0790000.*STATES(:,1))+ 310000..*exp( 0.350000.*STATES(:,1)) }, 1.00000./( 0.130000.*(1.00000+exp((STATES(:,1)+10.6600)./ - 11.1000))));
RATES(:,4) =  ALGEBRAIC(:,2).*(1.00000 - STATES(:,4)) -  ALGEBRAIC(:,16).*STATES(:,4);
ALGEBRAIC(:,3) = piecewise({STATES(:,1)< - 40.0000, (  - ( 127140..*exp( 0.244400.*STATES(:,1))+ 3.47400e-05.*exp(  - 0.0439100.*STATES(:,1))).*(STATES(:,1)+37.7800))./(1.00000+exp( 0.311000.*(STATES(:,1)+79.2300))) }, 0.00000);
ALGEBRAIC(:,17) = piecewise({STATES(:,1)< - 40.0000, ( 0.121200.*exp(  - 0.0105200.*STATES(:,1)))./(1.00000+exp(  - 0.137800.*(STATES(:,1)+40.1400))) }, ( 0.300000.*exp(  - 2.53500e-07.*STATES(:,1)))./(1.00000+exp(  - 0.100000.*(STATES(:,1)+32.0000))));
RATES(:,5) =  ALGEBRAIC(:,3).*(1.00000 - STATES(:,5)) -  ALGEBRAIC(:,17).*STATES(:,5);
ALGEBRAIC(:,7) = 1.00000./(1.00000+exp( - (STATES(:,1)+50.0000)./5.00000));
ALGEBRAIC(:,21) = 5.00000./( 1.06800.*exp((STATES(:,1)+16.3000)./30.0000)+ 1.06800.*exp( - (STATES(:,1)+16.3000)./30.0000));
RATES(:,10) = (ALGEBRAIC(:,7) - STATES(:,10))./ALGEBRAIC(:,21);
ALGEBRAIC(:,8) = 1.00000./(1.00000+exp((STATES(:,1)+61.0000)./5.00000));
ALGEBRAIC(:,22) = 5.00000./( 0.0150000.*exp( - (STATES(:,1)+71.7000)./83.3000)+ 0.0150000.*exp((STATES(:,1)+71.7000)./15.4000));
RATES(:,11) = (ALGEBRAIC(:,8) - STATES(:,11))./ALGEBRAIC(:,22);
ALGEBRAIC(:,9) = 1.00000./(1.00000+exp( - (STATES(:,1)+21.5000)./7.50000));
ALGEBRAIC(:,23) = 1.00000./(( 0.00138000.*(STATES(:,1)+14.2000))./(1.00000 - exp(  - 0.123000.*(STATES(:,1)+14.2000)))+( 0.000610000.*(STATES(:,1)+38.9000))./(exp( 0.145000.*(STATES(:,1)+38.9000)) - 1.00000));
RATES(:,12) = (ALGEBRAIC(:,9) - STATES(:,12))./ALGEBRAIC(:,23);
ALGEBRAIC(:,10) = 1.00000./(1.00000+exp( - (STATES(:,1) - 1.50000)./16.7000));
ALGEBRAIC(:,24) = 1.00000./(( 7.19000e-05.*(STATES(:,1)+30.0000))./(1.00000 - exp(  - 0.148000.*(STATES(:,1)+30.0000)))+( 0.000131000.*(STATES(:,1)+30.0000))./(exp( 0.0687000.*(STATES(:,1)+30.0000)) - 1.00000));
RATES(:,13) = (ALGEBRAIC(:,10) - STATES(:,13))./ALGEBRAIC(:,24);
ALGEBRAIC(:,11) = 1.00000./(1.00000+exp( - (STATES(:,1) - 1.50000)./16.7000));
ALGEBRAIC(:,25) = 4.00000./(( 7.19000e-05.*(STATES(:,1)+30.0000))./(1.00000 - exp(  - 0.148000.*(STATES(:,1)+30.0000)))+( 0.000131000.*(STATES(:,1)+30.0000))./(exp( 0.0687000.*(STATES(:,1)+30.0000)) - 1.00000));
RATES(:,14) = (ALGEBRAIC(:,11) - STATES(:,14))./ALGEBRAIC(:,25);
ALGEBRAIC(:,1) = STATES(:,1)+47.1300;
ALGEBRAIC(:,15) = piecewise({abs(ALGEBRAIC(:,1))>=CONSTANTS(:,11), ( 0.320000.*ALGEBRAIC(:,1))./(1.00000 - exp(  - 0.100000.*ALGEBRAIC(:,1))) }, 3.20000);
ALGEBRAIC(:,28) =  0.0800000.*exp( - STATES(:,1)./11.0000);
RATES(:,3) =  ALGEBRAIC(:,15).*(1.00000 - STATES(:,3)) -  ALGEBRAIC(:,28).*STATES(:,3);
ALGEBRAIC(:,6) = 1.00000./(1.00000+exp((STATES(:,1)+35.0600)./8.60000))+0.600000./(1.00000+exp((50.0000 - STATES(:,1))./20.0000));
ALGEBRAIC(:,20) = 1.00000./( 0.0197000.*exp( - power( 0.0337000.*(STATES(:,1)+10.0000), 2.00000))+0.0200000);
ALGEBRAIC(:,31) = ALGEBRAIC(:,6)./ALGEBRAIC(:,20);
ALGEBRAIC(:,36) = (1.00000 - ALGEBRAIC(:,6))./ALGEBRAIC(:,20);
RATES(:,9) =  ALGEBRAIC(:,31).*(1.00000 - STATES(:,9)) -  ALGEBRAIC(:,36).*STATES(:,9);
ALGEBRAIC(:,12) = ( 10.0000.*exp((STATES(:,1) - 40.0000)./25.0000))./(1.00000+exp((STATES(:,1) - 40.0000)./25.0000));
ALGEBRAIC(:,26) = ( 10.0000.*exp( - (STATES(:,1)+90.0000)./25.0000))./(1.00000+exp( - (STATES(:,1)+90.0000)./25.0000));
ALGEBRAIC(:,32) = 1.00000./(ALGEBRAIC(:,12)+ALGEBRAIC(:,26));
ALGEBRAIC(:,37) = ALGEBRAIC(:,12)./(ALGEBRAIC(:,12)+ALGEBRAIC(:,26));
RATES(:,15) = (ALGEBRAIC(:,37) - STATES(:,15))./ALGEBRAIC(:,32);
ALGEBRAIC(:,13) = 0.0150000./(1.00000+exp((STATES(:,1)+60.0000)./5.00000));
ALGEBRAIC(:,27) = ( 0.100000.*exp((STATES(:,1)+25.0000)./5.00000))./(1.00000+exp((STATES(:,1)+25.0000)./5.00000));
ALGEBRAIC(:,33) = 1.00000./(ALGEBRAIC(:,13)+ALGEBRAIC(:,27));
ALGEBRAIC(:,38) = ALGEBRAIC(:,13)./(ALGEBRAIC(:,13)+ALGEBRAIC(:,27));
RATES(:,16) = (ALGEBRAIC(:,38) - STATES(:,16))./ALGEBRAIC(:,33);
ALGEBRAIC(:,5) = STATES(:,1)+10.0000;
ALGEBRAIC(:,19) = 1.00000./(1.00000+exp( - ALGEBRAIC(:,5)./6.24000));
ALGEBRAIC(:,30) = piecewise({abs(ALGEBRAIC(:,5))<1.00000e-05, 1.00000./( 0.0350000.*6.24000.*2.00000) }, ( 1.00000.*ALGEBRAIC(:,19).*(1.00000 - exp( - ALGEBRAIC(:,5)./6.24000)))./( 0.0350000.*ALGEBRAIC(:,5)));
ALGEBRAIC(:,35) = ALGEBRAIC(:,19)./ALGEBRAIC(:,30);
ALGEBRAIC(:,40) = (1.00000 - ALGEBRAIC(:,19))./ALGEBRAIC(:,30);
RATES(:,8) =  ALGEBRAIC(:,35).*(1.00000 - STATES(:,8)) -  ALGEBRAIC(:,40).*STATES(:,8);
ALGEBRAIC(:,4) = piecewise({VOI>=CONSTANTS(:,4)&VOI<=CONSTANTS(:,5)&(VOI - CONSTANTS(:,4)) -  floor((VOI - CONSTANTS(:,4))./CONSTANTS(:,6)).*CONSTANTS(:,6)<=CONSTANTS(:,7), CONSTANTS(:,8) }, 0.00000);
ALGEBRAIC(:,47) = 1.00000./(1.00000+exp((STATES(:,1)+9.00000)./22.4000));
ALGEBRAIC(:,51) =  (( CONSTANTS(:,1).*CONSTANTS(:,2))./CONSTANTS(:,3)).*log(CONSTANTS(:,22)./STATES(:,7));
ALGEBRAIC(:,52) =  CONSTANTS(:,70).*STATES(:,12).*ALGEBRAIC(:,47).*(STATES(:,1) - ALGEBRAIC(:,51));
ALGEBRAIC(:,49) =  CONSTANTS(:,26).*(1.00000+0.600000./(1.00000+power(3.80000e-05./STATES(:,6), 1.40000)));
ALGEBRAIC(:,48) =  (( CONSTANTS(:,1).*CONSTANTS(:,2))./CONSTANTS(:,3)).*log((CONSTANTS(:,22)+ CONSTANTS(:,27).*CONSTANTS(:,10))./(STATES(:,7)+ CONSTANTS(:,27).*STATES(:,2)));
ALGEBRAIC(:,50) =  ALGEBRAIC(:,49).*STATES(:,13).*STATES(:,14).*(STATES(:,1) - ALGEBRAIC(:,48));
ALGEBRAIC(:,59) = 0.850000./(1.00000+power(CONSTANTS(:,32)./STATES(:,2), CONSTANTS(:,31)));
ALGEBRAIC(:,60) = 0.800000 - 0.650000./(1.00000+exp((STATES(:,1)+125.000)./15.0000));
ALGEBRAIC(:,61) =  CONSTANTS(:,30).*ALGEBRAIC(:,59).*ALGEBRAIC(:,60).*(STATES(:,1) - ALGEBRAIC(:,51));
ALGEBRAIC(:,62) =  CONSTANTS(:,80).*(STATES(:,1) - ALGEBRAIC(:,51));
ALGEBRAIC(:,63) = exp(STATES(:,1)./100.000);
ALGEBRAIC(:,64) =  CONSTANTS(:,73).*power(STATES(:,15), 3.00000).*STATES(:,16).*ALGEBRAIC(:,63).*(STATES(:,1) - ALGEBRAIC(:,51));
ALGEBRAIC(:,53) = 1.02000./(1.00000+exp( 0.238500.*((STATES(:,1) - ALGEBRAIC(:,51)) - 59.2150)));
ALGEBRAIC(:,54) = ( 1.00000.*( 0.491240.*exp( 0.0803200.*((STATES(:,1) - ALGEBRAIC(:,51))+5.47600))+exp( 0.0617500.*((STATES(:,1) - ALGEBRAIC(:,51)) - 594.310))))./(1.00000+exp(  - 0.514300.*((STATES(:,1) - ALGEBRAIC(:,51))+4.75300)));
ALGEBRAIC(:,55) = ALGEBRAIC(:,53)./(ALGEBRAIC(:,53)+ALGEBRAIC(:,54));
ALGEBRAIC(:,56) =  CONSTANTS(:,71).*ALGEBRAIC(:,55).*(STATES(:,1) - ALGEBRAIC(:,51));
ALGEBRAIC(:,57) = 1.00000./(1.00000+exp((7.48800 - STATES(:,1))./5.98000));
ALGEBRAIC(:,58) =  CONSTANTS(:,29).*ALGEBRAIC(:,57).*(STATES(:,1) - ALGEBRAIC(:,51));
ALGEBRAIC(:,70) = 1.00000./(1.00000+ 0.124500.*exp((  - 0.100000.*STATES(:,1).*CONSTANTS(:,3))./( CONSTANTS(:,1).*CONSTANTS(:,2)))+ 0.0365000.*CONSTANTS(:,74).*exp((  - STATES(:,1).*CONSTANTS(:,3))./( CONSTANTS(:,1).*CONSTANTS(:,2))));
ALGEBRAIC(:,71) = ( (( CONSTANTS(:,43).*ALGEBRAIC(:,70).*1.00000)./(1.00000+power(CONSTANTS(:,44)./STATES(:,2), 2.00000))).*CONSTANTS(:,22))./(CONSTANTS(:,22)+CONSTANTS(:,45));
ALGEBRAIC(:,41) = ( (( CONSTANTS(:,20).*power(1.00000, 2.00000).*STATES(:,1).*power(CONSTANTS(:,3), 2.00000))./( CONSTANTS(:,1).*CONSTANTS(:,2))).*( CONSTANTS(:,14).*STATES(:,7).*exp(( 1.00000.*STATES(:,1).*CONSTANTS(:,3))./( CONSTANTS(:,1).*CONSTANTS(:,2))) -  CONSTANTS(:,15).*CONSTANTS(:,22)))./(exp(( 1.00000.*STATES(:,1).*CONSTANTS(:,3))./( CONSTANTS(:,1).*CONSTANTS(:,2))) - 1.00000);
ALGEBRAIC(:,42) = 1.00000./(1.00000+STATES(:,6)./CONSTANTS(:,23));
ALGEBRAIC(:,45) =  STATES(:,8).*STATES(:,9).*ALGEBRAIC(:,42).*ALGEBRAIC(:,41);
ALGEBRAIC(:,73) = ( (( CONSTANTS(:,75).*power(1.00000, 2.00000).*STATES(:,1).*power(CONSTANTS(:,3), 2.00000))./( CONSTANTS(:,1).*CONSTANTS(:,2))).*( CONSTANTS(:,14).*STATES(:,7).*exp(( 1.00000.*STATES(:,1).*CONSTANTS(:,3))./( CONSTANTS(:,1).*CONSTANTS(:,2))) -  CONSTANTS(:,15).*CONSTANTS(:,22)))./(exp(( 1.00000.*STATES(:,1).*CONSTANTS(:,3))./( CONSTANTS(:,1).*CONSTANTS(:,2))) - 1.00000);
ALGEBRAIC(:,75) = ( ALGEBRAIC(:,73).*1.00000)./(1.00000+power(CONSTANTS(:,46)./STATES(:,6), 3.00000));
RATES(:,7) = (  - 1.00000.*(ALGEBRAIC(:,4)+ALGEBRAIC(:,45)+ALGEBRAIC(:,52)+ALGEBRAIC(:,50)+ALGEBRAIC(:,56)+ALGEBRAIC(:,58)+ALGEBRAIC(:,61)+ALGEBRAIC(:,62)+ALGEBRAIC(:,64)+ALGEBRAIC(:,75)+  - ALGEBRAIC(:,71).*2.00000).*CONSTANTS(:,60))./( CONSTANTS(:,77).*CONSTANTS(:,3));
ALGEBRAIC(:,67) =  (( CONSTANTS(:,1).*CONSTANTS(:,2))./( 2.00000.*CONSTANTS(:,3))).*log(CONSTANTS(:,21)./STATES(:,6));
ALGEBRAIC(:,68) =  CONSTANTS(:,24).*STATES(:,10).*STATES(:,10).*STATES(:,11).*(STATES(:,1) - ALGEBRAIC(:,67));
ALGEBRAIC(:,77) = ( CONSTANTS(:,47).*exp(( (CONSTANTS(:,49) - 1.00000).*STATES(:,1).*CONSTANTS(:,3))./( CONSTANTS(:,1).*CONSTANTS(:,2))).*( exp(( STATES(:,1).*CONSTANTS(:,3))./( CONSTANTS(:,1).*CONSTANTS(:,2))).*power(STATES(:,2), 3.00000).*CONSTANTS(:,21) -  power(CONSTANTS(:,10), 3.00000).*STATES(:,6)))./(1.00000+ CONSTANTS(:,48).*exp(( (CONSTANTS(:,49) - 1.00000).*STATES(:,1).*CONSTANTS(:,3))./( CONSTANTS(:,1).*CONSTANTS(:,2))).*( exp(( STATES(:,1).*CONSTANTS(:,3))./( CONSTANTS(:,1).*CONSTANTS(:,2))).*power(STATES(:,2), 3.00000).*CONSTANTS(:,21)+ power(CONSTANTS(:,10), 3.00000).*STATES(:,6)));
ALGEBRAIC(:,65) = ( CONSTANTS(:,40).*STATES(:,6))./(CONSTANTS(:,39)+STATES(:,6));
ALGEBRAIC(:,69) =  CONSTANTS(:,42).*(STATES(:,1) - ALGEBRAIC(:,67));
ALGEBRAIC(:,34) = ( (( CONSTANTS(:,18).*power(2.00000, 2.00000).*STATES(:,1).*power(CONSTANTS(:,3), 2.00000))./( CONSTANTS(:,1).*CONSTANTS(:,2))).*( CONSTANTS(:,16).*STATES(:,6).*exp(( 2.00000.*STATES(:,1).*CONSTANTS(:,3))./( CONSTANTS(:,1).*CONSTANTS(:,2))) -  CONSTANTS(:,17).*CONSTANTS(:,21)))./(exp(( 2.00000.*STATES(:,1).*CONSTANTS(:,3))./( CONSTANTS(:,1).*CONSTANTS(:,2))) - 1.00000);
ALGEBRAIC(:,43) =  STATES(:,8).*STATES(:,9).*ALGEBRAIC(:,42).*ALGEBRAIC(:,34);
RATES(:,22) = piecewise({STATES(:,19)>0.200000, (  - 1.00000.*CONSTANTS(:,60).*(((ALGEBRAIC(:,43)+ALGEBRAIC(:,68)) -  2.00000.*ALGEBRAIC(:,77))+ALGEBRAIC(:,65)+ALGEBRAIC(:,69)))./( 2.00000.*CONSTANTS(:,77).*CONSTANTS(:,3)) , STATES(:,20)>0.0100000&STATES(:,19)<=0.200000, 0.00000 },   - 0.500000.*STATES(:,22));
ALGEBRAIC(:,18) =  (( CONSTANTS(:,1).*CONSTANTS(:,2))./CONSTANTS(:,3)).*log(CONSTANTS(:,10)./STATES(:,2));
ALGEBRAIC(:,29) =  CONSTANTS(:,9).*power(STATES(:,3), 3.00000).*STATES(:,4).*STATES(:,5).*(STATES(:,1) - ALGEBRAIC(:,18));
ALGEBRAIC(:,66) =  CONSTANTS(:,41).*(STATES(:,1) - ALGEBRAIC(:,18));
ALGEBRAIC(:,39) = ( (( CONSTANTS(:,19).*power(1.00000, 2.00000).*STATES(:,1).*power(CONSTANTS(:,3), 2.00000))./( CONSTANTS(:,1).*CONSTANTS(:,2))).*( CONSTANTS(:,12).*STATES(:,2).*exp(( 1.00000.*STATES(:,1).*CONSTANTS(:,3))./( CONSTANTS(:,1).*CONSTANTS(:,2))) -  CONSTANTS(:,13).*CONSTANTS(:,10)))./(exp(( 1.00000.*STATES(:,1).*CONSTANTS(:,3))./( CONSTANTS(:,1).*CONSTANTS(:,2))) - 1.00000);
ALGEBRAIC(:,44) =  STATES(:,8).*STATES(:,9).*ALGEBRAIC(:,42).*ALGEBRAIC(:,39);
ALGEBRAIC(:,72) = ( (( CONSTANTS(:,75).*power(1.00000, 2.00000).*STATES(:,1).*power(CONSTANTS(:,3), 2.00000))./( CONSTANTS(:,1).*CONSTANTS(:,2))).*( CONSTANTS(:,12).*STATES(:,2).*exp(( 1.00000.*STATES(:,1).*CONSTANTS(:,3))./( CONSTANTS(:,1).*CONSTANTS(:,2))) -  CONSTANTS(:,13).*CONSTANTS(:,10)))./(exp(( 1.00000.*STATES(:,1).*CONSTANTS(:,3))./( CONSTANTS(:,1).*CONSTANTS(:,2))) - 1.00000);
ALGEBRAIC(:,74) = ( ALGEBRAIC(:,72).*1.00000)./(1.00000+power(CONSTANTS(:,46)./STATES(:,6), 3.00000));
RATES(:,2) = (  - 1.00000.*(ALGEBRAIC(:,29)+ALGEBRAIC(:,44)+ALGEBRAIC(:,66)+ALGEBRAIC(:,74)+ ALGEBRAIC(:,77).*3.00000+ ALGEBRAIC(:,71).*3.00000).*CONSTANTS(:,60))./( CONSTANTS(:,77).*CONSTANTS(:,3));
ALGEBRAIC(:,46) = ALGEBRAIC(:,43)+ALGEBRAIC(:,45)+ALGEBRAIC(:,44);
ALGEBRAIC(:,76) = ALGEBRAIC(:,74)+ALGEBRAIC(:,75);
ALGEBRAIC(:,78) =  - (ALGEBRAIC(:,29)+ALGEBRAIC(:,46)+ALGEBRAIC(:,68)+ALGEBRAIC(:,52)+ALGEBRAIC(:,50)+ALGEBRAIC(:,61)+ALGEBRAIC(:,62)+ALGEBRAIC(:,64)+ALGEBRAIC(:,56)+ALGEBRAIC(:,58)+ALGEBRAIC(:,77)+ALGEBRAIC(:,65)+ALGEBRAIC(:,66)+ALGEBRAIC(:,69)+ALGEBRAIC(:,71)+ALGEBRAIC(:,76)+ALGEBRAIC(:,4));
RATES(:,1) = ALGEBRAIC(:,78);
RATES(:,19) = piecewise({ALGEBRAIC(:,78)>150.000,  100.000.*(1.00000 - STATES(:,19)) -  0.500000.*STATES(:,19) },   - 0.500000.*STATES(:,19));
ALGEBRAIC(:,79) = 1.00000./(1.00000+ exp(2.00000).*STATES(:,20));
ALGEBRAIC(:,80) = 1.00000 - ALGEBRAIC(:,79);
ALGEBRAIC(:,81) = ( ALGEBRAIC(:,79).*ALGEBRAIC(:,80).*150.000)./(1.00000+exp((((ALGEBRAIC(:,43)+ALGEBRAIC(:,68)) -  2.00000.*ALGEBRAIC(:,77))+ALGEBRAIC(:,65)+ALGEBRAIC(:,69)+5.00000)./0.900000));
ALGEBRAIC(:,82) =  ALGEBRAIC(:,81).*(STATES(:,17) - STATES(:,6));
ALGEBRAIC(:,83) = ( CONSTANTS(:,58).*STATES(:,6))./(STATES(:,6)+CONSTANTS(:,57));
ALGEBRAIC(:,84) =  CONSTANTS(:,76).*STATES(:,18);
RATES(:,6) =  (1.00000./(1.00000+( CONSTANTS(:,64).*CONSTANTS(:,62))./power(CONSTANTS(:,62)+STATES(:,6), 2.00000)+( CONSTANTS(:,63).*CONSTANTS(:,61))./power(CONSTANTS(:,61)+STATES(:,6), 2.00000))).*((  - 1.00000.*CONSTANTS(:,60).*(((ALGEBRAIC(:,43)+ALGEBRAIC(:,68)) -  2.00000.*ALGEBRAIC(:,77))+ALGEBRAIC(:,65)+ALGEBRAIC(:,69)))./( 2.00000.*CONSTANTS(:,77).*CONSTANTS(:,3))+( ALGEBRAIC(:,82).*CONSTANTS(:,79))./CONSTANTS(:,77)+( (ALGEBRAIC(:,84) - ALGEBRAIC(:,83)).*CONSTANTS(:,81))./CONSTANTS(:,77));
ALGEBRAIC(:,85) = (STATES(:,18) - STATES(:,17))./CONSTANTS(:,52);
RATES(:,17) =  (1.00000./(1.00000+( CONSTANTS(:,55).*CONSTANTS(:,56))./power(CONSTANTS(:,56)+STATES(:,17), 2.00000))).*(ALGEBRAIC(:,85) - ALGEBRAIC(:,82));
RATES(:,18) = ((  - ALGEBRAIC(:,85).*CONSTANTS(:,79))./CONSTANTS(:,81) - ALGEBRAIC(:,84))+ALGEBRAIC(:,83);
RATES = RATES';
end

% Calculate algebraic variables
function ALGEBRAIC = computeAlgebraic(ALGEBRAIC, CONSTANTS, STATES, VOI)
statesSize = size(STATES);
statesColumnCount = statesSize(2);
if ( statesColumnCount == 1)
STATES = STATES';
utilOnes = 1;
else
statesRowCount = statesSize(1);
utilOnes = ones(statesRowCount, 1);
end
ALGEBRAIC(:,2) = piecewise({STATES(:,1)< - 40.0000,  0.135000.*exp((80.0000+STATES(:,1))./ - 6.80000) }, 0.00000);
ALGEBRAIC(:,16) = piecewise({STATES(:,1)< - 40.0000,  3.56000.*exp( 0.0790000.*STATES(:,1))+ 310000..*exp( 0.350000.*STATES(:,1)) }, 1.00000./( 0.130000.*(1.00000+exp((STATES(:,1)+10.6600)./ - 11.1000))));
ALGEBRAIC(:,3) = piecewise({STATES(:,1)< - 40.0000, (  - ( 127140..*exp( 0.244400.*STATES(:,1))+ 3.47400e-05.*exp(  - 0.0439100.*STATES(:,1))).*(STATES(:,1)+37.7800))./(1.00000+exp( 0.311000.*(STATES(:,1)+79.2300))) }, 0.00000);
ALGEBRAIC(:,17) = piecewise({STATES(:,1)< - 40.0000, ( 0.121200.*exp(  - 0.0105200.*STATES(:,1)))./(1.00000+exp(  - 0.137800.*(STATES(:,1)+40.1400))) }, ( 0.300000.*exp(  - 2.53500e-07.*STATES(:,1)))./(1.00000+exp(  - 0.100000.*(STATES(:,1)+32.0000))));
ALGEBRAIC(:,7) = 1.00000./(1.00000+exp( - (STATES(:,1)+50.0000)./5.00000));
ALGEBRAIC(:,21) = 5.00000./( 1.06800.*exp((STATES(:,1)+16.3000)./30.0000)+ 1.06800.*exp( - (STATES(:,1)+16.3000)./30.0000));
ALGEBRAIC(:,8) = 1.00000./(1.00000+exp((STATES(:,1)+61.0000)./5.00000));
ALGEBRAIC(:,22) = 5.00000./( 0.0150000.*exp( - (STATES(:,1)+71.7000)./83.3000)+ 0.0150000.*exp((STATES(:,1)+71.7000)./15.4000));
ALGEBRAIC(:,9) = 1.00000./(1.00000+exp( - (STATES(:,1)+21.5000)./7.50000));
ALGEBRAIC(:,23) = 1.00000./(( 0.00138000.*(STATES(:,1)+14.2000))./(1.00000 - exp(  - 0.123000.*(STATES(:,1)+14.2000)))+( 0.000610000.*(STATES(:,1)+38.9000))./(exp( 0.145000.*(STATES(:,1)+38.9000)) - 1.00000));
ALGEBRAIC(:,10) = 1.00000./(1.00000+exp( - (STATES(:,1) - 1.50000)./16.7000));
ALGEBRAIC(:,24) = 1.00000./(( 7.19000e-05.*(STATES(:,1)+30.0000))./(1.00000 - exp(  - 0.148000.*(STATES(:,1)+30.0000)))+( 0.000131000.*(STATES(:,1)+30.0000))./(exp( 0.0687000.*(STATES(:,1)+30.0000)) - 1.00000));
ALGEBRAIC(:,11) = 1.00000./(1.00000+exp( - (STATES(:,1) - 1.50000)./16.7000));
ALGEBRAIC(:,25) = 4.00000./(( 7.19000e-05.*(STATES(:,1)+30.0000))./(1.00000 - exp(  - 0.148000.*(STATES(:,1)+30.0000)))+( 0.000131000.*(STATES(:,1)+30.0000))./(exp( 0.0687000.*(STATES(:,1)+30.0000)) - 1.00000));
ALGEBRAIC(:,1) = STATES(:,1)+47.1300;
ALGEBRAIC(:,15) = piecewise({abs(ALGEBRAIC(:,1))>=CONSTANTS(:,11), ( 0.320000.*ALGEBRAIC(:,1))./(1.00000 - exp(  - 0.100000.*ALGEBRAIC(:,1))) }, 3.20000);
ALGEBRAIC(:,28) =  0.0800000.*exp( - STATES(:,1)./11.0000);
ALGEBRAIC(:,6) = 1.00000./(1.00000+exp((STATES(:,1)+35.0600)./8.60000))+0.600000./(1.00000+exp((50.0000 - STATES(:,1))./20.0000));
ALGEBRAIC(:,20) = 1.00000./( 0.0197000.*exp( - power( 0.0337000.*(STATES(:,1)+10.0000), 2.00000))+0.0200000);
ALGEBRAIC(:,31) = ALGEBRAIC(:,6)./ALGEBRAIC(:,20);
ALGEBRAIC(:,36) = (1.00000 - ALGEBRAIC(:,6))./ALGEBRAIC(:,20);
ALGEBRAIC(:,12) = ( 10.0000.*exp((STATES(:,1) - 40.0000)./25.0000))./(1.00000+exp((STATES(:,1) - 40.0000)./25.0000));
ALGEBRAIC(:,26) = ( 10.0000.*exp( - (STATES(:,1)+90.0000)./25.0000))./(1.00000+exp( - (STATES(:,1)+90.0000)./25.0000));
ALGEBRAIC(:,32) = 1.00000./(ALGEBRAIC(:,12)+ALGEBRAIC(:,26));
ALGEBRAIC(:,37) = ALGEBRAIC(:,12)./(ALGEBRAIC(:,12)+ALGEBRAIC(:,26));
ALGEBRAIC(:,13) = 0.0150000./(1.00000+exp((STATES(:,1)+60.0000)./5.00000));
ALGEBRAIC(:,27) = ( 0.100000.*exp((STATES(:,1)+25.0000)./5.00000))./(1.00000+exp((STATES(:,1)+25.0000)./5.00000));
ALGEBRAIC(:,33) = 1.00000./(ALGEBRAIC(:,13)+ALGEBRAIC(:,27));
ALGEBRAIC(:,38) = ALGEBRAIC(:,13)./(ALGEBRAIC(:,13)+ALGEBRAIC(:,27));
ALGEBRAIC(:,5) = STATES(:,1)+10.0000;
ALGEBRAIC(:,19) = 1.00000./(1.00000+exp( - ALGEBRAIC(:,5)./6.24000));
ALGEBRAIC(:,30) = piecewise({abs(ALGEBRAIC(:,5))<1.00000e-05, 1.00000./( 0.0350000.*6.24000.*2.00000) }, ( 1.00000.*ALGEBRAIC(:,19).*(1.00000 - exp( - ALGEBRAIC(:,5)./6.24000)))./( 0.0350000.*ALGEBRAIC(:,5)));
ALGEBRAIC(:,35) = ALGEBRAIC(:,19)./ALGEBRAIC(:,30);
ALGEBRAIC(:,40) = (1.00000 - ALGEBRAIC(:,19))./ALGEBRAIC(:,30);
ALGEBRAIC(:,4) = piecewise({VOI>=CONSTANTS(:,4)&VOI<=CONSTANTS(:,5)&(VOI - CONSTANTS(:,4)) -  floor((VOI - CONSTANTS(:,4))./CONSTANTS(:,6)).*CONSTANTS(:,6)<=CONSTANTS(:,7), CONSTANTS(:,8) }, 0.00000);
ALGEBRAIC(:,47) = 1.00000./(1.00000+exp((STATES(:,1)+9.00000)./22.4000));
ALGEBRAIC(:,51) =  (( CONSTANTS(:,1).*CONSTANTS(:,2))./CONSTANTS(:,3)).*log(CONSTANTS(:,22)./STATES(:,7));
ALGEBRAIC(:,52) =  CONSTANTS(:,70).*STATES(:,12).*ALGEBRAIC(:,47).*(STATES(:,1) - ALGEBRAIC(:,51));
ALGEBRAIC(:,49) =  CONSTANTS(:,26).*(1.00000+0.600000./(1.00000+power(3.80000e-05./STATES(:,6), 1.40000)));
ALGEBRAIC(:,48) =  (( CONSTANTS(:,1).*CONSTANTS(:,2))./CONSTANTS(:,3)).*log((CONSTANTS(:,22)+ CONSTANTS(:,27).*CONSTANTS(:,10))./(STATES(:,7)+ CONSTANTS(:,27).*STATES(:,2)));
ALGEBRAIC(:,50) =  ALGEBRAIC(:,49).*STATES(:,13).*STATES(:,14).*(STATES(:,1) - ALGEBRAIC(:,48));
ALGEBRAIC(:,59) = 0.850000./(1.00000+power(CONSTANTS(:,32)./STATES(:,2), CONSTANTS(:,31)));
ALGEBRAIC(:,60) = 0.800000 - 0.650000./(1.00000+exp((STATES(:,1)+125.000)./15.0000));
ALGEBRAIC(:,61) =  CONSTANTS(:,30).*ALGEBRAIC(:,59).*ALGEBRAIC(:,60).*(STATES(:,1) - ALGEBRAIC(:,51));
ALGEBRAIC(:,62) =  CONSTANTS(:,80).*(STATES(:,1) - ALGEBRAIC(:,51));
ALGEBRAIC(:,63) = exp(STATES(:,1)./100.000);
ALGEBRAIC(:,64) =  CONSTANTS(:,73).*power(STATES(:,15), 3.00000).*STATES(:,16).*ALGEBRAIC(:,63).*(STATES(:,1) - ALGEBRAIC(:,51));
ALGEBRAIC(:,53) = 1.02000./(1.00000+exp( 0.238500.*((STATES(:,1) - ALGEBRAIC(:,51)) - 59.2150)));
ALGEBRAIC(:,54) = ( 1.00000.*( 0.491240.*exp( 0.0803200.*((STATES(:,1) - ALGEBRAIC(:,51))+5.47600))+exp( 0.0617500.*((STATES(:,1) - ALGEBRAIC(:,51)) - 594.310))))./(1.00000+exp(  - 0.514300.*((STATES(:,1) - ALGEBRAIC(:,51))+4.75300)));
ALGEBRAIC(:,55) = ALGEBRAIC(:,53)./(ALGEBRAIC(:,53)+ALGEBRAIC(:,54));
ALGEBRAIC(:,56) =  CONSTANTS(:,71).*ALGEBRAIC(:,55).*(STATES(:,1) - ALGEBRAIC(:,51));
ALGEBRAIC(:,57) = 1.00000./(1.00000+exp((7.48800 - STATES(:,1))./5.98000));
ALGEBRAIC(:,58) =  CONSTANTS(:,29).*ALGEBRAIC(:,57).*(STATES(:,1) - ALGEBRAIC(:,51));
ALGEBRAIC(:,70) = 1.00000./(1.00000+ 0.124500.*exp((  - 0.100000.*STATES(:,1).*CONSTANTS(:,3))./( CONSTANTS(:,1).*CONSTANTS(:,2)))+ 0.0365000.*CONSTANTS(:,74).*exp((  - STATES(:,1).*CONSTANTS(:,3))./( CONSTANTS(:,1).*CONSTANTS(:,2))));
ALGEBRAIC(:,71) = ( (( CONSTANTS(:,43).*ALGEBRAIC(:,70).*1.00000)./(1.00000+power(CONSTANTS(:,44)./STATES(:,2), 2.00000))).*CONSTANTS(:,22))./(CONSTANTS(:,22)+CONSTANTS(:,45));
ALGEBRAIC(:,41) = ( (( CONSTANTS(:,20).*power(1.00000, 2.00000).*STATES(:,1).*power(CONSTANTS(:,3), 2.00000))./( CONSTANTS(:,1).*CONSTANTS(:,2))).*( CONSTANTS(:,14).*STATES(:,7).*exp(( 1.00000.*STATES(:,1).*CONSTANTS(:,3))./( CONSTANTS(:,1).*CONSTANTS(:,2))) -  CONSTANTS(:,15).*CONSTANTS(:,22)))./(exp(( 1.00000.*STATES(:,1).*CONSTANTS(:,3))./( CONSTANTS(:,1).*CONSTANTS(:,2))) - 1.00000);
ALGEBRAIC(:,42) = 1.00000./(1.00000+STATES(:,6)./CONSTANTS(:,23));
ALGEBRAIC(:,45) =  STATES(:,8).*STATES(:,9).*ALGEBRAIC(:,42).*ALGEBRAIC(:,41);
ALGEBRAIC(:,73) = ( (( CONSTANTS(:,75).*power(1.00000, 2.00000).*STATES(:,1).*power(CONSTANTS(:,3), 2.00000))./( CONSTANTS(:,1).*CONSTANTS(:,2))).*( CONSTANTS(:,14).*STATES(:,7).*exp(( 1.00000.*STATES(:,1).*CONSTANTS(:,3))./( CONSTANTS(:,1).*CONSTANTS(:,2))) -  CONSTANTS(:,15).*CONSTANTS(:,22)))./(exp(( 1.00000.*STATES(:,1).*CONSTANTS(:,3))./( CONSTANTS(:,1).*CONSTANTS(:,2))) - 1.00000);
ALGEBRAIC(:,75) = ( ALGEBRAIC(:,73).*1.00000)./(1.00000+power(CONSTANTS(:,46)./STATES(:,6), 3.00000));
ALGEBRAIC(:,67) =  (( CONSTANTS(:,1).*CONSTANTS(:,2))./( 2.00000.*CONSTANTS(:,3))).*log(CONSTANTS(:,21)./STATES(:,6));
ALGEBRAIC(:,68) =  CONSTANTS(:,24).*STATES(:,10).*STATES(:,10).*STATES(:,11).*(STATES(:,1) - ALGEBRAIC(:,67));
ALGEBRAIC(:,77) = ( CONSTANTS(:,47).*exp(( (CONSTANTS(:,49) - 1.00000).*STATES(:,1).*CONSTANTS(:,3))./( CONSTANTS(:,1).*CONSTANTS(:,2))).*( exp(( STATES(:,1).*CONSTANTS(:,3))./( CONSTANTS(:,1).*CONSTANTS(:,2))).*power(STATES(:,2), 3.00000).*CONSTANTS(:,21) -  power(CONSTANTS(:,10), 3.00000).*STATES(:,6)))./(1.00000+ CONSTANTS(:,48).*exp(( (CONSTANTS(:,49) - 1.00000).*STATES(:,1).*CONSTANTS(:,3))./( CONSTANTS(:,1).*CONSTANTS(:,2))).*( exp(( STATES(:,1).*CONSTANTS(:,3))./( CONSTANTS(:,1).*CONSTANTS(:,2))).*power(STATES(:,2), 3.00000).*CONSTANTS(:,21)+ power(CONSTANTS(:,10), 3.00000).*STATES(:,6)));
ALGEBRAIC(:,65) = ( CONSTANTS(:,40).*STATES(:,6))./(CONSTANTS(:,39)+STATES(:,6));
ALGEBRAIC(:,69) =  CONSTANTS(:,42).*(STATES(:,1) - ALGEBRAIC(:,67));
ALGEBRAIC(:,34) = ( (( CONSTANTS(:,18).*power(2.00000, 2.00000).*STATES(:,1).*power(CONSTANTS(:,3), 2.00000))./( CONSTANTS(:,1).*CONSTANTS(:,2))).*( CONSTANTS(:,16).*STATES(:,6).*exp(( 2.00000.*STATES(:,1).*CONSTANTS(:,3))./( CONSTANTS(:,1).*CONSTANTS(:,2))) -  CONSTANTS(:,17).*CONSTANTS(:,21)))./(exp(( 2.00000.*STATES(:,1).*CONSTANTS(:,3))./( CONSTANTS(:,1).*CONSTANTS(:,2))) - 1.00000);
ALGEBRAIC(:,43) =  STATES(:,8).*STATES(:,9).*ALGEBRAIC(:,42).*ALGEBRAIC(:,34);
ALGEBRAIC(:,18) =  (( CONSTANTS(:,1).*CONSTANTS(:,2))./CONSTANTS(:,3)).*log(CONSTANTS(:,10)./STATES(:,2));
ALGEBRAIC(:,29) =  CONSTANTS(:,9).*power(STATES(:,3), 3.00000).*STATES(:,4).*STATES(:,5).*(STATES(:,1) - ALGEBRAIC(:,18));
ALGEBRAIC(:,66) =  CONSTANTS(:,41).*(STATES(:,1) - ALGEBRAIC(:,18));
ALGEBRAIC(:,39) = ( (( CONSTANTS(:,19).*power(1.00000, 2.00000).*STATES(:,1).*power(CONSTANTS(:,3), 2.00000))./( CONSTANTS(:,1).*CONSTANTS(:,2))).*( CONSTANTS(:,12).*STATES(:,2).*exp(( 1.00000.*STATES(:,1).*CONSTANTS(:,3))./( CONSTANTS(:,1).*CONSTANTS(:,2))) -  CONSTANTS(:,13).*CONSTANTS(:,10)))./(exp(( 1.00000.*STATES(:,1).*CONSTANTS(:,3))./( CONSTANTS(:,1).*CONSTANTS(:,2))) - 1.00000);
ALGEBRAIC(:,44) =  STATES(:,8).*STATES(:,9).*ALGEBRAIC(:,42).*ALGEBRAIC(:,39);
ALGEBRAIC(:,72) = ( (( CONSTANTS(:,75).*power(1.00000, 2.00000).*STATES(:,1).*power(CONSTANTS(:,3), 2.00000))./( CONSTANTS(:,1).*CONSTANTS(:,2))).*( CONSTANTS(:,12).*STATES(:,2).*exp(( 1.00000.*STATES(:,1).*CONSTANTS(:,3))./( CONSTANTS(:,1).*CONSTANTS(:,2))) -  CONSTANTS(:,13).*CONSTANTS(:,10)))./(exp(( 1.00000.*STATES(:,1).*CONSTANTS(:,3))./( CONSTANTS(:,1).*CONSTANTS(:,2))) - 1.00000);
ALGEBRAIC(:,74) = ( ALGEBRAIC(:,72).*1.00000)./(1.00000+power(CONSTANTS(:,46)./STATES(:,6), 3.00000));
ALGEBRAIC(:,46) = ALGEBRAIC(:,43)+ALGEBRAIC(:,45)+ALGEBRAIC(:,44);
ALGEBRAIC(:,76) = ALGEBRAIC(:,74)+ALGEBRAIC(:,75);
ALGEBRAIC(:,78) =  - (ALGEBRAIC(:,29)+ALGEBRAIC(:,46)+ALGEBRAIC(:,68)+ALGEBRAIC(:,52)+ALGEBRAIC(:,50)+ALGEBRAIC(:,61)+ALGEBRAIC(:,62)+ALGEBRAIC(:,64)+ALGEBRAIC(:,56)+ALGEBRAIC(:,58)+ALGEBRAIC(:,77)+ALGEBRAIC(:,65)+ALGEBRAIC(:,66)+ALGEBRAIC(:,69)+ALGEBRAIC(:,71)+ALGEBRAIC(:,76)+ALGEBRAIC(:,4));
ALGEBRAIC(:,79) = 1.00000./(1.00000+ exp(2.00000).*STATES(:,20));
ALGEBRAIC(:,80) = 1.00000 - ALGEBRAIC(:,79);
ALGEBRAIC(:,81) = ( ALGEBRAIC(:,79).*ALGEBRAIC(:,80).*150.000)./(1.00000+exp((((ALGEBRAIC(:,43)+ALGEBRAIC(:,68)) -  2.00000.*ALGEBRAIC(:,77))+ALGEBRAIC(:,65)+ALGEBRAIC(:,69)+5.00000)./0.900000));
ALGEBRAIC(:,82) =  ALGEBRAIC(:,81).*(STATES(:,17) - STATES(:,6));
ALGEBRAIC(:,83) = ( CONSTANTS(:,58).*STATES(:,6))./(STATES(:,6)+CONSTANTS(:,57));
ALGEBRAIC(:,84) =  CONSTANTS(:,76).*STATES(:,18);
ALGEBRAIC(:,85) = (STATES(:,18) - STATES(:,17))./CONSTANTS(:,52);
ALGEBRAIC(:,14) = piecewise({STATES(:,22)>CONSTANTS(:,54),  (( CONSTANTS(:,50).*(STATES(:,22) - CONSTANTS(:,54)))./((CONSTANTS(:,53)+STATES(:,22)) - CONSTANTS(:,54))).*(1.00000 - STATES(:,20)).*STATES(:,20) , STATES(:,22)<=CONSTANTS(:,54)&STATES(:,24)>0.00000,  CONSTANTS(:,51).*(1.00000 - STATES(:,24)).*STATES(:,24) }, 0.00000);
end

% Compute result of a piecewise function
function x = piecewise(cases, default)
set = [0];
for i = 1:2:length(cases)
if (length(cases{i+1}) == 1)
x(cases{i} & ~set,:) = cases{i+1};
else
x(cases{i} & ~set,:) = cases{i+1}(cases{i} & ~set);
end
set = set | cases{i};
if(set), break, end
end
if (length(default) == 1)
x(~set,:) = default;
else
x(~set,:) = default(~set);
end
end

% Pad out or shorten strings to a set length
req_length = 160;
insize = size(strin,2);
if insize > req_length
strout = strin(1:req_length);
else
strout = [strin, blanks(req_length - insize)];
end
end

```
Source
Derived from workspace Faber, Rudy, 2000 and Tong, Ghouri, Taggart, 2014 at changeset 976a11364041.
Collaboration
To begin collaborating on this work, please use your git client and issue this command: