Skip to content

heyoka 0.15.0

Pre-release
Pre-release
Compare
Choose a tag to compare
@bluescarni bluescarni released this 28 Sep 15:17
· 2707 commits to master since this release

This is one of the biggest releases of heyoka to date, featuring various new capabilities, a major change in the expression system and several fixes.

Reference semantics for funcs

A fundamental change debuting in heyoka 0.15.0 is that function nodes in the expression system now use reference semantics, instead of value semantics. In practice, this means that copying non-trivial expressions does not result any more in a deep copy of the original object, but rather in a new reference to the original object. Deep copies of expressions can be performed via the newly-introduced copy() function.

This change is motivated by various use cases involving large symbolic expressions with a high degree of internal repetition (including, e.g., artificial neural networks), which can now be handled by the expression system orders of magnitude more efficiently (from the point of view of both CPU and memory utilisation).

This is technically a breaking change, although if you just use expressions in the definition of ODEs it is likely that no changes are needed in your code.

New features in the expression system 🖋️

  • It is now possible to compute the symbolic derivative of an expression with respect to a parameter.
  • Numerical constants can now be defined in a symbolic way. The symbolic π constant is now available in the expression system, using this new framework.
  • The two-argument inverse tangent function atan2() has been added to the expression system.

The VSOP2013 solution 🪐

An implementation of the VSOP2013 analytical solution for the motion of the planets of the Solar System has been added to the expression system. This means that it is now possible to formulate differential equations containing the positions/velocities of the planets of the Solar System as functions of time.

Improved support for PPC64 💻

Thanks to the generosity of OSU's Open Source Lab, who provided remote access to a PowerPC workstation, heyoka now features much better support for 64-bit PowerPC processors. In particular, heyoka is now able to take advantage of the hardware-accelerated quadruple-precision arithmetic capabilities of recent PowerPC processors.

Other changes ☑️

  • Performance improvements to event detection.
  • Various fixes and improvements to the build system.
  • Fix a corner-case issue in the implementation of the kepE() function.

Full changelog

As usual, the full changelog is available here:

https://bluescarni.github.io/heyoka/changelog.html