Average Error: 3.1 → 0.0
Time: 16.6s
Precision: 64
\[x + \frac{y}{1.1283791670955126 \cdot e^{z} - x \cdot y}\]
\[x + \frac{1}{\mathsf{fma}\left(1.1283791670955126, \frac{e^{z}}{y}, -x\right)}\]
x + \frac{y}{1.1283791670955126 \cdot e^{z} - x \cdot y}
x + \frac{1}{\mathsf{fma}\left(1.1283791670955126, \frac{e^{z}}{y}, -x\right)}
double f(double x, double y, double z) {
        double r17986774 = x;
        double r17986775 = y;
        double r17986776 = 1.1283791670955126;
        double r17986777 = z;
        double r17986778 = exp(r17986777);
        double r17986779 = r17986776 * r17986778;
        double r17986780 = r17986774 * r17986775;
        double r17986781 = r17986779 - r17986780;
        double r17986782 = r17986775 / r17986781;
        double r17986783 = r17986774 + r17986782;
        return r17986783;
}

double f(double x, double y, double z) {
        double r17986784 = x;
        double r17986785 = 1.0;
        double r17986786 = 1.1283791670955126;
        double r17986787 = z;
        double r17986788 = exp(r17986787);
        double r17986789 = y;
        double r17986790 = r17986788 / r17986789;
        double r17986791 = -r17986784;
        double r17986792 = fma(r17986786, r17986790, r17986791);
        double r17986793 = r17986785 / r17986792;
        double r17986794 = r17986784 + r17986793;
        return r17986794;
}

Error

Bits error versus x

Bits error versus y

Bits error versus z

Target

Original3.1
Target0.0
Herbie0.0
\[x + \frac{1}{\frac{1.1283791670955126}{y} \cdot e^{z} - x}\]

Derivation

  1. Initial program 3.1

    \[x + \frac{y}{1.1283791670955126 \cdot e^{z} - x \cdot y}\]
  2. Using strategy rm
  3. Applied clear-num3.1

    \[\leadsto x + \color{blue}{\frac{1}{\frac{1.1283791670955126 \cdot e^{z} - x \cdot y}{y}}}\]
  4. Using strategy rm
  5. Applied div-sub3.1

    \[\leadsto x + \frac{1}{\color{blue}{\frac{1.1283791670955126 \cdot e^{z}}{y} - \frac{x \cdot y}{y}}}\]
  6. Simplified0.0

    \[\leadsto x + \frac{1}{\frac{1.1283791670955126 \cdot e^{z}}{y} - \color{blue}{x}}\]
  7. Using strategy rm
  8. Applied *-un-lft-identity0.0

    \[\leadsto x + \frac{1}{\frac{1.1283791670955126 \cdot e^{z}}{\color{blue}{1 \cdot y}} - x}\]
  9. Applied times-frac0.0

    \[\leadsto x + \frac{1}{\color{blue}{\frac{1.1283791670955126}{1} \cdot \frac{e^{z}}{y}} - x}\]
  10. Applied fma-neg0.0

    \[\leadsto x + \frac{1}{\color{blue}{\mathsf{fma}\left(\frac{1.1283791670955126}{1}, \frac{e^{z}}{y}, -x\right)}}\]
  11. Final simplification0.0

    \[\leadsto x + \frac{1}{\mathsf{fma}\left(1.1283791670955126, \frac{e^{z}}{y}, -x\right)}\]

Reproduce

herbie shell --seed 2019162 +o rules:numerics
(FPCore (x y z)
  :name "Numeric.SpecFunctions:invErfc from math-functions-0.1.5.2, A"

  :herbie-target
  (+ x (/ 1 (- (* (/ 1.1283791670955126 y) (exp z)) x)))

  (+ x (/ y (- (* 1.1283791670955126 (exp z)) (* x y)))))