x \cdot \frac{\frac{y}{z} \cdot t}{t}x \cdot \frac{y}{z}double f(double x, double y, double z, double t) {
double r488544 = x;
double r488545 = y;
double r488546 = z;
double r488547 = r488545 / r488546;
double r488548 = t;
double r488549 = r488547 * r488548;
double r488550 = r488549 / r488548;
double r488551 = r488544 * r488550;
return r488551;
}
double f(double x, double y, double z, double __attribute__((unused)) t) {
double r488552 = x;
double r488553 = y;
double r488554 = z;
double r488555 = r488553 / r488554;
double r488556 = r488552 * r488555;
return r488556;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t
Results
| Original | 15.0 |
|---|---|
| Target | 1.6 |
| Herbie | 6.3 |
if (/ y z) < -inf.0Initial program 64.0
Simplified64.0
rmApplied div-inv64.0
Applied associate-*r*0.3
if -inf.0 < (/ y z) < -4.471661983018054e-179 or 5.2143480045202775e-160 < (/ y z) < 8.142281339311981e+291Initial program 10.1
Simplified0.2
if -4.471661983018054e-179 < (/ y z) < 5.2143480045202775e-160 or 8.142281339311981e+291 < (/ y z) Initial program 20.5
Simplified13.3
rmApplied associate-*r/0.8
Final simplification6.3
herbie shell --seed 2019298
(FPCore (x y z t)
:name "Graphics.Rendering.Chart.Backend.Diagrams:calcFontMetrics from Chart-diagrams-1.5.1, B"
:precision binary64
:herbie-target
(if (< (/ (* (/ y z) t) t) -1.20672205123045005e245) (/ y (/ z x)) (if (< (/ (* (/ y z) t) t) -5.90752223693390633e-275) (* x (/ y z)) (if (< (/ (* (/ y z) t) t) 5.65895442315341522e-65) (/ y (/ z x)) (if (< (/ (* (/ y z) t) t) 2.0087180502407133e217) (* x (/ y z)) (/ (* y x) z)))))
(* x (/ (* (/ y z) t) t)))