Average Error: 1.8 → 0.4
Time: 11.9s
Precision: 64
\[x \cdot e^{y \cdot \left(\log z - t\right) + a \cdot \left(\log \left(1 - z\right) - b\right)}\]
\[x \cdot e^{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)}\]
x \cdot e^{y \cdot \left(\log z - t\right) + a \cdot \left(\log \left(1 - z\right) - b\right)}
x \cdot e^{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)}
double f(double x, double y, double z, double t, double a, double b) {
        double r99333 = x;
        double r99334 = y;
        double r99335 = z;
        double r99336 = log(r99335);
        double r99337 = t;
        double r99338 = r99336 - r99337;
        double r99339 = r99334 * r99338;
        double r99340 = a;
        double r99341 = 1.0;
        double r99342 = r99341 - r99335;
        double r99343 = log(r99342);
        double r99344 = b;
        double r99345 = r99343 - r99344;
        double r99346 = r99340 * r99345;
        double r99347 = r99339 + r99346;
        double r99348 = exp(r99347);
        double r99349 = r99333 * r99348;
        return r99349;
}

double f(double x, double y, double z, double t, double a, double b) {
        double r99350 = x;
        double r99351 = y;
        double r99352 = z;
        double r99353 = log(r99352);
        double r99354 = t;
        double r99355 = r99353 - r99354;
        double r99356 = r99351 * r99355;
        double r99357 = a;
        double r99358 = 1.0;
        double r99359 = log(r99358);
        double r99360 = 0.5;
        double r99361 = 2.0;
        double r99362 = pow(r99352, r99361);
        double r99363 = pow(r99358, r99361);
        double r99364 = r99362 / r99363;
        double r99365 = r99360 * r99364;
        double r99366 = r99358 * r99352;
        double r99367 = r99365 + r99366;
        double r99368 = r99359 - r99367;
        double r99369 = b;
        double r99370 = r99368 - r99369;
        double r99371 = r99357 * r99370;
        double r99372 = r99356 + r99371;
        double r99373 = exp(r99372);
        double r99374 = r99350 * r99373;
        return r99374;
}

Error

Bits error versus x

Bits error versus y

Bits error versus z

Bits error versus t

Bits error versus a

Bits error versus b

Try it out

Your Program's Arguments

Results

Enter valid numbers for all inputs

Derivation

  1. Initial program 1.8

    \[x \cdot e^{y \cdot \left(\log z - t\right) + a \cdot \left(\log \left(1 - z\right) - b\right)}\]
  2. Taylor expanded around 0 0.4

    \[\leadsto x \cdot e^{y \cdot \left(\log z - t\right) + a \cdot \left(\color{blue}{\left(\log 1 - \left(\frac{1}{2} \cdot \frac{{z}^{2}}{{1}^{2}} + 1 \cdot z\right)\right)} - b\right)}\]
  3. Final simplification0.4

    \[\leadsto x \cdot e^{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)}\]

Reproduce

herbie shell --seed 2020064 
(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))))))