Average Error: 1.9 → 1.3
Time: 32.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}\;\left(\log z - t\right) \cdot y + \left(\log \left(1 - z\right) - b\right) \cdot a \le 1.829259833094711928277412323062822707698 \cdot 10^{-6}:\\ \;\;\;\;\left(\sqrt[3]{e^{\sqrt[3]{\left(\log z - t\right) \cdot y + \left(\log \left(1 - z\right) - b\right) \cdot a} \cdot \left(\sqrt[3]{\left(\log z - t\right) \cdot y + \left(\log \left(1 - z\right) - b\right) \cdot a} \cdot \sqrt[3]{\left(\log z - t\right) \cdot y + \left(\log \left(1 - z\right) - b\right) \cdot a}\right)}} \cdot \left(\sqrt[3]{e^{\left(\log z - t\right) \cdot y + \left(\log \left(1 - z\right) - b\right) \cdot a}} \cdot \sqrt[3]{e^{\left(\log z - t\right) \cdot y + \left(\log \left(1 - z\right) - b\right) \cdot a}}\right)\right) \cdot x\\ \mathbf{else}:\\ \;\;\;\;e^{\left(1 \cdot a\right) \cdot \left(-z\right) - \left(\left(\left(z \cdot z\right) \cdot 0.5\right) \cdot a + b \cdot a\right)} \cdot x\\ \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}\;\left(\log z - t\right) \cdot y + \left(\log \left(1 - z\right) - b\right) \cdot a \le 1.829259833094711928277412323062822707698 \cdot 10^{-6}:\\
\;\;\;\;\left(\sqrt[3]{e^{\sqrt[3]{\left(\log z - t\right) \cdot y + \left(\log \left(1 - z\right) - b\right) \cdot a} \cdot \left(\sqrt[3]{\left(\log z - t\right) \cdot y + \left(\log \left(1 - z\right) - b\right) \cdot a} \cdot \sqrt[3]{\left(\log z - t\right) \cdot y + \left(\log \left(1 - z\right) - b\right) \cdot a}\right)}} \cdot \left(\sqrt[3]{e^{\left(\log z - t\right) \cdot y + \left(\log \left(1 - z\right) - b\right) \cdot a}} \cdot \sqrt[3]{e^{\left(\log z - t\right) \cdot y + \left(\log \left(1 - z\right) - b\right) \cdot a}}\right)\right) \cdot x\\

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

\end{array}
double f(double x, double y, double z, double t, double a, double b) {
        double r6762837 = x;
        double r6762838 = y;
        double r6762839 = z;
        double r6762840 = log(r6762839);
        double r6762841 = t;
        double r6762842 = r6762840 - r6762841;
        double r6762843 = r6762838 * r6762842;
        double r6762844 = a;
        double r6762845 = 1.0;
        double r6762846 = r6762845 - r6762839;
        double r6762847 = log(r6762846);
        double r6762848 = b;
        double r6762849 = r6762847 - r6762848;
        double r6762850 = r6762844 * r6762849;
        double r6762851 = r6762843 + r6762850;
        double r6762852 = exp(r6762851);
        double r6762853 = r6762837 * r6762852;
        return r6762853;
}

double f(double x, double y, double z, double t, double a, double b) {
        double r6762854 = z;
        double r6762855 = log(r6762854);
        double r6762856 = t;
        double r6762857 = r6762855 - r6762856;
        double r6762858 = y;
        double r6762859 = r6762857 * r6762858;
        double r6762860 = 1.0;
        double r6762861 = r6762860 - r6762854;
        double r6762862 = log(r6762861);
        double r6762863 = b;
        double r6762864 = r6762862 - r6762863;
        double r6762865 = a;
        double r6762866 = r6762864 * r6762865;
        double r6762867 = r6762859 + r6762866;
        double r6762868 = 1.829259833094712e-06;
        bool r6762869 = r6762867 <= r6762868;
        double r6762870 = cbrt(r6762867);
        double r6762871 = r6762870 * r6762870;
        double r6762872 = r6762870 * r6762871;
        double r6762873 = exp(r6762872);
        double r6762874 = cbrt(r6762873);
        double r6762875 = exp(r6762867);
        double r6762876 = cbrt(r6762875);
        double r6762877 = r6762876 * r6762876;
        double r6762878 = r6762874 * r6762877;
        double r6762879 = x;
        double r6762880 = r6762878 * r6762879;
        double r6762881 = r6762860 * r6762865;
        double r6762882 = -r6762854;
        double r6762883 = r6762881 * r6762882;
        double r6762884 = r6762854 * r6762854;
        double r6762885 = 0.5;
        double r6762886 = r6762884 * r6762885;
        double r6762887 = r6762886 * r6762865;
        double r6762888 = r6762863 * r6762865;
        double r6762889 = r6762887 + r6762888;
        double r6762890 = r6762883 - r6762889;
        double r6762891 = exp(r6762890);
        double r6762892 = r6762891 * r6762879;
        double r6762893 = r6762869 ? r6762880 : r6762892;
        return r6762893;
}

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))) < 1.829259833094712e-06

    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. Using strategy rm
    3. Applied add-cube-cbrt0.8

      \[\leadsto x \cdot \color{blue}{\left(\left(\sqrt[3]{e^{y \cdot \left(\log z - t\right) + a \cdot \left(\log \left(1 - z\right) - b\right)}} \cdot \sqrt[3]{e^{y \cdot \left(\log z - t\right) + a \cdot \left(\log \left(1 - z\right) - b\right)}}\right) \cdot \sqrt[3]{e^{y \cdot \left(\log z - t\right) + a \cdot \left(\log \left(1 - z\right) - b\right)}}\right)}\]
    4. Using strategy rm
    5. Applied add-cube-cbrt0.8

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

    if 1.829259833094712e-06 < (+ (* y (- (log z) t)) (* a (- (log (- 1.0 z)) b)))

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

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

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

      \[\leadsto x \cdot e^{\color{blue}{-\left(1 \cdot \left(a \cdot z\right) + \left(a \cdot b + 0.5 \cdot \left(a \cdot {z}^{2}\right)\right)\right)}}\]
    5. Simplified19.6

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

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

Reproduce

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