Average Error: 2.0 → 1.9
Time: 10.4s
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 -7.4245623139035352 \cdot 10^{126}:\\ \;\;\;\;x \cdot e^{\left(\log z \cdot y + a \cdot \log 1\right) - t \cdot y}\\ \mathbf{elif}\;y \le 39.4883580871444266:\\ \;\;\;\;x \cdot e^{y \cdot \left(\log z - t\right) + \left(a \cdot \log 1 - \log \left(e^{a \cdot b + 1 \cdot \left(a \cdot z\right)}\right)\right)}\\ \mathbf{else}:\\ \;\;\;\;x \cdot e^{\log \left({z}^{y}\right) + \log \left({1}^{a}\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 -7.4245623139035352 \cdot 10^{126}:\\
\;\;\;\;x \cdot e^{\left(\log z \cdot y + a \cdot \log 1\right) - t \cdot y}\\

\mathbf{elif}\;y \le 39.4883580871444266:\\
\;\;\;\;x \cdot e^{y \cdot \left(\log z - t\right) + \left(a \cdot \log 1 - \log \left(e^{a \cdot b + 1 \cdot \left(a \cdot z\right)}\right)\right)}\\

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

\end{array}
double f(double x, double y, double z, double t, double a, double b) {
        double r114571 = x;
        double r114572 = y;
        double r114573 = z;
        double r114574 = log(r114573);
        double r114575 = t;
        double r114576 = r114574 - r114575;
        double r114577 = r114572 * r114576;
        double r114578 = a;
        double r114579 = 1.0;
        double r114580 = r114579 - r114573;
        double r114581 = log(r114580);
        double r114582 = b;
        double r114583 = r114581 - r114582;
        double r114584 = r114578 * r114583;
        double r114585 = r114577 + r114584;
        double r114586 = exp(r114585);
        double r114587 = r114571 * r114586;
        return r114587;
}

double f(double x, double y, double z, double t, double a, double b) {
        double r114588 = y;
        double r114589 = -7.424562313903535e+126;
        bool r114590 = r114588 <= r114589;
        double r114591 = x;
        double r114592 = z;
        double r114593 = log(r114592);
        double r114594 = r114593 * r114588;
        double r114595 = a;
        double r114596 = 1.0;
        double r114597 = log(r114596);
        double r114598 = r114595 * r114597;
        double r114599 = r114594 + r114598;
        double r114600 = t;
        double r114601 = r114600 * r114588;
        double r114602 = r114599 - r114601;
        double r114603 = exp(r114602);
        double r114604 = r114591 * r114603;
        double r114605 = 39.48835808714443;
        bool r114606 = r114588 <= r114605;
        double r114607 = r114593 - r114600;
        double r114608 = r114588 * r114607;
        double r114609 = b;
        double r114610 = r114595 * r114609;
        double r114611 = r114595 * r114592;
        double r114612 = r114596 * r114611;
        double r114613 = r114610 + r114612;
        double r114614 = exp(r114613);
        double r114615 = log(r114614);
        double r114616 = r114598 - r114615;
        double r114617 = r114608 + r114616;
        double r114618 = exp(r114617);
        double r114619 = r114591 * r114618;
        double r114620 = pow(r114592, r114588);
        double r114621 = log(r114620);
        double r114622 = pow(r114596, r114595);
        double r114623 = log(r114622);
        double r114624 = r114621 + r114623;
        double r114625 = exp(r114624);
        double r114626 = r114591 * r114625;
        double r114627 = r114606 ? r114619 : r114626;
        double r114628 = r114590 ? r114604 : r114627;
        return r114628;
}

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 3 regimes
  2. if y < -7.424562313903535e+126

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

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

    if -7.424562313903535e+126 < y < 39.48835808714443

    1. Initial program 2.3

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

      \[\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. Using strategy rm
    4. Applied add-log-exp4.5

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

      \[\leadsto x \cdot e^{y \cdot \left(\log z - t\right) + \left(a \cdot \log 1 - \left(\color{blue}{\log \left(e^{a \cdot b}\right)} + \log \left(e^{1 \cdot \left(a \cdot z\right)}\right)\right)\right)}\]
    6. Applied sum-log6.5

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

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

    if 39.48835808714443 < y

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

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

      \[\leadsto x \cdot e^{\color{blue}{\log z \cdot y + a \cdot \log 1}}\]
    4. Simplified0

      \[\leadsto x \cdot e^{\color{blue}{\log \left({z}^{y}\right) + \log \left({1}^{a}\right)}}\]
  3. Recombined 3 regimes into one program.
  4. Final simplification1.9

    \[\leadsto \begin{array}{l} \mathbf{if}\;y \le -7.4245623139035352 \cdot 10^{126}:\\ \;\;\;\;x \cdot e^{\left(\log z \cdot y + a \cdot \log 1\right) - t \cdot y}\\ \mathbf{elif}\;y \le 39.4883580871444266:\\ \;\;\;\;x \cdot e^{y \cdot \left(\log z - t\right) + \left(a \cdot \log 1 - \log \left(e^{a \cdot b + 1 \cdot \left(a \cdot z\right)}\right)\right)}\\ \mathbf{else}:\\ \;\;\;\;x \cdot e^{\log \left({z}^{y}\right) + \log \left({1}^{a}\right)}\\ \end{array}\]

Reproduce

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