Average Error: 1.9 → 1.8
Time: 43.7s
Precision: 64
\[\frac{x \cdot e^{\left(y \cdot \log z + \left(t - 1.0\right) \cdot \log a\right) - b}}{y}\]
\[\frac{\frac{x}{\frac{\sqrt[3]{y} \cdot \sqrt[3]{y}}{e^{\mathsf{fma}\left(\log a, t - 1.0, \log z \cdot y\right) - b}}}}{\sqrt[3]{y}}\]
\frac{x \cdot e^{\left(y \cdot \log z + \left(t - 1.0\right) \cdot \log a\right) - b}}{y}
\frac{\frac{x}{\frac{\sqrt[3]{y} \cdot \sqrt[3]{y}}{e^{\mathsf{fma}\left(\log a, t - 1.0, \log z \cdot y\right) - b}}}}{\sqrt[3]{y}}
double f(double x, double y, double z, double t, double a, double b) {
        double r3958469 = x;
        double r3958470 = y;
        double r3958471 = z;
        double r3958472 = log(r3958471);
        double r3958473 = r3958470 * r3958472;
        double r3958474 = t;
        double r3958475 = 1.0;
        double r3958476 = r3958474 - r3958475;
        double r3958477 = a;
        double r3958478 = log(r3958477);
        double r3958479 = r3958476 * r3958478;
        double r3958480 = r3958473 + r3958479;
        double r3958481 = b;
        double r3958482 = r3958480 - r3958481;
        double r3958483 = exp(r3958482);
        double r3958484 = r3958469 * r3958483;
        double r3958485 = r3958484 / r3958470;
        return r3958485;
}

double f(double x, double y, double z, double t, double a, double b) {
        double r3958486 = x;
        double r3958487 = y;
        double r3958488 = cbrt(r3958487);
        double r3958489 = r3958488 * r3958488;
        double r3958490 = a;
        double r3958491 = log(r3958490);
        double r3958492 = t;
        double r3958493 = 1.0;
        double r3958494 = r3958492 - r3958493;
        double r3958495 = z;
        double r3958496 = log(r3958495);
        double r3958497 = r3958496 * r3958487;
        double r3958498 = fma(r3958491, r3958494, r3958497);
        double r3958499 = b;
        double r3958500 = r3958498 - r3958499;
        double r3958501 = exp(r3958500);
        double r3958502 = r3958489 / r3958501;
        double r3958503 = r3958486 / r3958502;
        double r3958504 = r3958503 / r3958488;
        return r3958504;
}

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.0\right) \cdot \log a\right) - b}}{y}\]
  2. Using strategy rm
  3. Applied add-cube-cbrt2.0

    \[\leadsto \frac{x \cdot \color{blue}{\left(\left(\sqrt[3]{e^{\left(y \cdot \log z + \left(t - 1.0\right) \cdot \log a\right) - b}} \cdot \sqrt[3]{e^{\left(y \cdot \log z + \left(t - 1.0\right) \cdot \log a\right) - b}}\right) \cdot \sqrt[3]{e^{\left(y \cdot \log z + \left(t - 1.0\right) \cdot \log a\right) - b}}\right)}}{y}\]
  4. Using strategy rm
  5. Applied add-cube-cbrt2.0

    \[\leadsto \frac{x \cdot \left(\left(\sqrt[3]{e^{\left(y \cdot \log z + \left(t - 1.0\right) \cdot \log a\right) - b}} \cdot \sqrt[3]{e^{\left(y \cdot \log z + \left(t - 1.0\right) \cdot \log a\right) - b}}\right) \cdot \sqrt[3]{e^{\left(y \cdot \log z + \left(t - 1.0\right) \cdot \log a\right) - b}}\right)}{\color{blue}{\left(\sqrt[3]{y} \cdot \sqrt[3]{y}\right) \cdot \sqrt[3]{y}}}\]
  6. Applied associate-/r*2.0

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

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

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

Reproduce

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