\left(x \cdot \log y + z \cdot \log \left(1 - y\right)\right) - t
\left(\left(x \cdot \left(2 \cdot \log \left(\sqrt[3]{y}\right) + \log \left(\sqrt[3]{\sqrt[3]{y} \cdot \sqrt[3]{y}}\right)\right) + x \cdot \log \left(\sqrt[3]{1 \cdot {y}^{\frac{1}{3}}}\right)\right) + \left(z \cdot \log 1 - \left(1 \cdot \left(z \cdot y\right) + \frac{1}{2} \cdot \frac{z \cdot {y}^{2}}{{1}^{2}}\right)\right)\right) - tdouble f(double x, double y, double z, double t) {
double r454816 = x;
double r454817 = y;
double r454818 = log(r454817);
double r454819 = r454816 * r454818;
double r454820 = z;
double r454821 = 1.0;
double r454822 = r454821 - r454817;
double r454823 = log(r454822);
double r454824 = r454820 * r454823;
double r454825 = r454819 + r454824;
double r454826 = t;
double r454827 = r454825 - r454826;
return r454827;
}
double f(double x, double y, double z, double t) {
double r454828 = x;
double r454829 = 2.0;
double r454830 = y;
double r454831 = cbrt(r454830);
double r454832 = log(r454831);
double r454833 = r454829 * r454832;
double r454834 = r454831 * r454831;
double r454835 = cbrt(r454834);
double r454836 = log(r454835);
double r454837 = r454833 + r454836;
double r454838 = r454828 * r454837;
double r454839 = 1.0;
double r454840 = 0.3333333333333333;
double r454841 = pow(r454830, r454840);
double r454842 = r454839 * r454841;
double r454843 = cbrt(r454842);
double r454844 = log(r454843);
double r454845 = r454828 * r454844;
double r454846 = r454838 + r454845;
double r454847 = z;
double r454848 = 1.0;
double r454849 = log(r454848);
double r454850 = r454847 * r454849;
double r454851 = r454847 * r454830;
double r454852 = r454848 * r454851;
double r454853 = 0.5;
double r454854 = pow(r454830, r454829);
double r454855 = r454847 * r454854;
double r454856 = pow(r454848, r454829);
double r454857 = r454855 / r454856;
double r454858 = r454853 * r454857;
double r454859 = r454852 + r454858;
double r454860 = r454850 - r454859;
double r454861 = r454846 + r454860;
double r454862 = t;
double r454863 = r454861 - r454862;
return r454863;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t
Results
| Original | 9.3 |
|---|---|
| Target | 0.3 |
| Herbie | 0.4 |
Initial program 9.3
Taylor expanded around 0 0.4
rmApplied add-cube-cbrt0.4
Applied log-prod0.4
Applied distribute-lft-in0.4
Simplified0.4
rmApplied add-cube-cbrt0.4
Applied cbrt-prod0.4
Applied log-prod0.4
Applied distribute-lft-in0.4
Applied associate-+r+0.4
Simplified0.4
rmApplied *-un-lft-identity0.4
Applied cbrt-prod0.4
Simplified0.4
Simplified0.4
Final simplification0.4
herbie shell --seed 2019353
(FPCore (x y z t)
:name "Numeric.SpecFunctions:invIncompleteBetaWorker from math-functions-0.1.5.2, B"
:precision binary64
:herbie-target
(- (* (- z) (+ (+ (* 0.5 (* y y)) y) (* (/ 0.3333333333333333 (* 1 (* 1 1))) (* y (* y y))))) (- t (* x (log y))))
(- (+ (* x (log y)) (* z (log (- 1 y)))) t))