\left(\left(\left(x + y\right) + z\right) - z \cdot \log t\right) + \left(a - 0.5\right) \cdot b
\left(\left(\left(x + y\right) + z\right) - z \cdot \log t\right) + \left(a - 0.5\right) \cdot b
double f(double x, double y, double z, double t, double a, double b) {
double r457763 = x;
double r457764 = y;
double r457765 = r457763 + r457764;
double r457766 = z;
double r457767 = r457765 + r457766;
double r457768 = t;
double r457769 = log(r457768);
double r457770 = r457766 * r457769;
double r457771 = r457767 - r457770;
double r457772 = a;
double r457773 = 0.5;
double r457774 = r457772 - r457773;
double r457775 = b;
double r457776 = r457774 * r457775;
double r457777 = r457771 + r457776;
return r457777;
}
double f(double x, double y, double z, double t, double a, double b) {
double r457778 = x;
double r457779 = y;
double r457780 = r457778 + r457779;
double r457781 = z;
double r457782 = r457780 + r457781;
double r457783 = t;
double r457784 = log(r457783);
double r457785 = r457781 * r457784;
double r457786 = r457782 - r457785;
double r457787 = a;
double r457788 = 0.5;
double r457789 = r457787 - r457788;
double r457790 = b;
double r457791 = r457789 * r457790;
double r457792 = r457786 + r457791;
return r457792;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t




Bits error versus a




Bits error versus b
Results
| Original | 0.1 |
|---|---|
| Target | 0.4 |
| Herbie | 0.1 |
Initial program 0.1
Final simplification0.1
herbie shell --seed 2020047
(FPCore (x y z t a b)
:name "Numeric.SpecFunctions:logBeta from math-functions-0.1.5.2, A"
:precision binary64
:herbie-target
(+ (+ (+ x y) (/ (* (- 1 (pow (log t) 2)) z) (+ 1 (log t)))) (* (- a 0.5) b))
(+ (- (+ (+ x y) z) (* z (log t))) (* (- a 0.5) b)))