Average Error: 11.3 → 0.1
Time: 15.1s
Precision: 64
\[x - \frac{\left(y \cdot 2\right) \cdot z}{\left(z \cdot 2\right) \cdot z - y \cdot t}\]
\[x - \frac{1}{\mathsf{fma}\left(\frac{z}{y}, 1, -\frac{t}{z \cdot 2}\right)}\]
x - \frac{\left(y \cdot 2\right) \cdot z}{\left(z \cdot 2\right) \cdot z - y \cdot t}
x - \frac{1}{\mathsf{fma}\left(\frac{z}{y}, 1, -\frac{t}{z \cdot 2}\right)}
double f(double x, double y, double z, double t) {
        double r347080 = x;
        double r347081 = y;
        double r347082 = 2.0;
        double r347083 = r347081 * r347082;
        double r347084 = z;
        double r347085 = r347083 * r347084;
        double r347086 = r347084 * r347082;
        double r347087 = r347086 * r347084;
        double r347088 = t;
        double r347089 = r347081 * r347088;
        double r347090 = r347087 - r347089;
        double r347091 = r347085 / r347090;
        double r347092 = r347080 - r347091;
        return r347092;
}

double f(double x, double y, double z, double t) {
        double r347093 = x;
        double r347094 = 1.0;
        double r347095 = z;
        double r347096 = y;
        double r347097 = r347095 / r347096;
        double r347098 = t;
        double r347099 = 2.0;
        double r347100 = r347095 * r347099;
        double r347101 = r347098 / r347100;
        double r347102 = -r347101;
        double r347103 = fma(r347097, r347094, r347102);
        double r347104 = r347094 / r347103;
        double r347105 = r347093 - r347104;
        return r347105;
}

Error

Bits error versus x

Bits error versus y

Bits error versus z

Bits error versus t

Target

Original11.3
Target0.1
Herbie0.1
\[x - \frac{1}{\frac{z}{y} - \frac{\frac{t}{2}}{z}}\]

Derivation

  1. Initial program 11.3

    \[x - \frac{\left(y \cdot 2\right) \cdot z}{\left(z \cdot 2\right) \cdot z - y \cdot t}\]
  2. Using strategy rm
  3. Applied clear-num11.4

    \[\leadsto x - \color{blue}{\frac{1}{\frac{\left(z \cdot 2\right) \cdot z - y \cdot t}{\left(y \cdot 2\right) \cdot z}}}\]
  4. Simplified0.1

    \[\leadsto x - \frac{1}{\color{blue}{\mathsf{fma}\left(\frac{z}{y}, 1, -1 \cdot \frac{t}{z \cdot 2}\right)}}\]
  5. Final simplification0.1

    \[\leadsto x - \frac{1}{\mathsf{fma}\left(\frac{z}{y}, 1, -\frac{t}{z \cdot 2}\right)}\]

Reproduce

herbie shell --seed 2019326 +o rules:numerics
(FPCore (x y z t)
  :name "Numeric.AD.Rank1.Halley:findZero from ad-4.2.4"
  :precision binary64

  :herbie-target
  (- x (/ 1 (- (/ z y) (/ (/ t 2) z))))

  (- x (/ (* (* y 2) z) (- (* (* z 2) z) (* y t)))))