Average Error: 2.1 → 0.4
Time: 32.5s
Precision: 64
\[x \cdot e^{y \cdot \left(\log z - t\right) + a \cdot \left(\log \left(1 - z\right) - b\right)}\]
\[\begin{array}{l} \mathbf{if}\;y \cdot \left(\log z - t\right) + a \cdot \left(\log \left(1 - z\right) - b\right) \le 1.27014180708108552443277861065951128694 \cdot 10^{-4}:\\ \;\;\;\;x \cdot \left({\left(\sqrt{e}\right)}^{\left(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)\right)} \cdot {\left(\sqrt{e}\right)}^{\left(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)\right)}\right)\\ \mathbf{else}:\\ \;\;\;\;x \cdot {e}^{\left(-\left(a \cdot b + \left(1 \cdot \left(a \cdot z\right) + 0.5 \cdot \left(a \cdot {z}^{2}\right)\right)\right)\right)}\\ \end{array}\]
x \cdot e^{y \cdot \left(\log z - t\right) + a \cdot \left(\log \left(1 - z\right) - b\right)}
\begin{array}{l}
\mathbf{if}\;y \cdot \left(\log z - t\right) + a \cdot \left(\log \left(1 - z\right) - b\right) \le 1.27014180708108552443277861065951128694 \cdot 10^{-4}:\\
\;\;\;\;x \cdot \left({\left(\sqrt{e}\right)}^{\left(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)\right)} \cdot {\left(\sqrt{e}\right)}^{\left(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)\right)}\right)\\

\mathbf{else}:\\
\;\;\;\;x \cdot {e}^{\left(-\left(a \cdot b + \left(1 \cdot \left(a \cdot z\right) + 0.5 \cdot \left(a \cdot {z}^{2}\right)\right)\right)\right)}\\

\end{array}
double f(double x, double y, double z, double t, double a, double b) {
        double r97396 = x;
        double r97397 = y;
        double r97398 = z;
        double r97399 = log(r97398);
        double r97400 = t;
        double r97401 = r97399 - r97400;
        double r97402 = r97397 * r97401;
        double r97403 = a;
        double r97404 = 1.0;
        double r97405 = r97404 - r97398;
        double r97406 = log(r97405);
        double r97407 = b;
        double r97408 = r97406 - r97407;
        double r97409 = r97403 * r97408;
        double r97410 = r97402 + r97409;
        double r97411 = exp(r97410);
        double r97412 = r97396 * r97411;
        return r97412;
}

double f(double x, double y, double z, double t, double a, double b) {
        double r97413 = y;
        double r97414 = z;
        double r97415 = log(r97414);
        double r97416 = t;
        double r97417 = r97415 - r97416;
        double r97418 = r97413 * r97417;
        double r97419 = a;
        double r97420 = 1.0;
        double r97421 = r97420 - r97414;
        double r97422 = log(r97421);
        double r97423 = b;
        double r97424 = r97422 - r97423;
        double r97425 = r97419 * r97424;
        double r97426 = r97418 + r97425;
        double r97427 = 0.00012701418070810855;
        bool r97428 = r97426 <= r97427;
        double r97429 = x;
        double r97430 = exp(1.0);
        double r97431 = sqrt(r97430);
        double r97432 = log(r97420);
        double r97433 = 0.5;
        double r97434 = 2.0;
        double r97435 = pow(r97414, r97434);
        double r97436 = pow(r97420, r97434);
        double r97437 = r97435 / r97436;
        double r97438 = r97433 * r97437;
        double r97439 = r97420 * r97414;
        double r97440 = r97438 + r97439;
        double r97441 = r97432 - r97440;
        double r97442 = r97441 - r97423;
        double r97443 = r97419 * r97442;
        double r97444 = r97418 + r97443;
        double r97445 = pow(r97431, r97444);
        double r97446 = r97445 * r97445;
        double r97447 = r97429 * r97446;
        double r97448 = r97419 * r97423;
        double r97449 = r97419 * r97414;
        double r97450 = r97420 * r97449;
        double r97451 = 0.5;
        double r97452 = r97419 * r97435;
        double r97453 = r97451 * r97452;
        double r97454 = r97450 + r97453;
        double r97455 = r97448 + r97454;
        double r97456 = -r97455;
        double r97457 = pow(r97430, r97456);
        double r97458 = r97429 * r97457;
        double r97459 = r97428 ? r97447 : r97458;
        return r97459;
}

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. Split input into 2 regimes
  2. if (+ (* y (- (log z) t)) (* a (- (log (- 1.0 z)) b))) < 0.00012701418070810855

    1. Initial program 0.7

      \[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.0

      \[\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. Using strategy rm
    4. Applied *-un-lft-identity0.0

      \[\leadsto x \cdot e^{\color{blue}{1 \cdot \left(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)\right)}}\]
    5. Applied exp-prod0.0

      \[\leadsto x \cdot \color{blue}{{\left(e^{1}\right)}^{\left(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)\right)}}\]
    6. Simplified0.0

      \[\leadsto x \cdot {\color{blue}{e}}^{\left(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)\right)}\]
    7. Using strategy rm
    8. Applied add-sqr-sqrt0.0

      \[\leadsto x \cdot {\color{blue}{\left(\sqrt{e} \cdot \sqrt{e}\right)}}^{\left(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)\right)}\]
    9. Applied unpow-prod-down0.0

      \[\leadsto x \cdot \color{blue}{\left({\left(\sqrt{e}\right)}^{\left(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)\right)} \cdot {\left(\sqrt{e}\right)}^{\left(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)\right)}\right)}\]

    if 0.00012701418070810855 < (+ (* y (- (log z) t)) (* a (- (log (- 1.0 z)) b)))

    1. Initial program 53.1

      \[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 20.2

      \[\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. Using strategy rm
    4. Applied *-un-lft-identity20.2

      \[\leadsto x \cdot e^{\color{blue}{1 \cdot \left(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)\right)}}\]
    5. Applied exp-prod20.2

      \[\leadsto x \cdot \color{blue}{{\left(e^{1}\right)}^{\left(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)\right)}}\]
    6. Simplified20.2

      \[\leadsto x \cdot {\color{blue}{e}}^{\left(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)\right)}\]
    7. Taylor expanded around inf 14.2

      \[\leadsto x \cdot {e}^{\color{blue}{\left(-\left(a \cdot b + \left(1 \cdot \left(a \cdot z\right) + 0.5 \cdot \left(a \cdot {z}^{2}\right)\right)\right)\right)}}\]
  3. Recombined 2 regimes into one program.
  4. Final simplification0.4

    \[\leadsto \begin{array}{l} \mathbf{if}\;y \cdot \left(\log z - t\right) + a \cdot \left(\log \left(1 - z\right) - b\right) \le 1.27014180708108552443277861065951128694 \cdot 10^{-4}:\\ \;\;\;\;x \cdot \left({\left(\sqrt{e}\right)}^{\left(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)\right)} \cdot {\left(\sqrt{e}\right)}^{\left(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)\right)}\right)\\ \mathbf{else}:\\ \;\;\;\;x \cdot {e}^{\left(-\left(a \cdot b + \left(1 \cdot \left(a \cdot z\right) + 0.5 \cdot \left(a \cdot {z}^{2}\right)\right)\right)\right)}\\ \end{array}\]

Reproduce

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