x \cdot 0.5 + y \cdot \left(\left(1.0 - z\right) + \log z\right)
\mathsf{fma}\left(x, 0.5, \left(1.0 - \left(\left(z - \mathsf{fma}\left(2, \log \left(\sqrt[3]{\sqrt[3]{\sqrt{z}}}\right), \mathsf{fma}\left(2, \log \left(\sqrt[3]{\sqrt{z}}\right), \log \left(\sqrt{z}\right)\right)\right)\right) - \log \left(\sqrt[3]{\sqrt[3]{\sqrt{z}}}\right)\right)\right) \cdot y\right)double f(double x, double y, double z) {
double r11284812 = x;
double r11284813 = 0.5;
double r11284814 = r11284812 * r11284813;
double r11284815 = y;
double r11284816 = 1.0;
double r11284817 = z;
double r11284818 = r11284816 - r11284817;
double r11284819 = log(r11284817);
double r11284820 = r11284818 + r11284819;
double r11284821 = r11284815 * r11284820;
double r11284822 = r11284814 + r11284821;
return r11284822;
}
double f(double x, double y, double z) {
double r11284823 = x;
double r11284824 = 0.5;
double r11284825 = 1.0;
double r11284826 = z;
double r11284827 = 2.0;
double r11284828 = sqrt(r11284826);
double r11284829 = cbrt(r11284828);
double r11284830 = cbrt(r11284829);
double r11284831 = log(r11284830);
double r11284832 = log(r11284829);
double r11284833 = log(r11284828);
double r11284834 = fma(r11284827, r11284832, r11284833);
double r11284835 = fma(r11284827, r11284831, r11284834);
double r11284836 = r11284826 - r11284835;
double r11284837 = r11284836 - r11284831;
double r11284838 = r11284825 - r11284837;
double r11284839 = y;
double r11284840 = r11284838 * r11284839;
double r11284841 = fma(r11284823, r11284824, r11284840);
return r11284841;
}




Bits error versus x




Bits error versus y




Bits error versus z
| Original | 0.1 |
|---|---|
| Target | 0.1 |
| Herbie | 0.1 |
Initial program 0.1
Simplified0.1
rmApplied add-sqr-sqrt0.1
Applied log-prod0.1
Applied associate--r+0.1
rmApplied add-cube-cbrt0.1
Applied log-prod0.1
Applied associate--r+0.1
Simplified0.1
rmApplied add-cube-cbrt0.1
Applied log-prod0.1
Applied associate--r+0.1
Simplified0.1
Final simplification0.1
herbie shell --seed 2019164 +o rules:numerics
(FPCore (x y z)
:name "System.Random.MWC.Distributions:gamma from mwc-random-0.13.3.2"
:herbie-target
(- (+ y (* 0.5 x)) (* y (- z (log z))))
(+ (* x 0.5) (* y (+ (- 1.0 z) (log z)))))