R6RS Scheme: 정확성

R6RS Scheme: 정확성

Scheme에서 숫자 객체의 정확성(exactness) 구별을 설명해요. 정확한(exact) 숫자와 부정확한(inexact) 숫자 객체를 구별하는 방식을 다뤄요.

출처: 문서

본문

숫자에 정확히 대응하는 것으로 알려진 숫자 객체와, 그 계산이 반올림이나 다른 오차를 수반한 숫자 객체를 구별하는 것이 유용해요. 예를 들어 자료구조에 대한 인덱스 연산은 인덱스를 정확히 알아야 할 수 있고, 기호 대수 시스템에서 다항식 계수에 대한 일부 연산도 마찬가지일 수 있어요. 반면 측정 결과는 본질적으로 부정확하고, 무리수는 유리수 근사로, 따라서 부정확한 근사로 근사될 수 있어요. 정확한 숫자가 요구되는 곳에 부정확하게만 알려진 숫자를 사용하는 것을 잡아내기 위해, Scheme는 정확한 숫자 객체와 부정확한 숫자 객체를 명시적으로 구별해요. 이 구별은 타입의 차원과 직교해요.

숫자 객체는 정확한 수치 리터럴의 값이거나, 정확한 연산만을 사용해 정확한 숫자 객체에서 파생된 경우 정확(exact)해요. 정확한 숫자 객체는 명백한 방식으로 수학적 숫자에 대응해요.

반대로 숫자 객체는 부정확한 수치 리터럴의 값이거나, 부정확한 숫자 객체에서 파생되었거나, 부정확한 연산을 사용해 파생된 경우 부정확(inexact)해요. 따라서 부정확성은 전염돼요.

정확한 산술은 다음 의미에서 신뢰할 수 있어요: 정확한 숫자 객체들이 11.7.1절에서 설명한 산술 프로시저에 전달되고, 정확한 숫자 객체가 반환된다면, 그 결과는 수학적으로 정확해요. 부정확한 숫자 객체를 수반한 계산에는 일반적으로 이것이 적용되지 않는데, 부동소수점 산술 같은 근사 방법이 사용될 수 있기 때문이에요. 그러나 각 구현은 결과를 수학적으로 이상적인 결과에 실질적으로 가깝게 만드는 것이 의무예요.

더 알아보기 (Learn more)

출처: Exactness - R6RS