\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 \lor \neg \left(\left(t - 1\right) \cdot \log a \le 567.847783482109776\right):\\
\;\;\;\;\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{else}:\\
\;\;\;\;\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}\\
\end{array}double f(double x, double y, double z, double t, double a, double b) {
double r551243 = x;
double r551244 = y;
double r551245 = z;
double r551246 = log(r551245);
double r551247 = r551244 * r551246;
double r551248 = t;
double r551249 = 1.0;
double r551250 = r551248 - r551249;
double r551251 = a;
double r551252 = log(r551251);
double r551253 = r551250 * r551252;
double r551254 = r551247 + r551253;
double r551255 = b;
double r551256 = r551254 - r551255;
double r551257 = exp(r551256);
double r551258 = r551243 * r551257;
double r551259 = r551258 / r551244;
return r551259;
}
double f(double x, double y, double z, double t, double a, double b) {
double r551260 = t;
double r551261 = 1.0;
double r551262 = r551260 - r551261;
double r551263 = a;
double r551264 = log(r551263);
double r551265 = r551262 * r551264;
double r551266 = 52.27911905487301;
bool r551267 = r551265 <= r551266;
double r551268 = 567.8477834821098;
bool r551269 = r551265 <= r551268;
double r551270 = !r551269;
bool r551271 = r551267 || r551270;
double r551272 = x;
double r551273 = y;
double r551274 = z;
double r551275 = log(r551274);
double r551276 = -r551275;
double r551277 = -r551264;
double r551278 = b;
double r551279 = fma(r551277, r551260, r551278);
double r551280 = fma(r551273, r551276, r551279);
double r551281 = exp(r551280);
double r551282 = sqrt(r551281);
double r551283 = r551272 / r551282;
double r551284 = 1.0;
double r551285 = pow(r551263, r551261);
double r551286 = r551284 / r551285;
double r551287 = r551286 / r551282;
double r551288 = r551287 / r551273;
double r551289 = r551283 * r551288;
double r551290 = cbrt(r551272);
double r551291 = r551290 * r551290;
double r551292 = cbrt(r551263);
double r551293 = r551292 * r551292;
double r551294 = pow(r551293, r551261);
double r551295 = r551291 / r551294;
double r551296 = pow(r551292, r551261);
double r551297 = r551290 / r551296;
double r551298 = r551281 / r551297;
double r551299 = r551295 / r551298;
double r551300 = r551299 / r551273;
double r551301 = r551271 ? r551289 : r551300;
return r551301;
}




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.27911905487301 or 567.8477834821098 < (* (- t 1.0) (log a)) Initial program 2.1
Taylor expanded around inf 2.1
Simplified7.5
rmApplied *-un-lft-identity7.5
Applied add-sqr-sqrt7.5
Applied div-inv7.5
Applied times-frac1.6
Applied times-frac0.4
Simplified0.4
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
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))