x \cdot e^{y \cdot \left(\log z - t\right) + a \cdot \left(\log \left(1 - z\right) - b\right)}x \cdot \left({e}^{\left(\frac{\mathsf{fma}\left(\mathsf{fma}\left(-b, 1, b\right), a, \mathsf{fma}\left(y, \log z - t, a \cdot \mathsf{fma}\left(\sqrt{\frac{1}{2} \cdot \frac{{z}^{2}}{{1}^{2}} + 1 \cdot z} + \sqrt{\log 1}, \sqrt{\log 1} - \sqrt{\frac{1}{2} \cdot \frac{{z}^{2}}{{1}^{2}} + 1 \cdot z}, -1 \cdot b\right)\right)\right)}{2}\right)} \cdot {e}^{\left(\frac{\mathsf{fma}\left(\mathsf{fma}\left(-b, 1, b\right), a, \mathsf{fma}\left(y, \log z - t, a \cdot \mathsf{fma}\left(\sqrt{\frac{1}{2} \cdot \frac{{z}^{2}}{{1}^{2}} + 1 \cdot z} + \sqrt{\log 1}, \sqrt{\log 1} - \sqrt{\frac{1}{2} \cdot \frac{{z}^{2}}{{1}^{2}} + 1 \cdot z}, -1 \cdot b\right)\right)\right)}{2}\right)}\right)double f(double x, double y, double z, double t, double a, double b) {
double r158321 = x;
double r158322 = y;
double r158323 = z;
double r158324 = log(r158323);
double r158325 = t;
double r158326 = r158324 - r158325;
double r158327 = r158322 * r158326;
double r158328 = a;
double r158329 = 1.0;
double r158330 = r158329 - r158323;
double r158331 = log(r158330);
double r158332 = b;
double r158333 = r158331 - r158332;
double r158334 = r158328 * r158333;
double r158335 = r158327 + r158334;
double r158336 = exp(r158335);
double r158337 = r158321 * r158336;
return r158337;
}
double f(double x, double y, double z, double t, double a, double b) {
double r158338 = x;
double r158339 = exp(1.0);
double r158340 = b;
double r158341 = -r158340;
double r158342 = 1.0;
double r158343 = fma(r158341, r158342, r158340);
double r158344 = a;
double r158345 = y;
double r158346 = z;
double r158347 = log(r158346);
double r158348 = t;
double r158349 = r158347 - r158348;
double r158350 = 0.5;
double r158351 = 2.0;
double r158352 = pow(r158346, r158351);
double r158353 = 1.0;
double r158354 = pow(r158353, r158351);
double r158355 = r158352 / r158354;
double r158356 = r158350 * r158355;
double r158357 = r158353 * r158346;
double r158358 = r158356 + r158357;
double r158359 = sqrt(r158358);
double r158360 = log(r158353);
double r158361 = sqrt(r158360);
double r158362 = r158359 + r158361;
double r158363 = r158361 - r158359;
double r158364 = -1.0;
double r158365 = r158364 * r158340;
double r158366 = fma(r158362, r158363, r158365);
double r158367 = r158344 * r158366;
double r158368 = fma(r158345, r158349, r158367);
double r158369 = fma(r158343, r158344, r158368);
double r158370 = r158369 / r158351;
double r158371 = pow(r158339, r158370);
double r158372 = r158371 * r158371;
double r158373 = r158338 * r158372;
return r158373;
}



Bits error versus x



Bits error versus y



Bits error versus z



Bits error versus t



Bits error versus a



Bits error versus b
Initial program 1.8
Taylor expanded around 0 0.5
rmApplied *-un-lft-identity0.5
Applied add-sqr-sqrt0.5
Applied add-sqr-sqrt0.5
Applied difference-of-squares0.5
Applied prod-diff0.5
Applied distribute-lft-in0.5
Applied associate-+r+0.5
Simplified0.3
rmApplied *-un-lft-identity0.3
Applied exp-prod0.3
Simplified0.3
rmApplied sqr-pow0.3
Simplified0.3
Simplified0.3
Final simplification0.3
herbie shell --seed 2020081 +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))))))