Odpovídáte na názor k článku Výpočty v systému pevné řádové čárky na platformě IBM PC. Názory mohou přidávat pouze registrovaní uživatelé. Nově přidané názory se na webu objeví až po schválení redakcí.
Korektní kód v C je:
uint32_t fx_mul_2(uint32_t x, uint32_t y) {
return ((uint64_t)x*y)>>16;
}
Nebo 64 bitová verze:
uint32_t fx_mul_2(uint64_t x, uint64_t y) {
return ((unsigned __int128)x*y)>>16;
}
MSVC nepodporuje __int128, takže tam musíme používat intrinsic funkce _umul128 nebo __umulh: https://learn.microsoft.com/en-us/cpp/intrinsics/umulh?view=msvc-170
3. 7. 2025, 12:42 editováno autorem komentáře