Average Error: 1.9 → 0.4
Time: 44.0s
Precision: 64
\[x \cdot e^{y \cdot \left(\log z - t\right) + a \cdot \left(\log \left(1.0 - z\right) - b\right)}\]
\[e^{a \cdot \left(\left(\left(\log 1.0 - z \cdot 1.0\right) - \frac{1}{2} \cdot \left(\frac{z}{1.0} \cdot \frac{z}{1.0}\right)\right) - b\right) + \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.0 - z\right) - b\right)}
e^{a \cdot \left(\left(\left(\log 1.0 - z \cdot 1.0\right) - \frac{1}{2} \cdot \left(\frac{z}{1.0} \cdot \frac{z}{1.0}\right)\right) - b\right) + \left(\log z - t\right) \cdot y} \cdot x
double f(double x, double y, double z, double t, double a, double b) {
        double r7840405 = x;
        double r7840406 = y;
        double r7840407 = z;
        double r7840408 = log(r7840407);
        double r7840409 = t;
        double r7840410 = r7840408 - r7840409;
        double r7840411 = r7840406 * r7840410;
        double r7840412 = a;
        double r7840413 = 1.0;
        double r7840414 = r7840413 - r7840407;
        double r7840415 = log(r7840414);
        double r7840416 = b;
        double r7840417 = r7840415 - r7840416;
        double r7840418 = r7840412 * r7840417;
        double r7840419 = r7840411 + r7840418;
        double r7840420 = exp(r7840419);
        double r7840421 = r7840405 * r7840420;
        return r7840421;
}

double f(double x, double y, double z, double t, double a, double b) {
        double r7840422 = a;
        double r7840423 = 1.0;
        double r7840424 = log(r7840423);
        double r7840425 = z;
        double r7840426 = r7840425 * r7840423;
        double r7840427 = r7840424 - r7840426;
        double r7840428 = 0.5;
        double r7840429 = r7840425 / r7840423;
        double r7840430 = r7840429 * r7840429;
        double r7840431 = r7840428 * r7840430;
        double r7840432 = r7840427 - r7840431;
        double r7840433 = b;
        double r7840434 = r7840432 - r7840433;
        double r7840435 = r7840422 * r7840434;
        double r7840436 = log(r7840425);
        double r7840437 = t;
        double r7840438 = r7840436 - r7840437;
        double r7840439 = y;
        double r7840440 = r7840438 * r7840439;
        double r7840441 = r7840435 + r7840440;
        double r7840442 = exp(r7840441);
        double r7840443 = x;
        double r7840444 = r7840442 * r7840443;
        return r7840444;
}

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

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

Reproduce

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