Average Error: 59.9 → 60.0
Time: 17.8s
Precision: binary64
\[\left(\left(e^{x}\right) \bmod \left(\sqrt{\cos x}\right)\right) \cdot e^{-x}\]
\[e^{\log \left(\left(e^{x}\right) \bmod \left(1 - \left(x \cdot x\right) \cdot 0.25\right)\right) - x}\]
\left(\left(e^{x}\right) \bmod \left(\sqrt{\cos x}\right)\right) \cdot e^{-x}
e^{\log \left(\left(e^{x}\right) \bmod \left(1 - \left(x \cdot x\right) \cdot 0.25\right)\right) - x}
(FPCore (x) :precision binary64 (* (fmod (exp x) (sqrt (cos x))) (exp (- x))))
(FPCore (x)
 :precision binary64
 (exp (- (log (fmod (exp x) (- 1.0 (* (* x x) 0.25)))) x)))
double code(double x) {
	return fmod(exp(x), sqrt(cos(x))) * exp(-x);
}
double code(double x) {
	return exp(log(fmod(exp(x), (1.0 - ((x * x) * 0.25)))) - x);
}

Error

Bits error versus x

Derivation

  1. Initial program 59.9

    \[\left(\left(e^{x}\right) \bmod \left(\sqrt{\cos x}\right)\right) \cdot e^{-x}\]
  2. Simplified59.9

    \[\leadsto \color{blue}{\frac{\left(\left(e^{x}\right) \bmod \left(\sqrt{\cos x}\right)\right)}{e^{x}}}\]
  3. Taylor expanded around 0 60.0

    \[\leadsto \frac{\left(\left(e^{x}\right) \bmod \color{blue}{\left(1 - 0.25 \cdot {x}^{2}\right)}\right)}{e^{x}}\]
  4. Simplified60.0

    \[\leadsto \frac{\left(\left(e^{x}\right) \bmod \color{blue}{\left(1 - \left(x \cdot x\right) \cdot 0.25\right)}\right)}{e^{x}}\]
  5. Using strategy rm
  6. Applied add-exp-log_binary64_79860.0

    \[\leadsto \frac{\color{blue}{e^{\log \left(\left(e^{x}\right) \bmod \left(1 - \left(x \cdot x\right) \cdot 0.25\right)\right)}}}{e^{x}}\]
  7. Applied div-exp_binary64_81160.0

    \[\leadsto \color{blue}{e^{\log \left(\left(e^{x}\right) \bmod \left(1 - \left(x \cdot x\right) \cdot 0.25\right)\right) - x}}\]
  8. Final simplification60.0

    \[\leadsto e^{\log \left(\left(e^{x}\right) \bmod \left(1 - \left(x \cdot x\right) \cdot 0.25\right)\right) - x}\]

Reproduce

herbie shell --seed 2021007 
(FPCore (x)
  :name "expfmod"
  :precision binary64
  (* (fmod (exp x) (sqrt (cos x))) (exp (- x))))