Jump to content

Rounding

This is a fully translated article. Click here for more information.
From DawoumWiki, the free Mathematics self-learning
(Redirected from Nearest integer function)
Graphs of the result, y, of rounding x using different methods. For clarity, the graphs are shown displaced from integer y values. In the SVG file, hover over a method to highlight it and, in SMIL-enabled browsers, click to select or deselect it.

반올림(Rounding)은 숫자(number)더 짧게, 더 단순하게, 또는 보다 명시적인 표시를 가지는 근접한(approximate) 값을 갖는 숫자로 대체하는 의미합니다. 예를 들어, $23.4476을 $23.45로, 분수 312/937을 1/3로, 또는 표현 2를 1.414로 대체하는 것입니다.

반올림은 종종 원래보다 보고(report)하고 전달(communicate)하기 더 쉬운 값을 얻기 위해 행해집니다. 반올림은 계산된 숫자, 측정(measurement) 또는 추정(estimate)오해의-소지가-있는 정확한 보고를 피하는 것이 역시 중요할 수 있습니다; 예를 들어, 123,456으로 계산되었지만 수백 단위 이내에서 오직 정확한(accurate) 것으로 알려진 양은 보통 "약 123,500"으로 보다 낫게 말합니다.

다른 한편으로, 정확한 숫자의 반올림은 보고된 결과에서 일부 반올림 오류(round-off error)가 도입될 수 있습니다. 반올림은 많은 계산을 보고할 때 – 특히 정수(integer) 또는 고정-점 산술(fixed-point arithmetic)로 두 숫자를 나눌 때; 제곱근(square root), 로그(logarithm), 및 사인(sine)과 같은 수학 함수를 계산할 때; 또는 고정된 숫자의 유효 자릿수(significant digit)부동-점(floating-point) 표시을 사용할 때 거의 반올림을 피하기 어렵습니다. 일련의 계산에서, 이들 반올림 오류는 일반적으로 누적(accumulate)되고, 특정 나쁜-조건(ill-conditioned) 경우에서 그들은 의미없는 결과를 만들 수 있습니다.

초월적 수학 함수(transcendental mathematical functions)의 정확한 반올림은 어려운데 왜냐하면 반올림 또는 내림 여부를 해결하기 위해 계산해야 하는 추가적인 자릿수의 숫자는 미리 알 수 없기 때문입니다. 이 문제는 "테이블-제작자의 진퇴양난"으로 알려져 있습니다.

반올림은 물리적 양(physical quantities)이 숫자 또는 디지털 신호(digital signal)에 의해 인코딩되어야 할 때 발생하는 양자화(quantization)와 많은 유사성을 가집니다.

물결 모양의 기호(wavy equals sign) (: 근사적으로 같음)는 때때로 정확한 숫자의 반올림, 예를 들어, 9.98 ≈ 10을 나타내기 위해 사용됩니다. 이 기호는 1892년에 알프레드 조지 그린힐(Alfred George Greenhill)에 의해 도입되었습니다.[1]

반올림 방법의 이상적인 특성은 다음을 포함합니다:

  1. 반올림은 함수(function)에 의해 수행되어야 합니다. 이 방법, 같은 입력이 다른 인스턴스에서 반올림될 때, 출력은 바뀌지 않습니다.
  2. 반올림과 함께 수행된 계산은 반올림없이 수행된 계산과 비슷해야 합니다.
    • (1) 및 (2)의 결과로써, 반올림으로부터 출력은 입력에 가까워야 하며, 종종 일부 메트릭(metric)에 의해 가능한 한 가깝습니다.
  3. 반올림으로 여겨지게 되기 위해, 치역(range)도메인(domain)의 부분-집합일 것입니다. 고전적인 치역은 정수, Z입니다.
  4. 반올림은 도메인과 치역 사이에 이미 존재하는 대칭(symmetries)을 보존해야 합니다. 유한 정밀도 (또는 이산(discrete) 도메인)과 함께, 이것은 편향(bias)을 제거하는 것으로 해석합니다.
  5. 반올림 방법은 유한 정밀도가 사용되는 컴퓨터 과학 또는 인간 산술에 유용을 가져야 하고, 속력이 고려-사항입니다.

그러나, 모든 이상적인 특성을 만족시키기 위한 방법에 대해 보통 가능하지 않기 때문에, 많은 방법이 존재합니다.

일반적인 규칙으로써, 반올림은 거듭상등(idempotent)입니다;[2] 즉, 한번 숫자가 반올림되면, 그것을 다시 반올림하는 것은 그것의 값을 바꾸지 않을 것입니다. 반올림 함수는 역시 단조적(monotonic)입니다; 즉, 큰 숫자를 반올림하는 것은 작은 숫자를 반올림하는 것과 같거나 큰 결과를 초래합니다.

Types of rounding

전형적인 반올림 문제는 다음을 포함합니다:

반올림 문제 예제 입력 결과 반올림 기준
분수에 의해 무리수를 근사화 π 22 / 7 1-자릿수-분모
더 작은 분자와 분모를 갖는 또 다른 분수에 의해 유리수(rational number)를 근사화 399 / 941 3 / 7 1-자릿수-분모
주기적인 십진 전개를 가지는 분수를 유한 십진 분수에 의해 근사화 5 / 3 1.6667 4 후행 자릿수
더 작은 자릿수를 갖는 분수적 십진수(decimal number)에 의한 그것을 근사화 2.1784 2.18 2 후행 자릿수
더 많은 후행 영을 갖는 정수(integer)에 의해 십진 정수를 근사화 23,217 23,200 2 후행 영들
과학적 표기법을 사용하여 큰 십진 정수(integer)를 근사화 300,999,999 3.01 × 108 2 후행 자릿수
지정된 총양의 배수에 의해 값을 근사화 48.2 45 15의 배수
유한 실수의 집합 (대부분 분수) 중 하나를 반올림된 숫자의 합이 숫자의 반올림된 합과 같도록 정수 (때때로 두 번째 가장-가까운 정수)로 반올림 (예를 들어, 좌석 배분에 필요됨, 예를 들어, 가장-큰 나머지 방법(Largest remainder method)으로 구현됨) 한 피합수에 대해 그 결과는 보통 나머지 피합수에 따라 다릅니다.

Rounding to integer

반올림의 가장 기본적인 형식은 정수에 의해 임의의 숫자를 대체하는 것입니다. 모든 다음의 반올림 모드는 추상적인 단일-인수 "round()" 프로시저의 구체적인 구현입니다. 이것들은 (무작위를 사용하는 함수의 제외와 함께) 참 함수입니다.

Directed rounding to an integer

