Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Extended (80-bit) precision (feature request) #16

Open
dietmarwo opened this issue Jun 18, 2021 · 3 comments
Open

Extended (80-bit) precision (feature request) #16

dietmarwo opened this issue Jun 18, 2021 · 3 comments

Comments

@dietmarwo
Copy link

Would be nice if Ascent could support 80-bit precision as
https://github.com/bluescarni/heyoka already does.

From https://arxiv.org/abs/2105.00800 :

"Although traditionally double
precision has been considered enough for high-precision applica-
tions in astrodynamics and celestial mechanics, in recent times our
understanding of the physics of the Solar System has progressed to
the point that the use of double-precision arithmetic can become the
limiting factor in achieving the desired level of accuracy"

There is an ongoing competition https://kelvins.esa.int/space-debris-the-origin/challenge/ where I think Ascent is a good alternative to Heyoka, but possibly requires high accuracy (30 years orbit propagation).

@stephenberry
Copy link
Member

Thanks for pointing out heyoka, it looks like a neat library.
There are a number of higher precision libraries (up to 128bit quad precision) that I don't think would be difficult to use with Ascent, but I haven't tried, and I'm not sure which one would be best to implement.

That is an interesting competition. I have run high order Taylor solvers (like heyoka) in the past and I can see their appeal for this problem, but I feel like a custom implicit solver would be a better approach for this kind of problem where the equations are all known.

If you try to tackle this problem with Ascent I would be happy to give feedback. Another option is looking into boost's odeint implicit solvers.

Do you have any idea of how heyoka implements 128bit floating point support?

@stephenberry
Copy link
Member

On clang and gcc you can you long double and it will be 80bit, on MSVC it is only 64bit

  • Note that you can't use the asc::Module class with higher precision, but for this problem I'd use state space representation anyway

@stephenberry
Copy link
Member

Ascent integrators are templated, so you should be able to use the real128 type in https://github.com/bluescarni/mppp (this is the library that heyoka uses)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants