Average Error: 1.9 → 1.5
Time: 37.1s
Precision: 64
\[\frac{x \cdot e^{\left(y \cdot \log z + \left(t - 1\right) \cdot \log a\right) - b}}{y}\]
\[\frac{x}{y \cdot \left({a}^{1} \cdot e^{\mathsf{fma}\left(y, -\log z, \mathsf{fma}\left(-\log a, t, b\right)\right)}\right)}\]
\frac{x \cdot e^{\left(y \cdot \log z + \left(t - 1\right) \cdot \log a\right) - b}}{y}
\frac{x}{y \cdot \left({a}^{1} \cdot e^{\mathsf{fma}\left(y, -\log z, \mathsf{fma}\left(-\log a, t, b\right)\right)}\right)}
double f(double x, double y, double z, double t, double a, double b) {
        double r67419 = x;
        double r67420 = y;
        double r67421 = z;
        double r67422 = log(r67421);
        double r67423 = r67420 * r67422;
        double r67424 = t;
        double r67425 = 1.0;
        double r67426 = r67424 - r67425;
        double r67427 = a;
        double r67428 = log(r67427);
        double r67429 = r67426 * r67428;
        double r67430 = r67423 + r67429;
        double r67431 = b;
        double r67432 = r67430 - r67431;
        double r67433 = exp(r67432);
        double r67434 = r67419 * r67433;
        double r67435 = r67434 / r67420;
        return r67435;
}

double f(double x, double y, double z, double t, double a, double b) {
        double r67436 = x;
        double r67437 = y;
        double r67438 = a;
        double r67439 = 1.0;
        double r67440 = pow(r67438, r67439);
        double r67441 = z;
        double r67442 = log(r67441);
        double r67443 = -r67442;
        double r67444 = log(r67438);
        double r67445 = -r67444;
        double r67446 = t;
        double r67447 = b;
        double r67448 = fma(r67445, r67446, r67447);
        double r67449 = fma(r67437, r67443, r67448);
        double r67450 = exp(r67449);
        double r67451 = r67440 * r67450;
        double r67452 = r67437 * r67451;
        double r67453 = r67436 / r67452;
        return r67453;
}

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

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

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

    \[\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. Using strategy rm
  5. Applied div-inv1.1

    \[\leadsto \frac{x \cdot \color{blue}{\left({a}^{\left(-1\right)} \cdot \frac{1}{e^{\mathsf{fma}\left(y, -\log z, \mathsf{fma}\left(-\log a, t, b\right)\right)}}\right)}}{y}\]
  6. Applied associate-*r*7.9

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

    \[\leadsto \frac{\left(x \cdot \color{blue}{\frac{1}{{a}^{1}}}\right) \cdot \frac{1}{e^{\mathsf{fma}\left(y, -\log z, \mathsf{fma}\left(-\log a, t, b\right)\right)}}}{y}\]
  9. Applied un-div-inv7.9

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

    \[\leadsto \frac{\color{blue}{\frac{x \cdot 1}{{a}^{1} \cdot e^{\mathsf{fma}\left(y, -\log z, \mathsf{fma}\left(-\log a, t, b\right)\right)}}}}{y}\]
  11. Applied associate-/l/1.5

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

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

Reproduce

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