\frac{x - y}{z - y} \cdot t\begin{array}{l}
\mathbf{if}\;\frac{x - y}{z - y} \le 2.470328229206232720882843964341106861825 \cdot 10^{-323}:\\
\;\;\;\;\frac{\frac{t}{\sqrt[3]{z - y}} \cdot \frac{x - y}{\sqrt[3]{z - y}}}{\sqrt[3]{z - y}}\\
\mathbf{elif}\;\frac{x - y}{z - y} \le 5.779702072575541191674228138407204633316 \cdot 10^{148}:\\
\;\;\;\;\left(\frac{1}{z - y} \cdot \left(x - y\right)\right) \cdot t\\
\mathbf{else}:\\
\;\;\;\;\left(x - y\right) \cdot \frac{t}{z - y}\\
\end{array}double f(double x, double y, double z, double t) {
double r413596 = x;
double r413597 = y;
double r413598 = r413596 - r413597;
double r413599 = z;
double r413600 = r413599 - r413597;
double r413601 = r413598 / r413600;
double r413602 = t;
double r413603 = r413601 * r413602;
return r413603;
}
double f(double x, double y, double z, double t) {
double r413604 = x;
double r413605 = y;
double r413606 = r413604 - r413605;
double r413607 = z;
double r413608 = r413607 - r413605;
double r413609 = r413606 / r413608;
double r413610 = 2.4703282292062e-323;
bool r413611 = r413609 <= r413610;
double r413612 = t;
double r413613 = cbrt(r413608);
double r413614 = r413612 / r413613;
double r413615 = r413606 / r413613;
double r413616 = r413614 * r413615;
double r413617 = r413616 / r413613;
double r413618 = 5.779702072575541e+148;
bool r413619 = r413609 <= r413618;
double r413620 = 1.0;
double r413621 = r413620 / r413608;
double r413622 = r413621 * r413606;
double r413623 = r413622 * r413612;
double r413624 = r413612 / r413608;
double r413625 = r413606 * r413624;
double r413626 = r413619 ? r413623 : r413625;
double r413627 = r413611 ? r413617 : r413626;
return r413627;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t
Results
| Original | 2.3 |
|---|---|
| Target | 2.3 |
| Herbie | 1.9 |
if (/ (- x y) (- z y)) < 2.4703282292062e-323Initial program 4.9
rmApplied add-cube-cbrt5.7
Applied *-un-lft-identity5.7
Applied times-frac5.7
rmApplied associate-*r/5.7
Applied associate-*l/4.7
Simplified4.8
if 2.4703282292062e-323 < (/ (- x y) (- z y)) < 5.779702072575541e+148Initial program 0.1
rmApplied div-inv0.3
if 5.779702072575541e+148 < (/ (- x y) (- z y)) Initial program 12.2
Simplified2.3
Final simplification1.9
herbie shell --seed 2019194
(FPCore (x y z t)
:name "Numeric.Signal.Multichannel:$cput from hsignal-0.2.7.1"
:herbie-target
(/ t (/ (- z y) (- x y)))
(* (/ (- x y) (- z y)) t))