x \cdot e^{y \cdot \left(\log z - t\right) + a \cdot \left(\log \left(1 - z\right) - b\right)}\begin{array}{l}
\mathbf{if}\;y \le \frac{-2494396309020223}{1125899906842624} \lor \neg \left(y \le 9.428286306709098034315676663683211235301 \cdot 10^{105}\right):\\
\;\;\;\;x \cdot e^{\left(\log z \cdot y + a \cdot \log 1\right) - t \cdot y}\\
\mathbf{else}:\\
\;\;\;\;x \cdot \left(\frac{{1}^{a}}{\sqrt{e^{\frac{a \cdot {z}^{2}}{{1}^{2}}}}} \cdot \frac{{z}^{y}}{e^{t \cdot y + \left(a \cdot b + 1 \cdot \left(a \cdot z\right)\right)}}\right)\\
\end{array}double f(double x, double y, double z, double t, double a, double b) {
double r84829 = x;
double r84830 = y;
double r84831 = z;
double r84832 = log(r84831);
double r84833 = t;
double r84834 = r84832 - r84833;
double r84835 = r84830 * r84834;
double r84836 = a;
double r84837 = 1.0;
double r84838 = r84837 - r84831;
double r84839 = log(r84838);
double r84840 = b;
double r84841 = r84839 - r84840;
double r84842 = r84836 * r84841;
double r84843 = r84835 + r84842;
double r84844 = exp(r84843);
double r84845 = r84829 * r84844;
return r84845;
}
double f(double x, double y, double z, double t, double a, double b) {
double r84846 = y;
double r84847 = -2494396309020223.0;
double r84848 = 1125899906842624.0;
double r84849 = r84847 / r84848;
bool r84850 = r84846 <= r84849;
double r84851 = 9.428286306709098e+105;
bool r84852 = r84846 <= r84851;
double r84853 = !r84852;
bool r84854 = r84850 || r84853;
double r84855 = x;
double r84856 = z;
double r84857 = log(r84856);
double r84858 = r84857 * r84846;
double r84859 = a;
double r84860 = 1.0;
double r84861 = log(r84860);
double r84862 = r84859 * r84861;
double r84863 = r84858 + r84862;
double r84864 = t;
double r84865 = r84864 * r84846;
double r84866 = r84863 - r84865;
double r84867 = exp(r84866);
double r84868 = r84855 * r84867;
double r84869 = pow(r84860, r84859);
double r84870 = 2.0;
double r84871 = pow(r84856, r84870);
double r84872 = r84859 * r84871;
double r84873 = pow(r84860, r84870);
double r84874 = r84872 / r84873;
double r84875 = exp(r84874);
double r84876 = sqrt(r84875);
double r84877 = r84869 / r84876;
double r84878 = pow(r84856, r84846);
double r84879 = b;
double r84880 = r84859 * r84879;
double r84881 = r84859 * r84856;
double r84882 = r84860 * r84881;
double r84883 = r84880 + r84882;
double r84884 = r84865 + r84883;
double r84885 = exp(r84884);
double r84886 = r84878 / r84885;
double r84887 = r84877 * r84886;
double r84888 = r84855 * r84887;
double r84889 = r84854 ? r84868 : r84888;
return r84889;
}



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
if y < -2.215468971851407 or 9.428286306709098e+105 < y Initial program 2.0
Taylor expanded around 0 8.8
if -2.215468971851407 < y < 9.428286306709098e+105Initial program 2.1
Taylor expanded around 0 0.1
Simplified0.1
Taylor expanded around inf 0.1
Simplified2.7
Final simplification4.7
herbie shell --seed 2019303
(FPCore (x y z t a b)
:name "Numeric.SpecFunctions:incompleteBetaApprox from math-functions-0.1.5.2, B"
:precision binary64
(* x (exp (+ (* y (- (log z) t)) (* a (- (log (- 1 z)) b))))))