Average Error: 1.8 → 0.4
Time: 9.2s
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 r81532 = x;
        double r81533 = y;
        double r81534 = z;
        double r81535 = log(r81534);
        double r81536 = t;
        double r81537 = r81535 - r81536;
        double r81538 = r81533 * r81537;
        double r81539 = a;
        double r81540 = 1.0;
        double r81541 = r81540 - r81534;
        double r81542 = log(r81541);
        double r81543 = b;
        double r81544 = r81542 - r81543;
        double r81545 = r81539 * r81544;
        double r81546 = r81538 + r81545;
        double r81547 = exp(r81546);
        double r81548 = r81532 * r81547;
        return r81548;
}

double f(double x, double y, double z, double t, double a, double b) {
        double r81549 = x;
        double r81550 = y;
        double r81551 = z;
        double r81552 = log(r81551);
        double r81553 = t;
        double r81554 = r81552 - r81553;
        double r81555 = r81550 * r81554;
        double r81556 = a;
        double r81557 = 1.0;
        double r81558 = log(r81557);
        double r81559 = 0.5;
        double r81560 = 2.0;
        double r81561 = pow(r81551, r81560);
        double r81562 = pow(r81557, r81560);
        double r81563 = r81561 / r81562;
        double r81564 = r81559 * r81563;
        double r81565 = r81557 * r81551;
        double r81566 = r81564 + r81565;
        double r81567 = r81558 - r81566;
        double r81568 = b;
        double r81569 = r81567 - r81568;
        double r81570 = r81556 * r81569;
        double r81571 = r81555 + r81570;
        double r81572 = exp(r81571);
        double r81573 = r81549 * r81572;
        return r81573;
}

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 2020060 
(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))))))