\frac{x \cdot e^{\left(y \cdot \log z + \left(t - 1\right) \cdot \log a\right) - b}}{y}\begin{array}{l}
\mathbf{if}\;\left(t - 1\right) \cdot \log a \le 52.279119054873007:\\
\;\;\;\;\frac{x}{\sqrt{e^{\mathsf{fma}\left(y, -\log z, \mathsf{fma}\left(-\log a, t, b\right)\right)}}} \cdot \frac{\frac{\frac{1}{{a}^{1}}}{\sqrt{e^{\mathsf{fma}\left(y, -\log z, \mathsf{fma}\left(-\log a, t, b\right)\right)}}}}{y}\\
\mathbf{elif}\;\left(t - 1\right) \cdot \log a \le 567.847783482109776:\\
\;\;\;\;\frac{\frac{\frac{\sqrt[3]{x} \cdot \sqrt[3]{x}}{{\left(\sqrt[3]{a} \cdot \sqrt[3]{a}\right)}^{1}}}{\frac{e^{\mathsf{fma}\left(y, -\log z, \mathsf{fma}\left(-\log a, t, b\right)\right)}}{\frac{\sqrt[3]{x}}{{\left(\sqrt[3]{a}\right)}^{1}}}}}{y}\\
\mathbf{else}:\\
\;\;\;\;\left(\frac{x}{\sqrt{e^{\mathsf{fma}\left(y, -\log z, \mathsf{fma}\left(-\log a, t, b\right)\right)}}} \cdot \left(\sqrt[3]{\frac{\frac{\frac{1}{{a}^{1}}}{\sqrt{e^{\mathsf{fma}\left(y, -\log z, \mathsf{fma}\left(-\log a, t, b\right)\right)}}}}{y}} \cdot \sqrt[3]{\frac{\frac{\frac{1}{{a}^{1}}}{\sqrt{e^{\mathsf{fma}\left(y, -\log z, \mathsf{fma}\left(-\log a, t, b\right)\right)}}}}{y}}\right)\right) \cdot \sqrt[3]{\frac{\frac{\frac{1}{{a}^{1}}}{\sqrt{e^{\mathsf{fma}\left(y, -\log z, \mathsf{fma}\left(-\log a, t, b\right)\right)}}}}{y}}\\
\end{array}double f(double x, double y, double z, double t, double a, double b) {
double r544988 = x;
double r544989 = y;
double r544990 = z;
double r544991 = log(r544990);
double r544992 = r544989 * r544991;
double r544993 = t;
double r544994 = 1.0;
double r544995 = r544993 - r544994;
double r544996 = a;
double r544997 = log(r544996);
double r544998 = r544995 * r544997;
double r544999 = r544992 + r544998;
double r545000 = b;
double r545001 = r544999 - r545000;
double r545002 = exp(r545001);
double r545003 = r544988 * r545002;
double r545004 = r545003 / r544989;
return r545004;
}
double f(double x, double y, double z, double t, double a, double b) {
double r545005 = t;
double r545006 = 1.0;
double r545007 = r545005 - r545006;
double r545008 = a;
double r545009 = log(r545008);
double r545010 = r545007 * r545009;
double r545011 = 52.27911905487301;
bool r545012 = r545010 <= r545011;
double r545013 = x;
double r545014 = y;
double r545015 = z;
double r545016 = log(r545015);
double r545017 = -r545016;
double r545018 = -r545009;
double r545019 = b;
double r545020 = fma(r545018, r545005, r545019);
double r545021 = fma(r545014, r545017, r545020);
double r545022 = exp(r545021);
double r545023 = sqrt(r545022);
double r545024 = r545013 / r545023;
double r545025 = 1.0;
double r545026 = pow(r545008, r545006);
double r545027 = r545025 / r545026;
double r545028 = r545027 / r545023;
double r545029 = r545028 / r545014;
double r545030 = r545024 * r545029;
double r545031 = 567.8477834821098;
bool r545032 = r545010 <= r545031;
double r545033 = cbrt(r545013);
double r545034 = r545033 * r545033;
double r545035 = cbrt(r545008);
double r545036 = r545035 * r545035;
double r545037 = pow(r545036, r545006);
double r545038 = r545034 / r545037;
double r545039 = pow(r545035, r545006);
double r545040 = r545033 / r545039;
double r545041 = r545022 / r545040;
double r545042 = r545038 / r545041;
double r545043 = r545042 / r545014;
double r545044 = cbrt(r545029);
double r545045 = r545044 * r545044;
double r545046 = r545024 * r545045;
double r545047 = r545046 * r545044;
double r545048 = r545032 ? r545043 : r545047;
double r545049 = r545012 ? r545030 : r545048;
return r545049;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t




Bits error versus a




Bits error versus b
| Original | 2.0 |
|---|---|
| Target | 11.2 |
| Herbie | 0.7 |
if (* (- t 1.0) (log a)) < 52.27911905487301Initial program 2.5
Taylor expanded around inf 2.5
Simplified6.1
rmApplied *-un-lft-identity6.1
Applied add-sqr-sqrt6.1
Applied div-inv6.1
Applied times-frac1.9
Applied times-frac0.1
Simplified0.1
if 52.27911905487301 < (* (- t 1.0) (log a)) < 567.8477834821098Initial program 1.5
Taylor expanded around inf 1.5
Simplified11.2
rmApplied add-cube-cbrt11.5
Applied unpow-prod-down11.5
Applied add-cube-cbrt11.6
Applied times-frac11.6
Applied associate-/l*1.7
if 567.8477834821098 < (* (- t 1.0) (log a)) Initial program 0.3
Taylor expanded around inf 0.3
Simplified14.2
rmApplied *-un-lft-identity14.2
Applied add-sqr-sqrt14.2
Applied div-inv14.2
Applied times-frac0.0
Applied times-frac2.2
Simplified2.2
rmApplied add-cube-cbrt2.2
Applied associate-*r*2.2
Final simplification0.7
herbie shell --seed 2020047 +o rules:numerics
(FPCore (x y z t a b)
:name "Numeric.SpecFunctions:incompleteBetaWorker from math-functions-0.1.5.2, A"
:precision binary64
:herbie-target
(if (< t -0.8845848504127471) (/ (* x (/ (pow a (- t 1)) y)) (- (+ b 1) (* y (log z)))) (if (< t 852031.2288374073) (/ (* (/ x y) (pow a (- t 1))) (exp (- b (* (log z) y)))) (/ (* x (/ (pow a (- t 1)) y)) (- (+ b 1) (* y (log z))))))
(/ (* x (exp (- (+ (* y (log z)) (* (- t 1) (log a))) b))) y))