x + \frac{\left(y - x\right) \cdot z}{t}\begin{array}{l}
\mathbf{if}\;t \le -2409170190487766637167962488832:\\
\;\;\;\;x + \frac{\frac{y - x}{t}}{\frac{1}{z}}\\
\mathbf{elif}\;t \le 1.625406329571911990929648461559105916592 \cdot 10^{-217}:\\
\;\;\;\;x + \frac{1}{t} \cdot \left(\left(y - x\right) \cdot z\right)\\
\mathbf{else}:\\
\;\;\;\;x + \frac{y - x}{\sqrt[3]{t} \cdot \sqrt[3]{t}} \cdot \frac{z}{\sqrt[3]{t}}\\
\end{array}double f(double x, double y, double z, double t) {
double r580711 = x;
double r580712 = y;
double r580713 = r580712 - r580711;
double r580714 = z;
double r580715 = r580713 * r580714;
double r580716 = t;
double r580717 = r580715 / r580716;
double r580718 = r580711 + r580717;
return r580718;
}
double f(double x, double y, double z, double t) {
double r580719 = t;
double r580720 = -2.4091701904877666e+30;
bool r580721 = r580719 <= r580720;
double r580722 = x;
double r580723 = y;
double r580724 = r580723 - r580722;
double r580725 = r580724 / r580719;
double r580726 = 1.0;
double r580727 = z;
double r580728 = r580726 / r580727;
double r580729 = r580725 / r580728;
double r580730 = r580722 + r580729;
double r580731 = 1.625406329571912e-217;
bool r580732 = r580719 <= r580731;
double r580733 = r580726 / r580719;
double r580734 = r580724 * r580727;
double r580735 = r580733 * r580734;
double r580736 = r580722 + r580735;
double r580737 = cbrt(r580719);
double r580738 = r580737 * r580737;
double r580739 = r580724 / r580738;
double r580740 = r580727 / r580737;
double r580741 = r580739 * r580740;
double r580742 = r580722 + r580741;
double r580743 = r580732 ? r580736 : r580742;
double r580744 = r580721 ? r580730 : r580743;
return r580744;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t
Results
| Original | 6.6 |
|---|---|
| Target | 2.0 |
| Herbie | 2.5 |
if t < -2.4091701904877666e+30Initial program 10.3
rmApplied associate-/l*1.4
rmApplied div-inv1.4
Applied associate-/r*1.2
if -2.4091701904877666e+30 < t < 1.625406329571912e-217Initial program 1.9
rmApplied associate-/l*3.2
rmApplied div-inv3.3
Applied *-un-lft-identity3.3
Applied times-frac2.0
Simplified1.9
if 1.625406329571912e-217 < t Initial program 6.8
rmApplied add-cube-cbrt7.2
Applied times-frac3.7
Final simplification2.5
herbie shell --seed 2020001
(FPCore (x y z t)
:name "Numeric.Histogram:binBounds from Chart-1.5.3"
:precision binary64
: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)))