Repository navigation
Analyser/Generator: use full precision for Euler's number and π - #1484
Conversation
There was a problem hiding this comment.
Copilot review overview
🟢 Approval recommended
The precision changes, profile metadata, hashes, tests, and generated fixtures are consistent with the linked issue.
Review effort: Balanced
Findings: None
What changed in this PR
Updates analyser and generator constants to full double precision, resolving #1483.
Changes:
- Uses
M_Ein analyser exponent evaluation. - Emits 17-significant-digit Euler’s number and π literals.
- Updates profile hashes, tests, generated versions, and fixtures.
| File | Description |
|---|---|
src/analyser.cpp |
Uses M_E for Euler’s number. |
src/generatorprofile.cpp |
Updates constants and profile version. |
src/generatorprofilesha1values.h |
Refreshes profile hashes. |
tests/generator/generatorprofile.cpp |
Updates C++ expectations. |
tests/bindings/python/test_generator_profile.py |
Updates Python expectations. |
tests/resources/coverage/generator/model.c |
Refreshes generated precision/version. |
tests/resources/coverage/generator/model.modified.profile.c |
Refreshes generated precision/version. |
tests/resources/coverage/generator/model.modified.profile.py |
Refreshes generated precision/version. |
tests/resources/coverage/generator/model.no.tracking.c |
Refreshes generated precision/version. |
tests/resources/coverage/generator/model.py |
Refreshes generated precision/version. |
tests/resources/coverage/generator/model.implementation.out |
Updates expected constants. |
tests/resources/generator/algebraic_eqn_computed_var_on_rhs/model.c |
Refreshes generated version. |
tests/resources/generator/algebraic_eqn_computed_var_on_rhs/model.external.c |
Refreshes generated version. |
tests/resources/generator/algebraic_eqn_computed_var_on_rhs/model.external.py |
Refreshes generated version. |
tests/resources/generator/algebraic_eqn_computed_var_on_rhs/model.py |
Refreshes generated version. |
tests/resources/generator/algebraic_eqn_const_var_on_rhs/model.c |
Refreshes generated version. |
tests/resources/generator/algebraic_eqn_const_var_on_rhs/model.py |
Refreshes generated version. |
tests/resources/generator/algebraic_eqn_constant_on_rhs/model.c |
Refreshes generated version. |
tests/resources/generator/algebraic_eqn_constant_on_rhs/model.py |
Refreshes generated version. |
tests/resources/generator/algebraic_eqn_derivative_on_rhs/model.c |
Refreshes generated version. |
tests/resources/generator/algebraic_eqn_derivative_on_rhs/model.py |
Refreshes generated version. |
tests/resources/generator/algebraic_eqn_derivative_on_rhs_one_component/model.c |
Refreshes generated version. |
tests/resources/generator/algebraic_eqn_derivative_on_rhs_one_component/model.py |
Refreshes generated version. |
tests/resources/generator/algebraic_eqn_state_var_on_rhs/model.c |
Refreshes generated version. |
tests/resources/generator/algebraic_eqn_state_var_on_rhs/model.py |
Refreshes generated version. |
tests/resources/generator/algebraic_eqn_state_var_on_rhs_one_component/model.c |
Refreshes generated version. |
tests/resources/generator/algebraic_eqn_state_var_on_rhs_one_component/model.py |
Refreshes generated version. |
tests/resources/generator/algebraic_eqn_with_one_non_isolated_unknown/model.c |
Refreshes generated version. |
tests/resources/generator/algebraic_eqn_with_one_non_isolated_unknown/model.external.c |
Refreshes generated version. |
tests/resources/generator/algebraic_eqn_with_one_non_isolated_unknown/model.external.py |
Refreshes generated version. |
tests/resources/generator/algebraic_eqn_with_one_non_isolated_unknown/model.py |
Refreshes generated version. |
tests/resources/generator/algebraic_system_with_three_linked_unknowns/model.c |
Refreshes generated version. |
tests/resources/generator/algebraic_system_with_three_linked_unknowns/model.external.c |
Refreshes generated version. |
tests/resources/generator/algebraic_system_with_three_linked_unknowns/model.external.py |
Refreshes generated version. |
tests/resources/generator/algebraic_system_with_three_linked_unknowns/model.py |
Refreshes generated version. |
tests/resources/generator/algebraic_system_with_various_dependencies/model.not.ordered.c |
Refreshes generated version. |
tests/resources/generator/algebraic_system_with_various_dependencies/model.not.ordered.py |
Refreshes generated version. |
tests/resources/generator/algebraic_system_with_various_dependencies/model.ordered.c |
Refreshes generated version. |
tests/resources/generator/algebraic_system_with_various_dependencies/model.ordered.py |
Refreshes generated version. |
tests/resources/generator/algebraic_unknown_var_on_rhs/model.c |
Refreshes generated version. |
tests/resources/generator/algebraic_unknown_var_on_rhs/model.py |
Refreshes generated version. |
tests/resources/generator/cell_geometry_model/model.c |
Refreshes generated version. |
tests/resources/generator/cell_geometry_model/model.external.c |
Refreshes generated version. |
tests/resources/generator/cell_geometry_model/model.external.py |
Refreshes generated version. |
tests/resources/generator/cell_geometry_model/model.py |
Refreshes generated version. |
tests/resources/generator/cellml_mappings_and_encapsulations/model.c |
Refreshes generated version. |
tests/resources/generator/cellml_mappings_and_encapsulations/model.py |
Refreshes generated version. |
tests/resources/generator/cellml_slc_example/model.py |
Refreshes generated version. |
tests/resources/generator/cellml_state_initialised_using_variable/model.c |
Refreshes generated version. |
tests/resources/generator/cellml_state_initialised_using_variable/model.py |
Refreshes generated version. |
tests/resources/generator/cellml_unit_scaling_constant/model.c |
Refreshes generated version. |
tests/resources/generator/cellml_unit_scaling_constant/model.py |
Refreshes generated version. |
tests/resources/generator/cellml_unit_scaling_rate/model.c |
Refreshes generated version. |
tests/resources/generator/cellml_unit_scaling_rate/model.py |
Refreshes generated version. |
tests/resources/generator/cellml_unit_scaling_state/model.c |
Refreshes generated version. |
tests/resources/generator/cellml_unit_scaling_state/model.py |
Refreshes generated version. |
tests/resources/generator/cellml_unit_scaling_state_initialised_using_constant/model.c |
Refreshes generated version. |
tests/resources/generator/cellml_unit_scaling_state_initialised_using_constant/model.py |
Refreshes generated version. |
tests/resources/generator/cellml_unit_scaling_state_initialised_using_variable/model.c |
Refreshes generated version. |
tests/resources/generator/cellml_unit_scaling_state_initialised_using_variable/model.py |
Refreshes generated version. |
tests/resources/generator/cellml_unit_scaling_voi_direct/model.c |
Refreshes generated version. |
tests/resources/generator/cellml_unit_scaling_voi_direct/model.py |
Refreshes generated version. |
tests/resources/generator/cellml_unit_scaling_voi_indirect/model.c |
Refreshes generated version. |
tests/resources/generator/cellml_unit_scaling_voi_indirect/model.py |
Refreshes generated version. |
tests/resources/generator/dae_cellml_1_1_model/model.c |
Refreshes generated version. |
tests/resources/generator/dae_cellml_1_1_model/model.py |
Refreshes generated version. |
tests/resources/generator/dependent_eqns/model.c |
Refreshes generated version. |
tests/resources/generator/dependent_eqns/model.py |
Refreshes generated version. |
tests/resources/generator/fabbri_fantini_wilders_severi_human_san_model_2017/model.c |
Updates π precision and version. |
tests/resources/generator/fabbri_fantini_wilders_severi_human_san_model_2017/model.py |
Updates π precision and version. |
tests/resources/generator/garny_kohl_hunter_boyett_noble_rabbit_san_model_2003/model.c |
Refreshes generated version. |
tests/resources/generator/garny_kohl_hunter_boyett_noble_rabbit_san_model_2003/model.py |
Refreshes generated version. |
tests/resources/generator/hodgkin_huxley_squid_axon_model_1952/model.algebraic.c |
Refreshes generated version. |
tests/resources/generator/hodgkin_huxley_squid_axon_model_1952/model.algebraic.py |
Refreshes generated version. |
tests/resources/generator/hodgkin_huxley_squid_axon_model_1952/model.c |
Refreshes generated version. |
tests/resources/generator/hodgkin_huxley_squid_axon_model_1952/model.computed.constant.c |
Refreshes generated version. |
tests/resources/generator/hodgkin_huxley_squid_axon_model_1952/model.computed.constant.py |
Refreshes generated version. |
tests/resources/generator/hodgkin_huxley_squid_axon_model_1952/model.constant.c |
Refreshes generated version. |
tests/resources/generator/hodgkin_huxley_squid_axon_model_1952/model.constant.py |
Refreshes generated version. |
tests/resources/generator/hodgkin_huxley_squid_axon_model_1952/model.dae.c |
Refreshes generated version. |
tests/resources/generator/hodgkin_huxley_squid_axon_model_1952/model.dae.py |
Refreshes generated version. |
tests/resources/generator/hodgkin_huxley_squid_axon_model_1952/model.dae.external.c |
Refreshes generated version. |
tests/resources/generator/hodgkin_huxley_squid_axon_model_1952/model.dae.external.py |
Refreshes generated version. |
tests/resources/generator/hodgkin_huxley_squid_axon_model_1952/model.dae.for.tracking.control.c |
Refreshes generated version. |
tests/resources/generator/hodgkin_huxley_squid_axon_model_1952/model.dae.for.tracking.control.py |
Refreshes generated version. |
tests/resources/generator/hodgkin_huxley_squid_axon_model_1952/model.dae.for.tracking.control.with.externals.c |
Refreshes generated version. |
tests/resources/generator/hodgkin_huxley_squid_axon_model_1952/model.dae.for.tracking.control.with.externals.py |
Refreshes generated version. |
tests/resources/generator/hodgkin_huxley_squid_axon_model_1952/model.dae.for.tracking.untracked.algebraic.variables.c |
Refreshes generated version. |
tests/resources/generator/hodgkin_huxley_squid_axon_model_1952/model.dae.for.tracking.untracked.algebraic.variables.py |
Refreshes generated version. |
tests/resources/generator/hodgkin_huxley_squid_axon_model_1952/model.dae.for.tracking.untracked.algebraic.variables.with.externals.c |
Refreshes generated version. |
tests/resources/generator/hodgkin_huxley_squid_axon_model_1952/model.dae.for.tracking.untracked.algebraic.variables.with.externals.py |
Refreshes generated version. |
tests/resources/generator/hodgkin_huxley_squid_axon_model_1952/model.dae.for.tracking.untracked.computed.constants.c |
Refreshes generated version. |
tests/resources/generator/hodgkin_huxley_squid_axon_model_1952/model.dae.for.tracking.untracked.computed.constants.py |
Refreshes generated version. |
tests/resources/generator/hodgkin_huxley_squid_axon_model_1952/model.dae.for.tracking.untracked.computed.constants.with.externals.c |
Refreshes generated version. |
tests/resources/generator/hodgkin_huxley_squid_axon_model_1952/model.dae.for.tracking.untracked.computed.constants.with.externals.py |
Refreshes generated version. |
tests/resources/generator/hodgkin_huxley_squid_axon_model_1952/model.dae.for.tracking.untracked.constants.c |
Refreshes generated version. |
tests/resources/generator/hodgkin_huxley_squid_axon_model_1952/model.dae.for.tracking.untracked.constants.py |
Refreshes generated version. |
tests/resources/generator/hodgkin_huxley_squid_axon_model_1952/model.dae.for.tracking.untracked.constants.with.externals.c |
Refreshes generated version. |
tests/resources/generator/hodgkin_huxley_squid_axon_model_1952/model.dae.for.tracking.untracked.constants.with.externals.py |
Refreshes generated version. |
tests/resources/generator/hodgkin_huxley_squid_axon_model_1952/model.dae.for.tracking.untracked.variables.c |
Refreshes generated version. |
tests/resources/generator/hodgkin_huxley_squid_axon_model_1952/model.dae.for.tracking.untracked.variables.py |
Refreshes generated version. |
tests/resources/generator/hodgkin_huxley_squid_axon_model_1952/model.dae.for.tracking.untracked.variables.with.externals.c |
Refreshes generated version. |
tests/resources/generator/hodgkin_huxley_squid_axon_model_1952/model.dae.for.tracking.untracked.variables.with.externals.py |
Refreshes generated version. |
tests/resources/generator/hodgkin_huxley_squid_axon_model_1952/model.dependent.algebraic.c |
Refreshes generated version. |
tests/resources/generator/hodgkin_huxley_squid_axon_model_1952/model.dependent.algebraic.py |
Refreshes generated version. |
tests/resources/generator/hodgkin_huxley_squid_axon_model_1952/model.dependent.computed.constant.c |
Refreshes generated version. |
tests/resources/generator/hodgkin_huxley_squid_axon_model_1952/model.dependent.computed.constant.py |
Refreshes generated version. |
tests/resources/generator/hodgkin_huxley_squid_axon_model_1952/model.dependent.constant.c |
Refreshes generated version. |
tests/resources/generator/hodgkin_huxley_squid_axon_model_1952/model.dependent.constant.py |
Refreshes generated version. |
tests/resources/generator/hodgkin_huxley_squid_axon_model_1952/model.dependent.state.c |
Refreshes generated version. |
tests/resources/generator/hodgkin_huxley_squid_axon_model_1952/model.dependent.state.py |
Refreshes generated version. |
tests/resources/generator/hodgkin_huxley_squid_axon_model_1952/model.external.c |
Refreshes generated version. |
tests/resources/generator/hodgkin_huxley_squid_axon_model_1952/model.external.py |
Refreshes generated version. |
tests/resources/generator/hodgkin_huxley_squid_axon_model_1952/model.py |
Refreshes generated version. |
tests/resources/generator/hodgkin_huxley_squid_axon_model_1952/model.state.c |
Refreshes generated version. |
tests/resources/generator/hodgkin_huxley_squid_axon_model_1952/model.state.py |
Refreshes generated version. |
tests/resources/generator/hodgkin_huxley_squid_axon_model_1952/model.untracked.algebraic.variables.c |
Refreshes generated version. |
tests/resources/generator/hodgkin_huxley_squid_axon_model_1952/model.untracked.algebraic.variables.py |
Refreshes generated version. |
tests/resources/generator/hodgkin_huxley_squid_axon_model_1952/model.untracked.algebraic.variables.with.externals.c |
Refreshes generated version. |
tests/resources/generator/hodgkin_huxley_squid_axon_model_1952/model.untracked.algebraic.variables.with.externals.py |
Refreshes generated version. |
tests/resources/generator/hodgkin_huxley_squid_axon_model_1952/model.untracked.computed.constants.c |
Refreshes generated version. |
tests/resources/generator/hodgkin_huxley_squid_axon_model_1952/model.untracked.computed.constants.py |
Refreshes generated version. |
tests/resources/generator/hodgkin_huxley_squid_axon_model_1952/model.untracked.computed.constants.with.externals.c |
Refreshes generated version. |
tests/resources/generator/hodgkin_huxley_squid_axon_model_1952/model.untracked.computed.constants.with.externals.py |
Refreshes generated version. |
tests/resources/generator/hodgkin_huxley_squid_axon_model_1952/model.untracked.constants.c |
Refreshes generated version. |
tests/resources/generator/hodgkin_huxley_squid_axon_model_1952/model.untracked.constants.py |
Refreshes generated version. |
tests/resources/generator/hodgkin_huxley_squid_axon_model_1952/model.untracked.constants.with.externals.c |
Refreshes generated version. |
tests/resources/generator/hodgkin_huxley_squid_axon_model_1952/model.untracked.constants.with.externals.py |
Refreshes generated version. |
tests/resources/generator/hodgkin_huxley_squid_axon_model_1952/model.untracked.variables.c |
Refreshes generated version. |
tests/resources/generator/hodgkin_huxley_squid_axon_model_1952/model.untracked.variables.py |
Refreshes generated version. |
tests/resources/generator/hodgkin_huxley_squid_axon_model_1952/model.untracked.variables.with.externals.c |
Refreshes generated version. |
tests/resources/generator/hodgkin_huxley_squid_axon_model_1952/model.untracked.variables.with.externals.py |
Refreshes generated version. |
tests/resources/generator/noble_model_1962/model.c |
Refreshes generated version. |
tests/resources/generator/noble_model_1962/model.py |
Refreshes generated version. |
tests/resources/generator/ode_computed_var_on_rhs/model.c |
Refreshes generated version. |
tests/resources/generator/ode_computed_var_on_rhs/model.py |
Refreshes generated version. |
tests/resources/generator/ode_computed_var_on_rhs_one_component/model.c |
Refreshes generated version. |
tests/resources/generator/ode_computed_var_on_rhs_one_component/model.py |
Refreshes generated version. |
tests/resources/generator/ode_const_var_on_rhs/model.c |
Refreshes generated version. |
tests/resources/generator/ode_const_var_on_rhs/model.py |
Refreshes generated version. |
tests/resources/generator/ode_const_var_on_rhs_one_component/model.c |
Refreshes generated version. |
tests/resources/generator/ode_const_var_on_rhs_one_component/model.py |
Refreshes generated version. |
tests/resources/generator/ode_constant_on_rhs/model.c |
Refreshes generated version. |
tests/resources/generator/ode_constant_on_rhs/model.py |
Refreshes generated version. |
tests/resources/generator/ode_constant_on_rhs_one_component/model.c |
Refreshes generated version. |
tests/resources/generator/ode_constant_on_rhs_one_component/model.py |
Refreshes generated version. |
tests/resources/generator/ode_multiple_dependent_odes/model.c |
Refreshes generated version. |
tests/resources/generator/ode_multiple_dependent_odes/model.py |
Refreshes generated version. |
tests/resources/generator/ode_multiple_dependent_odes_one_component/model.c |
Refreshes generated version. |
tests/resources/generator/ode_multiple_dependent_odes_one_component/model.py |
Refreshes generated version. |
tests/resources/generator/ode_multiple_odes_with_same_name/model.c |
Refreshes generated version. |
tests/resources/generator/ode_multiple_odes_with_same_name/model.py |
Refreshes generated version. |
tests/resources/generator/ode_unknown_var_on_rhs/model.c |
Refreshes generated version. |
tests/resources/generator/ode_unknown_var_on_rhs/model.py |
Refreshes generated version. |
tests/resources/generator/robertson_model_1966/model.dae.c |
Refreshes generated version. |
tests/resources/generator/robertson_model_1966/model.dae.py |
Refreshes generated version. |
tests/resources/generator/robertson_model_1966/model.ode.c |
Refreshes generated version. |
tests/resources/generator/robertson_model_1966/model.ode.py |
Refreshes generated version. |
tests/resources/generator/sine_model_imports/model.c |
Updates π precision and version. |
tests/resources/generator/sine_model_imports/model.py |
Updates π precision and version. |
tests/resources/generator/unknown_variable_as_external_variable/model.c |
Refreshes generated version. |
tests/resources/generator/unknown_variable_as_external_variable/model.py |
Refreshes generated version. |
tests/resources/generator/variable_initialised_using_another_variable/model.c |
Refreshes generated version. |
tests/resources/generator/variable_initialised_using_another_variable/model.py |
Refreshes generated version. |
💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.
jmdowrick
left a comment
There was a problem hiding this comment.
Looks good. I wonder if there's a way we can avoid needing to manually update all these test resources whenever the format version changes, though?
I don't think whether we can or not is relevant here. What matters is that we changed the C/Python profiles, so now the generator generates different code (when Euler's number or π are involved), which means that we must bump up the implementation version which, in turn, means updating all of our code-generation-related test files. |
I have been thinking about this and I think maybe adding an ignore line feature may be what is wanted for the test output comparison. But certainly a different issue, pull request combo. |
Fixes #1483.