\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}{t}}{3} - \left(a + \frac{5}{6}\right), b - c, \frac{\sqrt[3]{z} \cdot \sqrt[3]{z}}{\sqrt[3]{t}} \cdot \left(\frac{\sqrt[3]{z}}{\sqrt[3]{t}} \cdot \frac{\sqrt{t + a}}{\sqrt[3]{t}}\right)\right)\right)}, x\right)}double f(double x, double y, double z, double t, double a, double b, double c) {
double r239979 = x;
double r239980 = y;
double r239981 = 2.0;
double r239982 = z;
double r239983 = t;
double r239984 = a;
double r239985 = r239983 + r239984;
double r239986 = sqrt(r239985);
double r239987 = r239982 * r239986;
double r239988 = r239987 / r239983;
double r239989 = b;
double r239990 = c;
double r239991 = r239989 - r239990;
double r239992 = 5.0;
double r239993 = 6.0;
double r239994 = r239992 / r239993;
double r239995 = r239984 + r239994;
double r239996 = 3.0;
double r239997 = r239983 * r239996;
double r239998 = r239981 / r239997;
double r239999 = r239995 - r239998;
double r240000 = r239991 * r239999;
double r240001 = r239988 - r240000;
double r240002 = r239981 * r240001;
double r240003 = exp(r240002);
double r240004 = r239980 * r240003;
double r240005 = r239979 + r240004;
double r240006 = r239979 / r240005;
return r240006;
}
double f(double x, double y, double z, double t, double a, double b, double c) {
double r240007 = x;
double r240008 = y;
double r240009 = 2.0;
double r240010 = exp(r240009);
double r240011 = t;
double r240012 = r240009 / r240011;
double r240013 = 3.0;
double r240014 = r240012 / r240013;
double r240015 = a;
double r240016 = 5.0;
double r240017 = 6.0;
double r240018 = r240016 / r240017;
double r240019 = r240015 + r240018;
double r240020 = r240014 - r240019;
double r240021 = b;
double r240022 = c;
double r240023 = r240021 - r240022;
double r240024 = z;
double r240025 = cbrt(r240024);
double r240026 = r240025 * r240025;
double r240027 = cbrt(r240011);
double r240028 = r240026 / r240027;
double r240029 = r240025 / r240027;
double r240030 = r240011 + r240015;
double r240031 = sqrt(r240030);
double r240032 = r240031 / r240027;
double r240033 = r240029 * r240032;
double r240034 = r240028 * r240033;
double r240035 = fma(r240020, r240023, r240034);
double r240036 = pow(r240010, r240035);
double r240037 = fma(r240008, r240036, r240007);
double r240038 = r240007 / r240037;
return r240038;
}




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.0 |
| Herbie | 1.4 |
Initial program 4.1
Simplified2.6
rmApplied add-cube-cbrt2.6
Applied times-frac1.5
rmApplied add-cube-cbrt1.5
Applied times-frac1.5
Applied associate-*l*1.4
Final simplification1.4
herbie shell --seed 2019325 +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)))))))))))