\left(x \cdot \log y + z \cdot \log \left(1.0 - y\right)\right) - t
\left(z \cdot \left(\left(\log 1.0 - y \cdot 1.0\right) - \frac{\frac{\frac{1}{2}}{\frac{1.0}{y}}}{\frac{1.0}{y}}\right) + \left(\left(\log \left(\sqrt[3]{y}\right) + \log \left({y}^{\frac{1}{3}}\right)\right) \cdot x + x \cdot \log \left(\sqrt[3]{y}\right)\right)\right) - tdouble f(double x, double y, double z, double t) {
double r24784795 = x;
double r24784796 = y;
double r24784797 = log(r24784796);
double r24784798 = r24784795 * r24784797;
double r24784799 = z;
double r24784800 = 1.0;
double r24784801 = r24784800 - r24784796;
double r24784802 = log(r24784801);
double r24784803 = r24784799 * r24784802;
double r24784804 = r24784798 + r24784803;
double r24784805 = t;
double r24784806 = r24784804 - r24784805;
return r24784806;
}
double f(double x, double y, double z, double t) {
double r24784807 = z;
double r24784808 = 1.0;
double r24784809 = log(r24784808);
double r24784810 = y;
double r24784811 = r24784810 * r24784808;
double r24784812 = r24784809 - r24784811;
double r24784813 = 0.5;
double r24784814 = r24784808 / r24784810;
double r24784815 = r24784813 / r24784814;
double r24784816 = r24784815 / r24784814;
double r24784817 = r24784812 - r24784816;
double r24784818 = r24784807 * r24784817;
double r24784819 = cbrt(r24784810);
double r24784820 = log(r24784819);
double r24784821 = 0.3333333333333333;
double r24784822 = pow(r24784810, r24784821);
double r24784823 = log(r24784822);
double r24784824 = r24784820 + r24784823;
double r24784825 = x;
double r24784826 = r24784824 * r24784825;
double r24784827 = r24784825 * r24784820;
double r24784828 = r24784826 + r24784827;
double r24784829 = r24784818 + r24784828;
double r24784830 = t;
double r24784831 = r24784829 - r24784830;
return r24784831;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t
Results
| Original | 9.1 |
|---|---|
| Target | 0.3 |
| Herbie | 0.4 |
Initial program 9.1
Taylor expanded around 0 0.4
Simplified0.4
rmApplied add-cube-cbrt0.4
Applied log-prod0.4
Applied distribute-lft-in0.4
Simplified0.4
rmApplied pow1/30.4
Final simplification0.4
herbie shell --seed 2019164
(FPCore (x y z t)
:name "Numeric.SpecFunctions:invIncompleteBetaWorker from math-functions-0.1.5.2, B"
:herbie-target
(- (* (- z) (+ (+ (* 0.5 (* y y)) y) (* (/ 1/3 (* 1.0 (* 1.0 1.0))) (* y (* y y))))) (- t (* x (log y))))
(- (+ (* x (log y)) (* z (log (- 1.0 y)))) t))