\left(x \cdot \log y + z \cdot \log \left(1 - y\right)\right) - t
\left(\left(\left(2 \cdot \log \left(\sqrt[3]{y}\right)\right) \cdot x + \log \left({\left(\frac{1}{y}\right)}^{\frac{-1}{3}}\right) \cdot x\right) + z \cdot \left(\log 1 - \left(1 \cdot y + \frac{1}{2} \cdot \frac{{y}^{2}}{{1}^{2}}\right)\right)\right) - tdouble f(double x, double y, double z, double t) {
double r317940 = x;
double r317941 = y;
double r317942 = log(r317941);
double r317943 = r317940 * r317942;
double r317944 = z;
double r317945 = 1.0;
double r317946 = r317945 - r317941;
double r317947 = log(r317946);
double r317948 = r317944 * r317947;
double r317949 = r317943 + r317948;
double r317950 = t;
double r317951 = r317949 - r317950;
return r317951;
}
double f(double x, double y, double z, double t) {
double r317952 = 2.0;
double r317953 = y;
double r317954 = cbrt(r317953);
double r317955 = log(r317954);
double r317956 = r317952 * r317955;
double r317957 = x;
double r317958 = r317956 * r317957;
double r317959 = 1.0;
double r317960 = r317959 / r317953;
double r317961 = -0.3333333333333333;
double r317962 = pow(r317960, r317961);
double r317963 = log(r317962);
double r317964 = r317963 * r317957;
double r317965 = r317958 + r317964;
double r317966 = z;
double r317967 = 1.0;
double r317968 = log(r317967);
double r317969 = r317967 * r317953;
double r317970 = 0.5;
double r317971 = pow(r317953, r317952);
double r317972 = pow(r317967, r317952);
double r317973 = r317971 / r317972;
double r317974 = r317970 * r317973;
double r317975 = r317969 + r317974;
double r317976 = r317968 - r317975;
double r317977 = r317966 * r317976;
double r317978 = r317965 + r317977;
double r317979 = t;
double r317980 = r317978 - r317979;
return r317980;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t
Results
| Original | 9.7 |
|---|---|
| Target | 0.3 |
| Herbie | 0.4 |
Initial program 9.7
Taylor expanded around 0 0.3
rmApplied add-cube-cbrt0.3
Applied log-prod0.4
Applied distribute-lft-in0.4
Simplified0.4
Simplified0.4
Taylor expanded around inf 0.4
Final simplification0.4
herbie shell --seed 2019323
(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))