\frac{x \cdot e^{\left(y \cdot \log z + \left(t - 1\right) \cdot \log a\right) - b}}{y}\frac{\sqrt[3]{e^{\left(\log a \cdot \left(t - 1\right) + \log z \cdot y\right) - b}}}{\sqrt[3]{\sqrt[3]{y}} \cdot \left(\sqrt[3]{\sqrt[3]{y}} \cdot \sqrt[3]{\sqrt[3]{y}}\right)} \cdot \left(x \cdot \frac{\sqrt[3]{e^{\left(\log a \cdot \left(t - 1\right) + \log z \cdot y\right) - b}} \cdot \sqrt[3]{e^{\left(\log a \cdot \left(t - 1\right) + \log z \cdot y\right) - b}}}{\sqrt[3]{y} \cdot \sqrt[3]{y}}\right)double f(double x, double y, double z, double t, double a, double b) {
double r21139130 = x;
double r21139131 = y;
double r21139132 = z;
double r21139133 = log(r21139132);
double r21139134 = r21139131 * r21139133;
double r21139135 = t;
double r21139136 = 1.0;
double r21139137 = r21139135 - r21139136;
double r21139138 = a;
double r21139139 = log(r21139138);
double r21139140 = r21139137 * r21139139;
double r21139141 = r21139134 + r21139140;
double r21139142 = b;
double r21139143 = r21139141 - r21139142;
double r21139144 = exp(r21139143);
double r21139145 = r21139130 * r21139144;
double r21139146 = r21139145 / r21139131;
return r21139146;
}
double f(double x, double y, double z, double t, double a, double b) {
double r21139147 = a;
double r21139148 = log(r21139147);
double r21139149 = t;
double r21139150 = 1.0;
double r21139151 = r21139149 - r21139150;
double r21139152 = r21139148 * r21139151;
double r21139153 = z;
double r21139154 = log(r21139153);
double r21139155 = y;
double r21139156 = r21139154 * r21139155;
double r21139157 = r21139152 + r21139156;
double r21139158 = b;
double r21139159 = r21139157 - r21139158;
double r21139160 = exp(r21139159);
double r21139161 = cbrt(r21139160);
double r21139162 = cbrt(r21139155);
double r21139163 = cbrt(r21139162);
double r21139164 = r21139163 * r21139163;
double r21139165 = r21139163 * r21139164;
double r21139166 = r21139161 / r21139165;
double r21139167 = x;
double r21139168 = r21139161 * r21139161;
double r21139169 = r21139162 * r21139162;
double r21139170 = r21139168 / r21139169;
double r21139171 = r21139167 * r21139170;
double r21139172 = r21139166 * r21139171;
return r21139172;
}




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 | 1.9 |
|---|---|
| Target | 11.2 |
| Herbie | 1.1 |
Initial program 1.9
rmApplied *-un-lft-identity1.9
Applied times-frac2.1
Simplified2.1
rmApplied add-cube-cbrt2.1
Applied add-cube-cbrt2.1
Applied times-frac2.1
Applied associate-*r*1.1
rmApplied add-cube-cbrt1.1
Final simplification1.1
herbie shell --seed 2019192
(FPCore (x y z t a b)
:name "Numeric.SpecFunctions:incompleteBetaWorker from math-functions-0.1.5.2, A"
:herbie-target
(if (< t -0.8845848504127471) (/ (* x (/ (pow a (- t 1.0)) y)) (- (+ b 1.0) (* y (log z)))) (if (< t 852031.2288374073) (/ (* (/ x y) (pow a (- t 1.0))) (exp (- b (* (log z) y)))) (/ (* x (/ (pow a (- t 1.0)) y)) (- (+ b 1.0) (* y (log z))))))
(/ (* x (exp (- (+ (* y (log z)) (* (- t 1.0) (log a))) b))) y))