Average Error: 9.5 → 0.1
Time: 19.9s
Precision: 64
\[\frac{x}{y} + \frac{2 + \left(z \cdot 2\right) \cdot \left(1 - t\right)}{t \cdot z}\]
\[\left(\left(\frac{2}{z \cdot t} + \frac{x}{y}\right) + \frac{2}{t}\right) - 2\]
\frac{x}{y} + \frac{2 + \left(z \cdot 2\right) \cdot \left(1 - t\right)}{t \cdot z}
\left(\left(\frac{2}{z \cdot t} + \frac{x}{y}\right) + \frac{2}{t}\right) - 2
double f(double x, double y, double z, double t) {
        double r31297394 = x;
        double r31297395 = y;
        double r31297396 = r31297394 / r31297395;
        double r31297397 = 2.0;
        double r31297398 = z;
        double r31297399 = r31297398 * r31297397;
        double r31297400 = 1.0;
        double r31297401 = t;
        double r31297402 = r31297400 - r31297401;
        double r31297403 = r31297399 * r31297402;
        double r31297404 = r31297397 + r31297403;
        double r31297405 = r31297401 * r31297398;
        double r31297406 = r31297404 / r31297405;
        double r31297407 = r31297396 + r31297406;
        return r31297407;
}

double f(double x, double y, double z, double t) {
        double r31297408 = 2.0;
        double r31297409 = z;
        double r31297410 = t;
        double r31297411 = r31297409 * r31297410;
        double r31297412 = r31297408 / r31297411;
        double r31297413 = x;
        double r31297414 = y;
        double r31297415 = r31297413 / r31297414;
        double r31297416 = r31297412 + r31297415;
        double r31297417 = r31297408 / r31297410;
        double r31297418 = r31297416 + r31297417;
        double r31297419 = r31297418 - r31297408;
        return r31297419;
}

Error

Bits error versus x

Bits error versus y

Bits error versus z

Bits error versus t

Try it out

Your Program's Arguments

Results

Enter valid numbers for all inputs

Target

Original9.5
Target0.1
Herbie0.1
\[\frac{\frac{2}{z} + 2}{t} - \left(2 - \frac{x}{y}\right)\]

Derivation

  1. Initial program 9.5

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

    \[\leadsto \color{blue}{\mathsf{fma}\left(\frac{2}{t}, \frac{\mathsf{fma}\left(z, 1, 1\right)}{z}, \frac{x}{y}\right) - 2}\]
  3. Taylor expanded around 0 0.1

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

    \[\leadsto \color{blue}{\left(\left(\frac{x}{y} + \frac{\frac{2}{t}}{z}\right) + \frac{2}{t}\right)} - 2\]
  5. Using strategy rm
  6. Applied div-inv0.1

    \[\leadsto \left(\left(\frac{x}{y} + \frac{\color{blue}{2 \cdot \frac{1}{t}}}{z}\right) + \frac{2}{t}\right) - 2\]
  7. Applied associate-/l*0.1

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

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

    \[\leadsto \left(\left(\frac{2}{z \cdot t} + \frac{x}{y}\right) + \frac{2}{t}\right) - 2\]

Reproduce

herbie shell --seed 2019169 +o rules:numerics
(FPCore (x y z t)
  :name "Data.HashTable.ST.Basic:computeOverhead from hashtables-1.2.0.2"

  :herbie-target
  (- (/ (+ (/ 2.0 z) 2.0) t) (- 2.0 (/ x y)))

  (+ (/ x y) (/ (+ 2.0 (* (* z 2.0) (- 1.0 t))) (* t z))))