이들 네 가지 방법은 직접 반올림(directed rounding)으로 불리는데, 왜냐하면 원래의 숫자 x에서 반올림된 값 y까지의 변위가 같은 극한하는 값 (0, +∞, 또는 −∞)을 모두 직접 향하거나 멀어지기 때문입니다. 직접 반올림은 구간 산술(interval arithmetic)에 사용되고 종종 재무 계산에서 요구됩니다.

만약 x가 양수이면, 반-내림은 영으로-향한-반내림과 같고, 반-올림은 영에서-멀어지는-반올림과 같습니다. 만약 x가 음수이면, 반-내림은 영에서-멀어지는-반내림과 같고 반-올림은 영으로-향한-반올림과 같습니다. 임의의 경우에서, 만약 x가 정수이면, y는 바로 x입니다.

많은 계산이 순서대로 수행되는 곳에서, 반올림 방법의 선택은 그 결과에 매우 큰 영향을 줄 수 있습니다. 유명한 예제는 1982년 밴쿠버 증권 거래소(Vancouver Stock Exchange)에 의해 설립된 새로운 지수(index)가 포함되었습니다. 처음에는 1000.000 (정확성의 세 십진 자리)에서 설정되었고, 22개월 후 약 520으로 떨어졌습니다 — 반면에 주식 가격(stock price)은 이 가간 동안 일반적으로 증가했습니다. 그 문제는 매일 수천 번 다시 계산되고, 반올림 오류가 누적되는 그러한 방식으로 항상 3 십진 자리에서 반 내림되는 지수에 의해 발생했습니다. 더 나은 반올림과 함께 다시-계산하면 같은 기간의 끝에서 1098.892의 인덱스 값을 제공합니다.[3]

아래 예제에서, sgn(x)는 원래 숫자, x에 적용된 부호 함수(sign function)를 참조합니다.

Rounding down

  • 반 내림 (또는 바닥(floor)을 취함, 또는 음의 무한대로 향하는 반내림(round towards minus infinity)): yx를 넘지 않는 가장-큰 정수입니다.

Rounding up

  • 반 올림 (또는 천장(ceiling)을 취함, 또는 양의 무한대로 향한 반올림(round towards plus infinity)): yx보다 작지 않은 가장-작은 정수입니다.

Rounding towards zero

  • 영으로-향한-반내림 (또는 자름(truncate), or 무한대에서-멀어지는-반내림(round away from infinity)): y는 0과 x (포함됨) 사이에 있음을 만족하는 x에 가장-가까운 정수입니다; 즉, y는 그것의 분수 자릿수없는, x의 정수 부분입니다.

Rounding away from zero

  • 영에서-멀어지는-반올림 (또는 무한대로 향하는 반올림(round towards infinity)): yx가 0과 y (포함됨) 사이에 있음을 만족하는 0 (또는 동등하게 x)에 가장-가까운 정수입니다.

Rounding to the nearest integer

x를 가장 가까운 정수로 반올림하면 x가 정확히 두 정수 사이의 중간에 있을 때 – 즉, x의 분수 부분이 정확히 0.5일 때 그들의 경우에 대해 어떤 동점-깨는 규칙을 요구합니다.

만약 그것이 0.5 분수 분수에 대한 것이 아니면, 가장 가까운 방법으로 반올림에 의해 반올림 오차가 대칭일 것입니다: (0.268과 같은) 반-내림을 얻는 모든 각 분수에 대해 같은 총량에 의해 반-내림을 얻는 상보적 분수 (즉, 0.732)가 있습니다.

균등하게 분포된(uniformly distributed) 분수 부분을 갖는 많은 고정된-점(fixed-point) 숫자 집합을 반올림할 때, 0.5 분수 부분을 가지는 모든 값의 생략을 갖는, 모든 값에 의한 반올림 오차는 통계적으로 서로를 보정합니다. 이것은 반올림된 숫자의 기댓값(expected value) (평균)이 우리가 집합으로부터 분수 부분 0.5를 갖는 숫자를 제거할 때 원래 숫자의 기댓값과 같습니다.

실제에서, 부동-점(floating-point) 숫자가 전형적으로 사용되며, 이것은 그들이 같게 떨어져 있지 않기 때문에 훨씬 더 많은 계산 뉘앙스를 가집니다.

Round half up

반 절반 올림 (또는 양의 무한대로 향하는 반 절반)으로 불리는 다음 동점-깨는 규칙은 많은 분야에서 널리 사용됩니다.[citation needed] 즉, x의 중간 값은 항상 올림이 됩니다.

  • 만약 x의 분수가 정확히 0.5이면, y = x + 0.5

예를 들어, 이 규칙에 의해 값 23.5는 24로 반올림되지만, −23.5은 −23이 올림되어 얻습니다.

어쨌든, (자바, 파이션과 같은) 일부 프로그램 언어는 여기에서 그들의 절반 올림영으로 절반을 버리는 반올림(round half away from zero)으로 정의합니다.[4][5]

