Здравствуйте, Eeel, Вы писали:
E>>Ну, например a + b - (1ull<<32)&((a+b)^~(a^b))
И пусть себе там компилятор разбирается, как оптимизировать?
E>MSVC 2015 Update 2, похоже, не разобрался, а просто дубово выполняет битовые операции.
E>E> mov rax, QWORD PTR [rcx]
E> lea rcx, QWORD PTR [rax+rdx]
E> xor rax, rdx
E> not rax
E> xor rax, rcx
E> and rax, rcx
E> ret 0
E>
А где тут минус
и and с чем-то не тем...
Тут или какой-то хитрый рюх или 1<<32 не в то посчитался, (лучше, конечно, 1ULL<<32 писать) или ещё чего...
Если таки это эквивалентный код, во что трудно поверить, то может он и быстрее, кстати...
Все эмоциональные формулировки не соотвествуют действительному положению вещей и приведены мной исключительно "ради красного словца". За корректными формулировками и неискажённым изложением идей, следует обращаться к их автором или воспользоваться поиском