Average Error: 1.9 → 0.4
Time: 37.1s
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^{\left(\left(\left(\log 1 - \frac{\frac{1}{2}}{1} \cdot \frac{z \cdot z}{1}\right) - z \cdot 1\right) - b\right) \cdot a + \left(\log z - t\right) \cdot y}\]
x \cdot e^{y \cdot \left(\log z - t\right) + a \cdot \left(\log \left(1 - z\right) - b\right)}
x \cdot e^{\left(\left(\left(\log 1 - \frac{\frac{1}{2}}{1} \cdot \frac{z \cdot z}{1}\right) - z \cdot 1\right) - b\right) \cdot a + \left(\log z - t\right) \cdot y}
double f(double x, double y, double z, double t, double a, double b) {
        double r117467 = x;
        double r117468 = y;
        double r117469 = z;
        double r117470 = log(r117469);
        double r117471 = t;
        double r117472 = r117470 - r117471;
        double r117473 = r117468 * r117472;
        double r117474 = a;
        double r117475 = 1.0;
        double r117476 = r117475 - r117469;
        double r117477 = log(r117476);
        double r117478 = b;
        double r117479 = r117477 - r117478;
        double r117480 = r117474 * r117479;
        double r117481 = r117473 + r117480;
        double r117482 = exp(r117481);
        double r117483 = r117467 * r117482;
        return r117483;
}

double f(double x, double y, double z, double t, double a, double b) {
        double r117484 = x;
        double r117485 = 1.0;
        double r117486 = log(r117485);
        double r117487 = 0.5;
        double r117488 = r117487 / r117485;
        double r117489 = z;
        double r117490 = r117489 * r117489;
        double r117491 = r117490 / r117485;
        double r117492 = r117488 * r117491;
        double r117493 = r117486 - r117492;
        double r117494 = r117489 * r117485;
        double r117495 = r117493 - r117494;
        double r117496 = b;
        double r117497 = r117495 - r117496;
        double r117498 = a;
        double r117499 = r117497 * r117498;
        double r117500 = log(r117489);
        double r117501 = t;
        double r117502 = r117500 - r117501;
        double r117503 = y;
        double r117504 = r117502 * r117503;
        double r117505 = r117499 + r117504;
        double r117506 = exp(r117505);
        double r117507 = r117484 * r117506;
        return r117507;
}

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

    \[\leadsto x \cdot e^{y \cdot \left(\log z - t\right) + a \cdot \left(\color{blue}{\left(\log 1 - \left(1 \cdot z + \frac{1}{2} \cdot \frac{{z}^{2}}{{1}^{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 - \frac{\frac{1}{2}}{1} \cdot \frac{z \cdot z}{1}\right) - 1 \cdot z\right)} - b\right)}\]
  4. Final simplification0.4

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

Reproduce

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