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

\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 r132963 = x;
        double r132964 = y;
        double r132965 = z;
        double r132966 = log(r132965);
        double r132967 = t;
        double r132968 = r132966 - r132967;
        double r132969 = r132964 * r132968;
        double r132970 = a;
        double r132971 = 1.0;
        double r132972 = r132971 - r132965;
        double r132973 = log(r132972);
        double r132974 = b;
        double r132975 = r132973 - r132974;
        double r132976 = r132970 * r132975;
        double r132977 = r132969 + r132976;
        double r132978 = exp(r132977);
        double r132979 = r132963 * r132978;
        return r132979;
}

double f(double x, double y, double z, double t, double a, double b) {
        double r132980 = y;
        double r132981 = -2.303180600045709;
        bool r132982 = r132980 <= r132981;
        double r132983 = 1.0795444971458526e+106;
        bool r132984 = r132980 <= r132983;
        double r132985 = !r132984;
        bool r132986 = r132982 || r132985;
        double r132987 = x;
        double r132988 = z;
        double r132989 = log(r132988);
        double r132990 = t;
        double r132991 = r132989 - r132990;
        double r132992 = r132991 * r132980;
        double r132993 = a;
        double r132994 = 1.0;
        double r132995 = log(r132994);
        double r132996 = r132993 * r132995;
        double r132997 = r132992 + r132996;
        double r132998 = exp(r132997);
        double r132999 = r132987 * r132998;
        double r133000 = pow(r132994, r132993);
        double r133001 = 0.5;
        double r133002 = 2.0;
        double r133003 = pow(r132988, r133002);
        double r133004 = r132993 * r133003;
        double r133005 = pow(r132994, r133002);
        double r133006 = r133004 / r133005;
        double r133007 = r133001 * r133006;
        double r133008 = b;
        double r133009 = r132993 * r133008;
        double r133010 = r132990 * r132980;
        double r133011 = r132993 * r132988;
        double r133012 = r132994 * r133011;
        double r133013 = r133010 + r133012;
        double r133014 = r133009 + r133013;
        double r133015 = r133007 + r133014;
        double r133016 = exp(r133015);
        double r133017 = r133000 / r133016;
        double r133018 = pow(r132988, r132980);
        double r133019 = r133017 * r133018;
        double r133020 = r132987 * r133019;
        double r133021 = r132986 ? r132999 : r133020;
        return r133021;
}

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 1.6

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

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

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

    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^{\left(\log z - t\right) \cdot y + a \cdot \log 1}\\ \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))))))