\frac{4 \cdot \left(\left(x - y\right) - z \cdot 0.5\right)}{z}\mathsf{fma}\left(4, \frac{x}{z}, -\mathsf{fma}\left(4, \frac{y}{z}, 2\right)\right)double f(double x, double y, double z) {
double r809738 = 4.0;
double r809739 = x;
double r809740 = y;
double r809741 = r809739 - r809740;
double r809742 = z;
double r809743 = 0.5;
double r809744 = r809742 * r809743;
double r809745 = r809741 - r809744;
double r809746 = r809738 * r809745;
double r809747 = r809746 / r809742;
return r809747;
}
double f(double x, double y, double z) {
double r809748 = 4.0;
double r809749 = x;
double r809750 = z;
double r809751 = r809749 / r809750;
double r809752 = y;
double r809753 = r809752 / r809750;
double r809754 = 2.0;
double r809755 = fma(r809748, r809753, r809754);
double r809756 = -r809755;
double r809757 = fma(r809748, r809751, r809756);
return r809757;
}




Bits error versus x




Bits error versus y




Bits error versus z
| Original | 0.2 |
|---|---|
| Target | 0.0 |
| Herbie | 0.0 |
Initial program 0.2
Simplified0.2
Taylor expanded around 0 0.0
Simplified0.0
Final simplification0.0
herbie shell --seed 2020039 +o rules:numerics
(FPCore (x y z)
:name "Data.Array.Repa.Algorithms.ColorRamp:rampColorHotToCold from repa-algorithms-3.4.0.1, B"
:precision binary64
:herbie-target
(- (* 4 (/ x z)) (+ 2 (* 4 (/ y z))))
(/ (* 4 (- (- x y) (* z 0.5))) z))