estEL Verify — 2D 표면코드(토릭코드) QEC 구현
개요
E2(QEC반복부호.한선, 1D 비트플립 반복부호)를 2D로 확장. X·Z 양쪽 오류를 정정하는
토릭코드(LxL, 주기경계)를 v5 스테빌라이저 네이티브(
crownyc.c opcode 914~917)로
실제 앤실라 신드롬 추출 → 그리디 디코드 → 논리오류 판정까지 순수 한선씨로 구현.
코드 설계
- 데이터큐비트 = 격자 변(edge) 2·L² 개: 가로 H(r,c)=(r,c)→(r,c+1), 세로 V(r,c)=(r,c)→(r+1,c) (모두 mod L)
- 버텍스(정점) 안정자(X형, L²개) → Z오류 탐지. 플라켓(면) 안정자(Z형, L²개) → X오류 탐지.
- 신드롬 추출: 플라켓(Z형)=CX(데이터,앤실라)×4→측정. 버텍스(X형)=H(앤실라)·CX(앤실라,데이터)×4·H(앤실라)→측정.
- 중요 발견(버그→수정): 데이터큐비트를
네이티브양자초기화로 |0..0>에 두면 플라켓(Z형) 안정자는
자동만족되지만 버텍스(X형) 안정자는 자동만족되지 않음(|0>은 X의 고유상태가 아님) → Z노이즈 테스트
시작 전 데이터 전부에 H를 적용해 |+..+>로 준비해야 함. 이걸 놓치면 Z신드롬이 사실상 난수가 되어
단일오류조차 정정 실패(수정 전 36건 중 14건 미정정 → 수정 후 0건).
- 디코더: 신드롬 결함 목록 → 전역 최근접쌍 그리디 매칭(참 MWPM 아님) → 열먼저·행나중 격자경로로
보정 XOR 누적 → 잔차 R과 고정 기준 로직연산자(컷라인, Z̄1/Z̄2 또는 X̄1/X̄2)의 겹침 패리티로
논리오류 판정(호몰로지 계산을 스태빌라이저 대수 겹침-패리티로 우회, 엄밀한 방법).
실측 결과 (게이트: 통과 3 / 실패 0)
- 단일오류 정정 — 완전 통과: L=3(데이터 18개, X+Z 36건 전수) 0건 미정정,
L=5(데이터 50개, X+Z 100건 전수) 0건 미정정. 코드·신드롬·디코드 파이프라인 정확성 확인.
- 거리 스케일링(서브임계) — 부분/미완, 정직 기록: p=2~50‰ 구간에서 여러 샷수로 반복
실측했으나, "그리디 최근접쌍" 디코더는 L=5가 L=3보다 논리오류가 낮아지는 걸 안정적으로
보이지 못함(p=4,6,8,10‰에서 L=5가 오히려 X·Z 모두 더 나쁜 경우가 흔함). 원인 추정: 결함수가
전체 데이터큐비트(2L²)에 비례해 늘어날 때, "가장 가까운 쌍" 그리디가 참 MWPM 대비 오매칭
확률이 L에 따라 더 빠르게 증가해 코드의 위상보호 이득을 상쇄.
억지로 통과시키지 않고
정보성 항목(판정 제외)으로만 기록함.
- 고오류율(p=150‰) 참고치: L=5가 L=3보다 논리오류 높음 — 임계 근접/초과 가능성, 정직 기록.
- 대규모 성능: L=21(총 1323큐비트) 1회 신드롬추출 ~100ms — v5 네이티브 확장성 확인.
정직한 평가
- 됨: 2D CSS 코드(X·Z 분리) 앤실라 신드롬 추출 회로, 단일오류 완전정정(거리3·5 전수 검증),
호몰로지 겹침-패리티 기반 논리오류 판정 로직, v5 네이티브로 L=21까지 확장성.
- 부분/미완: 진짜 MWPM 디코더 미구현(그리디만) → 서브임계 거리 스케일링 이득이 안정적으로
드러나지 않음. 이 부분은 E2(1D 반복부호, 최소무게 해석적 디코더)와 달리 2D에서는 그리디의
한계가 실측으로 드러난 것 — 다음 단계는 실제 MWPM(블라섬 알고리즘) 또는 union-find 디코더.
- 알려진 엔진 제약:
배열 추가()는 v1 배열엔진에서 힙 고갈 위험 → 샷수 3000 초과 시 OOM 관측
(8000샷 테스트에서
[ARRAY] OOM!). 게이트는 안전하게 200~300샷으로 유지.
관련 파일
/Users/ef/crowny-estel/표면코드.한선 (368줄) — 메인 구현 (고수준, hanseonc_high로 컴파일 검증됨)
/Users/ef/crowny-estel/표면코드.rpn.한선 (655줄) — high2rpn.sh 변환 동반 파일
/Users/ef/crowny-estel/표면코드.toau — 컴파일된 바이트코드
- 참고:
/Users/ef/crowny-estel/QEC반복부호.한선 (E2, 1D 원본)
잔여 이슈
- MWPM/union-find 디코더로 교체해 서브임계 거리 스케일링 실증(현재 그리디는 이를 못 보임)
- 결맞음(비-클리포드) 노이즈 확장은 범위 밖(E2와 동일하게 순수 파울리만 다룸)
- 배열엔진 OOM 회피를 위해 대량샷(수천 이상) 벤치는 v5 네이티브 배열 API로 재작성 필요