Average Error: 0.0 → 0.0
Time: 40.0s
Precision: 64
\[e^{-\left(1 - x \cdot x\right)}\]
\[\sqrt{e^{(x \cdot x + -1)_*}} \cdot \sqrt{e^{(x \cdot x + -1)_*}}\]
double f(double x) {
        double r2794598 = 1.0;
        double r2794599 = x;
        double r2794600 = r2794599 * r2794599;
        double r2794601 = r2794598 - r2794600;
        double r2794602 = -r2794601;
        double r2794603 = exp(r2794602);
        return r2794603;
}

double f(double x) {
        double r2794604 = x;
        double r2794605 = -1.0;
        double r2794606 = fma(r2794604, r2794604, r2794605);
        double r2794607 = exp(r2794606);
        double r2794608 = sqrt(r2794607);
        double r2794609 = r2794608 * r2794608;
        return r2794609;
}

e^{-\left(1 - x \cdot x\right)}
\sqrt{e^{(x \cdot x + -1)_*}} \cdot \sqrt{e^{(x \cdot x + -1)_*}}

Error

Bits error versus x

Derivation

  1. Initial program 0.0

    \[e^{-\left(1 - x \cdot x\right)}\]
  2. Simplified0.0

    \[\leadsto \color{blue}{e^{(x \cdot x + -1)_*}}\]
  3. Using strategy rm
  4. Applied add-sqr-sqrt0.0

    \[\leadsto \color{blue}{\sqrt{e^{(x \cdot x + -1)_*}} \cdot \sqrt{e^{(x \cdot x + -1)_*}}}\]
  5. Final simplification0.0

    \[\leadsto \sqrt{e^{(x \cdot x + -1)_*}} \cdot \sqrt{e^{(x \cdot x + -1)_*}}\]

Reproduce

herbie shell --seed 2019102 +o rules:numerics
(FPCore (x)
  :name "exp neg sub"
  (exp (- (- 1 (* x x)))))