Average Error: 1.8 → 1.3
Time: 52.0s
Precision: 64
\[\frac{x \cdot e^{\left(y \cdot \log z + \left(t - 1\right) \cdot \log a\right) - b}}{y}\]
\[\frac{\frac{{a}^{\left(-1\right)}}{e^{\mathsf{fma}\left(y, -\log z, \mathsf{fma}\left(-\log a, t, b\right)\right)}}}{y} \cdot x\]
\frac{x \cdot e^{\left(y \cdot \log z + \left(t - 1\right) \cdot \log a\right) - b}}{y}
\frac{\frac{{a}^{\left(-1\right)}}{e^{\mathsf{fma}\left(y, -\log z, \mathsf{fma}\left(-\log a, t, b\right)\right)}}}{y} \cdot x
double f(double x, double y, double z, double t, double a, double b) {
        double r85029 = x;
        double r85030 = y;
        double r85031 = z;
        double r85032 = log(r85031);
        double r85033 = r85030 * r85032;
        double r85034 = t;
        double r85035 = 1.0;
        double r85036 = r85034 - r85035;
        double r85037 = a;
        double r85038 = log(r85037);
        double r85039 = r85036 * r85038;
        double r85040 = r85033 + r85039;
        double r85041 = b;
        double r85042 = r85040 - r85041;
        double r85043 = exp(r85042);
        double r85044 = r85029 * r85043;
        double r85045 = r85044 / r85030;
        return r85045;
}

double f(double x, double y, double z, double t, double a, double b) {
        double r85046 = a;
        double r85047 = 1.0;
        double r85048 = -r85047;
        double r85049 = pow(r85046, r85048);
        double r85050 = y;
        double r85051 = z;
        double r85052 = log(r85051);
        double r85053 = -r85052;
        double r85054 = log(r85046);
        double r85055 = -r85054;
        double r85056 = t;
        double r85057 = b;
        double r85058 = fma(r85055, r85056, r85057);
        double r85059 = fma(r85050, r85053, r85058);
        double r85060 = exp(r85059);
        double r85061 = r85049 / r85060;
        double r85062 = r85061 / r85050;
        double r85063 = x;
        double r85064 = r85062 * r85063;
        return r85064;
}

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 1.8

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

    \[\leadsto \color{blue}{\frac{x \cdot 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. Simplified5.9

    \[\leadsto \color{blue}{\frac{\frac{{a}^{\left(-1\right)}}{e^{\mathsf{fma}\left(y, -\log z, \mathsf{fma}\left(-\log a, t, b\right)\right)}}}{\frac{y}{x}}}\]
  4. Using strategy rm
  5. Applied associate-/r/1.3

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

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

Reproduce

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