| ▲ | Someone 10 hours ago | |
> If you wanted a c++26 preconditon for collatz tho, here it is.
You’ll need to add code to detect cycles other than 1, 4, 2, 1, 4, 2,… to that. That can be done in constant space (https://en.wikipedia.org/wiki/Cycle_detection#Floyd’s_tortoi...)Ideally, you also need a way to detect runs towards infinity. That is harder. Otherwise, an optimising compiler can use the forward progress guarantee and optimize that to:
and then completely remove the precondition. | ||
| ▲ | tyromaniac 8 hours ago | parent [-] | |
I think I saw years ago that clang replaced a collatz impl with true. Why is it that the "forward progress garuntee" would let it do that? | ||