x + \left(y - x\right) \cdot \frac{z}{t}\begin{array}{l}
\mathbf{if}\;x \le -2.4756492378360466 \cdot 10^{-79} \lor \neg \left(x \le 2.8926516929355669 \cdot 10^{-174}\right):\\
\;\;\;\;x + \frac{y - x}{\frac{t}{z}}\\
\mathbf{else}:\\
\;\;\;\;x + \frac{1}{\sqrt[3]{t} \cdot \sqrt[3]{t}} \cdot \frac{y - x}{\frac{\sqrt[3]{t}}{z}}\\
\end{array}double f(double x, double y, double z, double t) {
double r659049 = x;
double r659050 = y;
double r659051 = r659050 - r659049;
double r659052 = z;
double r659053 = t;
double r659054 = r659052 / r659053;
double r659055 = r659051 * r659054;
double r659056 = r659049 + r659055;
return r659056;
}
double f(double x, double y, double z, double t) {
double r659057 = x;
double r659058 = -2.4756492378360466e-79;
bool r659059 = r659057 <= r659058;
double r659060 = 2.892651692935567e-174;
bool r659061 = r659057 <= r659060;
double r659062 = !r659061;
bool r659063 = r659059 || r659062;
double r659064 = y;
double r659065 = r659064 - r659057;
double r659066 = t;
double r659067 = z;
double r659068 = r659066 / r659067;
double r659069 = r659065 / r659068;
double r659070 = r659057 + r659069;
double r659071 = 1.0;
double r659072 = cbrt(r659066);
double r659073 = r659072 * r659072;
double r659074 = r659071 / r659073;
double r659075 = r659072 / r659067;
double r659076 = r659065 / r659075;
double r659077 = r659074 * r659076;
double r659078 = r659057 + r659077;
double r659079 = r659063 ? r659070 : r659078;
return r659079;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t
Results
| Original | 1.9 |
|---|---|
| Target | 1.9 |
| Herbie | 1.7 |
if x < -2.4756492378360466e-79 or 2.892651692935567e-174 < x Initial program 0.7
rmApplied associate-*r/6.9
rmApplied *-un-lft-identity6.9
Applied *-un-lft-identity6.9
Applied distribute-lft-out6.9
Simplified0.7
if -2.4756492378360466e-79 < x < 2.892651692935567e-174Initial program 4.6
rmApplied associate-*r/4.6
rmApplied *-un-lft-identity4.6
Applied *-un-lft-identity4.6
Applied distribute-lft-out4.6
Simplified4.5
rmApplied *-un-lft-identity4.5
Applied add-cube-cbrt5.2
Applied times-frac5.2
Applied *-un-lft-identity5.2
Applied times-frac3.9
Simplified3.9
Final simplification1.7
herbie shell --seed 2020046
(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.887) (+ 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))))