Average Error: 6.4 → 1.8
Time: 11.1s
Precision: 64
\[x + \frac{\left(y - x\right) \cdot z}{t}\]
\[\begin{array}{l} \mathbf{if}\;z \le -1.47437460621894122515597907358401131123 \cdot 10^{-73}:\\ \;\;\;\;x - z \cdot \left(\frac{x}{t} - \frac{y}{t}\right)\\ \mathbf{else}:\\ \;\;\;\;x - \frac{z}{t} \cdot \left(x - y\right)\\ \end{array}\]
x + \frac{\left(y - x\right) \cdot z}{t}
\begin{array}{l}
\mathbf{if}\;z \le -1.47437460621894122515597907358401131123 \cdot 10^{-73}:\\
\;\;\;\;x - z \cdot \left(\frac{x}{t} - \frac{y}{t}\right)\\

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

\end{array}
double f(double x, double y, double z, double t) {
        double r330225 = x;
        double r330226 = y;
        double r330227 = r330226 - r330225;
        double r330228 = z;
        double r330229 = r330227 * r330228;
        double r330230 = t;
        double r330231 = r330229 / r330230;
        double r330232 = r330225 + r330231;
        return r330232;
}

double f(double x, double y, double z, double t) {
        double r330233 = z;
        double r330234 = -1.4743746062189412e-73;
        bool r330235 = r330233 <= r330234;
        double r330236 = x;
        double r330237 = t;
        double r330238 = r330236 / r330237;
        double r330239 = y;
        double r330240 = r330239 / r330237;
        double r330241 = r330238 - r330240;
        double r330242 = r330233 * r330241;
        double r330243 = r330236 - r330242;
        double r330244 = r330233 / r330237;
        double r330245 = r330236 - r330239;
        double r330246 = r330244 * r330245;
        double r330247 = r330236 - r330246;
        double r330248 = r330235 ? r330243 : r330247;
        return r330248;
}

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

Original6.4
Target1.9
Herbie1.8
\[\begin{array}{l} \mathbf{if}\;x \lt -9.025511195533004570453352523209034680317 \cdot 10^{-135}:\\ \;\;\;\;x - \frac{z}{t} \cdot \left(x - y\right)\\ \mathbf{elif}\;x \lt 4.275032163700714748507147332551979944314 \cdot 10^{-250}:\\ \;\;\;\;x + \frac{y - x}{t} \cdot z\\ \mathbf{else}:\\ \;\;\;\;x + \frac{y - x}{\frac{t}{z}}\\ \end{array}\]

Derivation

  1. Split input into 2 regimes
  2. if z < -1.4743746062189412e-73

    1. Initial program 11.2

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

      \[\leadsto \color{blue}{x - \frac{z}{t} \cdot \left(x - y\right)}\]
    3. Using strategy rm
    4. Applied div-inv2.8

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

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

      \[\leadsto x - z \cdot \color{blue}{\frac{x - y}{t}}\]
    7. Using strategy rm
    8. Applied div-sub2.1

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

    if -1.4743746062189412e-73 < z

    1. Initial program 4.8

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

      \[\leadsto \color{blue}{x - \frac{z}{t} \cdot \left(x - y\right)}\]
  3. Recombined 2 regimes into one program.
  4. Final simplification1.8

    \[\leadsto \begin{array}{l} \mathbf{if}\;z \le -1.47437460621894122515597907358401131123 \cdot 10^{-73}:\\ \;\;\;\;x - z \cdot \left(\frac{x}{t} - \frac{y}{t}\right)\\ \mathbf{else}:\\ \;\;\;\;x - \frac{z}{t} \cdot \left(x - y\right)\\ \end{array}\]

Reproduce

herbie shell --seed 2019179 
(FPCore (x y z t)
  :name "Numeric.Histogram:binBounds from Chart-1.5.3"

  :herbie-target
  (if (< x -9.025511195533005e-135) (- x (* (/ z t) (- x y))) (if (< x 4.275032163700715e-250) (+ x (* (/ (- y x) t) z)) (+ x (/ (- y x) (/ t z)))))

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