{"id":15144806,"url":"https://github.com/bluescarni/heyoka","last_synced_at":"2026-02-12T15:07:55.656Z","repository":{"id":37568923,"uuid":"276320038","full_name":"bluescarni/heyoka","owner":"bluescarni","description":"C++ library for ODE integration via Taylor's method and LLVM","archived":false,"fork":false,"pushed_at":"2026-01-25T10:33:27.000Z","size":649674,"stargazers_count":236,"open_issues_count":5,"forks_count":14,"subscribers_count":5,"default_branch":"master","last_synced_at":"2026-01-26T01:42:04.402Z","etag":null,"topics":["astrodynamics","astronomy","astrophysics","celestial-mechanics","cpp","cpp17","differential-equations","extended-precision","just-in-time","llvm","multiprecision","n-body","nbody","ode","ode-solver","simd"],"latest_commit_sha":null,"homepage":"https://bluescarni.github.io/heyoka/","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mpl-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/bluescarni.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"COPYING","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2020-07-01T08:22:45.000Z","updated_at":"2026-01-25T10:29:03.000Z","dependencies_parsed_at":"2023-11-02T12:27:16.880Z","dependency_job_id":"8570bbb7-f004-46ec-b804-a28007b578c0","html_url":"https://github.com/bluescarni/heyoka","commit_stats":{"total_commits":4092,"total_committers":4,"mean_commits":1023.0,"dds":0.03739002932551316,"last_synced_commit":"ab883307b43cc05f988f00ed103c4f030d1782aa"},"previous_names":[],"tags_count":49,"template":false,"template_full_name":null,"purl":"pkg:github/bluescarni/heyoka","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bluescarni%2Fheyoka","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bluescarni%2Fheyoka/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bluescarni%2Fheyoka/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bluescarni%2Fheyoka/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/bluescarni","download_url":"https://codeload.github.com/bluescarni/heyoka/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bluescarni%2Fheyoka/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29369506,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-12T08:51:36.827Z","status":"ssl_error","status_checked_at":"2026-02-12T08:51:26.849Z","response_time":55,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["astrodynamics","astronomy","astrophysics","celestial-mechanics","cpp","cpp17","differential-equations","extended-precision","just-in-time","llvm","multiprecision","n-body","nbody","ode","ode-solver","simd"],"created_at":"2024-09-26T11:00:55.105Z","updated_at":"2026-02-12T15:07:55.632Z","avatar_url":"https://github.com/bluescarni.png","language":"C++","funding_links":[],"categories":[],"sub_categories":[],"readme":"heyoka\n======\n\n[![Build Status](https://img.shields.io/circleci/project/github/bluescarni/heyoka/master.svg?style=for-the-badge)](https://circleci.com/gh/bluescarni/heyoka)\n[![Build Status](https://img.shields.io/github/actions/workflow/status/bluescarni/heyoka/gha_ci.yml?branch=master\u0026style=for-the-badge)](https://github.com/bluescarni/heyoka/actions?query=workflow%3A%22GitHub+CI%22)\n![language](https://img.shields.io/badge/language-C%2B%2B23-green.svg?style=for-the-badge)\n[![Code Coverage](https://img.shields.io/codecov/c/github/bluescarni/heyoka.svg?style=for-the-badge)](https://codecov.io/github/bluescarni/heyoka?branch=master)\n\n[![Anaconda-Server Badge](https://img.shields.io/conda/vn/conda-forge/heyoka.svg?style=for-the-badge)](https://anaconda.org/conda-forge/heyoka)\n\n\u003c!-- PROJECT LOGO --\u003e\n\u003cbr /\u003e\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"https://github.com/bluescarni/heyoka\"\u003e\n    \u003cimg src=\"doc/images/white_logo.png\" alt=\"Logo\" width=\"280\"\u003e\n  \u003c/a\u003e\n  \u003cp align=\"center\"\u003e\n    Modern Taylor's method via just-in-time compilation\n    \u003cbr /\u003e\n    \u003ca href=\"https://bluescarni.github.io/heyoka/index.html\"\u003e\u003cstrong\u003eExplore the docs »\u003c/strong\u003e\u003c/a\u003e\n    \u003cbr /\u003e\n    \u003cbr /\u003e\n    \u003ca href=\"https://github.com/bluescarni/heyoka/issues/new/choose\"\u003eReport bug\u003c/a\u003e\n    ·\n    \u003ca href=\"https://github.com/bluescarni/heyoka/issues/new/choose\"\u003eRequest feature\u003c/a\u003e\n    ·\n    \u003ca href=\"https://github.com/bluescarni/heyoka/discussions\"\u003eDiscuss\u003c/a\u003e\n  \u003c/p\u003e\n\u003c/p\u003e\n\nheyoka is a C++ library for the integration of ordinary differential equations\n(ODEs) via Taylor's method, based on automatic differentiation techniques and aggressive just-in-time\ncompilation via [LLVM](https://llvm.org/). Notable features include:\n\n* support for single-precision, double-precision, extended-precision (80-bit and 128-bit),\n  and arbitrary-precision floating-point types,\n* high-precision zero-cost dense output,\n* accurate and reliable event detection,\n* builtin support for analytical mechanics - bring your own Lagrangians/Hamiltonians\n  and let heyoka formulate and solve the equations of motion,\n* builtin support for operational Earth-orbiting spacecraft analysis, including frame\n  transformations, high-fidelity geopotential models, Earth Orientation Parameters (EOP),\n  atmospheric models, space weather effects, ephemeris-based third-body perturbations,\n* builtin support for high-order variational equations - compute not only the solution,\n  but also its partial derivatives,\n* builtin support for machine learning applications via neural network models,\n* the ability to maintain machine precision accuracy over\n  tens of billions of timesteps,\n* batch mode integration to harness the power of modern\n  [SIMD](https://en.wikipedia.org/wiki/SIMD) instruction sets\n  (including AVX/AVX2/AVX-512/Neon/VSX),\n* ensemble simulations and automatic parallelisation.\n\nIf you prefer using Python rather than C++, heyoka can be used from Python via\n[heyoka.py](https://github.com/bluescarni/heyoka.py), its Python bindings.\n\nIf you are using heyoka as part of your research, teaching, or other activities, we would be grateful if you could star\nthe repository and/or cite our work. For citation purposes, you can use the following BibTex entry, which refers\nto the heyoka paper ([arXiv preprint](https://arxiv.org/abs/2105.00800)):\n\n```bibtex\n@article{10.1093/mnras/stab1032,\n    author = {Biscani, Francesco and Izzo, Dario},\n    title = \"{Revisiting high-order Taylor methods for astrodynamics and celestial mechanics}\",\n    journal = {Monthly Notices of the Royal Astronomical Society},\n    volume = {504},\n    number = {2},\n    pages = {2614-2628},\n    year = {2021},\n    month = {04},\n    issn = {0035-8711},\n    doi = {10.1093/mnras/stab1032},\n    url = {https://doi.org/10.1093/mnras/stab1032},\n    eprint = {https://academic.oup.com/mnras/article-pdf/504/2/2614/37750349/stab1032.pdf}\n}\n```\n\nheyoka's novel event detection system is described in the following paper ([arXiv preprint](https://arxiv.org/abs/2204.09948)):\n\n```bibtex\n@article{10.1093/mnras/stac1092,\n    author = {Biscani, Francesco and Izzo, Dario},\n    title = \"{Reliable event detection for Taylor methods in astrodynamics}\",\n    journal = {Monthly Notices of the Royal Astronomical Society},\n    volume = {513},\n    number = {4},\n    pages = {4833-4844},\n    year = {2022},\n    month = {04},\n    issn = {0035-8711},\n    doi = {10.1093/mnras/stac1092},\n    url = {https://doi.org/10.1093/mnras/stac1092},\n    eprint = {https://academic.oup.com/mnras/article-pdf/513/4/4833/43796551/stac1092.pdf}\n}\n```\n\nQuick example\n-------------\n\nAs a simple example, here's how the ODE system of the\n[pendulum](https://en.wikipedia.org/wiki/Pendulum_(mathematics))\nis defined and numerically integrated\nin heyoka:\n\n```c++\n#include \u003ciostream\u003e\n\n#include \u003cheyoka/heyoka.hpp\u003e\n\nusing namespace heyoka;\n\nint main()\n{\n    // Create the symbolic variables x and v.\n    auto [x, v] = make_vars(\"x\", \"v\");\n\n    // Create the integrator object\n    // in double precision.\n    auto ta = taylor_adaptive\u003cdouble\u003e{// Definition of the ODE system:\n                                      // x' = v\n                                      // v' = -9.8 * sin(x)\n                                      {prime(x) = v, prime(v) = -9.8 * sin(x)},\n                                      // Initial conditions\n                                      // for x and v.\n                                      {0.05, 0.025}};\n\n    // Integrate for 10 time units.\n    ta.propagate_for(10.);\n\n    // Print the state vector.\n    std::cout \u003c\u003c \"x(10) = \" \u003c\u003c ta.get_state()[0] \u003c\u003c '\\n';\n    std::cout \u003c\u003c \"v(10) = \" \u003c\u003c ta.get_state()[1] \u003c\u003c '\\n';\n}\n```\n\nOutput:\n\n```console\nx(10) = 0.0487397\ny(10) = 0.0429423\n```\n\nDocumentation\n-------------\n\nThe full documentation can be found [here](https://bluescarni.github.io/heyoka/).\n\nAuthors\n-------\n\n* Francesco Biscani (European Space Agency)\n* Dario Izzo (European Space Agency)\n\nLicense\n-------\n\nheyoka is released under the [MPL-2.0](https://www.mozilla.org/en-US/MPL/2.0/FAQ/)\nlicense.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbluescarni%2Fheyoka","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fbluescarni%2Fheyoka","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbluescarni%2Fheyoka/lists"}