\frac{x \cdot e^{\left(y \cdot \log z + \left(t - 1\right) \cdot \log a\right) - b}}{y}\begin{array}{l}
\mathbf{if}\;\log a \le -211.7074222693128717764921020716428756714:\\
\;\;\;\;\frac{x \cdot e^{\left(y \cdot \log z + \left(t - 1\right) \cdot \log a\right) - b}}{y}\\
\mathbf{else}:\\
\;\;\;\;\frac{x}{\left(y \cdot {a}^{1}\right) \cdot e^{b - \mathsf{fma}\left(\log z, y, \log a \cdot t\right)}}\\
\end{array}double f(double x, double y, double z, double t, double a, double b) {
double r542202 = x;
double r542203 = y;
double r542204 = z;
double r542205 = log(r542204);
double r542206 = r542203 * r542205;
double r542207 = t;
double r542208 = 1.0;
double r542209 = r542207 - r542208;
double r542210 = a;
double r542211 = log(r542210);
double r542212 = r542209 * r542211;
double r542213 = r542206 + r542212;
double r542214 = b;
double r542215 = r542213 - r542214;
double r542216 = exp(r542215);
double r542217 = r542202 * r542216;
double r542218 = r542217 / r542203;
return r542218;
}
double f(double x, double y, double z, double t, double a, double b) {
double r542219 = a;
double r542220 = log(r542219);
double r542221 = -211.70742226931287;
bool r542222 = r542220 <= r542221;
double r542223 = x;
double r542224 = y;
double r542225 = z;
double r542226 = log(r542225);
double r542227 = r542224 * r542226;
double r542228 = t;
double r542229 = 1.0;
double r542230 = r542228 - r542229;
double r542231 = r542230 * r542220;
double r542232 = r542227 + r542231;
double r542233 = b;
double r542234 = r542232 - r542233;
double r542235 = exp(r542234);
double r542236 = r542223 * r542235;
double r542237 = r542236 / r542224;
double r542238 = pow(r542219, r542229);
double r542239 = r542224 * r542238;
double r542240 = r542220 * r542228;
double r542241 = fma(r542226, r542224, r542240);
double r542242 = r542233 - r542241;
double r542243 = exp(r542242);
double r542244 = r542239 * r542243;
double r542245 = r542223 / r542244;
double r542246 = r542222 ? r542237 : r542245;
return r542246;
}




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 | 1.7 |
|---|---|
| Target | 11.8 |
| Herbie | 0.7 |
if (log a) < -211.70742226931287Initial program 0.7
if -211.70742226931287 < (log a) Initial program 2.2
rmApplied add-cube-cbrt2.2
Applied add-cube-cbrt2.6
Applied prod-diff2.6
Applied exp-sum16.0
Simplified16.0
Simplified2.6
Taylor expanded around inf 2.2
Simplified0.8
Taylor expanded around 0 0.8
Simplified0.8
Final simplification0.7
herbie shell --seed 2019351 +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))