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

Implement Exponential Module #4

Open
7 of 14 tasks
Rinzii opened this issue Mar 4, 2024 · 3 comments
Open
7 of 14 tasks

Implement Exponential Module #4

Rinzii opened this issue Mar 4, 2024 · 3 comments
Assignees
Labels
documentation Improvements or additions to documentation enhancement New feature or request tough issue This issue is exceptionally difficult to be handled while meeting the criterion of the library

Comments

@Rinzii
Copy link
Owner

Rinzii commented Mar 4, 2024

The exponential module currently has the following functions that need implementation or work done.

TODO:

Implement:

  • exp
  • exp2
  • expm1
  • log
  • log1p
  • log2
  • log10

Document:

  • exp
  • exp2
  • expm1
  • log
  • log1p
  • log2
  • log10

NOTES:

None currently.

@Rinzii Rinzii added documentation Improvements or additions to documentation enhancement New feature or request labels Mar 4, 2024
@Rinzii Rinzii self-assigned this Mar 4, 2024
@Rinzii Rinzii added this to the Road to v1.0.0 milestone Mar 4, 2024
@Rinzii
Copy link
Owner Author

Rinzii commented Mar 9, 2024

Currently have log and log2 working with high speeds and outputting values inline with the standard variants. Next target is going to be implementing exp as it will likely be extremely useful for other functions down the line.

Other items on the agenda include finishing an implementation of log2 for specifically floats and better documenting the internal implementations of log and log2 to be more approachable for those who are not necessarily experts in floating point bit manipulation.

Also, for the time being the log and log2 implementations use a lot of __builtin_bit_cast which does work with C++17 across most major compilers, but unfortunately requires a pretty modern compiler. I'd like to implement other fallbacks that don't rely on __builtin_bit_cast, but unfortunately this will require a lot more research into the topics as without the ability to cast bits getting fast and accurate implementations is somewhat hard.

@Rinzii Rinzii added the tough issue This issue is exceptionally difficult to be handled while meeting the criterion of the library label Mar 24, 2024
@Rinzii
Copy link
Owner Author

Rinzii commented Apr 7, 2024

Progress has been slow, but promising. The biggest concern currently is sometimes I get instances where I am extremely close to the same degree of precision as the standard, but when dealing in situations where extreme precision is required. Some areas I am off of the standard by an extremely tiny amount, but enough to notice. Generally, this appears to occur when mixing functions together along with high precision mathematical constants. I will need to do more research into the issue at a later date, but for now I will consider it acceptable. Either way, I’m going to begin pushing further into implementation for exp2.

@Rinzii
Copy link
Owner Author

Rinzii commented May 26, 2024

Currently putting the remaining functions for the exponential module onto the back burner and going to refocus my efforts to implementing more common functions in .

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
documentation Improvements or additions to documentation enhancement New feature or request tough issue This issue is exceptionally difficult to be handled while meeting the criterion of the library
Projects
None yet
Development

No branches or pull requests

1 participant