1Changelog
2=========
3
40.16.0 (2021-11-20)
5-------------------
6
7New
8~~~
9
10- **BREAKING**: add support for :ref:`continuous output <tut_c_output>`
11  to the ``propagate_for/until()`` functions
12  (`#216 <https://github.com/bluescarni/heyoka/pull/216>`__).
13  This is a :ref:`breaking change <bchanges_0_16_0>`.
14- Event detection is now available also in batch mode
15  (`#214 <https://github.com/bluescarni/heyoka/pull/214>`__).
16- Add a sum of squares primitive
17  (`#209 <https://github.com/bluescarni/heyoka/pull/209>`__).
18- Add new benchmarks and benchmark results to the documentation
19  (`#204 <https://github.com/bluescarni/heyoka/pull/204>`__).
20- Support LLVM 13
21  (`#201 <https://github.com/bluescarni/heyoka/pull/201>`__).
22
23Changes
24~~~~~~~
25
26- If ``propagate_grid()`` exits early in batch mode,
27  the missing values are now set to NaN instead of zero
28  (`#215 <https://github.com/bluescarni/heyoka/pull/215>`__).
29- Internal refactoring of the event detection code
30  (`#213 <https://github.com/bluescarni/heyoka/pull/213>`__).
31- During event detection, improve the performance of the
32  fast exclusion check via JIT compilation
33  (`#212 <https://github.com/bluescarni/heyoka/pull/212>`__).
34- Various internal simplifications in the implementation
35  of Taylor derivatives
36  (`#208 <https://github.com/bluescarni/heyoka/pull/208>`__).
37- Performance optimisations for ODE systems containing large summations
38  (`#203 <https://github.com/bluescarni/heyoka/pull/203>`__).
39- Performance optimisations in the construction of Taylor integrators
40  (`#203 <https://github.com/bluescarni/heyoka/pull/203>`__).
41- **BREAKING**: the ``pairwise_sum()`` function has been replaced
42  by a new function called ``sum()`` with similar semantics
43  (`#203 <https://github.com/bluescarni/heyoka/pull/203>`__).
44  This is a :ref:`breaking change <bchanges_0_16_0>`.
45
46Fix
47~~~
48
49- Fix various corner-case issues in the integrator classes
50  related to data aliasing
51  (`#217 <https://github.com/bluescarni/heyoka/pull/217>`__).
52- Fix incorrect counting of the number of steps when the
53  integration is interrupted by a terminal event
54  (`#216 <https://github.com/bluescarni/heyoka/pull/216>`__).
55
560.15.0 (2021-09-28)
57-------------------
58
59New
60~~~
61
62- Implement derivatives with respect to the parameters
63  (`#196 <https://github.com/bluescarni/heyoka/pull/196>`__).
64- Implement additional automatic simplifications in the
65  expression system
66  (`#195 <https://github.com/bluescarni/heyoka/pull/195>`__).
67- Add a way to define symbolic constants in the expression
68  system, and implement :math:`\pi` on top of it
69  (`#192 <https://github.com/bluescarni/heyoka/pull/192>`__).
70- Add a function to compute the size of an expression
71  (`#189 <https://github.com/bluescarni/heyoka/pull/189>`__).
72- Quadruple precision is now correctly supported on PPC64
73  (`#188 <https://github.com/bluescarni/heyoka/pull/188>`__).
74- Add an implementation of the VSOP2013 analytical solution
75  for the motion of the planets of the Solar System, usable
76  in the definition of differential equations
77  (`#186 <https://github.com/bluescarni/heyoka/pull/186>`__,
78  `#183 <https://github.com/bluescarni/heyoka/pull/183>`__,
79  `#180 <https://github.com/bluescarni/heyoka/pull/180>`__).
80- Add the two-argument inverse tangent function ``atan2()``
81  to the expression system
82  (`#182 <https://github.com/bluescarni/heyoka/pull/182>`__).
83- Implement additional automatic simplifications for sin/cos
84  (`#179 <https://github.com/bluescarni/heyoka/pull/179>`__).
85
86Changes
87~~~~~~~
88
89- Implement a fast exclusion check for event detection which
90  improves performance when no event triggers in a timestep
91  (`#198 <https://github.com/bluescarni/heyoka/pull/198>`__).
92- **BREAKING**: the function class now uses reference
93  semantics. This means that copy operations on
94  non-trivial expressions now result in shallow copies,
95  not deep copies. This is a :ref:`breaking change <bchanges_0_15_0>`
96  (`#192 <https://github.com/bluescarni/heyoka/pull/192>`__).
97- heyoka now depends on the `TBB <https://github.com/oneapi-src/oneTBB>`__ library
98  (`#186 <https://github.com/bluescarni/heyoka/pull/186>`__).
99
100Fix
101~~~
102
103- Don't force the use of static MSVC runtime when
104  compiling heyoka as a static library
105  (`#198 <https://github.com/bluescarni/heyoka/pull/198>`__).
106- Fix compilation as a static library
107  (`#195 <https://github.com/bluescarni/heyoka/pull/195>`__).
108- Various fixes to the PPC64 support
109  (`#188 <https://github.com/bluescarni/heyoka/pull/188>`__,
110  `#187 <https://github.com/bluescarni/heyoka/pull/187>`__).
111- Fix an issue in ``kepE()`` arising from an automatic simplification
112  that would lead to an invalid decomposition for zero eccentricity
113  (`#185 <https://github.com/bluescarni/heyoka/pull/185>`__).
114
1150.14.0 (2021-08-03)
116-------------------
117
118New
119~~~
120
121- The tolerance value is now stored in the integrator objects
122  (`#175 <https://github.com/bluescarni/heyoka/pull/175>`__).
123
124Changes
125~~~~~~~
126
127- Improve the heuristic for the automatic deduction
128  of the cooldown value for terminal events
129  (`#178 <https://github.com/bluescarni/heyoka/pull/178>`__).
130
131Fix
132~~~
133
134- Ensure that code generation in compact mode is platform-agnostic
135  and deterministic across executions
136  (`#176 <https://github.com/bluescarni/heyoka/pull/176>`__).
137
1380.12.0 (2021-07-21)
139-------------------
140
141New
142~~~
143
144- Add support for 64-bit PowerPC processors
145  (`#171 <https://github.com/bluescarni/heyoka/pull/171>`__).
146- Add support for 64-bit ARM processors
147  (`#167 <https://github.com/bluescarni/heyoka/pull/167>`__).
148- Implement serialisation for the main classes via
149  Boost.Serialization
150  (`#163 <https://github.com/bluescarni/heyoka/pull/163>`__).
151
152Fix
153~~~
154
155- Fix a bug in the move assignment operator of ``llvm_state``
156  (`#163 <https://github.com/bluescarni/heyoka/pull/163>`__).
157
1580.11.0 (2021-07-06)
159-------------------
160
161New
162~~~
163
164- The ``time`` expression now supports symbolic
165  differentiation
166  (`#160 <https://github.com/bluescarni/heyoka/pull/160>`__).
167
168Changes
169~~~~~~~
170
171- Various performance optimisations for the creation
172  of large ODE systems
173  (`#152 <https://github.com/bluescarni/heyoka/pull/152>`__).
174
1750.10.1 (2021-07-02)
176-------------------
177
178Fix
179~~~
180
181- Parameters in event equations are now correctly counted
182  when inferring the total number of parameters in an ODE system
183  (`#154 <https://github.com/bluescarni/heyoka/pull/154>`__).
184
1850.10.0 (2021-06-09)
186-------------------
187
188New
189~~~
190
191- The callback that can be passed to the ``propagate_*()`` functions
192  can now be used to stop the integration
193  (`#149 <https://github.com/bluescarni/heyoka/pull/149>`__).
194- Add a pairwise product primitive
195  (`#147 <https://github.com/bluescarni/heyoka/pull/147>`__).
196
197Changes
198~~~~~~~
199
200- **BREAKING**: a :ref:`breaking change <bchanges_0_10_0>`
201  in the ``propagate_*()`` callback API
202  (`#149 <https://github.com/bluescarni/heyoka/pull/149>`__).
203- Implement additional automatic simplifications in the expression system
204  (`#148 <https://github.com/bluescarni/heyoka/pull/148>`__).
205- Division by zero in the expression system now raises an error
206  (`#148 <https://github.com/bluescarni/heyoka/pull/148>`__).
207
2080.9.0 (2021-05-25)
209------------------
210
211New
212~~~
213
214- Add time polynomials to the expression system
215  (`#144 <https://github.com/bluescarni/heyoka/pull/144>`__).
216- Add the inverse of Kepler's elliptic equation to the expression
217  system
218  (`#138 <https://github.com/bluescarni/heyoka/pull/138>`__).
219- Add an LLVM-based vectorised solver for Kepler's equation
220  (`#136 <https://github.com/bluescarni/heyoka/pull/136>`__).
221- Add an LLVM ``while`` loop function
222  (`#135 <https://github.com/bluescarni/heyoka/pull/135>`__).
223
224Changes
225~~~~~~~
226
227- Performance improvements for event detection in the linear
228  and quadratic cases
229  (`#145 <https://github.com/bluescarni/heyoka/pull/145>`__).
230- Several functions used for event detection are now
231  compiled just-in-time, rather than being implemented
232  in C++
233  (`#142 <https://github.com/bluescarni/heyoka/pull/142>`__).
234- Cleanup unused and undocumented functions
235  (`#134 <https://github.com/bluescarni/heyoka/pull/134>`__).
236- Small performance optimisations
237  (`#133 <https://github.com/bluescarni/heyoka/pull/133>`__).
238- Remove the ``binary_operator`` node type in the expression
239  system and implement binary arithmetic using the ``func`` node
240  type instead
241  (`#132 <https://github.com/bluescarni/heyoka/pull/132>`__). This
242  is an internal change that does not affect the integrators' API.
243
2440.8.0 (2021-04-28)
245------------------
246
247New
248~~~
249
250- The ``propagate_for/until()`` functions now support writing
251  the Taylor coefficients at the end of each timestep
252  (`#131 <https://github.com/bluescarni/heyoka/pull/131>`__).
253
254Changes
255~~~~~~~
256
257- **BREAKING**: various :ref:`breaking changes <bchanges_0_8_0>`
258  in the event detection API
259  (`#131 <https://github.com/bluescarni/heyoka/pull/131>`__).
260- Improvements to the stream operator of ``taylor_outcome``
261  (`#131 <https://github.com/bluescarni/heyoka/pull/131>`__).
262
263Fix
264~~~
265
266- Don't set the multiroot ``mr`` flag to ``true`` if
267  a terminal event has a cooldown of zero
268  (`#131 <https://github.com/bluescarni/heyoka/pull/131>`__).
269
2700.7.0 (2021-04-21)
271------------------
272
273New
274~~~
275
276- Support LLVM 12
277  (`#128 <https://github.com/bluescarni/heyoka/pull/128>`__).
278- The ``propagate_*()`` functions now accept an optional
279  ``max_delta_t`` argument to limit the size of a timestep,
280  and an optional ``callback`` argument that will be invoked
281  at the end of each timestep
282  (`#127 <https://github.com/bluescarni/heyoka/pull/127>`__).
283- The time coordinate in the Taylor integrator classes
284  is now represented internally in double-length format. This change
285  greatly reduces the error in long-term integrations of
286  non-autonomous systems and improves the time accuracy
287  of the predicted state
288  (`#126 <https://github.com/bluescarni/heyoka/pull/126>`__).
289- ``update_d_output()`` can now be called with a relative
290  (rather than absolute) time argument
291  (`#126 <https://github.com/bluescarni/heyoka/pull/126>`__).
292
293Changes
294~~~~~~~
295
296- Performance improvements for the event detection system
297  (`#129 <https://github.com/bluescarni/heyoka/pull/129>`__).
298- **BREAKING**: the time coordinates in batch integrators
299  cannot be directly modified any more, and the new
300  ``set_time()`` function must be used instead
301  (`#126 <https://github.com/bluescarni/heyoka/pull/126>`__).
302
303Fix
304~~~
305
306- Fix an issue in the automatic deduction of the cooldown time
307  for terminal events
308  (`#126 <https://github.com/bluescarni/heyoka/pull/126>`__).
309
3100.6.1 (2021-04-08)
311------------------
312
313Changes
314~~~~~~~
315
316- The event equations are now taken into account in the
317  determination of the adaptive timestep
318  (`#124 <https://github.com/bluescarni/heyoka/pull/124>`__).
319
320Fix
321~~~
322
323- Fix an initialisation order issue in the event detection code
324  (`#124 <https://github.com/bluescarni/heyoka/pull/124>`__).
325- Fix an assertion misfiring in the event detection function
326  (`#123 <https://github.com/bluescarni/heyoka/pull/123>`__).
327
3280.6.0 (2021-04-06)
329------------------
330
331New
332~~~
333
334- Implement ``propagate_grid()`` for the batch integrator
335  (`#119 <https://github.com/bluescarni/heyoka/pull/119>`__).
336- Start tracking code coverage
337  (`#115 <https://github.com/bluescarni/heyoka/pull/115>`__).
338- Initial version of the event detection system
339  (`#107 <https://github.com/bluescarni/heyoka/pull/107>`__).
340- Add a tutorial chapter for batch mode
341  (`#106 <https://github.com/bluescarni/heyoka/pull/106>`__).
342- Add a couple of utilities to detect the presence of the time
343  function in an expression
344  (`#105 <https://github.com/bluescarni/heyoka/pull/105>`__).
345- Provide the ability to compute the jet of derivatives
346  of arbitrary functions of the state variables
347  (`#104 <https://github.com/bluescarni/heyoka/pull/104>`__).
348- Speed-up the deep copy of just-in-time-compiled
349  objects such as ``llvm_state`` and ``taylor_adaptive``
350  (`#102 <https://github.com/bluescarni/heyoka/pull/102>`__).
351
352Changes
353~~~~~~~
354
355- **BREAKING**: the ``propagate_grid()`` function now requires
356  monotonically-ordered grid points
357  (`#114 <https://github.com/bluescarni/heyoka/pull/114>`__).
358- Change the screen output format for ``taylor_outcome``
359  (`#106 <https://github.com/bluescarni/heyoka/pull/106>`__).
360
361Fix
362~~~
363
364- In the batch integrator class, the outcomes in the result vectors
365  are now initialised to ``taylor_outcome::success`` instead of
366  meaningless values
367  (`#102 <https://github.com/bluescarni/heyoka/pull/102>`__).
368
3690.5.0 (2021-02-25)
370------------------
371
372New
373~~~
374
375- Implement various missing symbolic derivatives
376  (`#101 <https://github.com/bluescarni/heyoka/pull/101>`__,
377  `#100 <https://github.com/bluescarni/heyoka/pull/100>`__).
378- Implement additional automatic simplifications
379  in the expression system
380  (`#100 <https://github.com/bluescarni/heyoka/pull/100>`__).
381- Implement ``extract()`` for the ``func`` class, in order
382  to retrieve a pointer to the type-erased inner object
383  (`#100 <https://github.com/bluescarni/heyoka/pull/100>`__).
384
3850.4.0 (2021-02-20)
386------------------
387
388New
389~~~
390
391- Introduce a dedicated negation operator in the
392  expression system
393  (`#99 <https://github.com/bluescarni/heyoka/pull/99>`__).
394- Implement various new automatic simplifications
395  in the expression system, and introduce ``powi()`` as
396  an alternative exponentiation function for natural exponents
397  (`#98 <https://github.com/bluescarni/heyoka/pull/98>`__).
398- Implement propagation over a time grid
399  (`#95 <https://github.com/bluescarni/heyoka/pull/95>`__).
400- Implement support for dense output
401  (`#92 <https://github.com/bluescarni/heyoka/pull/92>`__).
402- Add the ability to output the Taylor coefficients
403  when invoking the single-step functions in the
404  integrator classes
405  (`#91 <https://github.com/bluescarni/heyoka/pull/91>`__).
406
407Fix
408~~~
409
410- Avoid division by zero in certain corner cases
411  when using ``pow()`` with small natural exponents
412  (`#98 <https://github.com/bluescarni/heyoka/pull/98>`__).
413
4140.3.0 (2021-02-11)
415------------------
416
417New
418~~~
419
420- Implement the error function
421  (`#89 <https://github.com/bluescarni/heyoka/pull/89>`__).
422- Implement the standard logistic function
423  (`#87 <https://github.com/bluescarni/heyoka/pull/87>`__).
424- Implement the basic hyperbolic functions and their
425  inverse counterparts
426  (`#84 <https://github.com/bluescarni/heyoka/pull/84>`__).
427- Implement the inverse trigonometric functions
428  (`#81 <https://github.com/bluescarni/heyoka/pull/81>`__).
429- The stream operator of functions can now be customised
430  more extensively
431  (`#78 <https://github.com/bluescarni/heyoka/pull/78>`__).
432- Add explicit support for non-autonomous systems
433  (`#77 <https://github.com/bluescarni/heyoka/pull/77>`__).
434- heyoka now has a logo
435  (`#73 <https://github.com/bluescarni/heyoka/pull/73>`__).
436
437Changes
438~~~~~~~
439
440- Small optimisations in the automatic differentiation
441  formulae
442  (`#83 <https://github.com/bluescarni/heyoka/pull/83>`__).
443- Improve common subexpression simplification in presence of
444  constants of different types
445  (`#82 <https://github.com/bluescarni/heyoka/pull/82>`__).
446- Update copyright dates
447  (`#79 <https://github.com/bluescarni/heyoka/pull/79>`__).
448- Avoid using a temporary file when extracting the
449  object code of a module
450  (`#79 <https://github.com/bluescarni/heyoka/pull/79>`__).
451
452Fix
453~~~
454
455- Ensure that ``pow(x ,0)`` always simplifies to 1,
456  rather than producing an expression with null exponent
457  (`#82 <https://github.com/bluescarni/heyoka/pull/82>`__).
458- Fix build issue with older Boost versions
459  (`#80 <https://github.com/bluescarni/heyoka/pull/80>`__).
460- Various build system and doc fixes/improvements
461  (`#88 <https://github.com/bluescarni/heyoka/pull/88>`__,
462  `#86 <https://github.com/bluescarni/heyoka/pull/86>`__,
463  `#85 <https://github.com/bluescarni/heyoka/pull/85>`__,
464  `#83 <https://github.com/bluescarni/heyoka/pull/83>`__,
465  `#82 <https://github.com/bluescarni/heyoka/pull/82>`__,
466  `#76 <https://github.com/bluescarni/heyoka/pull/76>`__,
467  `#74 <https://github.com/bluescarni/heyoka/pull/74>`__).
468
4690.2.0 (2021-01-13)
470------------------
471
472New
473~~~
474
475- Extend the Taylor decomposition machinery to work
476  on more general classes of functions, and add
477  ``tan()``
478  (`#71 <https://github.com/bluescarni/heyoka/pull/71>`__).
479- Implement support for runtime parameters
480  (`#68 <https://github.com/bluescarni/heyoka/pull/68>`__).
481- Initial tutorials and various documentation additions
482  (`#63 <https://github.com/bluescarni/heyoka/pull/63>`__).
483- Add a stream operator for the ``taylor_outcome`` enum
484  (`#63 <https://github.com/bluescarni/heyoka/pull/63>`__).
485
486Changes
487~~~~~~~
488
489- heyoka now depends publicly on the Boost headers
490  (`#68 <https://github.com/bluescarni/heyoka/pull/68>`__).
491
492Fix
493~~~
494
495- Fix potential name mangling issues in compact mode
496  (`#68 <https://github.com/bluescarni/heyoka/pull/68>`__).
497
4980.1.0 (2020-12-18)
499------------------
500
501Initial release.
502