    {% for state_var in state_vars %}{% set statevarloop = loop %}
    double {{class_name}}::EvaluateYDerivative{{statevarloop.index0}}(double {{free_variable.var_name}}, {{vector_decl}} rY)
    {
        {% for deriv in y_derivative_equations %}{%- if deriv.is_voltage and statevarloop.index0 == membrane_voltage_index%}double {{deriv.lhs}};{%- endif %}{%- endfor %}
        {% for state_var in state_vars %}{%- if state_var.in_evaluate_y_derivative[statevarloop.index0] %}double {{ state_var.var }} = {{state_var.rY_lookup}};
        // Units: {{state_var.units}}; Initial value: {{state_var.initial_value}}
        {% endif %}{%- endfor %}
{% set method =  "ComputeOneStepExceptVoltage" + statevarloop.index0|string %}{% include "Shared/cpp/lookup_table_init" %}
        // Mathematics
        {%- for deriv in y_derivative_equations %}{% if deriv.in_evaluate_y_derivative[statevarloop.index0] %}
        {% if not deriv.is_voltage%}const double {% endif %}{{deriv.lhs}} = {{deriv.rhs}}; // {{deriv.units}}{%- endif %}
        {%- endfor %}

        return {% for deriv in y_derivatives %}{%- if loop.index0 == statevarloop.index0 %}{{deriv}};{%- endif %}{%- endfor %}
    }

    double {{class_name}}::EvaluatePartialDerivative{{statevarloop.index0}}(double {{free_variable.var_name}}, {{vector_decl}} rY, double delta, bool forceNumerical)
    {
        double partialF;
        if (!forceNumerical && this->mUseAnalyticJacobian)
        {
            {% for state_var in state_vars %}{%- if state_var.in_evaluate_partial_derivative[statevarloop.index0] %}double {{ state_var.var }} = {{state_var.rY_lookup}};
            // Units: {{state_var.units}}; Initial value: {{state_var.initial_value}}
            {% endif %}{%- endfor %}
{% set method =  "EvaluatePartialDerivative" + statevarloop.index0|string %}{% include "Shared/cpp/lookup_table_init" %}
            {% for equation in jacobian_equations if equation.in_evaluate_partial_derivative[loop.index0] %}const double {{equation.lhs}} = {{equation.rhs}};
            {% endfor %}
            partialF = {% for entry in jacobian_entries %}{% if statevarloop.index0 == entry.i == entry.j %}{{entry.entry}};{%- endif %}{%- endfor %}
        }
        else
        {
            const double y_save = rY[{{statevarloop.index0}}];
            rY[{{statevarloop.index0}}] += delta;
            const double temp = EvaluateYDerivative{{statevarloop.index0}}({{free_variable.var_name}}, rY);
            partialF = (temp-mEvalF[{{statevarloop.index0}}])/delta;
            rY[{{statevarloop.index0}}] = y_save;
        }
        return partialF;
    }

    {%- endfor %}