arb icon indicating copy to clipboard operation
arb copied to clipboard

Elementary functions worklist

Open fredrik-johansson opened this issue 3 years ago • 0 comments

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)

fredrik-johansson avatar Jun 26 '22 13:06 fredrik-johansson