arb
arb copied to clipboard
Elementary functions worklist
Things to do in the future:
- Move all elementary function internals to a separate module since it's a lot of code that doesn't need to be visible in arb.h
- Right now the call sequence to dispatch to different algorithms is a bit of labyrinth. It would make sense to clean this up and have good interfaces for all algorithms (not restricted to an arf_t argument, no implicit restrictions like |x| < 1) for easy comparison
- Much stronger test code
- Better Taylor series code for small arguments
- Very carefully benchmark different combinations of precision and argument
- Optimize memory usage
- Maybe make caching/lookup table limits configurable at runtime
- Add high-precision rectangular splitting code for log and atan and use with direct argument reduction at appropriate precisions instead of Newton iteration
- When caching multiple logarithms/arctangents, we compute log(2) and pi as a byproduct. We could then update the cached values of those constants
- Optimize non-primary functions (asin, sinh, ...)
- Optimize nth roots
- Optimize for low precision (1-2 words)
- Deduplicate binary splitting code
- Add fmpq versions
- Optimize roots of unity
- Maybe reduce the precision of the lookup tables since the cutoffs for all functions are much lower than 4608 bits now
- Look into parallelizing parts that remain serial
- Optimize pi computation
- Add functions for jets of elementary functions
- Try a hybrid RS+BB algorithm (one or two BB steps followed by RS)