Average Error: 9.3 → 0.1
Time: 11.3s
Precision: 64
\[\frac{x}{y} + \frac{2 + \left(z \cdot 2\right) \cdot \left(1 - t\right)}{t \cdot z}\]
\[\begin{array}{l} \mathbf{if}\;z \le -141453706896209001594861152542654464 \lor \neg \left(z \le 21282048288.189067840576171875\right):\\ \;\;\;\;\frac{x}{y} + \left(\frac{{\left(\frac{2}{z}\right)}^{3} + {2}^{3}}{\left(2 \cdot \left(2 - \frac{2}{z}\right) + \frac{2}{z} \cdot \frac{2}{z}\right) \cdot t} - 2\right)\\ \mathbf{else}:\\ \;\;\;\;\frac{x}{y} + \frac{2 + \left(z \cdot 2\right) \cdot \left(1 - t\right)}{t \cdot z}\\ \end{array}\]
\frac{x}{y} + \frac{2 + \left(z \cdot 2\right) \cdot \left(1 - t\right)}{t \cdot z}
\begin{array}{l}
\mathbf{if}\;z \le -141453706896209001594861152542654464 \lor \neg \left(z \le 21282048288.189067840576171875\right):\\
\;\;\;\;\frac{x}{y} + \left(\frac{{\left(\frac{2}{z}\right)}^{3} + {2}^{3}}{\left(2 \cdot \left(2 - \frac{2}{z}\right) + \frac{2}{z} \cdot \frac{2}{z}\right) \cdot t} - 2\right)\\

\mathbf{else}:\\
\;\;\;\;\frac{x}{y} + \frac{2 + \left(z \cdot 2\right) \cdot \left(1 - t\right)}{t \cdot z}\\

\end{array}
double f(double x, double y, double z, double t) {
        double r547595 = x;
        double r547596 = y;
        double r547597 = r547595 / r547596;
        double r547598 = 2.0;
        double r547599 = z;
        double r547600 = r547599 * r547598;
        double r547601 = 1.0;
        double r547602 = t;
        double r547603 = r547601 - r547602;
        double r547604 = r547600 * r547603;
        double r547605 = r547598 + r547604;
        double r547606 = r547602 * r547599;
        double r547607 = r547605 / r547606;
        double r547608 = r547597 + r547607;
        return r547608;
}

double f(double x, double y, double z, double t) {
        double r547609 = z;
        double r547610 = -1.41453706896209e+35;
        bool r547611 = r547609 <= r547610;
        double r547612 = 21282048288.189068;
        bool r547613 = r547609 <= r547612;
        double r547614 = !r547613;
        bool r547615 = r547611 || r547614;
        double r547616 = x;
        double r547617 = y;
        double r547618 = r547616 / r547617;
        double r547619 = 2.0;
        double r547620 = r547619 / r547609;
        double r547621 = 3.0;
        double r547622 = pow(r547620, r547621);
        double r547623 = pow(r547619, r547621);
        double r547624 = r547622 + r547623;
        double r547625 = r547619 - r547620;
        double r547626 = r547619 * r547625;
        double r547627 = r547620 * r547620;
        double r547628 = r547626 + r547627;
        double r547629 = t;
        double r547630 = r547628 * r547629;
        double r547631 = r547624 / r547630;
        double r547632 = r547631 - r547619;
        double r547633 = r547618 + r547632;
        double r547634 = r547609 * r547619;
        double r547635 = 1.0;
        double r547636 = r547635 - r547629;
        double r547637 = r547634 * r547636;
        double r547638 = r547619 + r547637;
        double r547639 = r547629 * r547609;
        double r547640 = r547638 / r547639;
        double r547641 = r547618 + r547640;
        double r547642 = r547615 ? r547633 : r547641;
        return r547642;
}

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

Derivation

  1. Split input into 2 regimes
  2. if z < -1.41453706896209e+35 or 21282048288.189068 < z

    1. Initial program 17.5

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

      \[\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.0

      \[\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 flip3-+0.0

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

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

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

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

    if -1.41453706896209e+35 < z < 21282048288.189068

    1. Initial program 0.3

      \[\frac{x}{y} + \frac{2 + \left(z \cdot 2\right) \cdot \left(1 - t\right)}{t \cdot z}\]
  3. Recombined 2 regimes into one program.
  4. Final simplification0.1

    \[\leadsto \begin{array}{l} \mathbf{if}\;z \le -141453706896209001594861152542654464 \lor \neg \left(z \le 21282048288.189067840576171875\right):\\ \;\;\;\;\frac{x}{y} + \left(\frac{{\left(\frac{2}{z}\right)}^{3} + {2}^{3}}{\left(2 \cdot \left(2 - \frac{2}{z}\right) + \frac{2}{z} \cdot \frac{2}{z}\right) \cdot t} - 2\right)\\ \mathbf{else}:\\ \;\;\;\;\frac{x}{y} + \frac{2 + \left(z \cdot 2\right) \cdot \left(1 - t\right)}{t \cdot z}\\ \end{array}\]

Reproduce

herbie shell --seed 2019298 
(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))))