Ulrich Lauther <[EMAIL PROTECTED]> writes:
> inline bool almost_equal(float a, float b, int maxUlps = 16) {
> if (a == b) return true;
> int intDiff = abs(*(reinterpret_cast<int*>(&a)) -
> *(reinterpret_cast<int*>(&b)));
> return intDiff <= maxUlps;
> }
>
> I get the warning: warning: dereferencing type-punned pointer will
> break strict-aliasing rules
Seems a mild punishment for such an atrocity.
> How can I avoid this? (Using a union would imply unneeded copying af
> a and b).
And undefined behavior again.
What about the straightforward
return fabs(a-b)<maxUlps;
?
_______________________________________________
help-gplusplus mailing list
[email protected]
http://lists.gnu.org/mailman/listinfo/help-gplusplus