\frac{x}{y} \cdot \left(z - t\right) + t\begin{array}{l}
\mathbf{if}\;y \le -1.214276496349715308350212003616713772243 \cdot 10^{208}:\\
\;\;\;\;\left(z - t\right) \cdot \frac{x}{y} + t\\
\mathbf{elif}\;y \le 3.810917599276301682261457087969902172823 \cdot 10^{77}:\\
\;\;\;\;t + \frac{x \cdot \left(z - t\right)}{y}\\
\mathbf{else}:\\
\;\;\;\;t + \frac{z - t}{y} \cdot x\\
\end{array}double f(double x, double y, double z, double t) {
double r22982905 = x;
double r22982906 = y;
double r22982907 = r22982905 / r22982906;
double r22982908 = z;
double r22982909 = t;
double r22982910 = r22982908 - r22982909;
double r22982911 = r22982907 * r22982910;
double r22982912 = r22982911 + r22982909;
return r22982912;
}
double f(double x, double y, double z, double t) {
double r22982913 = y;
double r22982914 = -1.2142764963497153e+208;
bool r22982915 = r22982913 <= r22982914;
double r22982916 = z;
double r22982917 = t;
double r22982918 = r22982916 - r22982917;
double r22982919 = x;
double r22982920 = r22982919 / r22982913;
double r22982921 = r22982918 * r22982920;
double r22982922 = r22982921 + r22982917;
double r22982923 = 3.8109175992763017e+77;
bool r22982924 = r22982913 <= r22982923;
double r22982925 = r22982919 * r22982918;
double r22982926 = r22982925 / r22982913;
double r22982927 = r22982917 + r22982926;
double r22982928 = r22982918 / r22982913;
double r22982929 = r22982928 * r22982919;
double r22982930 = r22982917 + r22982929;
double r22982931 = r22982924 ? r22982927 : r22982930;
double r22982932 = r22982915 ? r22982922 : r22982931;
return r22982932;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t
Results
| Original | 2.3 |
|---|---|
| Target | 2.5 |
| Herbie | 2.8 |
if y < -1.2142764963497153e+208Initial program 1.8
if -1.2142764963497153e+208 < y < 3.8109175992763017e+77Initial program 2.8
rmApplied associate-*l/3.5
if 3.8109175992763017e+77 < y Initial program 1.1
rmApplied div-inv1.1
Applied associate-*l*1.4
Simplified1.4
Final simplification2.8
herbie shell --seed 2019168
(FPCore (x y z t)
:name "Numeric.Signal.Multichannel:$cget from hsignal-0.2.7.1"
:herbie-target
(if (< z 2.759456554562692e-282) (+ (* (/ x y) (- z t)) t) (if (< z 2.326994450874436e-110) (+ (* x (/ (- z t) y)) t) (+ (* (/ x y) (- z t)) t)))
(+ (* (/ x y) (- z t)) t))