Average Error: 2.0 → 0.4
Time: 13.6s
Precision: 64
\[x \cdot e^{y \cdot \left(\log z - t\right) + a \cdot \left(\log \left(1 - z\right) - b\right)}\]
\[x \cdot e^{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)}\]
x \cdot e^{y \cdot \left(\log z - t\right) + a \cdot \left(\log \left(1 - z\right) - b\right)}
x \cdot e^{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)}
double f(double x, double y, double z, double t, double a, double b) {
        double r100845 = x;
        double r100846 = y;
        double r100847 = z;
        double r100848 = log(r100847);
        double r100849 = t;
        double r100850 = r100848 - r100849;
        double r100851 = r100846 * r100850;
        double r100852 = a;
        double r100853 = 1.0;
        double r100854 = r100853 - r100847;
        double r100855 = log(r100854);
        double r100856 = b;
        double r100857 = r100855 - r100856;
        double r100858 = r100852 * r100857;
        double r100859 = r100851 + r100858;
        double r100860 = exp(r100859);
        double r100861 = r100845 * r100860;
        return r100861;
}

double f(double x, double y, double z, double t, double a, double b) {
        double r100862 = x;
        double r100863 = y;
        double r100864 = z;
        double r100865 = log(r100864);
        double r100866 = t;
        double r100867 = r100865 - r100866;
        double r100868 = r100863 * r100867;
        double r100869 = a;
        double r100870 = 1.0;
        double r100871 = log(r100870);
        double r100872 = 0.5;
        double r100873 = 2.0;
        double r100874 = pow(r100864, r100873);
        double r100875 = pow(r100870, r100873);
        double r100876 = r100874 / r100875;
        double r100877 = r100872 * r100876;
        double r100878 = r100870 * r100864;
        double r100879 = r100877 + r100878;
        double r100880 = r100871 - r100879;
        double r100881 = b;
        double r100882 = r100880 - r100881;
        double r100883 = r100869 * r100882;
        double r100884 = r100868 + r100883;
        double r100885 = exp(r100884);
        double r100886 = r100862 * r100885;
        return r100886;
}

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. 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 0.4

    \[\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. Final simplification0.4

    \[\leadsto x \cdot e^{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)}\]

Reproduce

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