\frac{x + \frac{y \cdot z - x}{t \cdot z - x}}{x + 1}\begin{array}{l}
\mathbf{if}\;z \le -7.150582175885458915277202527443364197416 \cdot 10^{54} \lor \neg \left(z \le 6.043915376694697440989411808244092375242 \cdot 10^{86}\right):\\
\;\;\;\;\frac{x + \frac{y}{t}}{x + 1}\\
\mathbf{else}:\\
\;\;\;\;\frac{x + \frac{1}{\frac{t \cdot z - x}{y \cdot z - x}}}{x + 1}\\
\end{array}double f(double x, double y, double z, double t) {
double r446448 = x;
double r446449 = y;
double r446450 = z;
double r446451 = r446449 * r446450;
double r446452 = r446451 - r446448;
double r446453 = t;
double r446454 = r446453 * r446450;
double r446455 = r446454 - r446448;
double r446456 = r446452 / r446455;
double r446457 = r446448 + r446456;
double r446458 = 1.0;
double r446459 = r446448 + r446458;
double r446460 = r446457 / r446459;
return r446460;
}
double f(double x, double y, double z, double t) {
double r446461 = z;
double r446462 = -7.150582175885459e+54;
bool r446463 = r446461 <= r446462;
double r446464 = 6.043915376694697e+86;
bool r446465 = r446461 <= r446464;
double r446466 = !r446465;
bool r446467 = r446463 || r446466;
double r446468 = x;
double r446469 = y;
double r446470 = t;
double r446471 = r446469 / r446470;
double r446472 = r446468 + r446471;
double r446473 = 1.0;
double r446474 = r446468 + r446473;
double r446475 = r446472 / r446474;
double r446476 = 1.0;
double r446477 = r446470 * r446461;
double r446478 = r446477 - r446468;
double r446479 = r446469 * r446461;
double r446480 = r446479 - r446468;
double r446481 = r446478 / r446480;
double r446482 = r446476 / r446481;
double r446483 = r446468 + r446482;
double r446484 = r446483 / r446474;
double r446485 = r446467 ? r446475 : r446484;
return r446485;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t
Results
| Original | 7.2 |
|---|---|
| Target | 0.3 |
| Herbie | 3.4 |
if z < -7.150582175885459e+54 or 6.043915376694697e+86 < z Initial program 18.2
Taylor expanded around inf 7.8
if -7.150582175885459e+54 < z < 6.043915376694697e+86Initial program 0.7
rmApplied clear-num0.8
Final simplification3.4
herbie shell --seed 2019326 +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)))