x + \left(y - x\right) \cdot \frac{z}{t}\begin{array}{l}
\mathbf{if}\;t \leq -52557646.20646281:\\
\;\;\;\;x + \left(y - x\right) \cdot \frac{z}{t}\\
\mathbf{elif}\;t \leq 2.0218493211776868 \cdot 10^{+54}:\\
\;\;\;\;x + \frac{\left(y - x\right) \cdot z}{t}\\
\mathbf{else}:\\
\;\;\;\;x + \frac{y - x}{\sqrt{t}} \cdot \frac{z}{\sqrt{t}}\\
\end{array}(FPCore (x y z t) :precision binary64 (+ x (* (- y x) (/ z t))))
(FPCore (x y z t)
:precision binary64
(if (<= t -52557646.20646281)
(+ x (* (- y x) (/ z t)))
(if (<= t 2.0218493211776868e+54)
(+ x (/ (* (- y x) z) t))
(+ x (* (/ (- y x) (sqrt t)) (/ z (sqrt t)))))))double code(double x, double y, double z, double t) {
return ((double) (x + ((double) (((double) (y - x)) * (z / t)))));
}
double code(double x, double y, double z, double t) {
double tmp;
if ((t <= -52557646.20646281)) {
tmp = ((double) (x + ((double) (((double) (y - x)) * (z / t)))));
} else {
double tmp_1;
if ((t <= 2.0218493211776868e+54)) {
tmp_1 = ((double) (x + (((double) (((double) (y - x)) * z)) / t)));
} else {
tmp_1 = ((double) (x + ((double) ((((double) (y - x)) / ((double) sqrt(t))) * (z / ((double) sqrt(t)))))));
}
tmp = tmp_1;
}
return tmp;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t
Results
| Original | 2.1 |
|---|---|
| Target | 2.3 |
| Herbie | 1.3 |
if t < -52557646.206462808Initial program 1.1
if -52557646.206462808 < t < 2.02184932117768678e54Initial program 3.3
rmApplied associate-*r/_binary641.7
if 2.02184932117768678e54 < t Initial program 1.1
rmApplied add-sqr-sqrt_binary641.2
Applied *-un-lft-identity_binary641.2
Applied times-frac_binary641.2
Applied associate-*r*_binary640.7
Simplified0.7
Final simplification1.3
herbie shell --seed 2020205
(FPCore (x y z t)
:name "Graphics.Rendering.Plot.Render.Plot.Axis:tickPosition from plot-0.2.3.4"
:precision binary64
:herbie-target
(if (< (* (- y x) (/ z t)) -1013646692435.8867) (+ x (/ (- y x) (/ t z))) (if (< (* (- y x) (/ z t)) -0.0) (+ x (/ (* (- y x) z) t)) (+ x (/ (- y x) (/ t z)))))
(+ x (* (- y x) (/ z t))))