AI 요약
‘3의 배수나 숫자 3이 들어갈 때 바보가 되는’ 유명한 일본 개그 캐릭터 ‘나베아츠’를 부동소수점 오류로 구현한 코드가 공개되었다. 특정 상수들로 나누고 다시 곱하는 연산을 반복했을 때, 1부터 40까지의 정수 중 3의 배수나 3이 포함된 숫자에서만 부동소수점 오차가 발생해 원래 값과 달라지는 현상을 발견했다. IEEE 754 binary64, tiesToEven 반올림을 따르는 Python 및 다른 언어에서 동일한 결과가 보장된다.
핵심 포인트
- 1~40 범위에서
i를 특정 상수들로 나누고 다시 곱했을 때,i % 3 == 0또는"3" in str(i)인 경우에만f(i) != i성립 - 사용된 상수: A0 = [1.1819055680010597, 1.431565918540171, 1.0642546737906344] (i<26), A1 = [1.7027727811689999, 1.5993649864648791, 1.025135482175168, 1.0916806072811036] (i>=26)
- IEEE 754 binary64, tiesToEven 반올림을 따르는 모든 언어에서 동일한 결과 재현 가능
- 26 이상에서도 성립하는 상수 조합을 찾지 못해 40까지만 검증 완료
향후 전망
- 이 현상은 부동소수점 연산의 비가환성(non-commutativity)을 활용한 흥미로운 사례로, 컴퓨터 과학 교육에서 부동소수점 오차를 직관적으로 이해하는 데 활용될 가능성
- 더 큰 범위(N>40)에서도 동일한 패턴이 존재하는지에 대한 추가 연구가 필요
