Average Error: 0.8 → 0.5
Time: 11.8s
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 r120010 = x;
        double r120011 = y;
        double r120012 = z;
        double r120013 = log(r120012);
        double r120014 = t;
        double r120015 = r120013 - r120014;
        double r120016 = r120011 * r120015;
        double r120017 = a;
        double r120018 = 1.0;
        double r120019 = r120018 - r120012;
        double r120020 = log(r120019);
        double r120021 = b;
        double r120022 = r120020 - r120021;
        double r120023 = r120017 * r120022;
        double r120024 = r120016 + r120023;
        double r120025 = exp(r120024);
        double r120026 = r120010 * r120025;
        return r120026;
}

double f(double x, double y, double z, double t, double a, double b) {
        double r120027 = x;
        double r120028 = y;
        double r120029 = z;
        double r120030 = log(r120029);
        double r120031 = t;
        double r120032 = r120030 - r120031;
        double r120033 = r120028 * r120032;
        double r120034 = a;
        double r120035 = 1.0;
        double r120036 = log(r120035);
        double r120037 = 0.5;
        double r120038 = 2.0;
        double r120039 = pow(r120029, r120038);
        double r120040 = pow(r120035, r120038);
        double r120041 = r120039 / r120040;
        double r120042 = r120037 * r120041;
        double r120043 = r120035 * r120029;
        double r120044 = r120042 + r120043;
        double r120045 = r120036 - r120044;
        double r120046 = b;
        double r120047 = r120045 - r120046;
        double r120048 = r120034 * r120047;
        double r120049 = r120033 + r120048;
        double r120050 = exp(r120049);
        double r120051 = r120027 * r120050;
        return r120051;
}

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 0.8

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