\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 r793579 = 4.0;
double r793580 = x;
double r793581 = y;
double r793582 = r793580 - r793581;
double r793583 = z;
double r793584 = 0.5;
double r793585 = r793583 * r793584;
double r793586 = r793582 - r793585;
double r793587 = r793579 * r793586;
double r793588 = r793587 / r793583;
return r793588;
}
double f(double x, double y, double z) {
double r793589 = 4.0;
double r793590 = x;
double r793591 = z;
double r793592 = r793590 / r793591;
double r793593 = y;
double r793594 = r793593 / r793591;
double r793595 = 2.0;
double r793596 = fma(r793589, r793594, r793595);
double r793597 = -r793596;
double r793598 = fma(r793589, r793592, r793597);
return r793598;
}




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.3
Taylor expanded around 0 0.0
Simplified0.0
Final simplification0.0
herbie shell --seed 2020001 +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))