\frac{x \cdot e^{\left(y \cdot \log z + \left(t - 1\right) \cdot \log a\right) - b}}{y}\frac{x}{\frac{\sqrt[3]{\sqrt[3]{y} \cdot \sqrt[3]{y}} \cdot \sqrt[3]{\sqrt[3]{y}}}{\sqrt[3]{{e}^{\left(\mathsf{fma}\left(\log a, t - 1, \log z \cdot y - b\right)\right)}}}} \cdot \frac{1}{\frac{\sqrt[3]{y} \cdot \sqrt[3]{y}}{\sqrt[3]{e^{\mathsf{fma}\left(\log a, t - 1, \log z \cdot y - b\right)}} \cdot \sqrt[3]{e^{\mathsf{fma}\left(\log a, t - 1, \log z \cdot y - b\right)}}}}double f(double x, double y, double z, double t, double a, double b) {
double r17395803 = x;
double r17395804 = y;
double r17395805 = z;
double r17395806 = log(r17395805);
double r17395807 = r17395804 * r17395806;
double r17395808 = t;
double r17395809 = 1.0;
double r17395810 = r17395808 - r17395809;
double r17395811 = a;
double r17395812 = log(r17395811);
double r17395813 = r17395810 * r17395812;
double r17395814 = r17395807 + r17395813;
double r17395815 = b;
double r17395816 = r17395814 - r17395815;
double r17395817 = exp(r17395816);
double r17395818 = r17395803 * r17395817;
double r17395819 = r17395818 / r17395804;
return r17395819;
}
double f(double x, double y, double z, double t, double a, double b) {
double r17395820 = x;
double r17395821 = y;
double r17395822 = cbrt(r17395821);
double r17395823 = r17395822 * r17395822;
double r17395824 = cbrt(r17395823);
double r17395825 = cbrt(r17395822);
double r17395826 = r17395824 * r17395825;
double r17395827 = exp(1.0);
double r17395828 = a;
double r17395829 = log(r17395828);
double r17395830 = t;
double r17395831 = 1.0;
double r17395832 = r17395830 - r17395831;
double r17395833 = z;
double r17395834 = log(r17395833);
double r17395835 = r17395834 * r17395821;
double r17395836 = b;
double r17395837 = r17395835 - r17395836;
double r17395838 = fma(r17395829, r17395832, r17395837);
double r17395839 = pow(r17395827, r17395838);
double r17395840 = cbrt(r17395839);
double r17395841 = r17395826 / r17395840;
double r17395842 = r17395820 / r17395841;
double r17395843 = 1.0;
double r17395844 = exp(r17395838);
double r17395845 = cbrt(r17395844);
double r17395846 = r17395845 * r17395845;
double r17395847 = r17395823 / r17395846;
double r17395848 = r17395843 / r17395847;
double r17395849 = r17395842 * r17395848;
return r17395849;
}




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.5 |
| Herbie | 1.1 |
Initial program 2.0
rmApplied associate-/l*1.9
Simplified1.9
rmApplied add-cube-cbrt1.9
Applied add-cube-cbrt1.9
Applied times-frac1.9
Applied *-un-lft-identity1.9
Applied times-frac1.1
rmApplied *-un-lft-identity1.1
Applied exp-prod1.1
Simplified1.1
rmApplied add-cube-cbrt1.1
Applied cbrt-prod1.1
Final simplification1.1
herbie shell --seed 2019171 +o rules:numerics
(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.0) (* 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.0) (* y (log z))))))
(/ (* x (exp (- (+ (* y (log z)) (* (- t 1.0) (log a))) b))) y))