Average Error: 9.4 → 0.1
Time: 3.5s
Precision: 64
\[\frac{x}{y} + \frac{2 + \left(z \cdot 2\right) \cdot \left(1 - t\right)}{t \cdot z}\]
\[\frac{x}{y} + \left(1 \cdot \frac{\frac{2}{z} + 2}{t} - 2\right)\]
\frac{x}{y} + \frac{2 + \left(z \cdot 2\right) \cdot \left(1 - t\right)}{t \cdot z}
\frac{x}{y} + \left(1 \cdot \frac{\frac{2}{z} + 2}{t} - 2\right)
double f(double x, double y, double z, double t) {
        double r905109 = x;
        double r905110 = y;
        double r905111 = r905109 / r905110;
        double r905112 = 2.0;
        double r905113 = z;
        double r905114 = r905113 * r905112;
        double r905115 = 1.0;
        double r905116 = t;
        double r905117 = r905115 - r905116;
        double r905118 = r905114 * r905117;
        double r905119 = r905112 + r905118;
        double r905120 = r905116 * r905113;
        double r905121 = r905119 / r905120;
        double r905122 = r905111 + r905121;
        return r905122;
}

double f(double x, double y, double z, double t) {
        double r905123 = x;
        double r905124 = y;
        double r905125 = r905123 / r905124;
        double r905126 = 1.0;
        double r905127 = 2.0;
        double r905128 = z;
        double r905129 = r905127 / r905128;
        double r905130 = r905129 + r905127;
        double r905131 = t;
        double r905132 = r905130 / r905131;
        double r905133 = r905126 * r905132;
        double r905134 = r905133 - r905127;
        double r905135 = r905125 + r905134;
        return r905135;
}

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.4
Target0.1
Herbie0.1
\[\frac{\frac{2}{z} + 2}{t} - \left(2 - \frac{x}{y}\right)\]

Derivation

  1. Initial program 9.4

    \[\frac{x}{y} + \frac{2 + \left(z \cdot 2\right) \cdot \left(1 - t\right)}{t \cdot z}\]
  2. Taylor expanded around 0 0.1

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

    \[\leadsto \frac{x}{y} + \color{blue}{\left(\frac{1}{t} \cdot \left(\frac{2}{z} + 2\right) - 2\right)}\]
  4. Using strategy rm
  5. Applied *-un-lft-identity0.1

    \[\leadsto \frac{x}{y} + \left(\frac{1}{\color{blue}{1 \cdot t}} \cdot \left(\frac{2}{z} + 2\right) - 2\right)\]
  6. Applied *-un-lft-identity0.1

    \[\leadsto \frac{x}{y} + \left(\frac{\color{blue}{1 \cdot 1}}{1 \cdot t} \cdot \left(\frac{2}{z} + 2\right) - 2\right)\]
  7. Applied times-frac0.1

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

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

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

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

Reproduce

herbie shell --seed 2020021 
(FPCore (x y z t)
  :name "Data.HashTable.ST.Basic:computeOverhead from hashtables-1.2.0.2"
  :precision binary64

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

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