\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 r623238 = x;
double r623239 = y;
double r623240 = r623238 * r623239;
double r623241 = z;
double r623242 = t;
double r623243 = a;
double r623244 = r623242 - r623243;
double r623245 = r623241 * r623244;
double r623246 = r623240 + r623245;
double r623247 = b;
double r623248 = r623247 - r623239;
double r623249 = r623241 * r623248;
double r623250 = r623239 + r623249;
double r623251 = r623246 / r623250;
return r623251;
}
double f(double x, double y, double z, double t, double a, double b) {
double r623252 = y;
double r623253 = 4.9977897467974334e-51;
bool r623254 = r623252 <= r623253;
double r623255 = cbrt(r623252);
double r623256 = x;
double r623257 = r623255 * r623256;
double r623258 = z;
double r623259 = b;
double r623260 = r623259 - r623252;
double r623261 = r623258 * r623260;
double r623262 = r623261 + r623252;
double r623263 = cbrt(r623262);
double r623264 = r623257 / r623263;
double r623265 = r623255 * r623255;
double r623266 = r623265 / r623263;
double r623267 = r623266 / r623263;
double r623268 = r623264 * r623267;
double r623269 = r623258 / r623262;
double r623270 = a;
double r623271 = t;
double r623272 = r623270 - r623271;
double r623273 = r623269 * r623272;
double r623274 = r623268 - r623273;
double r623275 = r623262 / r623256;
double r623276 = r623252 / r623275;
double r623277 = r623272 / r623262;
double r623278 = r623277 * r623258;
double r623279 = r623276 - r623278;
double r623280 = r623254 ? r623274 : r623279;
return r623280;
}




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)))))