\frac{x \cdot \left(y - z\right)}{y}\frac{x}{\frac{-y}{z + \left(-y\right)}}double f(double x, double y, double z) {
double r37409938 = x;
double r37409939 = y;
double r37409940 = z;
double r37409941 = r37409939 - r37409940;
double r37409942 = r37409938 * r37409941;
double r37409943 = r37409942 / r37409939;
return r37409943;
}
double f(double x, double y, double z) {
double r37409944 = x;
double r37409945 = y;
double r37409946 = -r37409945;
double r37409947 = z;
double r37409948 = r37409947 + r37409946;
double r37409949 = r37409946 / r37409948;
double r37409950 = r37409944 / r37409949;
return r37409950;
}




Bits error versus x




Bits error versus y




Bits error versus z
Results
| Original | 12.9 |
|---|---|
| Target | 2.9 |
| Herbie | 3.1 |
Initial program 12.9
rmApplied associate-/l*3.1
rmApplied frac-2neg3.1
Simplified3.1
Final simplification3.1
herbie shell --seed 2019168 +o rules:numerics
(FPCore (x y z)
:name "Diagrams.Backend.Cairo.Internal:setTexture from diagrams-cairo-1.3.0.3"
:herbie-target
(if (< z -2.060202331921739e+104) (- x (/ (* z x) y)) (if (< z 1.6939766013828526e+213) (/ x (/ y (- y z))) (* (- y z) (/ x y))))
(/ (* x (- y z)) y))