Average Error: 1.9 → 1.3
Time: 35.7s
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 r6028291 = x;
        double r6028292 = y;
        double r6028293 = z;
        double r6028294 = log(r6028293);
        double r6028295 = t;
        double r6028296 = r6028294 - r6028295;
        double r6028297 = r6028292 * r6028296;
        double r6028298 = a;
        double r6028299 = 1.0;
        double r6028300 = r6028299 - r6028293;
        double r6028301 = log(r6028300);
        double r6028302 = b;
        double r6028303 = r6028301 - r6028302;
        double r6028304 = r6028298 * r6028303;
        double r6028305 = r6028297 + r6028304;
        double r6028306 = exp(r6028305);
        double r6028307 = r6028291 * r6028306;
        return r6028307;
}

double f(double x, double y, double z, double t, double a, double b) {
        double r6028308 = z;
        double r6028309 = log(r6028308);
        double r6028310 = t;
        double r6028311 = r6028309 - r6028310;
        double r6028312 = y;
        double r6028313 = r6028311 * r6028312;
        double r6028314 = 1.0;
        double r6028315 = r6028314 - r6028308;
        double r6028316 = log(r6028315);
        double r6028317 = b;
        double r6028318 = r6028316 - r6028317;
        double r6028319 = a;
        double r6028320 = r6028318 * r6028319;
        double r6028321 = r6028313 + r6028320;
        double r6028322 = 1.829259833094712e-06;
        bool r6028323 = r6028321 <= r6028322;
        double r6028324 = cbrt(r6028321);
        double r6028325 = r6028324 * r6028324;
        double r6028326 = r6028324 * r6028325;
        double r6028327 = exp(r6028326);
        double r6028328 = cbrt(r6028327);
        double r6028329 = exp(r6028321);
        double r6028330 = cbrt(r6028329);
        double r6028331 = r6028330 * r6028330;
        double r6028332 = r6028328 * r6028331;
        double r6028333 = x;
        double r6028334 = r6028332 * r6028333;
        double r6028335 = r6028314 * r6028319;
        double r6028336 = -r6028308;
        double r6028337 = r6028335 * r6028336;
        double r6028338 = r6028308 * r6028308;
        double r6028339 = 0.5;
        double r6028340 = r6028338 * r6028339;
        double r6028341 = r6028340 * r6028319;
        double r6028342 = r6028317 * r6028319;
        double r6028343 = r6028341 + r6028342;
        double r6028344 = r6028337 - r6028343;
        double r6028345 = exp(r6028344);
        double r6028346 = r6028345 * r6028333;
        double r6028347 = r6028323 ? r6028334 : r6028346;
        return r6028347;
}

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))))))