Average Error: 1.9 → 0.4
Time: 2.0m
Precision: 64
\[x \cdot e^{y \cdot \left(\log z - t\right) + a \cdot \left(\log \left(1 - z\right) - b\right)}\]
\[e^{a \cdot \left(\left(\left(\log 1 - z \cdot 1\right) - \frac{\frac{1}{2}}{\frac{1}{z} \cdot \frac{1}{z}}\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 - z\right) - b\right)}
e^{a \cdot \left(\left(\left(\log 1 - z \cdot 1\right) - \frac{\frac{1}{2}}{\frac{1}{z} \cdot \frac{1}{z}}\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 r8664615 = x;
        double r8664616 = y;
        double r8664617 = z;
        double r8664618 = log(r8664617);
        double r8664619 = t;
        double r8664620 = r8664618 - r8664619;
        double r8664621 = r8664616 * r8664620;
        double r8664622 = a;
        double r8664623 = 1.0;
        double r8664624 = r8664623 - r8664617;
        double r8664625 = log(r8664624);
        double r8664626 = b;
        double r8664627 = r8664625 - r8664626;
        double r8664628 = r8664622 * r8664627;
        double r8664629 = r8664621 + r8664628;
        double r8664630 = exp(r8664629);
        double r8664631 = r8664615 * r8664630;
        return r8664631;
}

double f(double x, double y, double z, double t, double a, double b) {
        double r8664632 = a;
        double r8664633 = 1.0;
        double r8664634 = log(r8664633);
        double r8664635 = z;
        double r8664636 = r8664635 * r8664633;
        double r8664637 = r8664634 - r8664636;
        double r8664638 = 0.5;
        double r8664639 = r8664633 / r8664635;
        double r8664640 = r8664639 * r8664639;
        double r8664641 = r8664638 / r8664640;
        double r8664642 = r8664637 - r8664641;
        double r8664643 = b;
        double r8664644 = r8664642 - r8664643;
        double r8664645 = r8664632 * r8664644;
        double r8664646 = log(r8664635);
        double r8664647 = t;
        double r8664648 = r8664646 - r8664647;
        double r8664649 = y;
        double r8664650 = r8664648 * r8664649;
        double r8664651 = r8664645 + r8664650;
        double r8664652 = exp(r8664651);
        double r8664653 = x;
        double r8664654 = r8664652 * r8664653;
        return r8664654;
}

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

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

Reproduce

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