\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(\mathsf{fma}\left(z \cdot \sqrt{t + a}, \frac{1}{t}, -\left(\left(a + \frac{5}{6}\right) - \frac{2}{t \cdot 3}\right) \cdot \left(b - c\right)\right) + \left(\left(a + \frac{5}{6}\right) - \frac{2}{t \cdot 3}\right) \cdot \left(\left(-\left(b - c\right)\right) + \left(b - c\right)\right)\right)}}double f(double x, double y, double z, double t, double a, double b, double c) {
double r589873 = x;
double r589874 = y;
double r589875 = 2.0;
double r589876 = z;
double r589877 = t;
double r589878 = a;
double r589879 = r589877 + r589878;
double r589880 = sqrt(r589879);
double r589881 = r589876 * r589880;
double r589882 = r589881 / r589877;
double r589883 = b;
double r589884 = c;
double r589885 = r589883 - r589884;
double r589886 = 5.0;
double r589887 = 6.0;
double r589888 = r589886 / r589887;
double r589889 = r589878 + r589888;
double r589890 = 3.0;
double r589891 = r589877 * r589890;
double r589892 = r589875 / r589891;
double r589893 = r589889 - r589892;
double r589894 = r589885 * r589893;
double r589895 = r589882 - r589894;
double r589896 = r589875 * r589895;
double r589897 = exp(r589896);
double r589898 = r589874 * r589897;
double r589899 = r589873 + r589898;
double r589900 = r589873 / r589899;
return r589900;
}
double f(double x, double y, double z, double t, double a, double b, double c) {
double r589901 = x;
double r589902 = y;
double r589903 = 2.0;
double r589904 = z;
double r589905 = t;
double r589906 = a;
double r589907 = r589905 + r589906;
double r589908 = sqrt(r589907);
double r589909 = r589904 * r589908;
double r589910 = 1.0;
double r589911 = r589910 / r589905;
double r589912 = 5.0;
double r589913 = 6.0;
double r589914 = r589912 / r589913;
double r589915 = r589906 + r589914;
double r589916 = 3.0;
double r589917 = r589905 * r589916;
double r589918 = r589903 / r589917;
double r589919 = r589915 - r589918;
double r589920 = b;
double r589921 = c;
double r589922 = r589920 - r589921;
double r589923 = r589919 * r589922;
double r589924 = -r589923;
double r589925 = fma(r589909, r589911, r589924);
double r589926 = -r589922;
double r589927 = r589926 + r589922;
double r589928 = r589919 * r589927;
double r589929 = r589925 + r589928;
double r589930 = r589903 * r589929;
double r589931 = exp(r589930);
double r589932 = r589902 * r589931;
double r589933 = r589901 + r589932;
double r589934 = r589901 / r589933;
return r589934;
}




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.5 |
|---|---|
| Target | 2.9 |
| Herbie | 2.3 |
Initial program 3.5
rmApplied div-inv3.5
Applied prod-diff22.2
Simplified2.3
Final simplification2.3
herbie shell --seed 2020025 +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)))))))))))