Average Error: 2.2 → 1.4
Time: 34.7s
Precision: 64
\[\frac{x \cdot e^{\left(y \cdot \log z + \left(t - 1\right) \cdot \log a\right) - b}}{y}\]
\[\frac{x \cdot \frac{{a}^{\left(-1\right)}}{e^{\mathsf{fma}\left(y, -\log z, \mathsf{fma}\left(-\log a, t, b\right)\right)}}}{y}\]
\frac{x \cdot e^{\left(y \cdot \log z + \left(t - 1\right) \cdot \log a\right) - b}}{y}
\frac{x \cdot \frac{{a}^{\left(-1\right)}}{e^{\mathsf{fma}\left(y, -\log z, \mathsf{fma}\left(-\log a, t, b\right)\right)}}}{y}
double f(double x, double y, double z, double t, double a, double b) {
        double r74999 = x;
        double r75000 = y;
        double r75001 = z;
        double r75002 = log(r75001);
        double r75003 = r75000 * r75002;
        double r75004 = t;
        double r75005 = 1.0;
        double r75006 = r75004 - r75005;
        double r75007 = a;
        double r75008 = log(r75007);
        double r75009 = r75006 * r75008;
        double r75010 = r75003 + r75009;
        double r75011 = b;
        double r75012 = r75010 - r75011;
        double r75013 = exp(r75012);
        double r75014 = r74999 * r75013;
        double r75015 = r75014 / r75000;
        return r75015;
}

double f(double x, double y, double z, double t, double a, double b) {
        double r75016 = x;
        double r75017 = a;
        double r75018 = 1.0;
        double r75019 = -r75018;
        double r75020 = pow(r75017, r75019);
        double r75021 = y;
        double r75022 = z;
        double r75023 = log(r75022);
        double r75024 = -r75023;
        double r75025 = log(r75017);
        double r75026 = -r75025;
        double r75027 = t;
        double r75028 = b;
        double r75029 = fma(r75026, r75027, r75028);
        double r75030 = fma(r75021, r75024, r75029);
        double r75031 = exp(r75030);
        double r75032 = r75020 / r75031;
        double r75033 = r75016 * r75032;
        double r75034 = r75033 / r75021;
        return r75034;
}

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

Derivation

  1. Initial program 2.2

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

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

    \[\leadsto \frac{x \cdot \color{blue}{\frac{{a}^{\left(-1\right)}}{e^{\mathsf{fma}\left(y, -\log z, \mathsf{fma}\left(-\log a, t, b\right)\right)}}}}{y}\]
  4. Final simplification1.4

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

Reproduce

herbie shell --seed 2019208 +o rules:numerics
(FPCore (x y z t a b)
  :name "Numeric.SpecFunctions:incompleteBetaWorker from math-functions-0.1.5.2"
  :precision binary64
  (/ (* x (exp (- (+ (* y (log z)) (* (- t 1) (log a))) b))) y))