x \cdot 0.5 + y \cdot \left(\left(1 - z\right) + \log z\right)
\left(x \cdot 0.5 + y \cdot \left(\left(2 \cdot \log \left(\sqrt[3]{z}\right) + 1\right) - z\right)\right) + y \cdot \left(\log \left(\sqrt[3]{\sqrt[3]{z} \cdot \sqrt[3]{z}}\right) + \log \left(\sqrt[3]{\sqrt[3]{z}}\right)\right)double f(double x, double y, double z) {
double r297218 = x;
double r297219 = 0.5;
double r297220 = r297218 * r297219;
double r297221 = y;
double r297222 = 1.0;
double r297223 = z;
double r297224 = r297222 - r297223;
double r297225 = log(r297223);
double r297226 = r297224 + r297225;
double r297227 = r297221 * r297226;
double r297228 = r297220 + r297227;
return r297228;
}
double f(double x, double y, double z) {
double r297229 = x;
double r297230 = 0.5;
double r297231 = r297229 * r297230;
double r297232 = y;
double r297233 = 2.0;
double r297234 = z;
double r297235 = cbrt(r297234);
double r297236 = log(r297235);
double r297237 = r297233 * r297236;
double r297238 = 1.0;
double r297239 = r297237 + r297238;
double r297240 = r297239 - r297234;
double r297241 = r297232 * r297240;
double r297242 = r297231 + r297241;
double r297243 = r297235 * r297235;
double r297244 = cbrt(r297243);
double r297245 = log(r297244);
double r297246 = cbrt(r297235);
double r297247 = log(r297246);
double r297248 = r297245 + r297247;
double r297249 = r297232 * r297248;
double r297250 = r297242 + r297249;
return r297250;
}




Bits error versus x




Bits error versus y




Bits error versus z
Results
| Original | 0.1 |
|---|---|
| Target | 0.1 |
| Herbie | 0.1 |
Initial program 0.1
rmApplied add-cube-cbrt0.1
Applied log-prod0.1
Applied associate-+r+0.1
Simplified0.1
rmApplied distribute-lft-in0.1
rmApplied add-cube-cbrt0.1
Applied cbrt-prod0.1
Applied log-prod0.1
Applied distribute-lft-in0.1
Final simplification0.1
herbie shell --seed 2019298
(FPCore (x y z)
:name "System.Random.MWC.Distributions:gamma from mwc-random-0.13.3.2"
:precision binary64
:herbie-target
(- (+ y (* 0.5 x)) (* y (- z (log z))))
(+ (* x 0.5) (* y (+ (- 1 z) (log z)))))