3의 배수나 숫자 3이 들어갈 때만 부동소수점 오류로 ‘바보’가 되는 세상의 나베아츠

Python 코드로 3의 배수나 숫자 3이 포함된 수에서 부동소수점 오류가 발생해 '바보'가 되는 현상을 구현했다. IEEE 754 binary64와 tiesToEven 반올림을 따르는 환경에서 1부터 40까지의 수가 조건에 맞게 오류를 보이며, 26 이상에서는 다른 상수 집합이 필요하다.

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)에서도 동일한 패턴이 존재하는지에 대한 추가 연구가 필요
Share

이것도 읽어보세요

댓글

이 소식에 대한 의견을 자유롭게 남겨주세요.

댓글 (0)

불러오는 중...