\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(a - \frac{\frac{2}{t}}{3}\right), \frac{z}{\sqrt[3]{t}} \cdot \frac{\sqrt{t + a}}{\sqrt[3]{t} \cdot \sqrt[3]{t}}\right)}, x\right)}double f(double x, double y, double z, double t, double a, double b, double c) {
double r13695276 = x;
double r13695277 = y;
double r13695278 = 2.0;
double r13695279 = z;
double r13695280 = t;
double r13695281 = a;
double r13695282 = r13695280 + r13695281;
double r13695283 = sqrt(r13695282);
double r13695284 = r13695279 * r13695283;
double r13695285 = r13695284 / r13695280;
double r13695286 = b;
double r13695287 = c;
double r13695288 = r13695286 - r13695287;
double r13695289 = 5.0;
double r13695290 = 6.0;
double r13695291 = r13695289 / r13695290;
double r13695292 = r13695281 + r13695291;
double r13695293 = 3.0;
double r13695294 = r13695280 * r13695293;
double r13695295 = r13695278 / r13695294;
double r13695296 = r13695292 - r13695295;
double r13695297 = r13695288 * r13695296;
double r13695298 = r13695285 - r13695297;
double r13695299 = r13695278 * r13695298;
double r13695300 = exp(r13695299);
double r13695301 = r13695277 * r13695300;
double r13695302 = r13695276 + r13695301;
double r13695303 = r13695276 / r13695302;
return r13695303;
}
double f(double x, double y, double z, double t, double a, double b, double c) {
double r13695304 = x;
double r13695305 = y;
double r13695306 = 2.0;
double r13695307 = c;
double r13695308 = b;
double r13695309 = r13695307 - r13695308;
double r13695310 = 5.0;
double r13695311 = 6.0;
double r13695312 = r13695310 / r13695311;
double r13695313 = a;
double r13695314 = t;
double r13695315 = r13695306 / r13695314;
double r13695316 = 3.0;
double r13695317 = r13695315 / r13695316;
double r13695318 = r13695313 - r13695317;
double r13695319 = r13695312 + r13695318;
double r13695320 = z;
double r13695321 = cbrt(r13695314);
double r13695322 = r13695320 / r13695321;
double r13695323 = r13695314 + r13695313;
double r13695324 = sqrt(r13695323);
double r13695325 = r13695321 * r13695321;
double r13695326 = r13695324 / r13695325;
double r13695327 = r13695322 * r13695326;
double r13695328 = fma(r13695309, r13695319, r13695327);
double r13695329 = r13695306 * r13695328;
double r13695330 = exp(r13695329);
double r13695331 = fma(r13695305, r13695330, r13695304);
double r13695332 = r13695304 / r13695331;
return r13695332;
}




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.6 |
Initial program 4.0
Simplified1.8
rmApplied add-cube-cbrt1.8
Applied *-un-lft-identity1.8
Applied times-frac1.8
Applied associate-*r*1.6
Simplified1.6
Final simplification1.6
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)))))))))))