\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}{x + y \cdot e^{2 \cdot \log \left(e^{\mathsf{fma}\left(z \cdot \sqrt{t + a}, \frac{1}{t}, -\left(b - c\right) \cdot \left(\left(a + \frac{5}{6}\right) - \frac{2}{t \cdot 3}\right)\right)}\right)}}double f(double x, double y, double z, double t, double a, double b, double c) {
double r398252 = x;
double r398253 = y;
double r398254 = 2.0;
double r398255 = z;
double r398256 = t;
double r398257 = a;
double r398258 = r398256 + r398257;
double r398259 = sqrt(r398258);
double r398260 = r398255 * r398259;
double r398261 = r398260 / r398256;
double r398262 = b;
double r398263 = c;
double r398264 = r398262 - r398263;
double r398265 = 5.0;
double r398266 = 6.0;
double r398267 = r398265 / r398266;
double r398268 = r398257 + r398267;
double r398269 = 3.0;
double r398270 = r398256 * r398269;
double r398271 = r398254 / r398270;
double r398272 = r398268 - r398271;
double r398273 = r398264 * r398272;
double r398274 = r398261 - r398273;
double r398275 = r398254 * r398274;
double r398276 = exp(r398275);
double r398277 = r398253 * r398276;
double r398278 = r398252 + r398277;
double r398279 = r398252 / r398278;
return r398279;
}
double f(double x, double y, double z, double t, double a, double b, double c) {
double r398280 = x;
double r398281 = y;
double r398282 = 2.0;
double r398283 = z;
double r398284 = t;
double r398285 = a;
double r398286 = r398284 + r398285;
double r398287 = sqrt(r398286);
double r398288 = r398283 * r398287;
double r398289 = 1.0;
double r398290 = r398289 / r398284;
double r398291 = b;
double r398292 = c;
double r398293 = r398291 - r398292;
double r398294 = 5.0;
double r398295 = 6.0;
double r398296 = r398294 / r398295;
double r398297 = r398285 + r398296;
double r398298 = 3.0;
double r398299 = r398284 * r398298;
double r398300 = r398282 / r398299;
double r398301 = r398297 - r398300;
double r398302 = r398293 * r398301;
double r398303 = -r398302;
double r398304 = fma(r398288, r398290, r398303);
double r398305 = exp(r398304);
double r398306 = log(r398305);
double r398307 = r398282 * r398306;
double r398308 = exp(r398307);
double r398309 = r398281 * r398308;
double r398310 = r398280 + r398309;
double r398311 = r398280 / r398310;
return r398311;
}




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 | 3.8 |
|---|---|
| Target | 3.1 |
| Herbie | 2.6 |
Initial program 3.8
rmApplied div-inv3.8
Applied fma-neg2.6
rmApplied add-log-exp2.6
Final simplification2.6
herbie shell --seed 2020001 +o rules:numerics
(FPCore (x y z t a b c)
:name "Numeric.SpecFunctions:invIncompleteBetaWorker from math-functions-0.1.5.2, I"
:precision binary64
:herbie-target
(if (< t -2.118326644891581e-50) (/ x (+ x (* y (exp (* 2 (- (+ (* a c) (* 0.8333333333333334 c)) (* a b))))))) (if (< t 5.196588770651547e-123) (/ x (+ x (* y (exp (* 2 (/ (- (* (* z (sqrt (+ t a))) (* (* 3 t) (- a (/ 5 6)))) (* (- (* (+ (/ 5 6) a) (* 3 t)) 2) (* (- a (/ 5 6)) (* (- b c) t)))) (* (* (* t t) 3) (- a (/ 5 6))))))))) (/ x (+ x (* y (exp (* 2 (- (/ (* z (sqrt (+ t a))) t) (* (- b c) (- (+ a (/ 5 6)) (/ 2 (* t 3))))))))))))
(/ x (+ x (* y (exp (* 2 (- (/ (* z (sqrt (+ t a))) t) (* (- b c) (- (+ a (/ 5 6)) (/ 2 (* t 3)))))))))))