\frac{x + \frac{y \cdot z - x}{t \cdot z - x}}{x + 1.0}\begin{array}{l}
\mathbf{if}\;z \le -4.397554981755772 \cdot 10^{+143}:\\
\;\;\;\;\frac{x + \frac{y}{t}}{x + 1.0}\\
\mathbf{elif}\;z \le 1.2365924477248178 \cdot 10^{+144}:\\
\;\;\;\;\frac{x + \frac{\mathsf{fma}\left(y, z, -x\right)}{t \cdot z + \left(-x\right)}}{x + 1.0}\\
\mathbf{else}:\\
\;\;\;\;\frac{x + \frac{y}{t}}{x + 1.0}\\
\end{array}double f(double x, double y, double z, double t) {
double r11586796 = x;
double r11586797 = y;
double r11586798 = z;
double r11586799 = r11586797 * r11586798;
double r11586800 = r11586799 - r11586796;
double r11586801 = t;
double r11586802 = r11586801 * r11586798;
double r11586803 = r11586802 - r11586796;
double r11586804 = r11586800 / r11586803;
double r11586805 = r11586796 + r11586804;
double r11586806 = 1.0;
double r11586807 = r11586796 + r11586806;
double r11586808 = r11586805 / r11586807;
return r11586808;
}
double f(double x, double y, double z, double t) {
double r11586809 = z;
double r11586810 = -4.397554981755772e+143;
bool r11586811 = r11586809 <= r11586810;
double r11586812 = x;
double r11586813 = y;
double r11586814 = t;
double r11586815 = r11586813 / r11586814;
double r11586816 = r11586812 + r11586815;
double r11586817 = 1.0;
double r11586818 = r11586812 + r11586817;
double r11586819 = r11586816 / r11586818;
double r11586820 = 1.2365924477248178e+144;
bool r11586821 = r11586809 <= r11586820;
double r11586822 = -r11586812;
double r11586823 = fma(r11586813, r11586809, r11586822);
double r11586824 = r11586814 * r11586809;
double r11586825 = r11586824 + r11586822;
double r11586826 = r11586823 / r11586825;
double r11586827 = r11586812 + r11586826;
double r11586828 = r11586827 / r11586818;
double r11586829 = r11586821 ? r11586828 : r11586819;
double r11586830 = r11586811 ? r11586819 : r11586829;
return r11586830;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t
| Original | 7.1 |
|---|---|
| Target | 0.3 |
| Herbie | 3.1 |
if z < -4.397554981755772e+143 or 1.2365924477248178e+144 < z Initial program 21.9
Taylor expanded around inf 6.5
if -4.397554981755772e+143 < z < 1.2365924477248178e+144Initial program 2.0
rmApplied fma-neg2.0
rmApplied sub-neg2.0
Final simplification3.1
herbie shell --seed 2019156 +o rules:numerics
(FPCore (x y z t)
:name "Diagrams.Trail:splitAtParam from diagrams-lib-1.3.0.3, A"
:herbie-target
(/ (+ x (- (/ y (- t (/ x z))) (/ x (- (* t z) x)))) (+ x 1.0))
(/ (+ x (/ (- (* y z) x) (- (* t z) x))) (+ x 1.0)))