컴퓨터 산술

x가 매우 클 때 √(x + 1) − √x를 부동소수점으로 계산하면 자리 상쇄가 일어납니다. 결과를 정밀하게 구하기 위한 변형으로 올바른 것은 무엇입니까?

  1. A1 ÷ (√(x + 1) + √x)로 계산한다
  2. B√(x + 1 − x)로 계산한다
  3. C√(x + 1)과 √x를 각각 배정밀도로 바꾼 뒤 같은 식으로 뺄셈한다
정답과 해설 보기

정답: A. 1 ÷ (√(x + 1) + √x)로 계산한다

√(x + 1)과 √x는 거의 같으므로 그대로 빼면 상위 자릿수가 상쇄됩니다. 분자와 분모에 √(x + 1) + √x를 곱하면 (x + 1 − x) ÷ (√(x + 1) + √x) = 1 ÷ (√(x + 1) + √x)가 되어, 가까운 수끼리의 뺄셈이 없어져 정밀하게 계산할 수 있습니다. √(x + 1 − x)는 1이 되어 식으로서 오류입니다. 배정밀도로 하면 개선은 되지만, x가 더 커지면 같은 문제가 일어나므로 근본적인 대책은 되지 못합니다.

이 분야 연습하기 분야로 돌아가기

컴퓨터 산술의 다른 문제

  1. 단정밀도 부동소수점수에서 1억(10⁸)에 1을 더해도 결과가 1억 그대로입니다. 이 현상의 설명으로 올바른 것은 무엇입니까?
  2. 대량의 부동소수점수를 합산할 때 사용되는 카한 합산(보정 합산)의 목적으로 올바른 것은 무엇입니까?
  3. FMA(융합 곱셈-덧셈) 명령으로 a × b + c를 계산하는 이점으로 올바른 것은 무엇입니까?
  4. bfloat16이 AI 학습에서 사용되는 주된 이유는 무엇입니까?
  5. FP16(반정밀도: 부호 1·지수부 5·가수 10비트)으로 신경망을 학습시킬 때 문제가 되기 쉬우며, 손실 값을 몇 배로 확대하여 계산하는 방법(로스 스케일링)으로 대처하는 것은 무엇입니까?