Average Error: 2.1 → 7.3
Time: 38.1s
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 -3.41421094382123369 \cdot 10^{52} \lor \neg \left(y \le 2.80049767411103575 \cdot 10^{-17}\right):\\ \;\;\;\;x \cdot e^{a \cdot \log 1 + \left(\log z - t\right) \cdot y}\\ \mathbf{else}:\\ \;\;\;\;x \cdot e^{-\left(a \cdot b + \left(1 \cdot \left(a \cdot z\right) + 0.5 \cdot \left(a \cdot {z}^{2}\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 \le -3.41421094382123369 \cdot 10^{52} \lor \neg \left(y \le 2.80049767411103575 \cdot 10^{-17}\right):\\
\;\;\;\;x \cdot e^{a \cdot \log 1 + \left(\log z - t\right) \cdot y}\\

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

\end{array}
double f(double x, double y, double z, double t, double a, double b) {
        double r79074 = x;
        double r79075 = y;
        double r79076 = z;
        double r79077 = log(r79076);
        double r79078 = t;
        double r79079 = r79077 - r79078;
        double r79080 = r79075 * r79079;
        double r79081 = a;
        double r79082 = 1.0;
        double r79083 = r79082 - r79076;
        double r79084 = log(r79083);
        double r79085 = b;
        double r79086 = r79084 - r79085;
        double r79087 = r79081 * r79086;
        double r79088 = r79080 + r79087;
        double r79089 = exp(r79088);
        double r79090 = r79074 * r79089;
        return r79090;
}

double f(double x, double y, double z, double t, double a, double b) {
        double r79091 = y;
        double r79092 = -3.4142109438212337e+52;
        bool r79093 = r79091 <= r79092;
        double r79094 = 2.800497674111036e-17;
        bool r79095 = r79091 <= r79094;
        double r79096 = !r79095;
        bool r79097 = r79093 || r79096;
        double r79098 = x;
        double r79099 = a;
        double r79100 = 1.0;
        double r79101 = log(r79100);
        double r79102 = r79099 * r79101;
        double r79103 = z;
        double r79104 = log(r79103);
        double r79105 = t;
        double r79106 = r79104 - r79105;
        double r79107 = r79106 * r79091;
        double r79108 = r79102 + r79107;
        double r79109 = exp(r79108);
        double r79110 = r79098 * r79109;
        double r79111 = b;
        double r79112 = r79099 * r79111;
        double r79113 = r79099 * r79103;
        double r79114 = r79100 * r79113;
        double r79115 = 0.5;
        double r79116 = 2.0;
        double r79117 = pow(r79103, r79116);
        double r79118 = r79099 * r79117;
        double r79119 = r79115 * r79118;
        double r79120 = r79114 + r79119;
        double r79121 = r79112 + r79120;
        double r79122 = -r79121;
        double r79123 = exp(r79122);
        double r79124 = r79098 * r79123;
        double r79125 = r79097 ? r79110 : r79124;
        return r79125;
}

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 < -3.4142109438212337e+52 or 2.800497674111036e-17 < 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 6.7

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

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

    if -3.4142109438212337e+52 < y < 2.800497674111036e-17

    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.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. Taylor expanded around inf 7.8

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

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

Reproduce

herbie shell --seed 2019199 
(FPCore (x y z t a b)
  :name "Numeric.SpecFunctions:incompleteBetaApprox from math-functions-0.1.5.2, B"
  (* x (exp (+ (* y (- (log z) t)) (* a (- (log (- 1.0 z)) b))))))