정수 나눗셈을 부동소수점으로 옮기는 건 사소한 일이다
Moving integer division to floating-point is trivial
정수 나눗셈과 나머지 연산은 하드웨어에서 느리고 처리량도 낮지만, 부동소수점 나눗셈은 더 빠르고 처리량도 높습니다. 이 글은 부동소수점 나눗셈을 사용해 정수 나눗셈과 나머지를 계산하는 방법을 제시합니다. 핵심은 IEEE 754 표준 라운딩 모드에서 나눗셈 결과가 정확히 중간값이 될 수 없다는 점을 이용하는 것입니다. 이 방법은 부호 없는 정수에 대해 유효하며, double과 single precision에서 각각 53비트와 24비트까지의 정수를 처리할 수 있습니다. 실제 구현에서는 라운딩 모드 제어, int-float 변환 비용, SIMD 활용 등의 고려사항이 있습니다.
부동소수점 나눗셈은 (우리의 base-2와 동일한 작업 정밀도의 경우) 중간값이 전혀 없으므로, 타이 브레이킹은 발생하지 않고 오직 반올림만 적용됩니다.