\frac{x + y \cdot \left(z - x\right)}{z}\left(\left(y + \frac{x}{z}\right) - \left(\sqrt[3]{y} \cdot \sqrt[3]{y}\right) \cdot \frac{x}{\frac{z}{\sqrt[3]{y}}}\right) + \frac{x}{\frac{z}{\sqrt[3]{y}}} \cdot \left(\left(-\sqrt[3]{y} \cdot \sqrt[3]{y}\right) + \sqrt[3]{y} \cdot \sqrt[3]{y}\right)double f(double x, double y, double z) {
double r551430 = x;
double r551431 = y;
double r551432 = z;
double r551433 = r551432 - r551430;
double r551434 = r551431 * r551433;
double r551435 = r551430 + r551434;
double r551436 = r551435 / r551432;
return r551436;
}
double f(double x, double y, double z) {
double r551437 = y;
double r551438 = x;
double r551439 = z;
double r551440 = r551438 / r551439;
double r551441 = r551437 + r551440;
double r551442 = cbrt(r551437);
double r551443 = r551442 * r551442;
double r551444 = r551439 / r551442;
double r551445 = r551438 / r551444;
double r551446 = r551443 * r551445;
double r551447 = r551441 - r551446;
double r551448 = -r551443;
double r551449 = r551448 + r551443;
double r551450 = r551445 * r551449;
double r551451 = r551447 + r551450;
return r551451;
}




Bits error versus x




Bits error versus y




Bits error versus z
Results
| Original | 10.4 |
|---|---|
| Target | 0.0 |
| Herbie | 0.7 |
Initial program 10.4
Simplified10.4
Taylor expanded around 0 3.7
rmApplied associate-/l*2.9
rmApplied add-cube-cbrt3.0
Applied *-un-lft-identity3.0
Applied times-frac3.0
Applied add-sqr-sqrt32.9
Applied times-frac31.9
Applied add-sqr-sqrt48.1
Applied prod-diff48.1
Simplified31.9
Simplified0.7
Final simplification0.7
herbie shell --seed 2019326 +o rules:numerics
(FPCore (x y z)
:name "Diagrams.Backend.Rasterific:rasterificRadialGradient from diagrams-rasterific-1.3.1.3"
:precision binary64
:herbie-target
(- (+ y (/ x z)) (/ y (/ z x)))
(/ (+ x (* y (- z x))) z))