\frac{x \cdot y + z \cdot \left(t - a\right)}{y + z \cdot \left(b - y\right)}\frac{\mathsf{fma}\left(y, x, z \cdot \left(t - a\right)\right) + z \cdot \mathsf{fma}\left(-\sqrt[3]{a}, \sqrt[3]{a} \cdot \sqrt[3]{a}, \sqrt[3]{a} \cdot \left(\sqrt[3]{a} \cdot \sqrt[3]{a}\right)\right)}{\mathsf{fma}\left(z, b - y, y\right)}double f(double x, double y, double z, double t, double a, double b) {
double r1365250 = x;
double r1365251 = y;
double r1365252 = r1365250 * r1365251;
double r1365253 = z;
double r1365254 = t;
double r1365255 = a;
double r1365256 = r1365254 - r1365255;
double r1365257 = r1365253 * r1365256;
double r1365258 = r1365252 + r1365257;
double r1365259 = b;
double r1365260 = r1365259 - r1365251;
double r1365261 = r1365253 * r1365260;
double r1365262 = r1365251 + r1365261;
double r1365263 = r1365258 / r1365262;
return r1365263;
}
double f(double x, double y, double z, double t, double a, double b) {
double r1365264 = y;
double r1365265 = x;
double r1365266 = z;
double r1365267 = t;
double r1365268 = a;
double r1365269 = r1365267 - r1365268;
double r1365270 = r1365266 * r1365269;
double r1365271 = fma(r1365264, r1365265, r1365270);
double r1365272 = cbrt(r1365268);
double r1365273 = -r1365272;
double r1365274 = r1365272 * r1365272;
double r1365275 = r1365272 * r1365274;
double r1365276 = fma(r1365273, r1365274, r1365275);
double r1365277 = r1365266 * r1365276;
double r1365278 = r1365271 + r1365277;
double r1365279 = b;
double r1365280 = r1365279 - r1365264;
double r1365281 = fma(r1365266, r1365280, r1365264);
double r1365282 = r1365278 / r1365281;
return r1365282;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t




Bits error versus a




Bits error versus b
| Original | 22.5 |
|---|---|
| Target | 17.8 |
| Herbie | 22.5 |
Initial program 22.5
Simplified22.5
rmApplied fma-udef22.5
rmApplied add-cube-cbrt22.7
Applied add-sqr-sqrt43.9
Applied prod-diff43.9
Applied distribute-lft-in43.9
Applied associate-+r+43.9
Simplified22.5
Final simplification22.5
herbie shell --seed 2019208 +o rules:numerics
(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)))))