Average Error: 1.9 → 1.2
Time: 20.1s
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{{\left(\frac{1}{a}\right)}^{1}}{e^{\mathsf{fma}\left(y, \log \left(\frac{1}{z}\right), \mathsf{fma}\left(\log \left(\frac{1}{a}\right), 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{{\left(\frac{1}{a}\right)}^{1}}{e^{\mathsf{fma}\left(y, \log \left(\frac{1}{z}\right), \mathsf{fma}\left(\log \left(\frac{1}{a}\right), t, b\right)\right)}}}{y}
double f(double x, double y, double z, double t, double a, double b) {
        double r98434 = x;
        double r98435 = y;
        double r98436 = z;
        double r98437 = log(r98436);
        double r98438 = r98435 * r98437;
        double r98439 = t;
        double r98440 = 1.0;
        double r98441 = r98439 - r98440;
        double r98442 = a;
        double r98443 = log(r98442);
        double r98444 = r98441 * r98443;
        double r98445 = r98438 + r98444;
        double r98446 = b;
        double r98447 = r98445 - r98446;
        double r98448 = exp(r98447);
        double r98449 = r98434 * r98448;
        double r98450 = r98449 / r98435;
        return r98450;
}

double f(double x, double y, double z, double t, double a, double b) {
        double r98451 = x;
        double r98452 = 1.0;
        double r98453 = a;
        double r98454 = r98452 / r98453;
        double r98455 = 1.0;
        double r98456 = pow(r98454, r98455);
        double r98457 = y;
        double r98458 = z;
        double r98459 = r98452 / r98458;
        double r98460 = log(r98459);
        double r98461 = log(r98454);
        double r98462 = t;
        double r98463 = b;
        double r98464 = fma(r98461, r98462, r98463);
        double r98465 = fma(r98457, r98460, r98464);
        double r98466 = exp(r98465);
        double r98467 = r98456 / r98466;
        double r98468 = r98451 * r98467;
        double r98469 = r98468 / r98457;
        return r98469;
}

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

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

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

Reproduce

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