
    void {{class_name}}::EvaluateEquations(double {{free_variable.var_name}}, std::vector<double> &rDY, std::vector<double> &rAlphaOrTau, std::vector<double> &rBetaOrInf)
    {
        {{vector_decl}} rY = rGetStateVariables();
        {%- for state_var in state_vars %}
        {% if state_var.in_ab %}double {{ state_var.var }} = {{state_var.rY_lookup}};
        // Units: {{state_var.units}}; Initial value: {{state_var.initial_value}}
        {%- endif %}{%- endfor %}
{% set method =  "EvaluateEquations" %}{% include "Shared/cpp/lookup_table_init" %}
        // Mathematics
        {% for deriv in derivative_alpha_beta_eqs %}{%- if deriv.is_voltage%}double {{deriv.lhs}};{%- endif %}{%- endfor %}
        {%- for deriv in derivative_alpha_beta_eqs %}{%- if not deriv.in_membrane_voltage or deriv.in_eqs_excl_voltage %}
        const double {{deriv.lhs}} = {{deriv.rhs}}; // {{deriv.units}}{%- endif %}
        {%- endfor %}

        if (mSetVoltageDerivativeToZero)
        {
            {% for deriv in derivative_alpha_beta_eqs %}{%- if deriv.is_voltage%}{{deriv.lhs}} = 0.0;{%- endif %}{%- endfor %}
        }
        else
        {
            {%- for deriv in derivative_alpha_beta_eqs %}{% if deriv.in_membrane_voltage and not deriv.in_eqs_excl_voltage%}
            {% if not deriv.is_voltage%}const double {% endif %}{{deriv.lhs}} = {{deriv.rhs}}; // {{deriv.units}}{%- endif %}
            {%- endfor %}
        }
        {% for deriv in derivative_alpha_beta %}
        {% if deriv.type=='non_linear'%}rDY[{{loop.index0}}] = {{deriv.deriv}};{% else %}rAlphaOrTau[{{loop.index0}}] = {{deriv.r_alpha_or_tau}};
        rBetaOrInf[{{loop.index0}}] = {{deriv.r_beta_or_inf}};{%- endif %}
        {%- endfor %}
    }