x \cdot e^{y \cdot \left(\log z - t\right) + a \cdot \left(\log \left(1 - z\right) - b\right)}\begin{array}{l}
\mathbf{if}\;\left(\log z - t\right) \cdot y + \left(\log \left(1 - z\right) - b\right) \cdot a \le 1.829259833094711928277412323062822707698 \cdot 10^{-6}:\\
\;\;\;\;\left(\sqrt[3]{e^{\sqrt[3]{\left(\log z - t\right) \cdot y + \left(\log \left(1 - z\right) - b\right) \cdot a} \cdot \left(\sqrt[3]{\left(\log z - t\right) \cdot y + \left(\log \left(1 - z\right) - b\right) \cdot a} \cdot \sqrt[3]{\left(\log z - t\right) \cdot y + \left(\log \left(1 - z\right) - b\right) \cdot a}\right)}} \cdot \left(\sqrt[3]{e^{\left(\log z - t\right) \cdot y + \left(\log \left(1 - z\right) - b\right) \cdot a}} \cdot \sqrt[3]{e^{\left(\log z - t\right) \cdot y + \left(\log \left(1 - z\right) - b\right) \cdot a}}\right)\right) \cdot x\\
\mathbf{else}:\\
\;\;\;\;e^{\left(1 \cdot a\right) \cdot \left(-z\right) - \left(\left(\left(z \cdot z\right) \cdot 0.5\right) \cdot a + b \cdot a\right)} \cdot x\\
\end{array}double f(double x, double y, double z, double t, double a, double b) {
double r6028291 = x;
double r6028292 = y;
double r6028293 = z;
double r6028294 = log(r6028293);
double r6028295 = t;
double r6028296 = r6028294 - r6028295;
double r6028297 = r6028292 * r6028296;
double r6028298 = a;
double r6028299 = 1.0;
double r6028300 = r6028299 - r6028293;
double r6028301 = log(r6028300);
double r6028302 = b;
double r6028303 = r6028301 - r6028302;
double r6028304 = r6028298 * r6028303;
double r6028305 = r6028297 + r6028304;
double r6028306 = exp(r6028305);
double r6028307 = r6028291 * r6028306;
return r6028307;
}
double f(double x, double y, double z, double t, double a, double b) {
double r6028308 = z;
double r6028309 = log(r6028308);
double r6028310 = t;
double r6028311 = r6028309 - r6028310;
double r6028312 = y;
double r6028313 = r6028311 * r6028312;
double r6028314 = 1.0;
double r6028315 = r6028314 - r6028308;
double r6028316 = log(r6028315);
double r6028317 = b;
double r6028318 = r6028316 - r6028317;
double r6028319 = a;
double r6028320 = r6028318 * r6028319;
double r6028321 = r6028313 + r6028320;
double r6028322 = 1.829259833094712e-06;
bool r6028323 = r6028321 <= r6028322;
double r6028324 = cbrt(r6028321);
double r6028325 = r6028324 * r6028324;
double r6028326 = r6028324 * r6028325;
double r6028327 = exp(r6028326);
double r6028328 = cbrt(r6028327);
double r6028329 = exp(r6028321);
double r6028330 = cbrt(r6028329);
double r6028331 = r6028330 * r6028330;
double r6028332 = r6028328 * r6028331;
double r6028333 = x;
double r6028334 = r6028332 * r6028333;
double r6028335 = r6028314 * r6028319;
double r6028336 = -r6028308;
double r6028337 = r6028335 * r6028336;
double r6028338 = r6028308 * r6028308;
double r6028339 = 0.5;
double r6028340 = r6028338 * r6028339;
double r6028341 = r6028340 * r6028319;
double r6028342 = r6028317 * r6028319;
double r6028343 = r6028341 + r6028342;
double r6028344 = r6028337 - r6028343;
double r6028345 = exp(r6028344);
double r6028346 = r6028345 * r6028333;
double r6028347 = r6028323 ? r6028334 : r6028346;
return r6028347;
}



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
if (+ (* y (- (log z) t)) (* a (- (log (- 1.0 z)) b))) < 1.829259833094712e-06Initial program 0.7
rmApplied add-cube-cbrt0.8
rmApplied add-cube-cbrt0.8
if 1.829259833094712e-06 < (+ (* y (- (log z) t)) (* a (- (log (- 1.0 z)) b))) Initial program 43.0
Taylor expanded around 0 17.2
Simplified17.2
Taylor expanded around inf 19.6
Simplified19.6
Final simplification1.3
herbie shell --seed 2019172
(FPCore (x y z t a b)
:name "Numeric.SpecFunctions:incompleteBetaApprox from math-functions-0.1.5.2, B"
(* x (exp (+ (* y (- (log z) t)) (* a (- (log (- 1.0 z)) b))))))