Lowent 매뉴얼←↑→

bigint64 — 큰수 모듈러 산술(64 비트 조각)

소스
lib/bigint64.low
층
L0 — 순수 계산(호출자의 뒷받침)
권한
없음

bigint32 와 op 의 이름 · 입력 · 뜻이 모두 같고, 수를 64 비트 조각으로 나눠 담는다. 쓰는 법과 op 표는 그 쪽에 있다 — use bigint32 . 을 use bigint64 . 으로 바꾸면 된다.

곱 하나가 128 비트다. 아랫말은 wrap_mul, 윗말은 빌트인 mul_hi 로 셈하고, 더하기의 올림은 «합이 더한 수보다 작아졌나» 로 읽는다. 조각 곱의 수는 bigint32 의 1/4 이지만 곱 하나에 셈이 더 든다. 잰 것(RSA-2048 거듭제곱 · 네이티브 -O2 · 2026-10-22): x86-64 에서 bigint32 보다 1.6   1.9 배, 32 비트 빌드(x86 -m32)에서도 1.35 배 빨랐다 — 값이 어차피 u64 라서 32 비트 조각도 64 비트 셈을 하기 때문이다. 같은 셈을 손으로 쓴 C(128 비트 정수로 곱과 더하기를 한 번에)는 이 모듈보다 약 2 배 빠르다. 그 가운데 «곱하고 더하기를 한 번에» 의 몫은 10 % 쯤이었다.

op하는 일비고
mul_hiu64 두 수의 곱의 위쪽 64 비트아래쪽은 wrap_mul · 빌트인 mul_hi 를 감싼다(응용은 이것을 부른다)

표 50.1 — bigint64 에만 있는 op