\frac{x \cdot y + z \cdot \left(t - a\right)}{y + z \cdot \left(b - y\right)}\begin{array}{l}
\mathbf{if}\;y \le -9.135260823660156739406792547030126288296 \cdot 10^{227}:\\
\;\;\;\;\left(x \cdot z + x\right) - \frac{z}{\frac{y + z \cdot \left(b - y\right)}{a}}\\
\mathbf{elif}\;y \le \frac{8942271252414965}{1.307993905256673975767120421215822522658 \cdot 10^{297}}:\\
\;\;\;\;\frac{t \cdot z + x \cdot y}{y + z \cdot \left(b - y\right)} - \frac{z}{\frac{z}{a} \cdot \left(b - y\right) + \frac{y}{a}}\\
\mathbf{elif}\;y \le \frac{5912969379899623}{1.897137590064188545819787018382342682268 \cdot 10^{81}}:\\
\;\;\;\;\frac{t \cdot z + x \cdot y}{y + z \cdot \left(b - y\right)} - \frac{z}{y + z \cdot \left(b - y\right)} \cdot a\\
\mathbf{else}:\\
\;\;\;\;\frac{t \cdot z + x \cdot y}{y + z \cdot \left(b - y\right)} - \frac{z}{\frac{z}{a} \cdot \left(b - y\right) + \frac{y}{a}}\\
\end{array}double f(double x, double y, double z, double t, double a, double b) {
double r666346 = x;
double r666347 = y;
double r666348 = r666346 * r666347;
double r666349 = z;
double r666350 = t;
double r666351 = a;
double r666352 = r666350 - r666351;
double r666353 = r666349 * r666352;
double r666354 = r666348 + r666353;
double r666355 = b;
double r666356 = r666355 - r666347;
double r666357 = r666349 * r666356;
double r666358 = r666347 + r666357;
double r666359 = r666354 / r666358;
return r666359;
}
double f(double x, double y, double z, double t, double a, double b) {
double r666360 = y;
double r666361 = -9.135260823660157e+227;
bool r666362 = r666360 <= r666361;
double r666363 = x;
double r666364 = z;
double r666365 = r666363 * r666364;
double r666366 = r666365 + r666363;
double r666367 = b;
double r666368 = r666367 - r666360;
double r666369 = r666364 * r666368;
double r666370 = r666360 + r666369;
double r666371 = a;
double r666372 = r666370 / r666371;
double r666373 = r666364 / r666372;
double r666374 = r666366 - r666373;
double r666375 = 8942271252414965.0;
double r666376 = 1.307993905256674e+297;
double r666377 = r666375 / r666376;
bool r666378 = r666360 <= r666377;
double r666379 = t;
double r666380 = r666379 * r666364;
double r666381 = r666363 * r666360;
double r666382 = r666380 + r666381;
double r666383 = r666382 / r666370;
double r666384 = r666364 / r666371;
double r666385 = r666384 * r666368;
double r666386 = r666360 / r666371;
double r666387 = r666385 + r666386;
double r666388 = r666364 / r666387;
double r666389 = r666383 - r666388;
double r666390 = 5912969379899623.0;
double r666391 = 1.8971375900641885e+81;
double r666392 = r666390 / r666391;
bool r666393 = r666360 <= r666392;
double r666394 = r666364 / r666370;
double r666395 = r666394 * r666371;
double r666396 = r666383 - r666395;
double r666397 = r666393 ? r666396 : r666389;
double r666398 = r666378 ? r666389 : r666397;
double r666399 = r666362 ? r666374 : r666398;
return r666399;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t




Bits error versus a




Bits error versus b
Results
| Original | 23.5 |
|---|---|
| Target | 18.3 |
| Herbie | 21.9 |
if y < -9.135260823660157e+227Initial program 43.9
rmApplied sub-neg43.9
Applied distribute-lft-in43.9
rmApplied distribute-rgt-neg-out43.9
Applied unsub-neg43.9
Applied associate-+r-43.9
Applied div-sub43.9
Simplified43.9
rmApplied associate-/l*43.6
Taylor expanded around 0 32.2
if -9.135260823660157e+227 < y < 6.83663067272487e-282 or 3.1167846817581434e-66 < y Initial program 23.9
rmApplied sub-neg23.9
Applied distribute-lft-in23.9
rmApplied distribute-rgt-neg-out23.9
Applied unsub-neg23.9
Applied associate-+r-23.9
Applied div-sub23.9
Simplified23.9
rmApplied associate-/l*23.4
Taylor expanded around 0 25.2
Simplified23.3
if 6.83663067272487e-282 < y < 3.1167846817581434e-66Initial program 13.8
rmApplied sub-neg13.8
Applied distribute-lft-in13.8
rmApplied distribute-rgt-neg-out13.8
Applied unsub-neg13.8
Applied associate-+r-13.8
Applied div-sub13.8
Simplified13.8
rmApplied associate-/l*16.7
rmApplied associate-/r/11.6
Final simplification21.9
herbie shell --seed 2019304
(FPCore (x y z t a b)
:name "Development.Shake.Progress:decay from shake-0.15.5"
:precision binary64
:herbie-target
(- (/ (+ (* z t) (* y x)) (+ y (* z (- b y)))) (/ a (+ (- b y) (/ y z))))
(/ (+ (* x y) (* z (- t a))) (+ y (* z (- b y)))))