Average Error: 2.0 → 1.2
Time: 17.9s
Precision: 64
\[\frac{x \cdot e^{\left(y \cdot \log z + \left(t - 1\right) \cdot \log a\right) - b}}{y}\]
\[\frac{1}{\frac{\frac{y}{\frac{x}{e^{b - \mathsf{fma}\left(\log z, y, \log a \cdot t\right)}}}}{{\left(\frac{1}{{a}^{1}}\right)}^{1}}}\]
\frac{x \cdot e^{\left(y \cdot \log z + \left(t - 1\right) \cdot \log a\right) - b}}{y}
\frac{1}{\frac{\frac{y}{\frac{x}{e^{b - \mathsf{fma}\left(\log z, y, \log a \cdot t\right)}}}}{{\left(\frac{1}{{a}^{1}}\right)}^{1}}}
double f(double x, double y, double z, double t, double a, double b) {
        double r84237 = x;
        double r84238 = y;
        double r84239 = z;
        double r84240 = log(r84239);
        double r84241 = r84238 * r84240;
        double r84242 = t;
        double r84243 = 1.0;
        double r84244 = r84242 - r84243;
        double r84245 = a;
        double r84246 = log(r84245);
        double r84247 = r84244 * r84246;
        double r84248 = r84241 + r84247;
        double r84249 = b;
        double r84250 = r84248 - r84249;
        double r84251 = exp(r84250);
        double r84252 = r84237 * r84251;
        double r84253 = r84252 / r84238;
        return r84253;
}

double f(double x, double y, double z, double t, double a, double b) {
        double r84254 = 1.0;
        double r84255 = y;
        double r84256 = x;
        double r84257 = b;
        double r84258 = z;
        double r84259 = log(r84258);
        double r84260 = a;
        double r84261 = log(r84260);
        double r84262 = t;
        double r84263 = r84261 * r84262;
        double r84264 = fma(r84259, r84255, r84263);
        double r84265 = r84257 - r84264;
        double r84266 = exp(r84265);
        double r84267 = r84256 / r84266;
        double r84268 = r84255 / r84267;
        double r84269 = 1.0;
        double r84270 = pow(r84260, r84269);
        double r84271 = r84254 / r84270;
        double r84272 = pow(r84271, r84269);
        double r84273 = r84268 / r84272;
        double r84274 = r84254 / r84273;
        return r84274;
}

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

    \[\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.0

    \[\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.3

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

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

    \[\leadsto \frac{\color{blue}{\frac{x}{e^{\mathsf{fma}\left(y, -\log z, b - \log a \cdot t\right)}} \cdot {\left(\frac{1}{{a}^{1}}\right)}^{1}}}{y}\]
  6. Using strategy rm
  7. Applied *-un-lft-identity1.3

    \[\leadsto \frac{\frac{x}{e^{\color{blue}{1 \cdot \mathsf{fma}\left(y, -\log z, b - \log a \cdot t\right)}}} \cdot {\left(\frac{1}{{a}^{1}}\right)}^{1}}{y}\]
  8. Using strategy rm
  9. Applied clear-num1.4

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

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

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

Reproduce

herbie shell --seed 2020047 +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))