3 ms·
You don't necessarily need a wider type (which might be slower to work with), you can just calculate (n|1) * ((n+1)/2). Clang does something much more complicat
by hairtuq 5y ago
You don't necessarily need a wider type (which might be slower to work with), you can just calculate (n|1) * ((n+1)/2). Clang does something much more complicated, probably because for it is just a special case of some much more general optimization.
- CJefferson 5y agoThat's a neat trick! -- I was trying to figure out how to handle the fact I didn't know which of n and n+1 was even.