\frac{x \cdot e^{\left(y \cdot \log z + \left(t - 1\right) \cdot \log a\right) - b}}{y}\begin{array}{l}
\mathbf{if}\;x \le -2.35020102619511874 \cdot 10^{-91} \lor \neg \left(x \le 8.0857564609543737 \cdot 10^{39}\right):\\
\;\;\;\;\frac{\left(x \cdot \frac{{\left(\frac{\sqrt[3]{1} \cdot \sqrt[3]{1}}{\sqrt{a}}\right)}^{1}}{\sqrt[3]{e^{y \cdot \log \left(\frac{1}{z}\right) + \left(\log \left(\frac{1}{a}\right) \cdot t + b\right)}} \cdot \sqrt[3]{e^{y \cdot \log \left(\frac{1}{z}\right) + \left(\log \left(\frac{1}{a}\right) \cdot t + b\right)}}}\right) \cdot \frac{{\left(\frac{\sqrt[3]{1}}{\sqrt{a}}\right)}^{1}}{\sqrt[3]{e^{y \cdot \log \left(\frac{1}{z}\right) + \left(\log \left(\frac{1}{a}\right) \cdot t + b\right)}}}}{y}\\
\mathbf{else}:\\
\;\;\;\;\frac{\frac{{\left(\frac{1}{a}\right)}^{1}}{e^{y \cdot \log \left(\frac{1}{z}\right) + \left(\log \left(\frac{1}{a}\right) \cdot t + b\right)}}}{\frac{y}{x}}\\
\end{array}double f(double x, double y, double z, double t, double a, double b) {
double r476119 = x;
double r476120 = y;
double r476121 = z;
double r476122 = log(r476121);
double r476123 = r476120 * r476122;
double r476124 = t;
double r476125 = 1.0;
double r476126 = r476124 - r476125;
double r476127 = a;
double r476128 = log(r476127);
double r476129 = r476126 * r476128;
double r476130 = r476123 + r476129;
double r476131 = b;
double r476132 = r476130 - r476131;
double r476133 = exp(r476132);
double r476134 = r476119 * r476133;
double r476135 = r476134 / r476120;
return r476135;
}
double f(double x, double y, double z, double t, double a, double b) {
double r476136 = x;
double r476137 = -2.3502010261951187e-91;
bool r476138 = r476136 <= r476137;
double r476139 = 8.085756460954374e+39;
bool r476140 = r476136 <= r476139;
double r476141 = !r476140;
bool r476142 = r476138 || r476141;
double r476143 = 1.0;
double r476144 = cbrt(r476143);
double r476145 = r476144 * r476144;
double r476146 = a;
double r476147 = sqrt(r476146);
double r476148 = r476145 / r476147;
double r476149 = 1.0;
double r476150 = pow(r476148, r476149);
double r476151 = y;
double r476152 = z;
double r476153 = r476143 / r476152;
double r476154 = log(r476153);
double r476155 = r476151 * r476154;
double r476156 = r476143 / r476146;
double r476157 = log(r476156);
double r476158 = t;
double r476159 = r476157 * r476158;
double r476160 = b;
double r476161 = r476159 + r476160;
double r476162 = r476155 + r476161;
double r476163 = exp(r476162);
double r476164 = cbrt(r476163);
double r476165 = r476164 * r476164;
double r476166 = r476150 / r476165;
double r476167 = r476136 * r476166;
double r476168 = r476144 / r476147;
double r476169 = pow(r476168, r476149);
double r476170 = r476169 / r476164;
double r476171 = r476167 * r476170;
double r476172 = r476171 / r476151;
double r476173 = pow(r476156, r476149);
double r476174 = r476173 / r476163;
double r476175 = r476151 / r476136;
double r476176 = r476174 / r476175;
double r476177 = r476142 ? r476172 : r476176;
return r476177;
}




Bits error versus x




Bits error versus y




Bits error versus z




Bits error versus t




Bits error versus a




Bits error versus b
Results
| Original | 2.0 |
|---|---|
| Target | 11.1 |
| Herbie | 0.2 |
if x < -2.3502010261951187e-91 or 8.085756460954374e+39 < x Initial program 0.9
Taylor expanded around inf 0.9
Simplified0.2
rmApplied add-cube-cbrt0.3
Applied add-sqr-sqrt0.3
Applied add-cube-cbrt0.3
Applied times-frac0.3
Applied unpow-prod-down0.3
Applied times-frac0.3
Applied associate-*r*0.3
if -2.3502010261951187e-91 < x < 8.085756460954374e+39Initial program 3.1
Taylor expanded around inf 3.1
Simplified0.1
Final simplification0.2
herbie shell --seed 2020024
(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))