\frac{x + y \cdot \left(z - x\right)}{z}\left(\left(\frac{x}{z} + y\right) - y \cdot \frac{x}{z}\right) + \frac{x}{\sqrt[3]{z} \cdot \sqrt[3]{z}} \cdot \left(\left(-\frac{y}{\sqrt[3]{z}}\right) + \frac{y}{\sqrt[3]{z}}\right)double f(double x, double y, double z) {
double r896742 = x;
double r896743 = y;
double r896744 = z;
double r896745 = r896744 - r896742;
double r896746 = r896743 * r896745;
double r896747 = r896742 + r896746;
double r896748 = r896747 / r896744;
return r896748;
}
double f(double x, double y, double z) {
double r896749 = x;
double r896750 = z;
double r896751 = r896749 / r896750;
double r896752 = y;
double r896753 = r896751 + r896752;
double r896754 = r896752 * r896751;
double r896755 = r896753 - r896754;
double r896756 = cbrt(r896750);
double r896757 = r896756 * r896756;
double r896758 = r896749 / r896757;
double r896759 = r896752 / r896756;
double r896760 = -r896759;
double r896761 = r896760 + r896759;
double r896762 = r896758 * r896761;
double r896763 = r896755 + r896762;
return r896763;
}




Bits error versus x




Bits error versus y




Bits error versus z
Results
| Original | 10.2 |
|---|---|
| Target | 0.0 |
| Herbie | 0.8 |
Initial program 10.2
Simplified10.2
Taylor expanded around 0 3.4
rmApplied add-cube-cbrt3.5
Applied times-frac0.9
Applied add-sqr-sqrt33.3
Applied prod-diff33.3
Simplified0.9
Simplified0.9
rmApplied div-inv1.0
Applied associate-*l*0.9
Simplified0.8
Final simplification0.8
herbie shell --seed 2020043 +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))