\frac{x + \frac{y \cdot z - x}{t \cdot z - x}}{x + 1}\begin{array}{l}
\mathbf{if}\;z \le -5.0213726882368712246896067821148316655 \cdot 10^{81}:\\
\;\;\;\;\frac{x + \frac{y}{t}}{x + 1}\\
\mathbf{elif}\;z \le 2.653747744881045351380565842467581880116 \cdot 10^{131}:\\
\;\;\;\;\frac{x + \frac{1}{t \cdot z - x} \cdot \left(y \cdot z - x\right)}{x + 1}\\
\mathbf{else}:\\
\;\;\;\;\frac{x + \frac{y}{t}}{x + 1}\\
\end{array}double f(double x, double y, double z, double t) {
double r37018250 = x;
double r37018251 = y;
double r37018252 = z;
double r37018253 = r37018251 * r37018252;
double r37018254 = r37018253 - r37018250;
double r37018255 = t;
double r37018256 = r37018255 * r37018252;
double r37018257 = r37018256 - r37018250;
double r37018258 = r37018254 / r37018257;
double r37018259 = r37018250 + r37018258;
double r37018260 = 1.0;
double r37018261 = r37018250 + r37018260;
double r37018262 = r37018259 / r37018261;
return r37018262;
}
double f(double x, double y, double z, double t) {
double r37018263 = z;
double r37018264 = -5.021372688236871e+81;
bool r37018265 = r37018263 <= r37018264;
double r37018266 = x;
double r37018267 = y;
double r37018268 = t;
double r37018269 = r37018267 / r37018268;
double r37018270 = r37018266 + r37018269;
double r37018271 = 1.0;
double r37018272 = r37018266 + r37018271;
double r37018273 = r37018270 / r37018272;
double r37018274 = 2.6537477448810454e+131;
bool r37018275 = r37018263 <= r37018274;
double r37018276 = 1.0;
double r37018277 = r37018268 * r37018263;
double r37018278 = r37018277 - r37018266;
double r37018279 = r37018276 / r37018278;
double r37018280 = r37018267 * r37018263;
double r37018281 = r37018280 - r37018266;
double r37018282 = r37018279 * r37018281;
double r37018283 = r37018266 + r37018282;
double r37018284 = r37018283 / r37018272;
double r37018285 = r37018275 ? r37018284 : r37018273;
double r37018286 = r37018265 ? r37018273 : r37018285;
return r37018286;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t
Results
| Original | 7.3 |
|---|---|
| Target | 0.4 |
| Herbie | 3.7 |
if z < -5.021372688236871e+81 or 2.6537477448810454e+131 < z Initial program 19.7
Taylor expanded around inf 8.1
if -5.021372688236871e+81 < z < 2.6537477448810454e+131Initial program 1.6
rmApplied clear-num1.7
rmApplied div-inv1.7
Applied add-cube-cbrt1.7
Applied times-frac1.7
Simplified1.7
Simplified1.7
Final simplification3.7
herbie shell --seed 2019179
(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)))