Average Error: 2.0 → 0.4
Time: 44.7s
Precision: 64
\[x \cdot e^{y \cdot \left(\log z - t\right) + a \cdot \left(\log \left(1 - z\right) - b\right)}\]
\[e^{\left(\left(\left(\log 1 - z \cdot 1\right) - \frac{\frac{1}{2}}{1} \cdot \frac{{z}^{2}}{1}\right) - b\right) \cdot a + \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^{\left(\left(\left(\log 1 - z \cdot 1\right) - \frac{\frac{1}{2}}{1} \cdot \frac{{z}^{2}}{1}\right) - b\right) \cdot a + \left(\log z - t\right) \cdot y} \cdot x
double f(double x, double y, double z, double t, double a, double b) {
        double r126581 = x;
        double r126582 = y;
        double r126583 = z;
        double r126584 = log(r126583);
        double r126585 = t;
        double r126586 = r126584 - r126585;
        double r126587 = r126582 * r126586;
        double r126588 = a;
        double r126589 = 1.0;
        double r126590 = r126589 - r126583;
        double r126591 = log(r126590);
        double r126592 = b;
        double r126593 = r126591 - r126592;
        double r126594 = r126588 * r126593;
        double r126595 = r126587 + r126594;
        double r126596 = exp(r126595);
        double r126597 = r126581 * r126596;
        return r126597;
}

double f(double x, double y, double z, double t, double a, double b) {
        double r126598 = 1.0;
        double r126599 = log(r126598);
        double r126600 = z;
        double r126601 = r126600 * r126598;
        double r126602 = r126599 - r126601;
        double r126603 = 0.5;
        double r126604 = r126603 / r126598;
        double r126605 = 2.0;
        double r126606 = pow(r126600, r126605);
        double r126607 = r126606 / r126598;
        double r126608 = r126604 * r126607;
        double r126609 = r126602 - r126608;
        double r126610 = b;
        double r126611 = r126609 - r126610;
        double r126612 = a;
        double r126613 = r126611 * r126612;
        double r126614 = log(r126600);
        double r126615 = t;
        double r126616 = r126614 - r126615;
        double r126617 = y;
        double r126618 = r126616 * r126617;
        double r126619 = r126613 + r126618;
        double r126620 = exp(r126619);
        double r126621 = x;
        double r126622 = r126620 * r126621;
        return r126622;
}

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 2.0

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

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

Reproduce

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