Average Error: 2.0 → 4.7
Time: 27.8s
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 \frac{-2494396309020223}{1125899906842624} \lor \neg \left(y \le 9.428286306709098034315676663683211235301 \cdot 10^{105}\right):\\ \;\;\;\;x \cdot e^{\left(\log z \cdot y + a \cdot \log 1\right) - t \cdot y}\\ \mathbf{else}:\\ \;\;\;\;x \cdot \left(\frac{{1}^{a}}{\sqrt{e^{\frac{a \cdot {z}^{2}}{{1}^{2}}}}} \cdot \frac{{z}^{y}}{e^{t \cdot y + \left(a \cdot b + 1 \cdot \left(a \cdot z\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 \frac{-2494396309020223}{1125899906842624} \lor \neg \left(y \le 9.428286306709098034315676663683211235301 \cdot 10^{105}\right):\\
\;\;\;\;x \cdot e^{\left(\log z \cdot y + a \cdot \log 1\right) - t \cdot y}\\

\mathbf{else}:\\
\;\;\;\;x \cdot \left(\frac{{1}^{a}}{\sqrt{e^{\frac{a \cdot {z}^{2}}{{1}^{2}}}}} \cdot \frac{{z}^{y}}{e^{t \cdot y + \left(a \cdot b + 1 \cdot \left(a \cdot z\right)\right)}}\right)\\

\end{array}
double f(double x, double y, double z, double t, double a, double b) {
        double r84829 = x;
        double r84830 = y;
        double r84831 = z;
        double r84832 = log(r84831);
        double r84833 = t;
        double r84834 = r84832 - r84833;
        double r84835 = r84830 * r84834;
        double r84836 = a;
        double r84837 = 1.0;
        double r84838 = r84837 - r84831;
        double r84839 = log(r84838);
        double r84840 = b;
        double r84841 = r84839 - r84840;
        double r84842 = r84836 * r84841;
        double r84843 = r84835 + r84842;
        double r84844 = exp(r84843);
        double r84845 = r84829 * r84844;
        return r84845;
}

double f(double x, double y, double z, double t, double a, double b) {
        double r84846 = y;
        double r84847 = -2494396309020223.0;
        double r84848 = 1125899906842624.0;
        double r84849 = r84847 / r84848;
        bool r84850 = r84846 <= r84849;
        double r84851 = 9.428286306709098e+105;
        bool r84852 = r84846 <= r84851;
        double r84853 = !r84852;
        bool r84854 = r84850 || r84853;
        double r84855 = x;
        double r84856 = z;
        double r84857 = log(r84856);
        double r84858 = r84857 * r84846;
        double r84859 = a;
        double r84860 = 1.0;
        double r84861 = log(r84860);
        double r84862 = r84859 * r84861;
        double r84863 = r84858 + r84862;
        double r84864 = t;
        double r84865 = r84864 * r84846;
        double r84866 = r84863 - r84865;
        double r84867 = exp(r84866);
        double r84868 = r84855 * r84867;
        double r84869 = pow(r84860, r84859);
        double r84870 = 2.0;
        double r84871 = pow(r84856, r84870);
        double r84872 = r84859 * r84871;
        double r84873 = pow(r84860, r84870);
        double r84874 = r84872 / r84873;
        double r84875 = exp(r84874);
        double r84876 = sqrt(r84875);
        double r84877 = r84869 / r84876;
        double r84878 = pow(r84856, r84846);
        double r84879 = b;
        double r84880 = r84859 * r84879;
        double r84881 = r84859 * r84856;
        double r84882 = r84860 * r84881;
        double r84883 = r84880 + r84882;
        double r84884 = r84865 + r84883;
        double r84885 = exp(r84884);
        double r84886 = r84878 / r84885;
        double r84887 = r84877 * r84886;
        double r84888 = r84855 * r84887;
        double r84889 = r84854 ? r84868 : r84888;
        return r84889;
}

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 < -2.215468971851407 or 9.428286306709098e+105 < y

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

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

    if -2.215468971851407 < y < 9.428286306709098e+105

    1. Initial program 2.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 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. Simplified0.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)}\]
    4. 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)}}\]
    5. Simplified2.7

      \[\leadsto x \cdot \color{blue}{\left(\frac{{1}^{a}}{\sqrt{e^{\frac{a \cdot {z}^{2}}{{1}^{2}}}}} \cdot \frac{{z}^{y}}{e^{t \cdot y + \left(a \cdot b + 1 \cdot \left(a \cdot z\right)\right)}}\right)}\]
  3. Recombined 2 regimes into one program.
  4. Final simplification4.7

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

Reproduce

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