\frac{x \cdot y + z \cdot \left(t - a\right)}{y + z \cdot \left(b - y\right)}\begin{array}{l}
\mathbf{if}\;y \le 4.997789746797433380054450287723707755622 \cdot 10^{-51}:\\
\;\;\;\;\frac{\sqrt[3]{y} \cdot x}{\sqrt[3]{z \cdot \left(b - y\right) + y}} \cdot \frac{\frac{\sqrt[3]{y} \cdot \sqrt[3]{y}}{\sqrt[3]{z \cdot \left(b - y\right) + y}}}{\sqrt[3]{z \cdot \left(b - y\right) + y}} - \frac{z}{z \cdot \left(b - y\right) + y} \cdot \left(a - t\right)\\
\mathbf{else}:\\
\;\;\;\;\frac{y}{\frac{z \cdot \left(b - y\right) + y}{x}} - \frac{a - t}{z \cdot \left(b - y\right) + y} \cdot z\\
\end{array}double f(double x, double y, double z, double t, double a, double b) {
double r676247 = x;
double r676248 = y;
double r676249 = r676247 * r676248;
double r676250 = z;
double r676251 = t;
double r676252 = a;
double r676253 = r676251 - r676252;
double r676254 = r676250 * r676253;
double r676255 = r676249 + r676254;
double r676256 = b;
double r676257 = r676256 - r676248;
double r676258 = r676250 * r676257;
double r676259 = r676248 + r676258;
double r676260 = r676255 / r676259;
return r676260;
}
double f(double x, double y, double z, double t, double a, double b) {
double r676261 = y;
double r676262 = 4.9977897467974334e-51;
bool r676263 = r676261 <= r676262;
double r676264 = cbrt(r676261);
double r676265 = x;
double r676266 = r676264 * r676265;
double r676267 = z;
double r676268 = b;
double r676269 = r676268 - r676261;
double r676270 = r676267 * r676269;
double r676271 = r676270 + r676261;
double r676272 = cbrt(r676271);
double r676273 = r676266 / r676272;
double r676274 = r676264 * r676264;
double r676275 = r676274 / r676272;
double r676276 = r676275 / r676272;
double r676277 = r676273 * r676276;
double r676278 = r676267 / r676271;
double r676279 = a;
double r676280 = t;
double r676281 = r676279 - r676280;
double r676282 = r676278 * r676281;
double r676283 = r676277 - r676282;
double r676284 = r676271 / r676265;
double r676285 = r676261 / r676284;
double r676286 = r676281 / r676271;
double r676287 = r676286 * r676267;
double r676288 = r676285 - r676287;
double r676289 = r676263 ? r676283 : r676288;
return r676289;
}




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.0 |
|---|---|
| Target | 17.8 |
| Herbie | 15.1 |
if y < 4.9977897467974334e-51Initial program 20.8
Simplified20.8
rmApplied div-sub20.8
Simplified20.8
Simplified16.3
rmApplied associate-/l*16.7
Simplified16.7
rmApplied *-un-lft-identity16.7
Applied add-cube-cbrt17.0
Applied times-frac17.0
Applied add-cube-cbrt16.9
Applied times-frac13.3
Simplified13.3
Simplified13.4
if 4.9977897467974334e-51 < y Initial program 27.9
Simplified27.9
rmApplied div-sub27.9
Simplified27.9
Simplified25.5
rmApplied associate-/l*19.6
Simplified19.6
rmApplied div-inv19.6
Applied associate-*l*19.0
Simplified19.0
Final simplification15.1
herbie shell --seed 2019194
(FPCore (x y z t a b)
:name "Development.Shake.Progress:decay from shake-0.15.5"
:herbie-target
(- (/ (+ (* z t) (* y x)) (+ y (* z (- b y)))) (/ a (+ (- b y) (/ y z))))
(/ (+ (* x y) (* z (- t a))) (+ y (* z (- b y)))))