CasNum - 컴퍼스와 자를 이용한 임의 정밀도 산술 라이브러리
GeekNews (AI)
|
|
🔬 연구
#pyboy
#python
#review
#rsa
#기하학적작도
#임의정밀도
원문 출처: GeekNews (AI) · Genesis Park에서 요약 및 분석
요약
컴퍼스와 자 작도법을 기반으로 임의 정밀도 산술을 구현한 Python 라이브러리로, 모든 연산을 기하학적 구성으로 수행함 각 수를 평면상의 점으로 표현하고, 덧셈·곱셈·논리 연산을 모두 작도 규칙으로 구현 Game Boy 에뮬레...
본문
- 컴퍼스와 자 작도법을 기반으로 임의 정밀도 산술을 구현한 Python 라이브러리로, 모든 연산을 기하학적 구성으로 수행함 - 각 수를 평면상의 점으로 표현하고, 덧셈·곱셈·논리 연산을 모두 작도 규칙으로 구현 - Game Boy 에뮬레이터(PyBoy) 내부의 ALU를 CasNum으로 대체해, 기하학적 연산만으로 게임을 실행할 수 있음 - RSA 예제와 Game Boy 통합 예제가 포함되어 있으며, 시각화 뷰어(viewer) 를 통해 작도 과정을 실시간으로 볼 수 있음 - MIT 라이선스로 공개되어 있으며, PyBoy(LGPL v3)와 2048.gb(zlib 라이선스)를 수정·포함함 CasNum 개요 - CasNum은 컴퍼스와 자 작도법(compass and straightedge) 을 이용해 임의 정밀도 산술을 수행하는 Python 라이브러리 - 각 수 x 는 평면상의 점(x, 0) 으로 표현 - 덧셈은 두 점의 중점을 찾고 이를 두 배로 확장하는 방식으로 구현 - 곱셈과 나눗셈은 삼각형의 닮음 원리를 이용해 구성 - 논리 연산(AND, OR, XOR)도 기하학적으로 구현되어 있음 - 각 수 - 기본 작도 엔진은 cas/ 디렉터리에 있으며, 다음 다섯 가지 기본 작도를 지원- 두 점을 지나는 직선 - 한 점을 중심으로 다른 점을 지나는 원 - 두 직선의 교점 - 직선과 원의 교점 - 두 원의 교점 - 이러한 작도 연산을 기반으로 CasNum 클래스가 정의되어 있으며, 산술 및 논리 연산을 모두 기하학적으로 수행 주요 기능 및 최적화 - 곱셈, 나눗셈, 모듈로 연산 등은 삼각형 닮음과 기하학적 관계를 이용해 구현 - 특정 연산(예: 2배 곱셈)은 일반 알고리듬보다 효율적으로 수행 가능 - Python의 lru_cache 를 사용해 연산 결과를 캐시, 재사용 시 속도 향상 - 캐시로 인해 메모리 사용량이 크게 증가할 수 있음, 주의 필요 활용 예시 - RSA 암호화 프로그램 구현 - Game Boy 에뮬레이터(PyBoy) 의 ALU에 통합하여, 모든 연산을 CasNum으로 대체 - opcodes_gen.py 파일만 최소한으로 수정 - Pokémon Red 등 ROM을 실행 가능 (단, 부팅에 약 15분 소요) - 두 번째 실행부터는 캐시 덕분에 약 0.5~1 FPS로 동작 - - examples/ 디렉터리에 RSA 및 Game Boy 예제 포함 - 시각화 뷰어( casnum/cas/viewer.py ) 를 통해 작도 과정을 실시간으로 확인 가능 철학과 성능 - 단순한 a + b 연산 대신, 직선과 원의 교차로 중점을 구하는 과정을 직접 구현하는 개발자 정신을 강조 - “4차 방정식을 풀지 않고는 루프 카운터를 증가시킬 수 없다면, 진정한 증분이 아니다”라는 철학적 유머 포함 - 시간 복잡도: Yes / 공간 복잡도: Also yes라는 표현으로, 계산 비용이 매우 큼을 풍자적으로 표현 의존성과 라이선스 - 필수 의존성: sympy - 선택적 의존성: pyglet (시각화용),pytest-lazy-fixtures (테스트용),pycryptodome (RSA 예제용) - MIT 라이선스로 배포 - 포함된 서드파티 구성요소 - PyBoy (수정 버전): LGPL v3.0 - 2048.gb ROM: zlib 라이선스 - PyBoy는 CasNum을 사용하도록 수정되었으며, 원본은 Baekalfen/PyBoy에서 확인 가능 FAQ - “Doom을 실행할 수 있나?” → “숫자이므로 실행할 수 없음” - “빠른가?” → “유클리드 사본을 손으로 베끼는 것보다는 훨씬 빠름” - “왜 만들었나?” → “임의 정밀도 산술을 원했지만, 동시에 무언가를 느끼고 싶었음”
Genesis Park 편집팀이 AI를 활용하여 작성한 분석입니다. 원문은 출처 링크를 통해 확인할 수 있습니다.
공유