\frac{x}{x + y \cdot e^{2 \cdot \left(\frac{z \cdot \sqrt{t + a}}{t} - \left(b - c\right) \cdot \left(\left(a + \frac{5}{6}\right) - \frac{2}{t \cdot 3}\right)\right)}}\frac{x}{\mathsf{fma}\left(y, e^{2 \cdot \mathsf{fma}\left(c - b, \frac{5}{6} - \left(\frac{\frac{2}{t}}{3} - a\right), \frac{\sqrt{a + t}}{\frac{t}{\sqrt[3]{z}}} \cdot \left(\sqrt[3]{z} \cdot \sqrt[3]{z}\right)\right)}, x\right)}double f(double x, double y, double z, double t, double a, double b, double c) {
double r23843208 = x;
double r23843209 = y;
double r23843210 = 2.0;
double r23843211 = z;
double r23843212 = t;
double r23843213 = a;
double r23843214 = r23843212 + r23843213;
double r23843215 = sqrt(r23843214);
double r23843216 = r23843211 * r23843215;
double r23843217 = r23843216 / r23843212;
double r23843218 = b;
double r23843219 = c;
double r23843220 = r23843218 - r23843219;
double r23843221 = 5.0;
double r23843222 = 6.0;
double r23843223 = r23843221 / r23843222;
double r23843224 = r23843213 + r23843223;
double r23843225 = 3.0;
double r23843226 = r23843212 * r23843225;
double r23843227 = r23843210 / r23843226;
double r23843228 = r23843224 - r23843227;
double r23843229 = r23843220 * r23843228;
double r23843230 = r23843217 - r23843229;
double r23843231 = r23843210 * r23843230;
double r23843232 = exp(r23843231);
double r23843233 = r23843209 * r23843232;
double r23843234 = r23843208 + r23843233;
double r23843235 = r23843208 / r23843234;
return r23843235;
}
double f(double x, double y, double z, double t, double a, double b, double c) {
double r23843236 = x;
double r23843237 = y;
double r23843238 = 2.0;
double r23843239 = c;
double r23843240 = b;
double r23843241 = r23843239 - r23843240;
double r23843242 = 5.0;
double r23843243 = 6.0;
double r23843244 = r23843242 / r23843243;
double r23843245 = t;
double r23843246 = r23843238 / r23843245;
double r23843247 = 3.0;
double r23843248 = r23843246 / r23843247;
double r23843249 = a;
double r23843250 = r23843248 - r23843249;
double r23843251 = r23843244 - r23843250;
double r23843252 = r23843249 + r23843245;
double r23843253 = sqrt(r23843252);
double r23843254 = z;
double r23843255 = cbrt(r23843254);
double r23843256 = r23843245 / r23843255;
double r23843257 = r23843253 / r23843256;
double r23843258 = r23843255 * r23843255;
double r23843259 = r23843257 * r23843258;
double r23843260 = fma(r23843241, r23843251, r23843259);
double r23843261 = r23843238 * r23843260;
double r23843262 = exp(r23843261);
double r23843263 = fma(r23843237, r23843262, r23843236);
double r23843264 = r23843236 / r23843263;
return r23843264;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t




Bits error versus a




Bits error versus b




Bits error versus c
| Original | 4.0 |
|---|---|
| Target | 3.0 |
| Herbie | 1.7 |
Initial program 4.0
Simplified1.7
rmApplied add-cube-cbrt1.7
Applied *-un-lft-identity1.7
Applied times-frac1.7
Applied *-un-lft-identity1.7
Applied sqrt-prod1.7
Applied times-frac1.7
Simplified1.7
Final simplification1.7
herbie shell --seed 2019172 +o rules:numerics
(FPCore (x y z t a b c)
:name "Numeric.SpecFunctions:invIncompleteBetaWorker from math-functions-0.1.5.2, I"
:herbie-target
(if (< t -2.118326644891581e-50) (/ x (+ x (* y (exp (* 2.0 (- (+ (* a c) (* 0.8333333333333334 c)) (* a b))))))) (if (< t 5.196588770651547e-123) (/ x (+ x (* y (exp (* 2.0 (/ (- (* (* z (sqrt (+ t a))) (* (* 3.0 t) (- a (/ 5.0 6.0)))) (* (- (* (+ (/ 5.0 6.0) a) (* 3.0 t)) 2.0) (* (- a (/ 5.0 6.0)) (* (- b c) t)))) (* (* (* t t) 3.0) (- a (/ 5.0 6.0))))))))) (/ x (+ x (* y (exp (* 2.0 (- (/ (* z (sqrt (+ t a))) t) (* (- b c) (- (+ a (/ 5.0 6.0)) (/ 2.0 (* t 3.0))))))))))))
(/ x (+ x (* y (exp (* 2.0 (- (/ (* z (sqrt (+ t a))) t) (* (- b c) (- (+ a (/ 5.0 6.0)) (/ 2.0 (* t 3.0)))))))))))