이 방법은 2의 보수(two's complement) 및 유사한 표시에서 반올림 방향을 결정하기 위해 하나의 자릿수를 검사하는 것에 대해 오직 유지합니다.

Round half down

우리는 보다 공통적인 반 절반 올림과 반대로 반 절반 내림 (또는 음의 무한대로 향하는 반내림)을 역시 사용할 수 있습니다.

  • 만약 x의 분수가 정확히 0.5이면, y = x − 0.5

예를 들어, 23.5는 23에 반내림되어 얻고, −23.5는 −24에 반내림되어 얻습니다.

Round half towards zero

우리는 전통적인 영으로 사라지는 절반 내림과 반대로 역시 영을 향한 절반 내림(또는 무한대로 멀어지는 절반 내림)할 수 있습니다.

  • 만약 x의 분수는 정확히 0.5이면, x가 양수일 때 y = x − 0.5이고 x가 음수일 때 y = x + 0.5입니다.

예를 들어, 23.5는 23으로 반내림되어 얻고, −23.5은 −23은 반올림되어 얻습니다.

이 방법은 대칭적으로 양수와 음수 값을 처리하고, 따라서 만약 원래 숫자가 같은 확률로 양수 또는 음수이면 전체 양수/음수 편향이 없습니다. 그것은, 어쨌든, 여전히 영으로 향하는 편향이 있습니다.

Round half away from zero

공통적으로 가르치고 사용되는 다른 동점-깨는 방법은 영에서 멀어지는 절반 올림 (또는 무한대로 향하는 절반 올림), 즉:

  • 만약 x의 분수는 정확히 0.5이면, x가 양수일 때 y = x + 0.5이고, x가 음수일 때 y = x − 0.5입니다.

예를 들어, 23.5는 24로 반올림해서 얻고, −23.5는 −24로 반내림되어 얻습니다.

이것은 오직 첫 번째 생략된 비트가 만약 그것이 반올림 (1로) 또는 반내림 (0으로)이면 결정하기 위해 고려될 필요가 있기 때문에 이진 컴퓨터에서 보다 효율적일 수 있습니다. 이것은 그것의 단순성으로 인해 유효 숫자(significant figures)로 반올림할 때 사용되는 한 가지 방법입니다.

상업적 반올림으로 역시 알려진, 이 방법은 양 및 음의 값을 대칭적으로 처리하고, 따라서 만약 원래 숫자가 같은 확률을 갖는 양수 또는 음수이면 전체 양수/음수 편향이 없습니다. 그것은, 어쨌든, 여전히 영에서 멀어지는 편향을 가집니다.

그것은 종종 (총액이 유로의 센트와 같이 통화의 가장 작은 중요한 부분-나눗셈으로 처음으로 변환될 때) 통화 변환 및 가격 반올림에 대해, 왜냐하면 (금액의 지불과 수신자 사이의 엄격한 동등성에 대해) 보충하는 정밀 자릿수 또는 금액의 부호와 상관없이, 첫 번째 분수의 자릿수를 단지 고려함으로써 쉽게 설명할 수 있기 때문입니다.

Round half to even

양수/음수 편향없이 그리고 영으로부터 향한/멀어지는 편향없이 동점-깨는 규칙은 절반을 짝수로 반올림입니다. 이 규칙에 따라, x의 분수 부분이 0.5이면, yx에 가장-가까운 짝수입니다. 따라서, 예를 들어 +23.5는 +24가 되며, +24도 역시 마찬가지입니다; 반면에 −23.5는 −24가 되며, −24.5도 마찬가지입니다. 이 함수는 반올림된 자릿수에 걸쳐 합해질 때, 심지어 입력이 대부분 양수 또는 대부분 음수일 때 예상된 오류를 최소화합니다.

가장-가까운-것으로-반올림 방법의 이 변형은 수렴 반올림(convergent rounding), 통계학자의 반올림(statistician's rounding), '네덜란드 반올림(Dutch rounding), 가우스 반올림(Gaussian rounding), 홀수–짝수 라운딩(odd–even rounding),[6] 또는 은행가의 반올림(bankers' rounding)으로 불립니다.

이것은 IEEE 754 부동-점 연산에 사용되는 기본 반올림 모드이고 (가장-가까운 정수 함수(Nearest integer function)를 참조하십시오), 유효 숫자로 반올림할 때 사용되는 보다 정교한 모드(the more sophisticated mode)[clarification needed]입니다.

편향을 제거함으로써, 독립 숫자의 반복되는 반올림된 덧셈 또는 뺄셈은 선형적이 아닌 연산의 수의 제곱근에 비례하여 증가하는 경향인 오차를 갖는 결과를 제공할 것입니다. 자세한 것에 대해 무작위 걸음(random walk)을 참조하십시오.

어쨌든, 이 규칙은 오즈에 관해 짝수의 확률을 높임으로써 분포를 왜곡합니다. 전형적으로, 이것은 이 방법에 의해 제거되는 편형보다 덜 중요합니다.

Round half to odd

비슷한 동점-깨는 규칙은 절반을 홀수로 반올림(round half to odd)입니다. 이 접근에서, 만약 x의 분수가 0.5이면, yx에 가장-가까운 홀수 정수입니다. 따라서, 예를 들어, +23.5는 +23이 되며, +22.5도 마찬가지입니다; 반면에 −23.5은 −23이 되며, −22.5도 마찬가지입니다.

이 방법은 양수/음수 편향으로부터 역시 자유롭고 영으로부터 향한/멀어지는 편향이 있습니다.

이 변형은 제한된 지수 범위를 가지는, 부동-점 숫자의 스케일을 증가시키는 것을 피하기를 원하는 상황을 제외하고는 계산에서 거의 사용되지 않습니다. 절반을 짝수로 반올림과 함께, 비-무한대 숫자는 무한대로 반올림되고, 작은 비정규(denormal) 값은 정규 비-영 값으로 반올림됩니다. 효과적으로, 이 모드는 기존의 동점 숫자를 유지하는 것을 선호하며, (이진 및 십진수와 같은) 심지어 기수(radix)의 숫자 시스템에 대해 가능할 때 범위를 벗어난 결과를 피합니다.[clarification needed (see talk)]

Randomized rounding to an integer

Alternating tie-breaking

대부분 것보다 보다 모호한, 한 방법은 0.5 소수 부분을 갖는 숫자를 반올림할 때 방향을 바꾸는 것입니다. 모든 다른 것은 가장 가까운 정수로 반올림됩니다.

  • 분수 부분이 0.5일 때마다, 교대하는 반올림 또는 반내림: 0.5의 첫 번째 출현에 대해, 반올림; 두 번째 출현에 대해, 반내림; 등등.

(대안적으로 첫 번째 0.5 분수 부분 반올림은 무작위 씨앗(random seed)에 의해 결정될 수 있습니다.)

만약 0.5 분수 부분의 출현이 "셈" 발생의 재시작보다 훨씬 더 많이 발생하면, 효과적으로 편향이 없습니다. 영 편향을 보장하면, 만약 숫자가 합해지거나 평균되면 유용합니다.

Random tie-breaking

  • 만약 x의 분수 부분이 0.5이면, 같은 확률을 갖는, x + 0.5x − 0.5 중에서 무작위로 y를 선택합니다. 모든 다른 것은 가장 가까운 정수로 반올림됩니다.

절반을-짝수로-반올림, 절반을-홀수로-반올림처럼, 이 규칙은 본질적으로 전체적인 편향이 없습니다; 그러나 짝수 및 홀수 y 값 사이에서 역시 공평합니다. 교대하는 동점=깨기에 비해 장점은 0.5 분수 부분에 대한 반올림의 마지막 방향이 "기억되어야" 할 필요가 없다는 것입니다.

Stochastic rounding

근접도에 따라 확률을 갖는 가장-가까운 서 있는 정수 중 하나에 대해 다음처럼 반올림은 확률적(stochastic) 반올림이라고 불리고 평균으로 불-편향된 결과를 제공합니다.[7]

예를 들어, 1.6은 확률 0.4를 갖는 1로 반올림되고 확률 0.6을 갖는 2로 반올림됩니다.

확률적 반올림은 반올림 함수(function)가 결코 할 수 없는 방법에서 정확합니다. 예를 들어, 0으로 시작하여 모든 각 덧셈 사이의 실행한 합을 반올림하면서 0.3을 백 번 더했다고 생각해 보십시오. 그 결과는 정규 반올림과 함께 0이 되지만, 확률적 반올림과 함께, 예상된 결과가 30이 되며, 이것은 반올림없이 얻어진 같은 값입니다. 이것은 그 연습이 반복적으로 낮은 정밀도 산술 연산을 사용할 수 있는 기계 학습(machine learning)에 유용할 수 있습니다.[7] 확률적 반올림은 1-차원 디더링을 달성하는 방법입니다.

Comparison of approaches for rounding to an integer

Value Functional methods Randomized methods (average of 99 roundings)
Directed rounding Round to nearest Alternating tie-break Random tie-break Stochastic
Round
down
(towards −)
Round
up
(towards +)
Round
towards
zero
Round
away from
zero
Round
half down
(towards −)
Round
half up
(towards +)
Round half
towards
zero
Round half
away from
zero
Round
half
to even
Round
half
to odd
μ σmeans μ σmeans μ σmeans
+1.8 +1 +2 +1 +2 +2 +2 +2 +2 +2 +2 +2 0 +2 0 +1.8 0.04
+1.5 +1 +1 +1 +1.505 0 +1.5 0.05 +1.5 0.05
+1.2 +1 +1 +1 +1 0 +1 0 +1.2 0.04
+0.8 0 +1 0 +1 +0.8 0.04
+0.5 0 0 0 +0.505 0 +0.5 0.05 +0.5 0.05
+0.2 0 0 0 0 0 0 0 +0.2 0.04
−0.2 −1 0 −1 −0.2 0.04
−0.5 −1 −1 −1 −0.495 0 −0.5 0.05 −0.5 0.05
−0.8 −1 −1 −1 −1 0 −1 0 −0.8 0.04
−1.2 −2 −1 −1 −2 −1.2 0.04
−1.5 −2 −2 −2 −1.495 0 −1.5 0.05 −1.5 0.05
−1.8 −2 −2 −2 −2 0 −2 0 −1.8 0.04

Rounding to other values

Rounding to a specified multiple

가장 공통적인 반올림 유형은 정수; 또는, 보다 일반적으로, 10 분의 정수 초, 100 분의 정수 달러로, 1/2 또는 1/8 인치의 정수 배수로, 수십 또는 수천, 등으로 반올림하는 것과 같이 일부 증분의 정수 배수로 반올림하는 것입니다.

일반적으로, 숫자 x를 지정된 양의 값 m의 배수로 반올림하려면 다음 단계를 수반합니다:

예를 들어, x = 2.1784 달러를 정수 센트 (즉, 0.01의 배수)로 반올림하는 것은 2.1784 / 0.01 = 217.84의 계산을 수반하며, 그런-다음 그것을 218로 반올림하고, 마지막으로 218 × 0.01 = 2.18으로 계산합니다.

미리-결정된 숫자의 유효 자릿수(significant digits)로 반올림할 때, 증분 m은 반올림될 숫자의 크기 (또는 반올림된 결과)에 따라 달라집니다.

증분 m숫자 시스템(numeral system)이 숫자를 나타내기 위해 사용되는 것에서 통상적으로 유한 분수입니다. 사람에게 보이기 위해, 그것은 보통 십진수 시스템(decimal numeral system)을 의미합니다 (즉, m은 1/1000 또는 25/100과 같은 10의 거듭-제곱(power)의 곱하기 정수입니다). 디지털 컴퓨터에 저장된 중간 값에 대해, 그것은 종종 이진수 시스템(binary numeral system)을 의미합니다 (m은 2의 거듭제곱 곱하기 정수입니다).

임의의 실수 값에서 정수를 반환하는 추상 단일-인수 "round()" 함수는 정수로 반올림(rounding to integer) 섹션에서 제시된 적어도 12가지 구별되는 구체적인 정의를 가집니다. 추상적 두-인수 "roundToMultiple()" 함수는 여기서 형식적으로 정의되지만, 많은 경우에서 그것은 증분에 대해 암시적 값 m = 1과 함께 사용되고 그런-다음, 역시 같은 12가지 구별되는 구체적인 정의와 함께, 동등한 추상적인 단일-인수 함수로 줄어듭니다.

Logarithmic rounding

Rounding to a specified power

지정된 거듭제곱으로 반올림하는 것은 지정된 배수로 반올림하는 것과 매우 다릅니다. 예를 들어, 계산에서 숫자를 2의 정수 거듭제곱으로 반올림해야 하는 것이 공통적입니다. 일반적으로 양수 x를 1보다 큰 지정된 정수 b의 거듭제곱으로 반올림하는 단계는 다음입니다:

배수로 반올림할 수 있는 많은 주의-사항은 거듭제곱으로 반올림할 수 있습니다.

Scaled rounding

반올림의 이 유형은, 로그 스케일로 반올림이라고 역시 불리며, 지정된 거듭제곱으로 반올림의 변형입니다. 로그 스케일에 대한 반올림은 총량의 로그를 취하고 로그 스케일에 대한 가장-가까운 값으로 정규 반올림을 수행함으로써 이루어집니다.

예를 들어, 저항은 로그 스케일에 대한 선호하는 숫자(preferred number)로 제공됩니다. 예를 들어, 10% 정확도를 가진 저항에 대해, 그들은 이름뿐인 값 100, 120, 150, 180, 220, 등이 10의 배수 (E12 급수)로 반올림되어 제공됩니다. 만약 계산 표시 165 옴의 저항이 요구되면, log(150) = 2.176, log(165) = 2.217 및 log(180) = 2.255입니다. 165의 로그는 180의 로그에 더 가까우므로 다른 고려-사항이 없으면 180 옴 저항이 가장 먼저 선택됩니다.

x ∈ (a, b)a 또는 b로 반올림되는지 여부는 제곱된 값 x2가 곱 ab보다 크거나 작은지 여부에 따라 다릅니다. 1652 = 27225150 × 180 = 27000보다 크기 때문에 저항 예제에서 165 값은 180으로 반올림됩니다.

Floating-point rounding

부동-점 산술에서, 반올림은 주어진 값 x를 지정된 유효 자릿수의 값을 갖는 y로 바꾸는 것을 목표로 합니다. 달리 말해서, yx의 크기에 따라 숫자 m의 배수여야 합니다. 숫자 m은 부동-점 표시의 밑수(base) (보통 2 또는 10)의 거듭-제곱입니다.

이 세부-사항 외에도, 위에서 논의된 모든 반올림의 변형은 마찬가지로 부동-점 숫자의 반올림에 적용됩니다. 그러한 반올림에 대해 알고리듬은 위의 스케일된 반올림(Scaled rounding) 섹션에 표시되지만, 상수 스케일링 계수 s = 1을 갖고, 정수 밑수 b > 1를 가집니다.

반올림된 결과가 방향화된 반올림에 대한 결과를 오버플로하는 곳은 "영에서 멀어지는 반올림"일 때 적절한 부호화된 무한대, 또는 "영으로 향한 반올림"일 때 가장-높은 표현-가능한 양의 유한 숫자 (또는 만약 x가 음수이면, 가장-낮은 표현-가능한 음의 유한 숫자) 중 하나입니다. 가장-가까운 것으로 반올림의 보통 경우에 대해 오버플로의 결과는 항상 적절한 무한대입니다.

Rounding to a simple fraction

어떤 맥락에서, 주어진 숫자 x를 "적절한" 분수로 반올림하는 것이 바람직합니다 — 즉, 분자 m과 분모 n이 주어진 최댓값을 초과하지 않는 가장-가까운 분수 y = m/n입니다. 이 문제는 값을 고정된 십진 또는 이진 자릿수로 반올림, 또는 주어진 단위 m의 배수로 반올림하는 것과는 상당히 다릅니다. 이 문제는 페리 수열(Farey sequence), 스턴–브로코 트리(Stern–Brocot tree)연속된 분수(continued fractions)와 관련이 있습니다.

Rounding to an available value

완성된 목재(lumber), 필기 용지, 콘덴서, 및 많은 다른 제품은 보통 오직 몇 가지 표준 크기에서 판매됩니다.

많은 설계 절차는 근삿값을 계산하고, 그런-다음 "가장-가까운 표준값으로 반내림", "가장-가까운 표준값으로 반올림", 또는 "가장-가까운 표준값으로 반올림"과 같은 문구를 사용하여 일부 표준 크기로 "반올림"하는 방법을 설명합니다.[8][9]

선호된 값(preferred value)의 집합이 로그 스케일에서 동일하게 간격을 두고 있을 때, 임의의 주어진 값에 가장-가까운 선호된 값(preferred value)을 선택하는 것은 스케일된 반올림(scaled rounding)의 형식으로 보일 수 있습니다. 그러한 반올림된 값은 직접 계산될 수 있습니다.[10]

Rounding in other contexts

Dithering and error diffusion

소리 파동과 같은 연속 신호(continuous signal)를 디지털화할 때, 여러 측정의 전반적인 효과가 각 개별적인 측정의 정확도보다 보다 중요합니다. 이들 상황에서, 디더링(dithering), 및 관련 기술, 오류 확산(error diffusion)이 정규적으로 사용됩니다. 펄스-폭 변조(pulse-width modulation)라고 불리는 관련된 기술은 변하는 임무 순환을 갖는 전력을 빠르게 맥박침으로써 관성 장치에서 아날로그 유형 출력을 달성하기 위해 사용됩니다.

오차 확산은 평균적으로 오차를 최소화하는 것을 보장하기 위해 노력합니다. 일에서 영까지의 완만한 기울기를 다룰 때, 출력은 오류와 전류 값의 합이 0.5보다 커질 때까지 처음 몇 항에 대해 0이 되며, 이 경우에서 1이 출력되고 차이에서 지금까지 오류를 뺍니다. 플로이드–스타인버그 디더링(Floyd–Steinberg dithering)은 이미지를 디지털화할 때 널리 사용되는 오류 확산 절차입니다.

일-차원 예제로서, 숫자 0.9677, 0.9204, 0.7451, 및 0.3091가 순서대로 발생하고 각각이 0.01의 배수로 반올림된다고 가정합니다. 이 경우에서 누적 합, 0.9677, 1.8881 = 0.9677 + 0.9204, 2.6332 = 0.9677 + 0.9204 + 0.7451, 및 2.9423 = 0.9677 + 0.9204 + 0.7451 + 0.3091은 각각 0.01의 배수: 0.97, 1.89, 2.63, 및 2.94로 반올림됩니다. 이들 중 첫 번째와 인접 값의 차이는 원하는 반올림된 값을 제공합니다: 0.97, 0.92 = 1.89 − 0.97, 0.74 = 2.63 − 1.89, 및 0.31 = 2.94 − 2.63.

Monte Carlo arithmetic

몬테 카를로 산술은 반올림이 임의로 올림 또는 내림인 몬테 카를로 방법(Monte Carlo method)의 기법입니다. 확률적 반올림은 몬테 카를로 산술에 대해 사용될 수 있지만, 일반적으로, 단지 같은 확률을 갖는 반올림 또는 반내림이 더 자주 사용됩니다. 반복 실행은 계산의 안정성을 나타낼 수 있는 결과의 무작위 분포를 제공합니다.[11]

Exact computation with rounded arithmetic

정수 도메인과 이미지를 갖는 함수의 정확한 값을 평가하기 위해 반올림된 산술을 사용할 수 있습니다. 예를 들어, 만약 우리가 정수 n이 완전 제곱임을 알면, 우리는 n을 부동-점 값 z로 변환하고 부동-점을 갖는 z의 근사적인 제곱근 x를 계산하고, 그런-다음 x를 가장-가까운 정수 y로 반올림함으로써 그것의 제곱근을 계산할 수 있습니다. 만약 n이 너무 크지 않으면, x에서 부동-점 반올림 오차는 0.5보다 작을 것이므로, 반올림된 값 yn의 정확한 제곱근이 될 것입니다. 이것이 본질적으로 정확한 산술에 대해 미끄럼 자(slide rule)를 사용할 수 있는 이유입니다.

Double rounding

거칠게 되는 후자의 정밀도를 갖는, 다른 정밀도의 수준으로 숫자를 연속해서 두 번 반올림하는 것은 방향화된 반올림의 경우를 제외하고 최종 정밀도로 한 번 반올림하는 것과 같은 결과를 제공함을 보장하지는 않습니다.[nb 1] 예를 들어, 9.46를 일 십진 자릿수로 반올림하면 9.5를 제공하고, 그런-다음 절반을 짝수로 반올림을 사용하여 정수로 반올림할 때 10이지만, 정수로 직접 반올림할 때 9를 제공합니다. 보먼(Borman)과 채트필드(Chatfield)는[12] 일 십진 자리로 반올림한 데이터를 정수를 사용하여 표현된 사양 한계와 비교할 때 두 번 반올림의 의미를 논의합니다.

1995년에서 1997년 사이에 소송을 제기한 Martinez v. AllstateSendejo v. Farmers에서, 보험 회사는 두 번 반올림 보험료는 허용되고 사실 요구된다고 주장했습니다. 미국 법원은 보험 회사를 상대로 판결했고 단일 반올림을 보장하는 규칙을 채택하도록 명령했습니다.[13]

일부 컴퓨터 언어와 IEEE 754-2008 표준은 간단한 계산에서 그 결과는 두 번 반올림해서는 안된다고 규정합니다. 이것은 자바(Java)에서 특별한 문제되어 왔는데 왜냐하면 그것은 다른 기계에서 동일하게 실행되도록 설계되었기 때문이며, 특별한 프로그래밍 트릭이 x87 부동-점과 함께 이것을 달성하기 위해 사용되어야 했습니다. [14][15] 자바 언어는 차이가 중요하지 않은 곳에서 다른 결과를 허용하도록 변경되었고 그 결과가 정확하게 일치해야 할 때 strictfp 한정자를 사용해야 합니다.

일부 알고리듬에서, 중간 결과가 더 큰 정밀도로 계산되고, 그런-다음 최종 정밀도로 반올림되어야 합니다. 두 번 반올림은 중간 계산에 대해 적합한 반올림을 선택함으로써 피해질 수 있습니다. 이것은 최종 반올림에 대해 중간-점으로 반올림을 피하기 위해 구성됩니다 (중간-점이 정확할 때는 제외합니다). 이진 산술에서, 그 아이디어는 결과를 영으로 향해 반올림하고, 만약 반올림된 결과가 부정확하면 마지막 유효 비트를 1로 설정하는 것입니다; 이 반올림은 붙임 반올림(sticky rounding)이라고 불립니다.[16] 동등하게, 그것이 정확하게 표현-가능할 때 중간 결과를 반환하고, 그렇지 않으면 홀수 유효-숫자를 갖는 가장-가까운 부동-점 숫자를 반환하는 것으로 구성됩니다; 이것이 홀수로 반올림으로 역시 알려진 이유입니다.[17][18]

Table-maker's dilemma

윌리엄 카한 (William M. Kahan)초월 함수(transcendental function)의 반올림의 알려지지 않은 비용에 대해 용어 "테이블-생산자의 딜레마"를 만들었습니다:

"오버/언더플로되지 않는 모든 각 두 개의 부동-점 인수에 대해 yw를 정확하게 반올림하기 위해 드는 비용이 얼마인지 어느 누구도 모릅니다. 대신에, 평판이-좋은 수학 라이브러리는 초월 함수를 대부분 절반 ulp보다 약간 더 많은 것에서 계산하고 거의 항상 하나의 ulp 이내에서 잘 계산됩니다. 왜 SQRT와 같은 절반 ulp 이내에서 yw를 반올림할 수 없을까요? 계산 비용이 얼마인지를 어느 누구도 알 수 없기 때문입니다... 초월적 표현을 계산하기 위해 얼마나 많은 여분의 자릿수를 가져야 하는지 예측할 수 있는 일반적인 방법은 없습니다. 심지어 유한 숫자의 여분의 자릿수가 궁극적으로 충분할 것이라는 사실도 심오한 정리일 것입니다." [19]

IEEE 754 부동-점 표준은 더하기, 빼기, 곱하기, 나누기, 융합된 곱하기–더하기(fused multiply–add), 제곱근, 및 부동-점 나머지가 무한 정밀도 연산의 올바른 반올림 결과를 제공할 것임을 보장합니다. 그러한 보장은 더 복잡한 함수에 대해 1985 표준에서 제공되지 않았고 그들은 전형적으로 기껏해야 마지막 비트 이내에서 오직 정확합니다. 어쨌든, 2008 표준은 적합한 구현이 활성 반올림 모드를 존중하는 반올림된 결과를 제공할 것임을 보장합니다; 함수의 구현은, 어쨌든, 선택-사항입니다.

겔폰트–슈나이더 정리(Gelfond–Schneider theorem)린데만–바이어슈트라스 정리(Lindemann–Weierstrass theorem)를 사용하면 많은 표준 기본 함수가 유리의 비-영 인수가 주어질 때 초월적(transcendental) 결과를 반환하는 것을 입증할 수 있습니다; 그러므로 그러한 함수를 항상 올바르게 반올림할 수 있습니다. 어쨌든, 정확한 반올림된 결과가 보장되기 전에, 정확한 결과가 계산되어야 하는 방법에 대해 주어진 정밀도에 대해 한계를 결정하면 많은 계산 시간이 필요하거나 달성하지 못할 수 있습니다.[20] 실제로, 이 한계가 알려지지 않았거나 너무 크지 않을 때, 일부 결정이 구현에서 만들어져야 하지만 (아래를 참조하십시오), 확률적 모델에 따라, 올바른 반올림이 매우 높은 확률로 만족시킬 수 있습니다.

일부 프로그래밍 패키지는 올바른 반올림을 제공합니다. GNU MPFR 패키지는 올바르게 반올림된 임의의 정밀도 결과를 제공합니다. 일부 다른 라이브러리는 두 배 정밀도에서 올바른 반올림으로 기본 함수를 구현합니다:

  • IBM의 libultim, 오직 가장-가까운 것으로 반올림에서.[21] 이 라이브러리는 768 비트까지 작업 정밀도를 사용합니다.
  • Sun Microsystems의 libmcr, 4 반올림 모드에서.[22] 어려운 경우에 대해, 이 라이브러리는 역시 여러 정밀도를 사용하고, 단어의 숫자는 테이블-생산자의 딜레마가 발생할 때마다 2씩 증가합니다 (기계의 일부 한계에 도달할 가능성이 거의 없는 사건에서 정의되지 않은 동작과 함께).
  • CRlibm, 오래전 Arénaire 팀에서 쓰인 (LIP, ENS Lyon). 그것은 4 반올림 모드를 지원하고 입증되었습니다.[23]

반올림된 값은 얼마나 많은 자릿수가 계산되는지 관계없이 절대 결정될 수 없는 계산-가능한 숫자(computable number)가 존재합니다. 특정 예제가 제시될 수는 없지만 이것은 정지 문제(halting problem)의 결정-불가능성으로부터 따릅니다. 예를 들어, 만약 골드바흐의 추측(Goldbach's conjecture)이 참이지만 입증되지 않으면, 다음 값을 그 다음 정수까지 반올림한 것의 결과는 절대 구할 수 없습니다: 1+10n 여기서 n은 두 소수의 합이 아닌 4, 만약 그러한 숫자가 없으면 1보다 큰 첫 번째 짝수입니다. 반올림된 결과는 만약 그러한 숫자 n이 존재하면 2이고, 그렇지 않으면 1입니다. 반올림 전의 값은 어쨌든 심지어 추측이 불가능하더라도 임의의 주어진 정밀도에 근사될 수 있습니다.

Interaction with string searches

반올림은 숫자에 대해 숫자열 검색에 악영향을 줄 수 있습니다. 예를 들어, 4 자릿수로 반올림된 π는 "3.1416"이지만 이 문자열에 대해 간단한 검색은 "3.14159" 또는 4 자릿수보다 많은 것으로 반올림된 π의 임의의 다른 값은 발견되지 않습니다. 대조적으로, 잘림은 이 문제를 겪지 않습니다; 예를 들어, 4 자릿수로 잘린 π인 "3.1415"에 대해 간단한 숫자열 검색은 4 자릿수보다 많은 것으로 잘린 π의 값을 발견할 것입니다.

History

반올림의 개념은 아주 오래된 것이며, 아마도 나눗셈의 개념보다 훨씬 더 오래된 것입니다. 메소포타미아(Mesopotamia)에서 발견된 일부 고대 점토 태블릿(clay tablet)은 밑수 60에서 역수(reciprocals)와 제곱근의 반올림된 값을 갖는 테이블을 포함합니다.[24] π, 연의 길이, 및 월의 길이에 대한 반올림된 근사는 역시 고대입니다–밑수 60 예제(base 60 examples)를 참조하십시오.

짝수로-반올림 방법은 1940년 이래 ASTM (E-29) 표준으로 사용되었습니다. 용어 불-편향된 반올림통계학자의 반올림의 기원은 상당히 자명합니다. Probability and Theory of Errors의 1906년 네 번째 판에서,[25] 로버트 심슨 우드워드(Robert Simpson Woodward)는 이것을 "컴퓨터의 규칙"이라고 불렀으며, 이것은 수학 테이브를 계산한 인간 컴퓨터(human computer)에 의해 공통적으로 사용하고 있음을 나타냅니다. 처칠 아이젠하르트(Churill Eisenhart)는 1940년대까지 데이터 분석에서 이 관행이 이미 "잘 확립되어" 있었다고 지적했습니다.[26]

용어 은행가의 반올림의 기원은 여전히 모호합니다. 만약 이 반올림 방법이 은행-업무의 표준이었다면, 증거는 극단적으로 찾는 것이 어려울 것이라고 입증되어 왔습니다. 반대로, 유럽 연합 집행위원회 보고서의 섹션 2 The Introduction of the Euro and the Rounding of Currency Amounts[27] 은행-업무에서 반올림에 대한 표준 접근이 이전에 없었음을 시사합니다; 그리고 그것은 "절반-방법" 총량이 반올림되어야 함을 지정합니다.

1980년대까지, 부동-점 컴퓨터 산술에 사용된 반올림 방법은 보통 하드웨어, 불충분한 문서화, 불일치, 및 각 브랜드와 컴퓨터 모델에 대해 다른 것에 고정되어 있었습니다 이 상황은 IEEE 754 부동-점 표준이 대부분의 컴퓨터 제조업체에 의해 채택된 후에 바뀌었습니다. 그 표준은 여러 반올림 모드 중에서 선택하는 것을 사용자에게 허용하고, 각 경우에서 결과는 반올림되는 방법을 정확하게 지정합니다. 이들 특색은 수치 계산을 보다 예측-가능, 기계-독립적, 및 구간 산술(interval arithmetic)의 효율적이고 일관된 구현을 만들었습니다.

현재, 많은 연구가 5 또는 2의 배수로 반올림되는 경향입니다. 예를 들어, 요르그 바튼(Jörg Baten)은 많은 연구에서 고대 인구의 산술-능력 수준을 평가하기 위해 나이 쌓기(age heaping)를 사용했습니다. 그는 ABCC 지수(ABCC Index)를 내놓았는데, 이것은 인구 문해력(literacy)이 측정된 임의의 역사적 자료없이 가능한 지역들 사이의 산술-능력(numeracy)을 비교할 수 있게 합니다.[28]

Rounding functions in programming languages

대부분의 프로그래밍 언어(programming language)는 다양한 방법으로 분수 숫자를 반올림하기 위한 함수 또는 특수 구문을 제공합니다. FORTRANC와 같은 초기의 숫자 언어는 오직 하나의 방법 보통 (영으로 향하는) 잘림을 제공합니다. 이 기본 방법은 분수 숫자를 정수(integer) 변수(variable)에 할당할 때, 또는 분수 숫자를 배열(array)의 인덱스로 사용할 때와 같은 특정 문맥에서 암시될 수 있습니다. 다른 종류의 반올림은 명시적으로 프로그래밍해야 했습니다; 예를 들어, 양수를 가장-가까운 정수로 반올림은 0.5를 더하고 잘름으로써 구현될 수 있습니다.

지난 수십 년 동안, 어쨌든, 대부분의 언어의 구문 및/또는 표준 라이브러리(libraries)는 공통적으로 적어도 네 가지 기본 반올림 함수 (올림, 내림, 가강-가까운, 및 영으로 향하는)를 제공했습니다. 동점-깨는 방법은 언어 및 버전에 따라 다를 수 있고/있거나 프로그래머에 의해 선택-가능한 것이었습니다. 여러 언어가 IEEE 754 부동-점 표준의 지시를 따랐고, 두 배 정밀도 부동 인수를 취하고 같은 유형의 결과를 반환하는 것으로 이들 함수를 정의하며, 만약 필요하면 정수로 변환될 수 있습니다. 이 접근은 부동-점 유형이 정수 유형보다 더 넓은 범위를 가지기 때문에 가짜의 오버플로우(overflows)를 피할 수 있습니다. PHP와 같은 일부 언어는 지정된 십진 자릿수로 값을, 예를 들어, 4321.5678에서 4321.57 또는 4300로 반올림하는 함수를 제공합니다. 게다가, 많은 언어는 printf 또는 유사한 문자열 형식화 함수를 제공하며, 분수 숫자를 문자열로 변환하고, 십진 자리의 사용자-지정된 숫자 (정밀도)로 반올림하는 것을 허용합니다. 다른 한편으로, 잘림 (영으로 반올림)은 여전히 많은 언어에 의해 사용되며, 특히 두 정수 값의 나눗셈에 대해 사용됩니다.

반대로, CSSSVG는 숫자와 측정에 대해 임의의 특정 최대 정밀도를 정의하지 않으며, 그들의 DOM에서 및 그들의 IDL 인터페이스에서 마치 무한 정밀도를 가지는 것처럼 문자열로 처리되고 노출되고, 정수와 부동-점 값 사이를 구별하지 않습니다; 어쨌든, 이들 언어의 구현은 계산된 자릿수를 제한된 정밀도 (특히 표준 JavaScript 또는 ECMAScript[29] 인터페이스 바인딩 이내)로 노출하기 전에 전형적으로 이들 숫자를 IEEE 754 두 배-정밀도 부동 소수-점 값으로 변환할 것입니다.

Other rounding standards

일부 분야 또는 기관은 반올림에 대해 표준 또는 지침을 발표해 왔습니다.

US weather observations

1966년 중반에 발행된 지침에서,[30] 미 기상청 조정관은 기상 데이터가 "절반 올림" 동점-깨는 규칙과 함께 가장-가까운 반올림 숫자로 반올림되어야 한다고 결정했습니다. 예를 들어, 정수로 반올림된 1.5는 2가 되고 −1.5는 −1이 되어야 합니다. 그 날짜 이전에서, 동점-깨는 규칙은 "영에서 멀어지는 절반 올림"이었습니다.

Negative zero in meteorology

일부 기상학자들(meteorologist)은 정수로 반올림되었던 0.0 및 −0.5도 사이의 온도 (제외)를 나타내기 위해 "−0"을 쓸 수 있습니다. 이 표기법은 크기가 아무리 작더라도 음의 부호가 중요하게 여길 때 사용됩니다; 예를 들어, 섭씨(Celsius) 스케일에서 온도를 반올림할 때, 영 아래는 어느 것을 나타냅니다.[citation needed]

See also

Notes

  1. ^ Another case where double rounding always leads to the same value as directly rounding to the final precision is when the radix is odd.

References

  1. ^ Isaiah Lankham, Bruno Nachtergaele, Anne Schilling: Linear Algebra as an Introduction to Abstract Mathematics. World Scientific, Singapur 2016, ISBN 978-981-4730-35-8, p. 186.
  2. ^ Kulisch, Ulrich W. (July 1977). "Mathematical foundation of computer arithmetic". IEEE Transactions on Computers. C-26 (7): 610–621. doi:10.1109/TC.1977.1674893. {{cite journal}}: Cite has empty unknown parameter: |1= (help)
  3. ^ Higham, Nicholas John (2002). Accuracy and stability of numerical algorithms. p. 54. ISBN 978-0-89871-521-7.
  4. ^ "java.math.RoundingMode". Oracle.
  5. ^ "decimal — Decimal fixed point and floating point arithmetic". Python Software Foundation.
  6. ^ Engineering Drafting Standards Manual (NASA), X-673-64-1F, p90
  7. ^ a b Gupta, Suyog; Angrawl, Ankur; Gopalakrishnan, Kailash; Narayanan, Pritish (9 February 2016). "Deep Learning with Limited Numerical Precision". p. 3. arXiv:1502.02551 [cs.LG].
  8. ^ "Zener Diode Voltage Regulators"
  9. ^ "Build a Mirror Tester"
  10. ^ Bruce Trump, Christine Schneider. "Excel Formula Calculates Standard 1%-Resistor Values". Electronic Design, 2002-01-21. [1]
  11. ^ Parker, D. Stott; Eggert, Paul R.; Pierce, Brad (28 March 2000). "Monte Carlo Arithmetic: a framework for the statistical analysis of roundoff errors". IEEE Computation in Science and Engineering.
  12. ^ Borman, Phil; Chatfield, Marion (10 November 2015). "Avoid the perils of using rounded data". Journal of Pharmaceutical and Biomedical Analysis. 115: 506–507. doi:10.1016/j.jpba.2015.07.021. PMID 26299526.
  13. ^ Deborah R. Hensler (2000). Class Action Dilemmas: Pursuing Public Goals for Private Gain. RAND. pp. 255–293. ISBN 0-8330-2601-1.
  14. ^ Samuel A. Figueroa (July 1995). "When is double rounding innocuous?". ACM SIGNUM Newsletter. 30 (3). ACM: 21–25. doi:10.1145/221332.221334.
  15. ^ Roger Golliver (October 1998). "Efficiently producing default orthogonal IEEE double results using extended IEEE hardware" (PDF). Intel.
  16. ^ Moore, J. Strother; Lynch, Tom; Kaufmann, Matt (1996). "A mechanically checked proof of the correctness of the kernel of the AMD5K86 floating-point division algorithm" (PDF). IEEE Transactions on Computers. 47. CiteSeerX 10.1.1.43.3309. doi:10.1109/12.713311. Retrieved 2016-08-02.
  17. ^ Boldo, Sylvie; Melquiond, Guillaume (2008). "Emulation of a FMA and correctly-rounded sums: proved algorithms using rounding to odd" (PDF). IEEE Transactions on Computers. 57 (4): 462–471. doi:10.1109/TC.2007.70819. Retrieved 2016-08-02.
  18. ^ "21718 – real.c rounding not perfect". gcc.gnu.org.
  19. ^ Kahan, William Morton. "A Logarithm Too Clever by Half". Retrieved 2008-11-14.
  20. ^ Muller, Jean-Michel; Brisebarre, Nicolas; de Dinechin, Florent; Jeannerod, Claude-Pierre; Lefèvre, Vincent; Melquiond, Guillaume; Revol, Nathalie; Stehlé, Damien; Torres, Serge (2010). "Chapter 12: Solving the Table Maker's Dilemma". Handbook of Floating-Point Arithmetic (1 ed.). Birkhäuser. doi:10.1007/978-0-8176-4705-6. ISBN 978-0-8176-4704-9. LCCN 2009939668.
  21. ^ "libultim – ultimate correctly-rounded elementary-function library".
  22. ^ "libmcr – correctly-rounded elementary-function library".
  23. ^ "CRlibm – Correctly Rounded mathematical library". Archived from the original on 2016-10-27.
  24. ^ Duncan J. Melville. "YBC 7289 clay tablet". 2006
  25. ^ "Probability and theory of errors". historical.library.cornell.edu.
  26. ^ Churchill Eisenhart (1947). "Effects of Rounding or Grouping Data". Selected Techniques of Statistical Analysis for Scientific and Industrial Research, and Production and Management Engineering. New York: McGraw-Hill. pp. 187–223. Retrieved 30 January 2014. {{cite book}}: Unknown parameter |editors= ignored (|editor= suggested) (help)
  27. ^ http://ec.europa.eu/economy_finance/publications/publication1224_en.pdf
  28. ^ Baten, Jörg (2009). "Quantifying Quantitative Literacy: Age Heaping and the History of Human Capita" (PDF). Journal of Economic History. 69 (3): 783–808. doi:10.1017/S0022050709001120. hdl:10230/481.
  29. ^ "ECMA-262 ECMAScript Language Specification" (PDF). ecma-international.org.
  30. ^ OFCM, 2005: Federal Meteorological Handbook No. 1 Archived 1999-04-20 at the Wayback Machine, Washington, DC., 104 pp.

External links