Average Error: 1.8 → 1.4
Time: 16.0s
Precision: 64
\[\frac{x \cdot e^{\left(y \cdot \log z + \left(t - 1\right) \cdot \log a\right) - b}}{y}\]
\[\frac{1}{\frac{1}{x} \cdot \frac{y}{\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)}}}}\]
\frac{x \cdot e^{\left(y \cdot \log z + \left(t - 1\right) \cdot \log a\right) - b}}{y}
\frac{1}{\frac{1}{x} \cdot \frac{y}{\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)}}}}
double f(double x, double y, double z, double t, double a, double b) {
        double r111843 = x;
        double r111844 = y;
        double r111845 = z;
        double r111846 = log(r111845);
        double r111847 = r111844 * r111846;
        double r111848 = t;
        double r111849 = 1.0;
        double r111850 = r111848 - r111849;
        double r111851 = a;
        double r111852 = log(r111851);
        double r111853 = r111850 * r111852;
        double r111854 = r111847 + r111853;
        double r111855 = b;
        double r111856 = r111854 - r111855;
        double r111857 = exp(r111856);
        double r111858 = r111843 * r111857;
        double r111859 = r111858 / r111844;
        return r111859;
}

double f(double x, double y, double z, double t, double a, double b) {
        double r111860 = 1.0;
        double r111861 = x;
        double r111862 = r111860 / r111861;
        double r111863 = y;
        double r111864 = a;
        double r111865 = r111860 / r111864;
        double r111866 = 1.0;
        double r111867 = pow(r111865, r111866);
        double r111868 = z;
        double r111869 = r111860 / r111868;
        double r111870 = log(r111869);
        double r111871 = log(r111865);
        double r111872 = t;
        double r111873 = b;
        double r111874 = fma(r111871, r111872, r111873);
        double r111875 = fma(r111863, r111870, r111874);
        double r111876 = exp(r111875);
        double r111877 = r111867 / r111876;
        double r111878 = r111863 / r111877;
        double r111879 = r111862 * r111878;
        double r111880 = r111860 / r111879;
        return r111880;
}

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 \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{{\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. Using strategy rm
  5. Applied clear-num1.1

    \[\leadsto \color{blue}{\frac{1}{\frac{y}{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)}}}}}\]
  6. Using strategy rm
  7. Applied *-un-lft-identity1.1

    \[\leadsto \frac{1}{\frac{\color{blue}{1 \cdot y}}{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)}}}}\]
  8. Applied times-frac1.4

    \[\leadsto \frac{1}{\color{blue}{\frac{1}{x} \cdot \frac{y}{\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)}}}}}\]
  9. Final simplification1.4

    \[\leadsto \frac{1}{\frac{1}{x} \cdot \frac{y}{\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)}}}}\]

Reproduce

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