x \cdot e^{y \cdot \left(\log z - t\right) + a \cdot \left(\log \left(1 - z\right) - b\right)}x \cdot \mathsf{expm1}\left(\mathsf{log1p}\left({e}^{\left(y \cdot \left(\log z - t\right) + a \cdot \left(\left(\log 1 - \left(\frac{1}{2} \cdot \frac{{z}^{2}}{{1}^{2}} + 1 \cdot z\right)\right) - b\right)\right)}\right)\right)double f(double x, double y, double z, double t, double a, double b) {
double r115298 = x;
double r115299 = y;
double r115300 = z;
double r115301 = log(r115300);
double r115302 = t;
double r115303 = r115301 - r115302;
double r115304 = r115299 * r115303;
double r115305 = a;
double r115306 = 1.0;
double r115307 = r115306 - r115300;
double r115308 = log(r115307);
double r115309 = b;
double r115310 = r115308 - r115309;
double r115311 = r115305 * r115310;
double r115312 = r115304 + r115311;
double r115313 = exp(r115312);
double r115314 = r115298 * r115313;
return r115314;
}
double f(double x, double y, double z, double t, double a, double b) {
double r115315 = x;
double r115316 = exp(1.0);
double r115317 = y;
double r115318 = z;
double r115319 = log(r115318);
double r115320 = t;
double r115321 = r115319 - r115320;
double r115322 = r115317 * r115321;
double r115323 = a;
double r115324 = 1.0;
double r115325 = log(r115324);
double r115326 = 0.5;
double r115327 = 2.0;
double r115328 = pow(r115318, r115327);
double r115329 = pow(r115324, r115327);
double r115330 = r115328 / r115329;
double r115331 = r115326 * r115330;
double r115332 = r115324 * r115318;
double r115333 = r115331 + r115332;
double r115334 = r115325 - r115333;
double r115335 = b;
double r115336 = r115334 - r115335;
double r115337 = r115323 * r115336;
double r115338 = r115322 + r115337;
double r115339 = pow(r115316, r115338);
double r115340 = log1p(r115339);
double r115341 = expm1(r115340);
double r115342 = r115315 * r115341;
return r115342;
}



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
Initial program 1.9
Taylor expanded around 0 0.4
rmApplied *-un-lft-identity0.4
Applied exp-prod0.4
Simplified0.4
rmApplied expm1-log1p-u0.4
Final simplification0.4
herbie shell --seed 2019347 +o rules:numerics
(FPCore (x y z t a b)
:name "Numeric.SpecFunctions:incompleteBetaApprox from math-functions-0.1.5.2, B"
:precision binary64
(* x (exp (+ (* y (- (log z) t)) (* a (- (log (- 1 z)) b))))))