\frac{x + \frac{y \cdot z - x}{t \cdot z - x}}{x + 1}\begin{array}{l}
\mathbf{if}\;z \le -5.67254162541755391 \cdot 10^{-24}:\\
\;\;\;\;\frac{\mathsf{fma}\left(\frac{y}{t \cdot z - x}, z, x\right)}{\left(x + 1\right) \cdot 1} - \frac{x \cdot \frac{1}{t \cdot z - x}}{x + 1}\\
\mathbf{elif}\;z \le 5.76566373012723862 \cdot 10^{55}:\\
\;\;\;\;\frac{x + \frac{1}{\frac{t \cdot z - x}{y \cdot z - x}}}{x + 1}\\
\mathbf{else}:\\
\;\;\;\;\frac{x + \frac{y}{t}}{x + 1}\\
\end{array}double f(double x, double y, double z, double t) {
double r782226 = x;
double r782227 = y;
double r782228 = z;
double r782229 = r782227 * r782228;
double r782230 = r782229 - r782226;
double r782231 = t;
double r782232 = r782231 * r782228;
double r782233 = r782232 - r782226;
double r782234 = r782230 / r782233;
double r782235 = r782226 + r782234;
double r782236 = 1.0;
double r782237 = r782226 + r782236;
double r782238 = r782235 / r782237;
return r782238;
}
double f(double x, double y, double z, double t) {
double r782239 = z;
double r782240 = -5.672541625417554e-24;
bool r782241 = r782239 <= r782240;
double r782242 = y;
double r782243 = t;
double r782244 = r782243 * r782239;
double r782245 = x;
double r782246 = r782244 - r782245;
double r782247 = r782242 / r782246;
double r782248 = fma(r782247, r782239, r782245);
double r782249 = 1.0;
double r782250 = r782245 + r782249;
double r782251 = 1.0;
double r782252 = r782250 * r782251;
double r782253 = r782248 / r782252;
double r782254 = r782251 / r782246;
double r782255 = r782245 * r782254;
double r782256 = r782255 / r782250;
double r782257 = r782253 - r782256;
double r782258 = 5.765663730127239e+55;
bool r782259 = r782239 <= r782258;
double r782260 = r782242 * r782239;
double r782261 = r782260 - r782245;
double r782262 = r782246 / r782261;
double r782263 = r782251 / r782262;
double r782264 = r782245 + r782263;
double r782265 = r782264 / r782250;
double r782266 = r782242 / r782243;
double r782267 = r782245 + r782266;
double r782268 = r782267 / r782250;
double r782269 = r782259 ? r782265 : r782268;
double r782270 = r782241 ? r782257 : r782269;
return r782270;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t
| Original | 7.8 |
|---|---|
| Target | 0.5 |
| Herbie | 3.4 |
if z < -5.672541625417554e-24Initial program 14.9
rmApplied div-sub14.9
Applied associate-+r-14.9
Applied div-sub14.9
Simplified5.5
rmApplied div-inv5.5
if -5.672541625417554e-24 < z < 5.765663730127239e+55Initial program 0.3
rmApplied clear-num0.3
if 5.765663730127239e+55 < z Initial program 19.0
Taylor expanded around inf 9.3
Final simplification3.4
herbie shell --seed 2020060 +o rules:numerics
(FPCore (x y z t)
:name "Diagrams.Trail:splitAtParam from diagrams-lib-1.3.0.3, A"
:precision binary64
:herbie-target
(/ (+ x (- (/ y (- t (/ x z))) (/ x (- (* t z) x)))) (+ x 1))
(/ (+ x (/ (- (* y z) x) (- (* t z) x))) (+ x 1)))