Average Error: 1.9 → 1.8
Time: 1.5m
Precision: 64
\[\frac{x \cdot e^{\left(y \cdot \log z + \left(t - 1\right) \cdot \log a\right) - b}}{y}\]
\[\frac{\frac{\frac{e^{\mathsf{fma}\left(\log z, y, \log a \cdot \left(t - 1\right) - b\right)}}{\sqrt[3]{y}} \cdot x}{\sqrt[3]{\sqrt[3]{y}} \cdot \left(\sqrt[3]{\sqrt[3]{y}} \cdot \sqrt[3]{\sqrt[3]{y}}\right)}}{\left(\sqrt[3]{\sqrt[3]{y}} \cdot \sqrt[3]{\sqrt[3]{y}}\right) \cdot \sqrt[3]{\sqrt[3]{\sqrt[3]{y}} \cdot \left(\sqrt[3]{\sqrt[3]{y}} \cdot \sqrt[3]{\sqrt[3]{y}}\right)}}\]
\frac{x \cdot e^{\left(y \cdot \log z + \left(t - 1\right) \cdot \log a\right) - b}}{y}
\frac{\frac{\frac{e^{\mathsf{fma}\left(\log z, y, \log a \cdot \left(t - 1\right) - b\right)}}{\sqrt[3]{y}} \cdot x}{\sqrt[3]{\sqrt[3]{y}} \cdot \left(\sqrt[3]{\sqrt[3]{y}} \cdot \sqrt[3]{\sqrt[3]{y}}\right)}}{\left(\sqrt[3]{\sqrt[3]{y}} \cdot \sqrt[3]{\sqrt[3]{y}}\right) \cdot \sqrt[3]{\sqrt[3]{\sqrt[3]{y}} \cdot \left(\sqrt[3]{\sqrt[3]{y}} \cdot \sqrt[3]{\sqrt[3]{y}}\right)}}
double f(double x, double y, double z, double t, double a, double b) {
        double r14741710 = x;
        double r14741711 = y;
        double r14741712 = z;
        double r14741713 = log(r14741712);
        double r14741714 = r14741711 * r14741713;
        double r14741715 = t;
        double r14741716 = 1.0;
        double r14741717 = r14741715 - r14741716;
        double r14741718 = a;
        double r14741719 = log(r14741718);
        double r14741720 = r14741717 * r14741719;
        double r14741721 = r14741714 + r14741720;
        double r14741722 = b;
        double r14741723 = r14741721 - r14741722;
        double r14741724 = exp(r14741723);
        double r14741725 = r14741710 * r14741724;
        double r14741726 = r14741725 / r14741711;
        return r14741726;
}

double f(double x, double y, double z, double t, double a, double b) {
        double r14741727 = z;
        double r14741728 = log(r14741727);
        double r14741729 = y;
        double r14741730 = a;
        double r14741731 = log(r14741730);
        double r14741732 = t;
        double r14741733 = 1.0;
        double r14741734 = r14741732 - r14741733;
        double r14741735 = r14741731 * r14741734;
        double r14741736 = b;
        double r14741737 = r14741735 - r14741736;
        double r14741738 = fma(r14741728, r14741729, r14741737);
        double r14741739 = exp(r14741738);
        double r14741740 = cbrt(r14741729);
        double r14741741 = r14741739 / r14741740;
        double r14741742 = x;
        double r14741743 = r14741741 * r14741742;
        double r14741744 = cbrt(r14741740);
        double r14741745 = r14741744 * r14741744;
        double r14741746 = r14741744 * r14741745;
        double r14741747 = r14741743 / r14741746;
        double r14741748 = cbrt(r14741746);
        double r14741749 = r14741745 * r14741748;
        double r14741750 = r14741747 / r14741749;
        return r14741750;
}

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

Target

Original1.9
Target10.8
Herbie1.8
\[\begin{array}{l} \mathbf{if}\;t \lt -0.8845848504127471478852839936735108494759:\\ \;\;\;\;\frac{x \cdot \frac{{a}^{\left(t - 1\right)}}{y}}{\left(b + 1\right) - y \cdot \log z}\\ \mathbf{elif}\;t \lt 852031.228837407310493290424346923828125:\\ \;\;\;\;\frac{\frac{x}{y} \cdot {a}^{\left(t - 1\right)}}{e^{b - \log z \cdot y}}\\ \mathbf{else}:\\ \;\;\;\;\frac{x \cdot \frac{{a}^{\left(t - 1\right)}}{y}}{\left(b + 1\right) - y \cdot \log z}\\ \end{array}\]

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. Using strategy rm
  3. Applied add-cube-cbrt1.9

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

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

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

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

    \[\leadsto \frac{\frac{x \cdot \frac{e^{\mathsf{fma}\left(\log z, y, \left(t - 1\right) \cdot \log a - b\right)}}{\sqrt[3]{y}}}{\left(\sqrt[3]{\sqrt[3]{y}} \cdot \sqrt[3]{\sqrt[3]{y}}\right) \cdot \sqrt[3]{\sqrt[3]{y}}}}{\color{blue}{\left(\sqrt[3]{\sqrt[3]{y}} \cdot \sqrt[3]{\sqrt[3]{y}}\right) \cdot \sqrt[3]{\sqrt[3]{y}}}}\]
  10. Using strategy rm
  11. Applied add-cube-cbrt1.8

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

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

Reproduce

herbie shell --seed 2019200 +o rules:numerics
(FPCore (x y z t a b)
  :name "Numeric.SpecFunctions:incompleteBetaWorker from math-functions-0.1.5.2, A"

  :herbie-target
  (if (< t -0.8845848504127471) (/ (* x (/ (pow a (- t 1.0)) y)) (- (+ b 1.0) (* y (log z)))) (if (< t 852031.2288374073) (/ (* (/ x y) (pow a (- t 1.0))) (exp (- b (* (log z) y)))) (/ (* x (/ (pow a (- t 1.0)) y)) (- (+ b 1.0) (* y (log z))))))

  (/ (* x (exp (- (+ (* y (log z)) (* (- t 1.0) (log a))) b))) y))