\frac{x + \frac{y \cdot z - x}{t \cdot z - x}}{x + 1}\begin{array}{l}
\mathbf{if}\;\frac{x + \frac{y \cdot z - x}{t \cdot z - x}}{x + 1} = -\infty \lor \neg \left(\frac{x + \frac{y \cdot z - x}{t \cdot z - x}}{x + 1} \le 1.59533764149046761 \cdot 10^{179}\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 r927270 = x;
double r927271 = y;
double r927272 = z;
double r927273 = r927271 * r927272;
double r927274 = r927273 - r927270;
double r927275 = t;
double r927276 = r927275 * r927272;
double r927277 = r927276 - r927270;
double r927278 = r927274 / r927277;
double r927279 = r927270 + r927278;
double r927280 = 1.0;
double r927281 = r927270 + r927280;
double r927282 = r927279 / r927281;
return r927282;
}
double f(double x, double y, double z, double t) {
double r927283 = x;
double r927284 = y;
double r927285 = z;
double r927286 = r927284 * r927285;
double r927287 = r927286 - r927283;
double r927288 = t;
double r927289 = r927288 * r927285;
double r927290 = r927289 - r927283;
double r927291 = r927287 / r927290;
double r927292 = r927283 + r927291;
double r927293 = 1.0;
double r927294 = r927283 + r927293;
double r927295 = r927292 / r927294;
double r927296 = -inf.0;
bool r927297 = r927295 <= r927296;
double r927298 = 1.5953376414904676e+179;
bool r927299 = r927295 <= r927298;
double r927300 = !r927299;
bool r927301 = r927297 || r927300;
double r927302 = r927284 / r927288;
double r927303 = r927283 + r927302;
double r927304 = r927303 / r927294;
double r927305 = 1.0;
double r927306 = r927290 / r927287;
double r927307 = r927305 / r927306;
double r927308 = r927283 + r927307;
double r927309 = r927308 / r927294;
double r927310 = r927301 ? r927304 : r927309;
return r927310;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t
Results
| Original | 7.7 |
|---|---|
| Target | 0.3 |
| Herbie | 2.7 |
if (/ (+ x (/ (- (* y z) x) (- (* t z) x))) (+ x 1.0)) < -inf.0 or 1.5953376414904676e+179 < (/ (+ x (/ (- (* y z) x) (- (* t z) x))) (+ x 1.0)) Initial program 53.1
Taylor expanded around inf 15.0
if -inf.0 < (/ (+ x (/ (- (* y z) x) (- (* t z) x))) (+ x 1.0)) < 1.5953376414904676e+179Initial program 0.8
rmApplied clear-num0.8
Final simplification2.7
herbie shell --seed 2020057
(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)))