Average Error: 2.0 → 0.4
Time: 15.9s
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) + \left(a \cdot \left(\log 1 - b\right) - 1 \cdot \left(a \cdot z\right)\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) + \left(a \cdot \left(\log 1 - b\right) - 1 \cdot \left(a \cdot z\right)\right)}
double f(double x, double y, double z, double t, double a, double b) {
        double r111354 = x;
        double r111355 = y;
        double r111356 = z;
        double r111357 = log(r111356);
        double r111358 = t;
        double r111359 = r111357 - r111358;
        double r111360 = r111355 * r111359;
        double r111361 = a;
        double r111362 = 1.0;
        double r111363 = r111362 - r111356;
        double r111364 = log(r111363);
        double r111365 = b;
        double r111366 = r111364 - r111365;
        double r111367 = r111361 * r111366;
        double r111368 = r111360 + r111367;
        double r111369 = exp(r111368);
        double r111370 = r111354 * r111369;
        return r111370;
}

double f(double x, double y, double z, double t, double a, double b) {
        double r111371 = x;
        double r111372 = y;
        double r111373 = z;
        double r111374 = log(r111373);
        double r111375 = t;
        double r111376 = r111374 - r111375;
        double r111377 = r111372 * r111376;
        double r111378 = a;
        double r111379 = 1.0;
        double r111380 = log(r111379);
        double r111381 = b;
        double r111382 = r111380 - r111381;
        double r111383 = r111378 * r111382;
        double r111384 = r111378 * r111373;
        double r111385 = r111379 * r111384;
        double r111386 = r111383 - r111385;
        double r111387 = r111377 + r111386;
        double r111388 = exp(r111387);
        double r111389 = r111371 * r111388;
        return r111389;
}

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) + \color{blue}{\left(a \cdot \log 1 - \left(a \cdot b + 1 \cdot \left(a \cdot z\right)\right)\right)}}\]
  3. Simplified0.4

    \[\leadsto x \cdot e^{y \cdot \left(\log z - t\right) + \color{blue}{\left(a \cdot \left(\log 1 - b\right) - 1 \cdot \left(a \cdot z\right)\right)}}\]
  4. Final simplification0.4

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

Reproduce

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