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