Average Error: 59.7 → 24.0
Time: 9.0s
Precision: binary64
\[\left(\left(e^{x}\right) \bmod \left(\sqrt{\cos x}\right)\right) \cdot e^{-x}\]
\[\begin{array}{l} \mathbf{if}\;x \leq -2.24907974905854 \cdot 10^{-310}:\\ \;\;\;\;1\\ \mathbf{else}:\\ \;\;\;\;0\\ \end{array}\]
\left(\left(e^{x}\right) \bmod \left(\sqrt{\cos x}\right)\right) \cdot e^{-x}
\begin{array}{l}
\mathbf{if}\;x \leq -2.24907974905854 \cdot 10^{-310}:\\
\;\;\;\;1\\

\mathbf{else}:\\
\;\;\;\;0\\

\end{array}
(FPCore (x) :precision binary64 (* (fmod (exp x) (sqrt (cos x))) (exp (- x))))
(FPCore (x) :precision binary64 (if (<= x -2.24907974905854e-310) 1.0 0.0))
double code(double x) {
	return fmod(exp(x), sqrt(cos(x))) * exp(-x);
}
double code(double x) {
	double tmp;
	if (x <= -2.24907974905854e-310) {
		tmp = 1.0;
	} else {
		tmp = 0.0;
	}
	return tmp;
}

Error

Bits error versus x

Derivation

  1. Split input into 2 regimes
  2. if x < -2.249079749058544e-310

    1. Initial program 0

      \[1\]

    if -2.249079749058544e-310 < x

    1. Initial program 40.8

      \[0\]
  3. Recombined 2 regimes into one program.
  4. Final simplification24.0

    \[\leadsto \begin{array}{l} \mathbf{if}\;x \leq -2.24907974905854 \cdot 10^{-310}:\\ \;\;\;\;1\\ \mathbf{else}:\\ \;\;\;\;0\\ \end{array}\]

Alternatives

Reproduce

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