본문으로 건너뛰기
254 / NUMERICAL COMPUTING LAB
먼저 알아두면 좋아요 · 연결된 선수 단원의 선형대수·미적분·연산 그래프 기초
단원 목록 (600) · 이진 부동소수점·반올림·누적 합
이해하는 속도로 읽으세요.개념도이론실험확인 문제
BUILD YOUR INTUITION

먼저 그림으로 이해하기

한 번에 한 단계씩 살펴보세요.

입력 표현 오차와 반복 연산 오차를 분리하고 보상 합을 계산합니다.

Toy binary precision p includes the leading bit, ties round to even, and exponents are unbounded in this model. Every shown arithmetic operation is rounded. Blue is sequential absolute accumulation error, orange compensated error, both relative to the stored initial value plus exact binary increments; input representation error is reported separately.

-0.6416.640.52-0.02
가로 덧셈 횟수 · 파랑 순차 합 절대 오차 · 주황 보상 합 절대 오차
stepreferencesequentialcompensatedsequential errorcompensated error
011100
11.031110.0310.031
21.063110.0630.063
31.09411.1250.0940.031
41.12511.1250.1250
51.15611.1250.1560.031
61.18811.250.1880.063
71.21911.250.2190.031
81.2511.250.250
91.28111.250.2810.031
101.31311.250.3130.063
111.34411.3750.3440.031
121.37511.3750.3750
131.40611.3750.4060.031
141.43811.50.4380.063
151.46911.50.4690.031
161.511.50.50

stored initial value = 1

고정 기준 예제의 그림과 수치입니다. 각 단계에서 같은 그림의 의미를 차례로 살펴보세요. 고정된 기준 예제이며 아래 실험의 설정과 독립적입니다.
1 / 4

격자

p는 선행 1을 포함하며 binade가 바뀌면 간격도 바뀝니다.

spacing near 1 = 2^(1-p)

실험에서 확인하기 →
이 단원 목차

익숙한 소수 뒤의 유한한 격자

컴퓨터는 모든 실수를 저장하지 못하고 유한한 이진 유리수 중 하나를 저장합니다. 정규화 구간 [2^e,2^(e+1))에서 p가 선행 1을 포함하는 유효 bit 수이면 이웃 값의 간격은 2^(e-p+1)입니다. 유효 자릿수가 같아도 지수가 커지면 절대 간격이 커집니다. 따라서 작은 값에서 적절한 절대 허용오차를 큰 값에 그대로 적용하면 잘못 판단할 수 있습니다.

실험은 지수 범위를 제한하지 않은 toy format입니다. 가장 가까운 값으로 반올림하고 정확히 중간이면 유효 정수의 마지막 bit가 짝수인 쪽을 택합니다. IEEE 형식의 exponent 한계·subnormal·예외까지 모사하지는 않습니다. 지수 범위의 실패는 다음 단원에서 따로 다룹니다.

fl⁡p(x)=nearest⁡y∈Fpx,u=2−p,∣fl⁡p(x)−x∣≤u∣x∣.\operatorname{fl}_p(x)=\underset{y\in\mathcal F_p}{\operatorname{nearest}}x, \qquad u=2^{-p},\qquad |\operatorname{fl}_p(x)-x|\le u|x|.

이 상대 오차 상한은 정규화된 값의 한 번 반올림에 대한 것입니다. 긴 알고리즘 전체의 오차가 항상 u 이하라는 뜻은 아닙니다.

입력 표현과 누적 계산을 구별하기

먼저 입력을 s0=fl(x)로 저장하고 이진 증분 d=2^-k를 여러 번 더합니다. n번째 기준값은 s0+nd입니다. 선택 범위에서 이 dyadic 기준값은 binary64로 정확히 표현되므로 그림은 toy 연산의 오차를 분리해서 보여줍니다. 입력 표현 오차 |s0-x|는 별도 수치로 읽습니다.

p=4일 때 1 위쪽의 간격은 1/8입니다. 여기에 1/32를 더하면 다시 1로 반올림됩니다. 열여섯 번 순차적으로 더해도 결과는 1이지만 기준값은 1.5입니다. 실수의 덧셈 법칙이 틀린 것이 아니라, 중간마다 반올림하는 연산을 반복한 결과입니다.

보상 변수가 잃은 부분을 전달한다

보상 합은 다음처럼 낮은 부분을 추정해 다음 덧셈에 전달합니다.

y=fl⁡(d−c),t=fl⁡(s+y),c=fl⁡(fl⁡(t−s)−y),s=t.y=\operatorname{fl}(d-c),\quad t=\operatorname{fl}(s+y),\quad c=\operatorname{fl}(\operatorname{fl}(t-s)-y),\quad s=t.

실험은 이 식의 각 연산에도 선택한 bit 수의 반올림을 적용합니다. 위 예에서는 1.5를 복원하지만 모든 입력을 정확하게 더한다는 보장은 없습니다. 처음부터 표현하지 못한 입력 정보도 복원할 수 없습니다. 주황 오차가 0이면 저장된 입력에서 출발한 기준값과 맞는다는 뜻입니다.

직접 풀기: 중간 값과 경계

p=4에서 1.0625와 1.1875를 반올림하세요. 간격은 0.125입니다. 첫 값은 유효 정수 8이 짝수여서 1로, 둘째는 10이 짝수여서 1.25로 갑니다. 1.9375는 다음 binade의 경계인 2로 갑니다.

이제 입력 0.1, 덧셈 횟수 0으로 설정하세요. 두 누적 오차는 0이어도 입력 표현 오차는 남습니다. 두 오차가 서로 다른 기준을 사용하기 때문입니다. AI 실험에서 reduction 순서·재현성·gradient 허용오차를 해석할 때 이 구분부터 확인하세요.

더 읽기: Python 부동소수점 설명. 이 단원의 toy 연산과 손계산 예는 별도로 구성했습니다.

CHECK YOUR UNDERSTANDING

설명할 수 있나요?

실험 설정과 무관한 기준 예제를 묻습니다. 답을 고르고 설명을 확인해보세요.

1. 출력에 0.1이 보이면 이진 값도 정확히 0.1인가요?
2. 보상 합은 모든 입력에서 정확한가요?

선택한 답과 학습 표시는 이 브라우저에 저장됩니다. 다시 풀거나 표시를 해제할 수 있습니다.