Average Error: 0.0 → 0.0
Time: 1.8s
Precision: 64
\[0.707110000000000016 \cdot \left(\frac{2.30753 + x \cdot 0.27061000000000002}{1 + x \cdot \left(0.992290000000000005 + x \cdot 0.044810000000000003\right)} - x\right)\]
\[\mathsf{fma}\left(-x, 0.707110000000000016, \frac{1}{\frac{\mathsf{fma}\left(x, \mathsf{fma}\left(0.044810000000000003, x, 0.992290000000000005\right), 1\right)}{0.707110000000000016 \cdot \mathsf{fma}\left(0.27061000000000002, x, 2.30753\right)}}\right)\]
0.707110000000000016 \cdot \left(\frac{2.30753 + x \cdot 0.27061000000000002}{1 + x \cdot \left(0.992290000000000005 + x \cdot 0.044810000000000003\right)} - x\right)
\mathsf{fma}\left(-x, 0.707110000000000016, \frac{1}{\frac{\mathsf{fma}\left(x, \mathsf{fma}\left(0.044810000000000003, x, 0.992290000000000005\right), 1\right)}{0.707110000000000016 \cdot \mathsf{fma}\left(0.27061000000000002, x, 2.30753\right)}}\right)
double f(double x) {
        double r109495 = 0.70711;
        double r109496 = 2.30753;
        double r109497 = x;
        double r109498 = 0.27061;
        double r109499 = r109497 * r109498;
        double r109500 = r109496 + r109499;
        double r109501 = 1.0;
        double r109502 = 0.99229;
        double r109503 = 0.04481;
        double r109504 = r109497 * r109503;
        double r109505 = r109502 + r109504;
        double r109506 = r109497 * r109505;
        double r109507 = r109501 + r109506;
        double r109508 = r109500 / r109507;
        double r109509 = r109508 - r109497;
        double r109510 = r109495 * r109509;
        return r109510;
}

double f(double x) {
        double r109511 = x;
        double r109512 = -r109511;
        double r109513 = 0.70711;
        double r109514 = 1.0;
        double r109515 = 0.04481;
        double r109516 = 0.99229;
        double r109517 = fma(r109515, r109511, r109516);
        double r109518 = 1.0;
        double r109519 = fma(r109511, r109517, r109518);
        double r109520 = 0.27061;
        double r109521 = 2.30753;
        double r109522 = fma(r109520, r109511, r109521);
        double r109523 = r109513 * r109522;
        double r109524 = r109519 / r109523;
        double r109525 = r109514 / r109524;
        double r109526 = fma(r109512, r109513, r109525);
        return r109526;
}

Error

Bits error versus x

Derivation

  1. Initial program 0.0

    \[0.707110000000000016 \cdot \left(\frac{2.30753 + x \cdot 0.27061000000000002}{1 + x \cdot \left(0.992290000000000005 + x \cdot 0.044810000000000003\right)} - x\right)\]
  2. Simplified0.0

    \[\leadsto \color{blue}{\mathsf{fma}\left(-x, 0.707110000000000016, \frac{0.707110000000000016 \cdot \mathsf{fma}\left(0.27061000000000002, x, 2.30753\right)}{\mathsf{fma}\left(x, \mathsf{fma}\left(0.044810000000000003, x, 0.992290000000000005\right), 1\right)}\right)}\]
  3. Using strategy rm
  4. Applied clear-num0.0

    \[\leadsto \mathsf{fma}\left(-x, 0.707110000000000016, \color{blue}{\frac{1}{\frac{\mathsf{fma}\left(x, \mathsf{fma}\left(0.044810000000000003, x, 0.992290000000000005\right), 1\right)}{0.707110000000000016 \cdot \mathsf{fma}\left(0.27061000000000002, x, 2.30753\right)}}}\right)\]
  5. Final simplification0.0

    \[\leadsto \mathsf{fma}\left(-x, 0.707110000000000016, \frac{1}{\frac{\mathsf{fma}\left(x, \mathsf{fma}\left(0.044810000000000003, x, 0.992290000000000005\right), 1\right)}{0.707110000000000016 \cdot \mathsf{fma}\left(0.27061000000000002, x, 2.30753\right)}}\right)\]

Reproduce

herbie shell --seed 2020047 +o rules:numerics
(FPCore (x)
  :name "Numeric.SpecFunctions:invErfc from math-functions-0.1.5.2, B"
  :precision binary64
  (* 0.70711 (- (/ (+ 2.30753 (* x 0.27061)) (+ 1 (* x (+ 0.99229 (* x 0.04481))))) x)))