\left(x \cdot \log y + z \cdot \log \left(1 - y\right)\right) - t
\left(\left(\left(2 \cdot \log \left(\sqrt[3]{{\left({y}^{\frac{2}{3}}\right)}^{\frac{2}{3}} \cdot {\left(\sqrt[3]{y}\right)}^{\frac{2}{3}}} \cdot \sqrt[3]{\sqrt[3]{y}}\right)\right) \cdot x + x \cdot \log \left(\sqrt[3]{y}\right)\right) + \left(z \cdot \left(\log 1 - y \cdot 1\right) - \frac{1}{2} \cdot \frac{z \cdot {y}^{2}}{{1}^{2}}\right)\right) - tdouble f(double x, double y, double z, double t) {
double r305604 = x;
double r305605 = y;
double r305606 = log(r305605);
double r305607 = r305604 * r305606;
double r305608 = z;
double r305609 = 1.0;
double r305610 = r305609 - r305605;
double r305611 = log(r305610);
double r305612 = r305608 * r305611;
double r305613 = r305607 + r305612;
double r305614 = t;
double r305615 = r305613 - r305614;
return r305615;
}
double f(double x, double y, double z, double t) {
double r305616 = 2.0;
double r305617 = y;
double r305618 = 0.6666666666666666;
double r305619 = pow(r305617, r305618);
double r305620 = pow(r305619, r305618);
double r305621 = cbrt(r305617);
double r305622 = pow(r305621, r305618);
double r305623 = r305620 * r305622;
double r305624 = cbrt(r305623);
double r305625 = cbrt(r305621);
double r305626 = r305624 * r305625;
double r305627 = log(r305626);
double r305628 = r305616 * r305627;
double r305629 = x;
double r305630 = r305628 * r305629;
double r305631 = log(r305621);
double r305632 = r305629 * r305631;
double r305633 = r305630 + r305632;
double r305634 = z;
double r305635 = 1.0;
double r305636 = log(r305635);
double r305637 = r305617 * r305635;
double r305638 = r305636 - r305637;
double r305639 = r305634 * r305638;
double r305640 = 0.5;
double r305641 = pow(r305617, r305616);
double r305642 = r305634 * r305641;
double r305643 = pow(r305635, r305616);
double r305644 = r305642 / r305643;
double r305645 = r305640 * r305644;
double r305646 = r305639 - r305645;
double r305647 = r305633 + r305646;
double r305648 = t;
double r305649 = r305647 - r305648;
return r305649;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t
Results
| Original | 9.2 |
|---|---|
| Target | 0.3 |
| Herbie | 0.4 |
Initial program 9.2
Taylor expanded around 0 0.3
Simplified0.3
rmApplied add-cube-cbrt0.3
Applied log-prod0.4
Applied distribute-lft-in0.4
Simplified0.4
rmApplied add-cube-cbrt0.4
Applied cbrt-prod0.4
Simplified0.4
rmApplied add-cube-cbrt0.4
Applied unpow-prod-down0.4
Simplified0.4
Final simplification0.4
herbie shell --seed 2019305
(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.333333333333333315 (* 1 (* 1 1))) (* y (* y y))))) (- t (* x (log y))))
(- (+ (* x (log y)) (* z (log (- 1 y)))) t))