\frac{x \cdot e^{\left(y \cdot \log z + \left(t - 1.0\right) \cdot \log a\right) - b}}{y}\frac{\frac{\frac{e^{\left(\log a \cdot \left(t - 1.0\right) + \log z \cdot y\right) - b}}{\frac{\sqrt[3]{y}}{x}}}{\sqrt[3]{y}}}{\sqrt[3]{y}}double f(double x, double y, double z, double t, double a, double b) {
double r24814020 = x;
double r24814021 = y;
double r24814022 = z;
double r24814023 = log(r24814022);
double r24814024 = r24814021 * r24814023;
double r24814025 = t;
double r24814026 = 1.0;
double r24814027 = r24814025 - r24814026;
double r24814028 = a;
double r24814029 = log(r24814028);
double r24814030 = r24814027 * r24814029;
double r24814031 = r24814024 + r24814030;
double r24814032 = b;
double r24814033 = r24814031 - r24814032;
double r24814034 = exp(r24814033);
double r24814035 = r24814020 * r24814034;
double r24814036 = r24814035 / r24814021;
return r24814036;
}
double f(double x, double y, double z, double t, double a, double b) {
double r24814037 = a;
double r24814038 = log(r24814037);
double r24814039 = t;
double r24814040 = 1.0;
double r24814041 = r24814039 - r24814040;
double r24814042 = r24814038 * r24814041;
double r24814043 = z;
double r24814044 = log(r24814043);
double r24814045 = y;
double r24814046 = r24814044 * r24814045;
double r24814047 = r24814042 + r24814046;
double r24814048 = b;
double r24814049 = r24814047 - r24814048;
double r24814050 = exp(r24814049);
double r24814051 = cbrt(r24814045);
double r24814052 = x;
double r24814053 = r24814051 / r24814052;
double r24814054 = r24814050 / r24814053;
double r24814055 = r24814054 / r24814051;
double r24814056 = r24814055 / r24814051;
return r24814056;
}




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 | 10.9 |
| Herbie | 3.1 |
Initial program 1.9
rmApplied add-sqr-sqrt2.0
Taylor expanded around inf 2.0
Simplified1.9
rmApplied add-cube-cbrt1.9
rmApplied add-cube-cbrt2.0
Applied associate-/r*2.0
Simplified3.1
Final simplification3.1
herbie shell --seed 2019162
(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) (* 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) (* y (log z))))))
(/ (* x (exp (- (+ (* y (log z)) (* (- t 1.0) (log a))) b))) y))