{%- if derived_quantities|length > 0 %}

    std::vector<double> {{class_name}}::ComputeDerivedQuantities(double {{free_variable.var_name}}, const std::vector<double> & rY)
    {
        // Inputs:
        // Time units: millisecond
        {% for state_var in state_vars %}
        {%- if state_var.in_derived_quant %}double {{ state_var.var }} = {{state_var.rY_lookup}};
        // Units: {{state_var.units}}; Initial value: {{state_var.initial_value}}
        {% endif %}{%- endfor %}{% set method =  "ComputeDerivedQuantities" %}{% include "Shared/cpp/lookup_table_init" %}
        // Mathematics
        {%- for eq in derived_quantity_equations %}
        const double {{eq.lhs}} = {{eq.rhs}}; // {{eq.units}}
        {%- endfor %}

        std::vector<double> dqs({{derived_quantities|length}});
        {%- for quant in derived_quantities %}
        dqs[{{loop.index0}}] = {{quant.var}};
        {%- endfor %}
        return dqs;
    }{% endif -%}