\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 r322816 = x;
double r322817 = y;
double r322818 = 2.0;
double r322819 = z;
double r322820 = t;
double r322821 = a;
double r322822 = r322820 + r322821;
double r322823 = sqrt(r322822);
double r322824 = r322819 * r322823;
double r322825 = r322824 / r322820;
double r322826 = b;
double r322827 = c;
double r322828 = r322826 - r322827;
double r322829 = 5.0;
double r322830 = 6.0;
double r322831 = r322829 / r322830;
double r322832 = r322821 + r322831;
double r322833 = 3.0;
double r322834 = r322820 * r322833;
double r322835 = r322818 / r322834;
double r322836 = r322832 - r322835;
double r322837 = r322828 * r322836;
double r322838 = r322825 - r322837;
double r322839 = r322818 * r322838;
double r322840 = exp(r322839);
double r322841 = r322817 * r322840;
double r322842 = r322816 + r322841;
double r322843 = r322816 / r322842;
return r322843;
}
double f(double x, double y, double z, double t, double a, double b, double c) {
double r322844 = x;
double r322845 = y;
double r322846 = 2.0;
double r322847 = z;
double r322848 = t;
double r322849 = cbrt(r322848);
double r322850 = r322849 * r322849;
double r322851 = r322847 / r322850;
double r322852 = a;
double r322853 = r322848 + r322852;
double r322854 = sqrt(r322853);
double r322855 = r322854 / r322849;
double r322856 = r322851 * r322855;
double r322857 = b;
double r322858 = c;
double r322859 = r322857 - r322858;
double r322860 = 5.0;
double r322861 = 6.0;
double r322862 = r322860 / r322861;
double r322863 = r322852 + r322862;
double r322864 = 3.0;
double r322865 = r322848 * r322864;
double r322866 = r322846 / r322865;
double r322867 = r322863 - r322866;
double r322868 = r322859 * r322867;
double r322869 = r322856 - r322868;
double r322870 = r322846 * r322869;
double r322871 = exp(r322870);
double r322872 = r322845 * r322871;
double r322873 = r322844 + r322872;
double r322874 = r322844 / r322873;
return r322874;
}




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.7 |
|---|---|
| Target | 2.9 |
| Herbie | 2.6 |
Initial program 3.7
rmApplied add-cube-cbrt3.7
Applied times-frac2.6
Final simplification2.6
herbie shell --seed 2019199
(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)))))))))))