\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, {\left(e^{2}\right)}^{\left(\mathsf{fma}\left(\frac{\frac{2}{3}}{t} - \left(a + \frac{5}{6}\right), b - c, \frac{z}{\sqrt[3]{t} \cdot \sqrt[3]{t}} \cdot \frac{\sqrt{t + a}}{\sqrt[3]{t}}\right)\right)}, x\right)}double f(double x, double y, double z, double t, double a, double b, double c) {
double r572516 = x;
double r572517 = y;
double r572518 = 2.0;
double r572519 = z;
double r572520 = t;
double r572521 = a;
double r572522 = r572520 + r572521;
double r572523 = sqrt(r572522);
double r572524 = r572519 * r572523;
double r572525 = r572524 / r572520;
double r572526 = b;
double r572527 = c;
double r572528 = r572526 - r572527;
double r572529 = 5.0;
double r572530 = 6.0;
double r572531 = r572529 / r572530;
double r572532 = r572521 + r572531;
double r572533 = 3.0;
double r572534 = r572520 * r572533;
double r572535 = r572518 / r572534;
double r572536 = r572532 - r572535;
double r572537 = r572528 * r572536;
double r572538 = r572525 - r572537;
double r572539 = r572518 * r572538;
double r572540 = exp(r572539);
double r572541 = r572517 * r572540;
double r572542 = r572516 + r572541;
double r572543 = r572516 / r572542;
return r572543;
}
double f(double x, double y, double z, double t, double a, double b, double c) {
double r572544 = x;
double r572545 = y;
double r572546 = 2.0;
double r572547 = exp(r572546);
double r572548 = 3.0;
double r572549 = r572546 / r572548;
double r572550 = t;
double r572551 = r572549 / r572550;
double r572552 = a;
double r572553 = 5.0;
double r572554 = 6.0;
double r572555 = r572553 / r572554;
double r572556 = r572552 + r572555;
double r572557 = r572551 - r572556;
double r572558 = b;
double r572559 = c;
double r572560 = r572558 - r572559;
double r572561 = z;
double r572562 = cbrt(r572550);
double r572563 = r572562 * r572562;
double r572564 = r572561 / r572563;
double r572565 = r572550 + r572552;
double r572566 = sqrt(r572565);
double r572567 = r572566 / r572562;
double r572568 = r572564 * r572567;
double r572569 = fma(r572557, r572560, r572568);
double r572570 = pow(r572547, r572569);
double r572571 = fma(r572545, r572570, r572544);
double r572572 = r572544 / r572571;
return r572572;
}




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.1 |
|---|---|
| Target | 3.3 |
| Herbie | 1.4 |
Initial program 4.1
Simplified2.8
rmApplied add-cube-cbrt2.8
Applied times-frac1.4
Final simplification1.4
herbie shell --seed 2020042 +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)))))))))))