\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 \left(\frac{z}{\sqrt[3]{t} \cdot \sqrt[3]{t}} \cdot \frac{\sqrt{t + a}}{\sqrt[3]{t}} - \left(b - c\right) \cdot \left(\left(a + \frac{5}{6}\right) - \frac{2}{t \cdot 3}\right)\right)}}double f(double x, double y, double z, double t, double a, double b, double c) {
double r295009 = x;
double r295010 = y;
double r295011 = 2.0;
double r295012 = z;
double r295013 = t;
double r295014 = a;
double r295015 = r295013 + r295014;
double r295016 = sqrt(r295015);
double r295017 = r295012 * r295016;
double r295018 = r295017 / r295013;
double r295019 = b;
double r295020 = c;
double r295021 = r295019 - r295020;
double r295022 = 5.0;
double r295023 = 6.0;
double r295024 = r295022 / r295023;
double r295025 = r295014 + r295024;
double r295026 = 3.0;
double r295027 = r295013 * r295026;
double r295028 = r295011 / r295027;
double r295029 = r295025 - r295028;
double r295030 = r295021 * r295029;
double r295031 = r295018 - r295030;
double r295032 = r295011 * r295031;
double r295033 = exp(r295032);
double r295034 = r295010 * r295033;
double r295035 = r295009 + r295034;
double r295036 = r295009 / r295035;
return r295036;
}
double f(double x, double y, double z, double t, double a, double b, double c) {
double r295037 = x;
double r295038 = y;
double r295039 = 2.0;
double r295040 = z;
double r295041 = t;
double r295042 = cbrt(r295041);
double r295043 = r295042 * r295042;
double r295044 = r295040 / r295043;
double r295045 = a;
double r295046 = r295041 + r295045;
double r295047 = sqrt(r295046);
double r295048 = r295047 / r295042;
double r295049 = r295044 * r295048;
double r295050 = b;
double r295051 = c;
double r295052 = r295050 - r295051;
double r295053 = 5.0;
double r295054 = 6.0;
double r295055 = r295053 / r295054;
double r295056 = r295045 + r295055;
double r295057 = 3.0;
double r295058 = r295041 * r295057;
double r295059 = r295039 / r295058;
double r295060 = r295056 - r295059;
double r295061 = r295052 * r295060;
double r295062 = r295049 - r295061;
double r295063 = r295039 * r295062;
double r295064 = exp(r295063);
double r295065 = r295038 * r295064;
double r295066 = r295037 + r295065;
double r295067 = r295037 / r295066;
return r295067;
}




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
Results
| Original | 4.0 |
|---|---|
| Target | 2.9 |
| Herbie | 2.9 |
Initial program 4.0
rmApplied add-cube-cbrt4.0
Applied times-frac2.9
Final simplification2.9
herbie shell --seed 2019198
(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)))))))))))