Average Error: 0.0 → 0.1
Time: 2.2s
Precision: 64
\[x - \frac{y}{1 + \frac{x \cdot y}{2}}\]
\[x - \frac{y}{1 + \frac{x}{\frac{2}{y}}}\]
x - \frac{y}{1 + \frac{x \cdot y}{2}}
x - \frac{y}{1 + \frac{x}{\frac{2}{y}}}
double f(double x, double y) {
        double r232515 = x;
        double r232516 = y;
        double r232517 = 1.0;
        double r232518 = r232515 * r232516;
        double r232519 = 2.0;
        double r232520 = r232518 / r232519;
        double r232521 = r232517 + r232520;
        double r232522 = r232516 / r232521;
        double r232523 = r232515 - r232522;
        return r232523;
}

double f(double x, double y) {
        double r232524 = x;
        double r232525 = y;
        double r232526 = 1.0;
        double r232527 = 2.0;
        double r232528 = r232527 / r232525;
        double r232529 = r232524 / r232528;
        double r232530 = r232526 + r232529;
        double r232531 = r232525 / r232530;
        double r232532 = r232524 - r232531;
        return r232532;
}

Error

Bits error versus x

Bits error versus y

Try it out

Your Program's Arguments

Results

Enter valid numbers for all inputs

Derivation

  1. Initial program 0.0

    \[x - \frac{y}{1 + \frac{x \cdot y}{2}}\]
  2. Using strategy rm
  3. Applied associate-/l*0.1

    \[\leadsto x - \frac{y}{1 + \color{blue}{\frac{x}{\frac{2}{y}}}}\]
  4. Final simplification0.1

    \[\leadsto x - \frac{y}{1 + \frac{x}{\frac{2}{y}}}\]

Reproduce

herbie shell --seed 2020025 +o rules:numerics
(FPCore (x y)
  :name "Data.Number.Erf:$cinvnormcdf from erf-2.0.0.0, B"
  :precision binary64
  (- x (/ y (+ 1 (/ (* x y) 2)))))