Average Error: 1.8 → 0.4
Time: 25.6s
Precision: 64
\[x \cdot e^{y \cdot \left(\log z - t\right) + a \cdot \left(\log \left(1.0 - z\right) - b\right)}\]
\[e^{a \cdot \left(\left(\left(\log 1.0 - \left(\frac{z}{1.0} \cdot \frac{z}{1.0}\right) \cdot \frac{1}{2}\right) - z \cdot 1.0\right) - b\right) + \left(\log z - t\right) \cdot y} \cdot x\]
x \cdot e^{y \cdot \left(\log z - t\right) + a \cdot \left(\log \left(1.0 - z\right) - b\right)}
e^{a \cdot \left(\left(\left(\log 1.0 - \left(\frac{z}{1.0} \cdot \frac{z}{1.0}\right) \cdot \frac{1}{2}\right) - z \cdot 1.0\right) - b\right) + \left(\log z - t\right) \cdot y} \cdot x
double f(double x, double y, double z, double t, double a, double b) {
        double r5598559 = x;
        double r5598560 = y;
        double r5598561 = z;
        double r5598562 = log(r5598561);
        double r5598563 = t;
        double r5598564 = r5598562 - r5598563;
        double r5598565 = r5598560 * r5598564;
        double r5598566 = a;
        double r5598567 = 1.0;
        double r5598568 = r5598567 - r5598561;
        double r5598569 = log(r5598568);
        double r5598570 = b;
        double r5598571 = r5598569 - r5598570;
        double r5598572 = r5598566 * r5598571;
        double r5598573 = r5598565 + r5598572;
        double r5598574 = exp(r5598573);
        double r5598575 = r5598559 * r5598574;
        return r5598575;
}

double f(double x, double y, double z, double t, double a, double b) {
        double r5598576 = a;
        double r5598577 = 1.0;
        double r5598578 = log(r5598577);
        double r5598579 = z;
        double r5598580 = r5598579 / r5598577;
        double r5598581 = r5598580 * r5598580;
        double r5598582 = 0.5;
        double r5598583 = r5598581 * r5598582;
        double r5598584 = r5598578 - r5598583;
        double r5598585 = r5598579 * r5598577;
        double r5598586 = r5598584 - r5598585;
        double r5598587 = b;
        double r5598588 = r5598586 - r5598587;
        double r5598589 = r5598576 * r5598588;
        double r5598590 = log(r5598579);
        double r5598591 = t;
        double r5598592 = r5598590 - r5598591;
        double r5598593 = y;
        double r5598594 = r5598592 * r5598593;
        double r5598595 = r5598589 + r5598594;
        double r5598596 = exp(r5598595);
        double r5598597 = x;
        double r5598598 = r5598596 * r5598597;
        return r5598598;
}

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.0 - 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.0 - \left(1.0 \cdot z + \frac{1}{2} \cdot \frac{{z}^{2}}{{1.0}^{2}}\right)\right)} - b\right)}\]
  3. Simplified0.4

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

    \[\leadsto e^{a \cdot \left(\left(\left(\log 1.0 - \left(\frac{z}{1.0} \cdot \frac{z}{1.0}\right) \cdot \frac{1}{2}\right) - z \cdot 1.0\right) - b\right) + \left(\log z - t\right) \cdot y} \cdot x\]

Reproduce

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