The standard transcendental and root families, lazily implemented.
E.1 (constants)
|
+-- E.3 (exp/log/pow)
| |
| +-- E.4 (hyperbolic)
|
+-- E.6 (forward trig, hardest)
|
+-- E.5 (inverse trig, also needs E.2 for sqrt)
E.2 (sqrt + hypot) -- independent
Part of #873. Blocked by Phase D.
Scope
The standard transcendental and root families, lazily implemented.
Sub-issues
Phase E is broken into 6 family-grouped sub-issues to keep PRs review-sized:
Deliverables (per sub-issue)
sqrt,hypot(E.2)exp,log,exp2,log2,log10,expm1,log1p,pow(E.3)sin,cos,tan(E.6);asin,acos,atan,atan2(E.5)sinh,cosh,tanh,asinh,acosh,atanh(E.4)pi,e,ln2,ln10wired intonumeric_limits<elreal>(E.1)elastic/elreal/math/*.cpp(test scaffolding fromelastic/ereal/math/functions/is the natural starting point)Algorithmic notes
pi. Document the strategy (e.g., Payne-Hanek with on-demandpirefinement).numeric_limits<elreal>::pi()etc. should themselves returnelrealvalues (lazy streams ofpi), not pre-rounded doubles.Acceptance (Phase E as a whole)
exp(log(x)) ~= x,sin^2 + cos^2 ~= 1, ...)ereal::expetc. at matched precision targetsDependency graph