Average Error: 2.1 → 0.4
Time: 19.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 \cdot \left(\log z - t\right) + a \cdot \left(\log \left(1 - z\right) - b\right) \le 1.27014180708108552443277861065951128694 \cdot 10^{-4}:\\ \;\;\;\;x \cdot \left({\left(\sqrt{e}\right)}^{\left(y \cdot \left(\log z - t\right) + a \cdot \left(\left(\log 1 - \left(\frac{1}{2} \cdot \frac{{z}^{2}}{{1}^{2}} + 1 \cdot z\right)\right) - b\right)\right)} \cdot {\left(\sqrt{e}\right)}^{\left(y \cdot \left(\log z - t\right) + a \cdot \left(\left(\log 1 - \left(\frac{1}{2} \cdot \frac{{z}^{2}}{{1}^{2}} + 1 \cdot z\right)\right) - b\right)\right)}\right)\\ \mathbf{else}:\\ \;\;\;\;x \cdot {e}^{\left(-\left(a \cdot b + \left(1 \cdot \left(a \cdot z\right) + 0.5 \cdot \left(a \cdot {z}^{2}\right)\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 \cdot \left(\log z - t\right) + a \cdot \left(\log \left(1 - z\right) - b\right) \le 1.27014180708108552443277861065951128694 \cdot 10^{-4}:\\
\;\;\;\;x \cdot \left({\left(\sqrt{e}\right)}^{\left(y \cdot \left(\log z - t\right) + a \cdot \left(\left(\log 1 - \left(\frac{1}{2} \cdot \frac{{z}^{2}}{{1}^{2}} + 1 \cdot z\right)\right) - b\right)\right)} \cdot {\left(\sqrt{e}\right)}^{\left(y \cdot \left(\log z - t\right) + a \cdot \left(\left(\log 1 - \left(\frac{1}{2} \cdot \frac{{z}^{2}}{{1}^{2}} + 1 \cdot z\right)\right) - b\right)\right)}\right)\\

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

\end{array}
double f(double x, double y, double z, double t, double a, double b) {
        double r96769 = x;
        double r96770 = y;
        double r96771 = z;
        double r96772 = log(r96771);
        double r96773 = t;
        double r96774 = r96772 - r96773;
        double r96775 = r96770 * r96774;
        double r96776 = a;
        double r96777 = 1.0;
        double r96778 = r96777 - r96771;
        double r96779 = log(r96778);
        double r96780 = b;
        double r96781 = r96779 - r96780;
        double r96782 = r96776 * r96781;
        double r96783 = r96775 + r96782;
        double r96784 = exp(r96783);
        double r96785 = r96769 * r96784;
        return r96785;
}

double f(double x, double y, double z, double t, double a, double b) {
        double r96786 = y;
        double r96787 = z;
        double r96788 = log(r96787);
        double r96789 = t;
        double r96790 = r96788 - r96789;
        double r96791 = r96786 * r96790;
        double r96792 = a;
        double r96793 = 1.0;
        double r96794 = r96793 - r96787;
        double r96795 = log(r96794);
        double r96796 = b;
        double r96797 = r96795 - r96796;
        double r96798 = r96792 * r96797;
        double r96799 = r96791 + r96798;
        double r96800 = 0.00012701418070810855;
        bool r96801 = r96799 <= r96800;
        double r96802 = x;
        double r96803 = exp(1.0);
        double r96804 = sqrt(r96803);
        double r96805 = log(r96793);
        double r96806 = 0.5;
        double r96807 = 2.0;
        double r96808 = pow(r96787, r96807);
        double r96809 = pow(r96793, r96807);
        double r96810 = r96808 / r96809;
        double r96811 = r96806 * r96810;
        double r96812 = r96793 * r96787;
        double r96813 = r96811 + r96812;
        double r96814 = r96805 - r96813;
        double r96815 = r96814 - r96796;
        double r96816 = r96792 * r96815;
        double r96817 = r96791 + r96816;
        double r96818 = pow(r96804, r96817);
        double r96819 = r96818 * r96818;
        double r96820 = r96802 * r96819;
        double r96821 = r96792 * r96796;
        double r96822 = r96792 * r96787;
        double r96823 = r96793 * r96822;
        double r96824 = 0.5;
        double r96825 = r96792 * r96808;
        double r96826 = r96824 * r96825;
        double r96827 = r96823 + r96826;
        double r96828 = r96821 + r96827;
        double r96829 = -r96828;
        double r96830 = pow(r96803, r96829);
        double r96831 = r96802 * r96830;
        double r96832 = r96801 ? r96820 : r96831;
        return r96832;
}

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 (- (log z) t)) (* a (- (log (- 1.0 z)) b))) < 0.00012701418070810855

    1. Initial program 0.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 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. Using strategy rm
    4. Applied *-un-lft-identity0.0

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

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

      \[\leadsto x \cdot {\color{blue}{e}}^{\left(y \cdot \left(\log z - t\right) + a \cdot \left(\left(\log 1 - \left(\frac{1}{2} \cdot \frac{{z}^{2}}{{1}^{2}} + 1 \cdot z\right)\right) - b\right)\right)}\]
    7. Using strategy rm
    8. Applied add-sqr-sqrt0.0

      \[\leadsto x \cdot {\color{blue}{\left(\sqrt{e} \cdot \sqrt{e}\right)}}^{\left(y \cdot \left(\log z - t\right) + a \cdot \left(\left(\log 1 - \left(\frac{1}{2} \cdot \frac{{z}^{2}}{{1}^{2}} + 1 \cdot z\right)\right) - b\right)\right)}\]
    9. Applied unpow-prod-down0.0

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

    if 0.00012701418070810855 < (+ (* y (- (log z) t)) (* a (- (log (- 1.0 z)) b)))

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

      \[\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. Using strategy rm
    4. Applied *-un-lft-identity20.2

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

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

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

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

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

Reproduce

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