x \cdot e^{y \cdot \left(\log z - t\right) + a \cdot \left(\log \left(1.0 - z\right) - b\right)}\begin{array}{l}
\mathbf{if}\;b \le -2.495491239283955 \cdot 10^{-125}:\\
\;\;\;\;x \cdot e^{y \cdot \left(\left(\log z - t\right)\right) + a \cdot \left(\left(\left(\log 1.0 - z \cdot 1.0\right) - \left(\frac{z}{1.0} \cdot \frac{z}{1.0}\right) \cdot \frac{1}{2}\right) - b\right)}\\
\mathbf{elif}\;b \le 1.1968319162136127 \cdot 10^{-252}:\\
\;\;\;\;x \cdot e^{a \cdot \log 1.0 + y \cdot \left(\log z - t\right)}\\
\mathbf{else}:\\
\;\;\;\;x \cdot e^{y \cdot \left(\left(\log z - t\right)\right) + a \cdot \left(\left(\left(\log 1.0 - z \cdot 1.0\right) - \left(\frac{z}{1.0} \cdot \frac{z}{1.0}\right) \cdot \frac{1}{2}\right) - b\right)}\\
\end{array}double f(double x, double y, double z, double t, double a, double b) {
double r3196307 = x;
double r3196308 = y;
double r3196309 = z;
double r3196310 = log(r3196309);
double r3196311 = t;
double r3196312 = r3196310 - r3196311;
double r3196313 = r3196308 * r3196312;
double r3196314 = a;
double r3196315 = 1.0;
double r3196316 = r3196315 - r3196309;
double r3196317 = log(r3196316);
double r3196318 = b;
double r3196319 = r3196317 - r3196318;
double r3196320 = r3196314 * r3196319;
double r3196321 = r3196313 + r3196320;
double r3196322 = exp(r3196321);
double r3196323 = r3196307 * r3196322;
return r3196323;
}
double f(double x, double y, double z, double t, double a, double b) {
double r3196324 = b;
double r3196325 = -2.495491239283955e-125;
bool r3196326 = r3196324 <= r3196325;
double r3196327 = x;
double r3196328 = y;
double r3196329 = z;
double r3196330 = log(r3196329);
double r3196331 = t;
double r3196332 = r3196330 - r3196331;
double r3196333 = /* ERROR: no posit support in C */;
double r3196334 = /* ERROR: no posit support in C */;
double r3196335 = r3196328 * r3196334;
double r3196336 = a;
double r3196337 = 1.0;
double r3196338 = log(r3196337);
double r3196339 = r3196329 * r3196337;
double r3196340 = r3196338 - r3196339;
double r3196341 = r3196329 / r3196337;
double r3196342 = r3196341 * r3196341;
double r3196343 = 0.5;
double r3196344 = r3196342 * r3196343;
double r3196345 = r3196340 - r3196344;
double r3196346 = r3196345 - r3196324;
double r3196347 = r3196336 * r3196346;
double r3196348 = r3196335 + r3196347;
double r3196349 = exp(r3196348);
double r3196350 = r3196327 * r3196349;
double r3196351 = 1.1968319162136127e-252;
bool r3196352 = r3196324 <= r3196351;
double r3196353 = r3196336 * r3196338;
double r3196354 = r3196328 * r3196332;
double r3196355 = r3196353 + r3196354;
double r3196356 = exp(r3196355);
double r3196357 = r3196327 * r3196356;
double r3196358 = r3196352 ? r3196357 : r3196350;
double r3196359 = r3196326 ? r3196350 : r3196358;
return r3196359;
}



Bits error versus x



Bits error versus y



Bits error versus z



Bits error versus t



Bits error versus a



Bits error versus b
if b < -2.495491239283955e-125 or 1.1968319162136127e-252 < b Initial program 1.1
Taylor expanded around 0 0.5
Simplified0.5
rmApplied insert-posit164.8
if -2.495491239283955e-125 < b < 1.1968319162136127e-252Initial program 4.6
Taylor expanded around 0 6.6
Simplified6.6
Final simplification5.2
herbie shell --seed 2019156
(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))))))