근본A — 정수 누산 + 균형3진 자연반올림 나눗셈 문제 해소 (2026-07-10)
개요
재측정(crownyc/docs/한선씨-P2보완-20260710/재측정_P2_4도메인.md)이 지목한 "정수 누산 +
균형3진 자연반올림 나눗셈" 계열 잔여 버그(선형회귀 int-array·통계분석 정수·RK4 h/2000
스케일핵·모듈로 관용구)를 해소. 헌법 균형3진 자연반올림 /,%(13%5=-2)는 절대 불변 —
대신 절단(toward-zero) 전용 신규 opcode를 VM에 추가하고, 기존 라이브러리 중 진짜로 그
opcode가 필요한 지점만 재배선했다.
무엇을 했는지
- VM 신규 opcode:
TRUNC_DIV(738, 절단나눗셈)는 이미 2026-06-17에 추가되어 있었음(0방향
TRUNC_MOD(752, 절단나머지)가 없었던 것을 이번에 신규 추가(C % 정렬, 부호=
피제수). crownyc.c(opcode_name_kr/opcode_name/asm_lookup) + hanseonc_high.c(builtin
테이블) + hanseonc_rpn.c(RPN 키워드) 3곳 바인딩.
- 재배선 — 진짜 필요한 곳만, 절단 vs float 승격을 엄격히 구분:
libs/수학.한선의 실수합_더해() 최초항을 값*1.0으로 float 강제 승격 →
선형회귀 int-array 입력(X=[1..5] 등)도 이제 정확한 계수 산출(Python 기준 완전 일치).
(주의: 이건 절단이 아니라 float 승격 — 나눗셈 규칙을 바꿔서는 애초에 못 고치는
정밀 손실이라 원칙적으로 구분했다.)
- libs/통계분석.한선의 카이제곱()(항별 정수나눗셈 정밀손실, 4→3.33333 정정)과
사분위수()(보간 위치 소수부 소실, 3→2.75 정정) — 둘 다 float 승격으로 정정.
- RK4(libs/미분방정식.한선): 가설을 직접 실험으로 반증 — 절단으로 바꿔도 원본과
바이트 단위로 완전 동일한 결과(스케일 상수가 h 대비 지나치게 커 자연반올림/절단
양쪽 모두 몫이 0으로 붕괴). 의도적으로 미수정 — 근거 없는 "재배선 완료" 주장을
피함. 실제로는 float 전면 재작성이 필요한 별개 과제로 확인.
- 신규 conformance 테스트
tests/conformance/20_절단나머지.한선(10 EXPECT, 항등식
a==절단나눗셈(a,b)*b+절단나머지(a,b) 및 모듈로 관용구 i-절단나눗셈(i,n)*n 검증 포함).
- 착수 전 백업(
crownyc.c.bak-P3A등) → 임시빌드 → 광범위 검증 전부 통과 → mv 교체(정본
pkg/ 동기(라이브러리는 하드링크로 자동 동기 확인됨, 소스 3파일은 cp).검증 결과 (상세는 crownyc/docs/한선씨-P3보완-20260710/근본A_검증.md)
- 헌법 보존:
13%5=-2,7*8=56, 자연반올림10/3=3불변 재확인. tests/run_all.sh: 99/107 (기준선과 완전 동일, 실패 8건 동일).pkg make test: 11/13 (기준선과 완전 동일, 실패 2건 동일, 무관 이슈).- conformance 스위트: 19/19 → 20/20(신규 1건 추가, 전부 PASS).
- 퍼징 200케이스 2회: 1.5%(3/200) / 3.0%(6/200) — 둘 다 ≤3.5%, 크래시 opcode 전부
- float 무손상:
실수제곱근(2)=1.41421,사인(0.5)=479재확인. - 재배선 표준값 대조: 선형회귀 int-array(기울기=1.5,절편=1.7 — Python 완전일치), float
하나도 악화되지 않아 mv 교체 채택.
관련 파일
/Users/ef/CrownyOS/crownyc/crownyc.c(opcode 752 TRUNC_MOD 추가, 정본)/Users/ef/CrownyOS/crownyc/hanseonc_high.c(절단나머지builtin 바인딩)/Users/ef/CrownyOS/crownyc/hanseonc_rpn.c(절단나머지RPN 키워드)/Users/ef/CrownyOS/crownyc/libs/수학.한선(실수합_더해float 강제 승격)/Users/ef/CrownyOS/crownyc/libs/통계분석.한선(카이제곱/사분위수float 승격)/Users/ef/CrownyOS/crownyc/tests/conformance/20_절단나머지.한선(신규 회귀 테스트)/Users/ef/CrownyOS/crownyc/{crownyc.c,hanseonc_high.c,hanseonc_rpn.c}.bak-P3A(백업)/Users/ef/CrownyOS/docs/한선씨-P3보완-20260710/근본A_검증.md(상세 검증 로그)
잔여 이슈
- RK4(
libs/미분방정식.한선): 스케일 상수(1000/2000/6000) 설계 결함으로 절단/자연반올림
- FFT/bignum: 여전히 none, 근본A 범위 밖(별개 과제).
- 크라우니코드 학습:
opcode_trunc_mod_752,실수합_더해_float_강제승격패턴 add 완료.