← 목록
기타 2026-07-10 5KB 읽기 4분

라이브러리 프리미티브 재배선 (P1 프리미티브 → 기존 라이브러리)

개요

P1 재측정(재측정_수치암호.md)이 밝힌 핵심 갭: 신규 프리미티브(실수제곱근, 표본평균, 모표준편차, 이진배타, HMAC_SHA256)는 표준값 대조로 이미 정확했지만, 기존 라이브러리(XOR암호, 통계분석, 선형회귀)가 그 프리미티브를 안 써서 partial에 머물러 있었다. 이번 작업은 그 기존 라이브러리를 검증된 프리미티브로 재배선(rewire)해 partial→full로 끌어올렸다.

무엇을 했는지

  1. libs/XOR암호.한선: pb+kb 덧셈암호 + 숫자변환(글자(...)) 오파싱을
이진배타()(진짜 바이트 XOR) + 코드값(글자(...))(ASCII 코드포인트)로 전면 재작성. 재작성 중 별도 버그 발견·수정: 키 순환 인덱스 i-(i/n)*n이 VM의 "자연반올림 나눗셈" 때문에 음수를 낼 수 있어(2/3이 절삭 0이 아니라 반올림 1) _키인덱스() 정규화 헬퍼 추가. Python bytes([c^k...])와 3개 케이스 전항목 byte-perfect 일치, 왕복 검증 완료.

  1. libs/통계분석.한선: 내부에서 쓰던 네이티브 평균()/표준편차()(broken, 각각
0/100000을 반환하는 등 완전히 깨짐)를 수학.한선표본평균()/모표준편차()로 전면 교체(가져오기 "수학.한선" 추가). 분산() 자체 누산과 t검정()/신뢰구간()루트() 스케일 보정도 "0+float"/"비완전제곱 sqrt" 함정을 걸러 실수합_* 누산기 + 실수제곱근()으로 재작성. 분산·평균·표준편차·공분산·상관계수·t검정·신뢰구간· 정규화점수 전항목 표준값 일치 확인.

  1. libs/수학.한선: "이미 검증 완료"로 간주됐던 표본평균()/모표준편차()가 사실
평균이 정수로 나누어떨어지는 표본에서만 우연히 정확했던 부가 버그 발견·수정 — 실수합_값(합)/n이 n이 int면 여전히 반올림 나눗셈을 타서(7/3→2, 정답 2.333) 분모를 n*1.0으로 float화. [1,2,4] 같은 비정수 평균 케이스로 검증(2.33333/1.24722 정확).

  1. libs/선형회귀.한선: sumX=0; sumX=sumX+xi 형태 누산이 Y가 float일 때 "0+float"
함정에 걸려 기울기 0.56(정답 0.6) 오답이었던 것을, 실수합_* 누산기로 재작성. X=[1..5],Y=[2.8,3.4,4.0,4.6,5.2] → 기울기 0.6, 절편 2.2, R²=1, MSE≈0 — numpy와 완전 일치.

  1. libs/SPI.한선(부가 스캔): grep 비트배타( 스캔으로 루프백 에코가 3진 trit-XOR를
오용 중임을 발견, 이진배타()로 교체·검증. AES.한선/ChaCha20.한선/난수생성기.한선 등 나머지 비트배타 오용 파일은 8비트 초과 워드 연산이라 저비용 범위 밖으로 보류(문서화).

full 전환된 과제

과제
XOR/스트림 대칭암호partialfull
단순선형회귀partialfull
통계분석.한선 실전 API(t검정 포함)broken 의존 무효정상 작동(카이제곱만 partial 잔존)

관련 파일

  • /Users/ef/CrownyOS/crownyc/libs/XOR암호.한선
  • /Users/ef/CrownyOS/crownyc/libs/통계분석.한선
  • /Users/ef/CrownyOS/crownyc/libs/수학.한선
  • /Users/ef/CrownyOS/crownyc/libs/선형회귀.한선
  • /Users/ef/CrownyOS/crownyc/libs/SPI.한선
  • 검증 기록: /Users/ef/CrownyOS/docs/한선씨-P1보완-20260709/재배선검증.md
  • 근거: /Users/ef/CrownyOS/docs/한선씨-P1보완-20260709/재측정_수치암호.md

회귀

tests/run_all.sh 99/107 통과 — 재배선 전과 동일, 악화 없음. pkg/libs hardlink 동기 확인 (5개 파일 전부 ls -i 일치). CROWNY_STD 그림자 사본 없음(동기 이슈 없음).

잔여 이슈 (근본 VM 갭, 이번 범위 밖)

  • 0+float 정수반올림: 리터럴 0이 float와 +/- 결합 시 반올림 (VM C 근본, 우회만 가능)
  • 정수나눗셈 자연반올림: i/n이 절삭이 아니라 반올림이라 모듈로 관용구가 음수 위험
(이번에 XOR암호에서 실제로 걸림 — 코드베이스 전반에 잠재된 패턴, 다른 라이브러리도 i-(i/n)*n 패턴 쓰면 같은 버그 가능성)
  • 비트배타() 3진 오용, 8비트 초과 워드: ChaCha20/MT19937/이더넷체크섬 등 16~32비트
연산은 이진배타()(8비트 고정 루프) 확장 없이 적용 불가 — P2/P3 대상
  • 카이제곱(통계분석.한선): VM 나눗셈 자연반올림 특성이라 여전히 partial
  • 로그()/사인()/코사인() ×1000 스케일: 이번 범위 밖