Average Error: 1.9 → 0.5
Time: 12.0s
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 r96554 = x;
        double r96555 = y;
        double r96556 = z;
        double r96557 = log(r96556);
        double r96558 = t;
        double r96559 = r96557 - r96558;
        double r96560 = r96555 * r96559;
        double r96561 = a;
        double r96562 = 1.0;
        double r96563 = r96562 - r96556;
        double r96564 = log(r96563);
        double r96565 = b;
        double r96566 = r96564 - r96565;
        double r96567 = r96561 * r96566;
        double r96568 = r96560 + r96567;
        double r96569 = exp(r96568);
        double r96570 = r96554 * r96569;
        return r96570;
}

double f(double x, double y, double z, double t, double a, double b) {
        double r96571 = x;
        double r96572 = y;
        double r96573 = z;
        double r96574 = log(r96573);
        double r96575 = t;
        double r96576 = r96574 - r96575;
        double r96577 = r96572 * r96576;
        double r96578 = a;
        double r96579 = 1.0;
        double r96580 = log(r96579);
        double r96581 = 0.5;
        double r96582 = 2.0;
        double r96583 = pow(r96573, r96582);
        double r96584 = pow(r96579, r96582);
        double r96585 = r96583 / r96584;
        double r96586 = r96581 * r96585;
        double r96587 = r96579 * r96573;
        double r96588 = r96586 + r96587;
        double r96589 = r96580 - r96588;
        double r96590 = b;
        double r96591 = r96589 - r96590;
        double r96592 = r96578 * r96591;
        double r96593 = r96577 + r96592;
        double r96594 = exp(r96593);
        double r96595 = r96571 * r96594;
        return r96595;
}

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

    \[\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.5

    \[\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 2020046 
(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))))))