\frac{x \cdot e^{\left(y \cdot \log z + \left(t - 1.0\right) \cdot \log a\right) - b}}{y}\begin{array}{l}
\mathbf{if}\;x \le -1.874142655497601 \cdot 10^{-203}:\\
\;\;\;\;\sqrt[3]{\frac{x \cdot \left(\sqrt{e^{\left(\log a \cdot \left(t - 1.0\right) + y \cdot \log z\right) - b}} \cdot \sqrt{e^{\left(\log a \cdot \left(t - 1.0\right) + y \cdot \log z\right) - b}}\right)}{y}} \cdot \left(\sqrt[3]{\frac{x \cdot \left(\sqrt{e^{\left(\log a \cdot \left(t - 1.0\right) + y \cdot \log z\right) - b}} \cdot \sqrt{e^{\left(\log a \cdot \left(t - 1.0\right) + y \cdot \log z\right) - b}}\right)}{y}} \cdot \sqrt[3]{\frac{x \cdot \left(\sqrt{e^{\left(\log a \cdot \left(t - 1.0\right) + y \cdot \log z\right) - b}} \cdot \sqrt{e^{\left(\log a \cdot \left(t - 1.0\right) + y \cdot \log z\right) - b}}\right)}{y}}\right)\\
\mathbf{elif}\;x \le 4.564051854504764 \cdot 10^{+138}:\\
\;\;\;\;\frac{x}{\sqrt[3]{y} \cdot \sqrt[3]{y}} \cdot \frac{e^{\left(\log a \cdot \left(t - 1.0\right) + y \cdot \log z\right) - b}}{\sqrt[3]{y}}\\
\mathbf{else}:\\
\;\;\;\;\frac{{e}^{\left(\left(\log a \cdot \left(t - 1.0\right) + y \cdot \log z\right) - b\right)} \cdot x}{y}\\
\end{array}double f(double x, double y, double z, double t, double a, double b) {
double r22379053 = x;
double r22379054 = y;
double r22379055 = z;
double r22379056 = log(r22379055);
double r22379057 = r22379054 * r22379056;
double r22379058 = t;
double r22379059 = 1.0;
double r22379060 = r22379058 - r22379059;
double r22379061 = a;
double r22379062 = log(r22379061);
double r22379063 = r22379060 * r22379062;
double r22379064 = r22379057 + r22379063;
double r22379065 = b;
double r22379066 = r22379064 - r22379065;
double r22379067 = exp(r22379066);
double r22379068 = r22379053 * r22379067;
double r22379069 = r22379068 / r22379054;
return r22379069;
}
double f(double x, double y, double z, double t, double a, double b) {
double r22379070 = x;
double r22379071 = -1.874142655497601e-203;
bool r22379072 = r22379070 <= r22379071;
double r22379073 = a;
double r22379074 = log(r22379073);
double r22379075 = t;
double r22379076 = 1.0;
double r22379077 = r22379075 - r22379076;
double r22379078 = r22379074 * r22379077;
double r22379079 = y;
double r22379080 = z;
double r22379081 = log(r22379080);
double r22379082 = r22379079 * r22379081;
double r22379083 = r22379078 + r22379082;
double r22379084 = b;
double r22379085 = r22379083 - r22379084;
double r22379086 = exp(r22379085);
double r22379087 = sqrt(r22379086);
double r22379088 = r22379087 * r22379087;
double r22379089 = r22379070 * r22379088;
double r22379090 = r22379089 / r22379079;
double r22379091 = cbrt(r22379090);
double r22379092 = r22379091 * r22379091;
double r22379093 = r22379091 * r22379092;
double r22379094 = 4.564051854504764e+138;
bool r22379095 = r22379070 <= r22379094;
double r22379096 = cbrt(r22379079);
double r22379097 = r22379096 * r22379096;
double r22379098 = r22379070 / r22379097;
double r22379099 = r22379086 / r22379096;
double r22379100 = r22379098 * r22379099;
double r22379101 = exp(1.0);
double r22379102 = pow(r22379101, r22379085);
double r22379103 = r22379102 * r22379070;
double r22379104 = r22379103 / r22379079;
double r22379105 = r22379095 ? r22379100 : r22379104;
double r22379106 = r22379072 ? r22379093 : r22379105;
return r22379106;
}




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.0 |
| Herbie | 1.5 |
if x < -1.874142655497601e-203Initial program 1.6
rmApplied add-sqr-sqrt1.6
rmApplied add-cube-cbrt1.6
if -1.874142655497601e-203 < x < 4.564051854504764e+138Initial program 2.8
rmApplied add-sqr-sqrt2.8
rmApplied add-cube-cbrt2.8
Applied times-frac1.6
Simplified1.6
if 4.564051854504764e+138 < x Initial program 0.6
rmApplied *-un-lft-identity0.6
Applied exp-prod0.6
Simplified0.6
Final simplification1.5
herbie shell --seed 2019164
(FPCore (x y z t a b)
:name "Numeric.SpecFunctions:incompleteBetaWorker from math-functions-0.1.5.2, A"
:herbie-target
(if (< t -0.8845848504127471) (/ (* x (/ (pow a (- t 1.0)) y)) (- (+ b 1) (* y (log z)))) (if (< t 852031.2288374073) (/ (* (/ x y) (pow a (- t 1.0))) (exp (- b (* (log z) y)))) (/ (* x (/ (pow a (- t 1.0)) y)) (- (+ b 1) (* y (log z))))))
(/ (* x (exp (- (+ (* y (log z)) (* (- t 1.0) (log a))) b))) y))