Average Error: 2.2 → 0.5
Time: 15.4s
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 r116729 = x;
        double r116730 = y;
        double r116731 = z;
        double r116732 = log(r116731);
        double r116733 = t;
        double r116734 = r116732 - r116733;
        double r116735 = r116730 * r116734;
        double r116736 = a;
        double r116737 = 1.0;
        double r116738 = r116737 - r116731;
        double r116739 = log(r116738);
        double r116740 = b;
        double r116741 = r116739 - r116740;
        double r116742 = r116736 * r116741;
        double r116743 = r116735 + r116742;
        double r116744 = exp(r116743);
        double r116745 = r116729 * r116744;
        return r116745;
}

double f(double x, double y, double z, double t, double a, double b) {
        double r116746 = x;
        double r116747 = y;
        double r116748 = z;
        double r116749 = log(r116748);
        double r116750 = t;
        double r116751 = r116749 - r116750;
        double r116752 = r116747 * r116751;
        double r116753 = a;
        double r116754 = 1.0;
        double r116755 = log(r116754);
        double r116756 = 0.5;
        double r116757 = 2.0;
        double r116758 = pow(r116748, r116757);
        double r116759 = pow(r116754, r116757);
        double r116760 = r116758 / r116759;
        double r116761 = r116756 * r116760;
        double r116762 = r116754 * r116748;
        double r116763 = r116761 + r116762;
        double r116764 = r116755 - r116763;
        double r116765 = b;
        double r116766 = r116764 - r116765;
        double r116767 = r116753 * r116766;
        double r116768 = r116752 + r116767;
        double r116769 = exp(r116768);
        double r116770 = r116746 * r116769;
        return r116770;
}

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

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