Average Error: 1.9 → 0.4
Time: 37.3s
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) + \left(a \cdot \log 1 - \left(1 \cdot \left(a \cdot z\right) + a \cdot b\right)\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) + \left(a \cdot \log 1 - \left(1 \cdot \left(a \cdot z\right) + a \cdot b\right)\right)}
double f(double x, double y, double z, double t, double a, double b) {
        double r11737224 = x;
        double r11737225 = y;
        double r11737226 = z;
        double r11737227 = log(r11737226);
        double r11737228 = t;
        double r11737229 = r11737227 - r11737228;
        double r11737230 = r11737225 * r11737229;
        double r11737231 = a;
        double r11737232 = 1.0;
        double r11737233 = r11737232 - r11737226;
        double r11737234 = log(r11737233);
        double r11737235 = b;
        double r11737236 = r11737234 - r11737235;
        double r11737237 = r11737231 * r11737236;
        double r11737238 = r11737230 + r11737237;
        double r11737239 = exp(r11737238);
        double r11737240 = r11737224 * r11737239;
        return r11737240;
}

double f(double x, double y, double z, double t, double a, double b) {
        double r11737241 = x;
        double r11737242 = y;
        double r11737243 = z;
        double r11737244 = log(r11737243);
        double r11737245 = t;
        double r11737246 = r11737244 - r11737245;
        double r11737247 = r11737242 * r11737246;
        double r11737248 = a;
        double r11737249 = 1.0;
        double r11737250 = log(r11737249);
        double r11737251 = r11737248 * r11737250;
        double r11737252 = r11737248 * r11737243;
        double r11737253 = r11737249 * r11737252;
        double r11737254 = b;
        double r11737255 = r11737248 * r11737254;
        double r11737256 = r11737253 + r11737255;
        double r11737257 = r11737251 - r11737256;
        double r11737258 = r11737247 + r11737257;
        double r11737259 = exp(r11737258);
        double r11737260 = r11737241 * r11737259;
        return r11737260;
}

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 1.9

    \[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) + \color{blue}{\left(a \cdot \log 1 - \left(1 \cdot \left(a \cdot z\right) + a \cdot b\right)\right)}}\]
  3. Final simplification0.4

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

Reproduce

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