\frac{x - y}{z - y} \cdot t\begin{array}{l}
\mathbf{if}\;y \le -5.96001355441550078 \cdot 10^{-174} \lor \neg \left(y \le 8.4047565578414434 \cdot 10^{-157}\right):\\
\;\;\;\;\sqrt{1} \cdot \frac{t}{\frac{z - y}{x - y}}\\
\mathbf{else}:\\
\;\;\;\;\frac{1}{z - y} \cdot \left(\left(x - y\right) \cdot t\right)\\
\end{array}double f(double x, double y, double z, double t) {
double r630011 = x;
double r630012 = y;
double r630013 = r630011 - r630012;
double r630014 = z;
double r630015 = r630014 - r630012;
double r630016 = r630013 / r630015;
double r630017 = t;
double r630018 = r630016 * r630017;
return r630018;
}
double f(double x, double y, double z, double t) {
double r630019 = y;
double r630020 = -5.960013554415501e-174;
bool r630021 = r630019 <= r630020;
double r630022 = 8.404756557841443e-157;
bool r630023 = r630019 <= r630022;
double r630024 = !r630023;
bool r630025 = r630021 || r630024;
double r630026 = 1.0;
double r630027 = sqrt(r630026);
double r630028 = t;
double r630029 = z;
double r630030 = r630029 - r630019;
double r630031 = x;
double r630032 = r630031 - r630019;
double r630033 = r630030 / r630032;
double r630034 = r630028 / r630033;
double r630035 = r630027 * r630034;
double r630036 = r630026 / r630030;
double r630037 = r630032 * r630028;
double r630038 = r630036 * r630037;
double r630039 = r630025 ? r630035 : r630038;
return r630039;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t
Results
| Original | 2.0 |
|---|---|
| Target | 2.0 |
| Herbie | 2.0 |
if y < -5.960013554415501e-174 or 8.404756557841443e-157 < y Initial program 1.0
rmApplied clear-num1.1
rmApplied *-un-lft-identity1.1
Applied *-un-lft-identity1.1
Applied times-frac1.1
Applied add-sqr-sqrt1.1
Applied times-frac1.1
Applied associate-*l*1.1
Simplified1.0
if -5.960013554415501e-174 < y < 8.404756557841443e-157Initial program 6.1
rmApplied clear-num6.5
rmApplied div-inv6.5
Applied associate-/r*6.3
rmApplied associate-/r/6.2
Applied associate-*l*5.9
Final simplification2.0
herbie shell --seed 2020043
(FPCore (x y z t)
:name "Numeric.Signal.Multichannel:$cput from hsignal-0.2.7.1"
:precision binary64
:herbie-target
(/ t (/ (- z y) (- x y)))
(* (/ (- x y) (- z y)) t))