\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}{y \cdot e^{2 \cdot \left(\frac{\sqrt{t + a}}{t} \cdot z + \left(\left(a - \frac{\frac{2}{3}}{t}\right) + \frac{5}{6}\right) \cdot \left(c - b\right)\right)} + x}double f(double x, double y, double z, double t, double a, double b, double c) {
double r286791 = x;
double r286792 = y;
double r286793 = 2.0;
double r286794 = z;
double r286795 = t;
double r286796 = a;
double r286797 = r286795 + r286796;
double r286798 = sqrt(r286797);
double r286799 = r286794 * r286798;
double r286800 = r286799 / r286795;
double r286801 = b;
double r286802 = c;
double r286803 = r286801 - r286802;
double r286804 = 5.0;
double r286805 = 6.0;
double r286806 = r286804 / r286805;
double r286807 = r286796 + r286806;
double r286808 = 3.0;
double r286809 = r286795 * r286808;
double r286810 = r286793 / r286809;
double r286811 = r286807 - r286810;
double r286812 = r286803 * r286811;
double r286813 = r286800 - r286812;
double r286814 = r286793 * r286813;
double r286815 = exp(r286814);
double r286816 = r286792 * r286815;
double r286817 = r286791 + r286816;
double r286818 = r286791 / r286817;
return r286818;
}
double f(double x, double y, double z, double t, double a, double b, double c) {
double r286819 = x;
double r286820 = y;
double r286821 = 2.0;
double r286822 = t;
double r286823 = a;
double r286824 = r286822 + r286823;
double r286825 = sqrt(r286824);
double r286826 = r286825 / r286822;
double r286827 = z;
double r286828 = r286826 * r286827;
double r286829 = 3.0;
double r286830 = r286821 / r286829;
double r286831 = r286830 / r286822;
double r286832 = r286823 - r286831;
double r286833 = 5.0;
double r286834 = 6.0;
double r286835 = r286833 / r286834;
double r286836 = r286832 + r286835;
double r286837 = c;
double r286838 = b;
double r286839 = r286837 - r286838;
double r286840 = r286836 * r286839;
double r286841 = r286828 + r286840;
double r286842 = r286821 * r286841;
double r286843 = exp(r286842);
double r286844 = r286820 * r286843;
double r286845 = r286844 + r286819;
double r286846 = r286819 / r286845;
return r286846;
}




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 | 2.9 |
| Herbie | 3.1 |
Initial program 3.8
Simplified3.1
Final simplification3.1
herbie shell --seed 2019195
(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)))))))))))