\frac{x \cdot e^{\left(y \cdot \log z + \left(t - 1\right) \cdot \log a\right) - b}}{y}\frac{\sqrt[3]{e^{\mathsf{fma}\left(y, \log z, \left(t - 1\right) \cdot \log a\right) - b}} \cdot \sqrt[3]{e^{\mathsf{fma}\left(y, \log z, \left(t - 1\right) \cdot \log a\right) - b}}}{\sqrt[3]{y} \cdot \sqrt[3]{y}} \cdot \frac{x}{\frac{\left(\sqrt[3]{\sqrt[3]{y}} \cdot \sqrt[3]{\sqrt[3]{y}}\right) \cdot \sqrt[3]{\sqrt[3]{y}}}{\sqrt[3]{e^{\mathsf{fma}\left(y, \log z, \left(t - 1\right) \cdot \log a\right) - b}}}}double f(double x, double y, double z, double t, double a, double b) {
double r28777202 = x;
double r28777203 = y;
double r28777204 = z;
double r28777205 = log(r28777204);
double r28777206 = r28777203 * r28777205;
double r28777207 = t;
double r28777208 = 1.0;
double r28777209 = r28777207 - r28777208;
double r28777210 = a;
double r28777211 = log(r28777210);
double r28777212 = r28777209 * r28777211;
double r28777213 = r28777206 + r28777212;
double r28777214 = b;
double r28777215 = r28777213 - r28777214;
double r28777216 = exp(r28777215);
double r28777217 = r28777202 * r28777216;
double r28777218 = r28777217 / r28777203;
return r28777218;
}
double f(double x, double y, double z, double t, double a, double b) {
double r28777219 = y;
double r28777220 = z;
double r28777221 = log(r28777220);
double r28777222 = t;
double r28777223 = 1.0;
double r28777224 = r28777222 - r28777223;
double r28777225 = a;
double r28777226 = log(r28777225);
double r28777227 = r28777224 * r28777226;
double r28777228 = fma(r28777219, r28777221, r28777227);
double r28777229 = b;
double r28777230 = r28777228 - r28777229;
double r28777231 = exp(r28777230);
double r28777232 = cbrt(r28777231);
double r28777233 = r28777232 * r28777232;
double r28777234 = cbrt(r28777219);
double r28777235 = r28777234 * r28777234;
double r28777236 = r28777233 / r28777235;
double r28777237 = x;
double r28777238 = cbrt(r28777234);
double r28777239 = r28777238 * r28777238;
double r28777240 = r28777239 * r28777238;
double r28777241 = r28777240 / r28777232;
double r28777242 = r28777237 / r28777241;
double r28777243 = r28777236 * r28777242;
return r28777243;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t




Bits error versus a




Bits error versus b
| Original | 2.0 |
|---|---|
| Target | 10.8 |
| Herbie | 1.1 |
Initial program 2.0
Simplified2.0
rmApplied associate-/l*1.9
rmApplied add-cube-cbrt1.9
Applied add-cube-cbrt1.9
Applied times-frac1.9
Applied *-un-lft-identity1.9
Applied times-frac1.1
Simplified1.1
rmApplied add-cube-cbrt1.1
Final simplification1.1
herbie shell --seed 2019174 +o rules:numerics
(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))