Average Error: 2.0 → 3.3
Time: 31.6s
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 \le -2.303180600045708903422791991033591330051 \lor \neg \left(y \le 1.079544497145852556700355448021813525034 \cdot 10^{106}\right):\\ \;\;\;\;x \cdot e^{a \cdot \log 1 + \left(\log z - t\right) \cdot y}\\ \mathbf{else}:\\ \;\;\;\;x \cdot \left(\frac{{1}^{a}}{e^{\frac{1}{2} \cdot \frac{a \cdot {z}^{2}}{{1}^{2}} + \left(a \cdot b + \left(t \cdot y + 1 \cdot \left(a \cdot z\right)\right)\right)}} \cdot {z}^{y}\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 \le -2.303180600045708903422791991033591330051 \lor \neg \left(y \le 1.079544497145852556700355448021813525034 \cdot 10^{106}\right):\\
\;\;\;\;x \cdot e^{a \cdot \log 1 + \left(\log z - t\right) \cdot y}\\

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

\end{array}
double f(double x, double y, double z, double t, double a, double b) {
        double r108488 = x;
        double r108489 = y;
        double r108490 = z;
        double r108491 = log(r108490);
        double r108492 = t;
        double r108493 = r108491 - r108492;
        double r108494 = r108489 * r108493;
        double r108495 = a;
        double r108496 = 1.0;
        double r108497 = r108496 - r108490;
        double r108498 = log(r108497);
        double r108499 = b;
        double r108500 = r108498 - r108499;
        double r108501 = r108495 * r108500;
        double r108502 = r108494 + r108501;
        double r108503 = exp(r108502);
        double r108504 = r108488 * r108503;
        return r108504;
}

double f(double x, double y, double z, double t, double a, double b) {
        double r108505 = y;
        double r108506 = -2.303180600045709;
        bool r108507 = r108505 <= r108506;
        double r108508 = 1.0795444971458526e+106;
        bool r108509 = r108505 <= r108508;
        double r108510 = !r108509;
        bool r108511 = r108507 || r108510;
        double r108512 = x;
        double r108513 = a;
        double r108514 = 1.0;
        double r108515 = log(r108514);
        double r108516 = r108513 * r108515;
        double r108517 = z;
        double r108518 = log(r108517);
        double r108519 = t;
        double r108520 = r108518 - r108519;
        double r108521 = r108520 * r108505;
        double r108522 = r108516 + r108521;
        double r108523 = exp(r108522);
        double r108524 = r108512 * r108523;
        double r108525 = pow(r108514, r108513);
        double r108526 = 0.5;
        double r108527 = 2.0;
        double r108528 = pow(r108517, r108527);
        double r108529 = r108513 * r108528;
        double r108530 = pow(r108514, r108527);
        double r108531 = r108529 / r108530;
        double r108532 = r108526 * r108531;
        double r108533 = b;
        double r108534 = r108513 * r108533;
        double r108535 = r108519 * r108505;
        double r108536 = r108513 * r108517;
        double r108537 = r108514 * r108536;
        double r108538 = r108535 + r108537;
        double r108539 = r108534 + r108538;
        double r108540 = r108532 + r108539;
        double r108541 = exp(r108540);
        double r108542 = r108525 / r108541;
        double r108543 = pow(r108517, r108505);
        double r108544 = r108542 * r108543;
        double r108545 = r108512 * r108544;
        double r108546 = r108511 ? r108524 : r108545;
        return r108546;
}

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 < -2.303180600045709 or 1.0795444971458526e+106 < y

    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 8.8

      \[\leadsto x \cdot e^{\color{blue}{\left(\log z \cdot y + a \cdot \log 1\right) - t \cdot y}}\]
    3. Simplified8.6

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

    if -2.303180600045709 < y < 1.0795444971458526e+106

    1. Initial program 2.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 0.1

      \[\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. Taylor expanded around inf 0.1

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

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

    \[\leadsto \begin{array}{l} \mathbf{if}\;y \le -2.303180600045708903422791991033591330051 \lor \neg \left(y \le 1.079544497145852556700355448021813525034 \cdot 10^{106}\right):\\ \;\;\;\;x \cdot e^{a \cdot \log 1 + \left(\log z - t\right) \cdot y}\\ \mathbf{else}:\\ \;\;\;\;x \cdot \left(\frac{{1}^{a}}{e^{\frac{1}{2} \cdot \frac{a \cdot {z}^{2}}{{1}^{2}} + \left(a \cdot b + \left(t \cdot y + 1 \cdot \left(a \cdot z\right)\right)\right)}} \cdot {z}^{y}\right)\\ \end{array}\]

Reproduce

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