\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 \log \left(e^{\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 r476789 = x;
double r476790 = y;
double r476791 = 2.0;
double r476792 = z;
double r476793 = t;
double r476794 = a;
double r476795 = r476793 + r476794;
double r476796 = sqrt(r476795);
double r476797 = r476792 * r476796;
double r476798 = r476797 / r476793;
double r476799 = b;
double r476800 = c;
double r476801 = r476799 - r476800;
double r476802 = 5.0;
double r476803 = 6.0;
double r476804 = r476802 / r476803;
double r476805 = r476794 + r476804;
double r476806 = 3.0;
double r476807 = r476793 * r476806;
double r476808 = r476791 / r476807;
double r476809 = r476805 - r476808;
double r476810 = r476801 * r476809;
double r476811 = r476798 - r476810;
double r476812 = r476791 * r476811;
double r476813 = exp(r476812);
double r476814 = r476790 * r476813;
double r476815 = r476789 + r476814;
double r476816 = r476789 / r476815;
return r476816;
}
double f(double x, double y, double z, double t, double a, double b, double c) {
double r476817 = x;
double r476818 = y;
double r476819 = 2.0;
double r476820 = z;
double r476821 = t;
double r476822 = cbrt(r476821);
double r476823 = r476822 * r476822;
double r476824 = r476820 / r476823;
double r476825 = a;
double r476826 = r476821 + r476825;
double r476827 = sqrt(r476826);
double r476828 = r476827 / r476822;
double r476829 = r476824 * r476828;
double r476830 = b;
double r476831 = c;
double r476832 = r476830 - r476831;
double r476833 = 5.0;
double r476834 = 6.0;
double r476835 = r476833 / r476834;
double r476836 = r476825 + r476835;
double r476837 = 3.0;
double r476838 = r476821 * r476837;
double r476839 = r476819 / r476838;
double r476840 = r476836 - r476839;
double r476841 = r476832 * r476840;
double r476842 = r476829 - r476841;
double r476843 = exp(r476842);
double r476844 = log(r476843);
double r476845 = r476819 * r476844;
double r476846 = exp(r476845);
double r476847 = r476818 * r476846;
double r476848 = r476817 + r476847;
double r476849 = r476817 / r476848;
return r476849;
}




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 | 3.8 |
|---|---|
| Target | 3.1 |
| Herbie | 2.7 |
Initial program 3.8
rmApplied add-cube-cbrt3.8
Applied times-frac2.7
rmApplied add-log-exp7.1
Applied add-log-exp17.1
Applied diff-log17.1
Simplified2.7
Final simplification2.7
herbie shell --seed 2019350
(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)))))))))))