Average Error: 1.9 → 0.4
Time: 47.2s
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 - z \cdot 1.0\right) - \frac{1}{2} \cdot \left(\frac{z}{1.0} \cdot \frac{z}{1.0}\right)\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 - z \cdot 1.0\right) - \frac{1}{2} \cdot \left(\frac{z}{1.0} \cdot \frac{z}{1.0}\right)\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 r8073465 = x;
        double r8073466 = y;
        double r8073467 = z;
        double r8073468 = log(r8073467);
        double r8073469 = t;
        double r8073470 = r8073468 - r8073469;
        double r8073471 = r8073466 * r8073470;
        double r8073472 = a;
        double r8073473 = 1.0;
        double r8073474 = r8073473 - r8073467;
        double r8073475 = log(r8073474);
        double r8073476 = b;
        double r8073477 = r8073475 - r8073476;
        double r8073478 = r8073472 * r8073477;
        double r8073479 = r8073471 + r8073478;
        double r8073480 = exp(r8073479);
        double r8073481 = r8073465 * r8073480;
        return r8073481;
}

double f(double x, double y, double z, double t, double a, double b) {
        double r8073482 = a;
        double r8073483 = 1.0;
        double r8073484 = log(r8073483);
        double r8073485 = z;
        double r8073486 = r8073485 * r8073483;
        double r8073487 = r8073484 - r8073486;
        double r8073488 = 0.5;
        double r8073489 = r8073485 / r8073483;
        double r8073490 = r8073489 * r8073489;
        double r8073491 = r8073488 * r8073490;
        double r8073492 = r8073487 - r8073491;
        double r8073493 = b;
        double r8073494 = r8073492 - r8073493;
        double r8073495 = r8073482 * r8073494;
        double r8073496 = log(r8073485);
        double r8073497 = t;
        double r8073498 = r8073496 - r8073497;
        double r8073499 = y;
        double r8073500 = r8073498 * r8073499;
        double r8073501 = r8073495 + r8073500;
        double r8073502 = exp(r8073501);
        double r8073503 = x;
        double r8073504 = r8073502 * r8073503;
        return r8073504;
}

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.9

    \[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 - 1.0 \cdot z\right) - \left(\frac{z}{1.0} \cdot \frac{z}{1.0}\right) \cdot \frac{1}{2}\right)} - b\right)}\]
  4. Final simplification0.4

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

Reproduce

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