Hacker News new | ask | show | jobs
by sbrother 616 days ago
That is mind blowing, but it’s not immediately obvious to me that it’s equivalent for n > sqrt(INT_MAX). Is it? And if so, is the compiler somehow smart enough to know that?
2 comments

Integer overflow is actually undefined behaviour thus the compiler is free to assume it doesn't happen.
If you assume two’s complement arithmetic, then this is always equivalent because you’re basically just calculating the answer in a modular ring.