Average Error: 2.2 → 3.4
Time: 38.2s
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 -1.436503598316956953340195468626916408539 \lor \neg \left(y \le 8.989039952438387375008659575680983873271 \cdot 10^{120}\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 -1.436503598316956953340195468626916408539 \lor \neg \left(y \le 8.989039952438387375008659575680983873271 \cdot 10^{120}\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 r102946 = x;
        double r102947 = y;
        double r102948 = z;
        double r102949 = log(r102948);
        double r102950 = t;
        double r102951 = r102949 - r102950;
        double r102952 = r102947 * r102951;
        double r102953 = a;
        double r102954 = 1.0;
        double r102955 = r102954 - r102948;
        double r102956 = log(r102955);
        double r102957 = b;
        double r102958 = r102956 - r102957;
        double r102959 = r102953 * r102958;
        double r102960 = r102952 + r102959;
        double r102961 = exp(r102960);
        double r102962 = r102946 * r102961;
        return r102962;
}

double f(double x, double y, double z, double t, double a, double b) {
        double r102963 = y;
        double r102964 = -1.436503598316957;
        bool r102965 = r102963 <= r102964;
        double r102966 = 8.989039952438387e+120;
        bool r102967 = r102963 <= r102966;
        double r102968 = !r102967;
        bool r102969 = r102965 || r102968;
        double r102970 = x;
        double r102971 = a;
        double r102972 = 1.0;
        double r102973 = log(r102972);
        double r102974 = r102971 * r102973;
        double r102975 = z;
        double r102976 = log(r102975);
        double r102977 = t;
        double r102978 = r102976 - r102977;
        double r102979 = r102978 * r102963;
        double r102980 = r102974 + r102979;
        double r102981 = exp(r102980);
        double r102982 = r102970 * r102981;
        double r102983 = pow(r102972, r102971);
        double r102984 = 0.5;
        double r102985 = 2.0;
        double r102986 = pow(r102975, r102985);
        double r102987 = r102971 * r102986;
        double r102988 = pow(r102972, r102985);
        double r102989 = r102987 / r102988;
        double r102990 = r102984 * r102989;
        double r102991 = b;
        double r102992 = r102971 * r102991;
        double r102993 = r102977 * r102963;
        double r102994 = r102971 * r102975;
        double r102995 = r102972 * r102994;
        double r102996 = r102993 + r102995;
        double r102997 = r102992 + r102996;
        double r102998 = r102990 + r102997;
        double r102999 = exp(r102998);
        double r103000 = r102983 / r102999;
        double r103001 = pow(r102975, r102963);
        double r103002 = r103000 * r103001;
        double r103003 = r102970 * r103002;
        double r103004 = r102969 ? r102982 : r103003;
        return r103004;
}

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 < -1.436503598316957 or 8.989039952438387e+120 < y

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

      \[\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 -1.436503598316957 < y < 8.989039952438387e+120

    1. Initial program 2.4

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

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

    \[\leadsto \begin{array}{l} \mathbf{if}\;y \le -1.436503598316956953340195468626916408539 \lor \neg \left(y \le 8.989039952438387375008659575680983873271 \cdot 10^{120}\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 2019325 
(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))))))