\frac{x \cdot e^{\left(y \cdot \log z + \left(t - 1\right) \cdot \log a\right) - b}}{y}\begin{array}{l}
\mathbf{if}\;a \le 6.704663585819556267416471937206933320954 \cdot 10^{-216}:\\
\;\;\;\;\frac{x}{\left(\sqrt[3]{y} \cdot \left(\sqrt[3]{\sqrt[3]{y}} \cdot \sqrt[3]{\sqrt[3]{y}}\right)\right) \cdot \sqrt[3]{\sqrt[3]{y}}} \cdot \frac{\frac{{a}^{\left(-1\right)}}{e^{\mathsf{fma}\left(y, -\log z, \mathsf{fma}\left(-\log a, t, b\right)\right)}}}{\sqrt[3]{y}}\\
\mathbf{elif}\;a \le 1.299885454868772367621751764068226642771 \cdot 10^{-207}:\\
\;\;\;\;x \cdot \frac{\frac{{z}^{y}}{\frac{e^{b}}{{a}^{\left(t - 1\right)}}}}{y}\\
\mathbf{elif}\;a \le 5.576242448142597018860216064040225357932 \cdot 10^{-92}:\\
\;\;\;\;\frac{x}{\sqrt[3]{\sqrt[3]{y} \cdot \sqrt[3]{y}} \cdot \left(\sqrt[3]{\sqrt[3]{y}} \cdot \sqrt[3]{y}\right)} \cdot \frac{\frac{{a}^{\left(-1\right)}}{e^{\mathsf{fma}\left(y, -\log z, \mathsf{fma}\left(-\log a, t, b\right)\right)}}}{\sqrt[3]{y}}\\
\mathbf{else}:\\
\;\;\;\;\frac{\frac{\frac{x}{{a}^{1}}}{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 r524104 = x;
double r524105 = y;
double r524106 = z;
double r524107 = log(r524106);
double r524108 = r524105 * r524107;
double r524109 = t;
double r524110 = 1.0;
double r524111 = r524109 - r524110;
double r524112 = a;
double r524113 = log(r524112);
double r524114 = r524111 * r524113;
double r524115 = r524108 + r524114;
double r524116 = b;
double r524117 = r524115 - r524116;
double r524118 = exp(r524117);
double r524119 = r524104 * r524118;
double r524120 = r524119 / r524105;
return r524120;
}
double f(double x, double y, double z, double t, double a, double b) {
double r524121 = a;
double r524122 = 6.704663585819556e-216;
bool r524123 = r524121 <= r524122;
double r524124 = x;
double r524125 = y;
double r524126 = cbrt(r524125);
double r524127 = cbrt(r524126);
double r524128 = r524127 * r524127;
double r524129 = r524126 * r524128;
double r524130 = r524129 * r524127;
double r524131 = r524124 / r524130;
double r524132 = 1.0;
double r524133 = -r524132;
double r524134 = pow(r524121, r524133);
double r524135 = z;
double r524136 = log(r524135);
double r524137 = -r524136;
double r524138 = log(r524121);
double r524139 = -r524138;
double r524140 = t;
double r524141 = b;
double r524142 = fma(r524139, r524140, r524141);
double r524143 = fma(r524125, r524137, r524142);
double r524144 = exp(r524143);
double r524145 = r524134 / r524144;
double r524146 = r524145 / r524126;
double r524147 = r524131 * r524146;
double r524148 = 1.2998854548687724e-207;
bool r524149 = r524121 <= r524148;
double r524150 = pow(r524135, r524125);
double r524151 = exp(r524141);
double r524152 = r524140 - r524132;
double r524153 = pow(r524121, r524152);
double r524154 = r524151 / r524153;
double r524155 = r524150 / r524154;
double r524156 = r524155 / r524125;
double r524157 = r524124 * r524156;
double r524158 = 5.576242448142597e-92;
bool r524159 = r524121 <= r524158;
double r524160 = r524126 * r524126;
double r524161 = cbrt(r524160);
double r524162 = r524127 * r524126;
double r524163 = r524161 * r524162;
double r524164 = r524124 / r524163;
double r524165 = r524164 * r524146;
double r524166 = pow(r524121, r524132);
double r524167 = r524124 / r524166;
double r524168 = r524167 / r524144;
double r524169 = r524168 / r524125;
double r524170 = r524159 ? r524165 : r524169;
double r524171 = r524149 ? r524157 : r524170;
double r524172 = r524123 ? r524147 : r524171;
return r524172;
}




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.0 |
| Herbie | 3.6 |
if a < 6.704663585819556e-216Initial program 0.7
rmApplied *-un-lft-identity0.7
Applied exp-prod0.8
Simplified0.8
rmApplied add-cube-cbrt0.8
Applied times-frac7.0
Simplified7.0
Taylor expanded around inf 7.1
Simplified6.8
rmApplied add-cube-cbrt6.8
Applied associate-*r*6.8
if 6.704663585819556e-216 < a < 1.2998854548687724e-207Initial program 0.8
rmApplied *-un-lft-identity0.8
Applied times-frac5.6
Simplified5.6
Simplified22.0
if 1.2998854548687724e-207 < a < 5.576242448142597e-92Initial program 0.9
rmApplied *-un-lft-identity0.9
Applied exp-prod0.9
Simplified0.9
rmApplied add-cube-cbrt0.9
Applied times-frac4.4
Simplified4.4
Taylor expanded around inf 4.3
Simplified3.7
rmApplied add-cube-cbrt3.7
Applied cbrt-prod3.7
Applied associate-*l*3.7
if 5.576242448142597e-92 < a Initial program 2.6
rmApplied *-un-lft-identity2.6
Applied exp-prod2.7
Simplified2.7
rmApplied add-cube-cbrt2.7
Applied times-frac5.5
Simplified5.5
Taylor expanded around inf 2.7
Simplified2.6
Final simplification3.6
herbie shell --seed 2019350 +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))