정밀도 향상
Extended precision부동 소수점 포맷 |
---|
IEEE 754 |
다른. |
컴퓨터 아키텍처 비트 폭 |
---|
조금 |
어플 |
이진 부동 소수점 정확 |
소수점 부동 소수점 정확 |
확장 정밀도는 기본 부동소수점 [1]형식보다 높은 정밀도를 제공하는 부동소수점 숫자 형식을 말합니다.확장 정밀도 형식은 기본 형식에서 식의 중간 값에서 반올림 및 오버플로 오류를 최소화하여 기본 형식을 지원합니다.확장 정밀도와는 대조적으로 임의 정밀도 산술은 특수 소프트웨어(또는 드물게 하드웨어)를 사용하여 훨씬 더 큰 숫자 유형(보통 2의 거듭제곱이 아닌 스토리지 수)을 구현합니다.
정밀도 확장 구현
지난 세기 중반까지 확장된 부동소수점 형식의 오랜 역사가 있다.제조사마다 다른 포맷을 사용하여 기계마다 정밀도를 높였습니다.대부분의 경우 확장 정밀도의 형식은 확장하려는 일반적인 단일 및 이중 정밀도 형식의 스케일업과 거의 동일하지 않다.몇 가지 경우 구현은 부동소수점 데이터 형식의 소프트웨어 기반 변경에 불과했지만 대부분의 경우 하드웨어에 고도의 정밀도가 구현되었습니다.이러한 정밀도는 중앙 프로세서 자체에 내장되어 있거나 FPU(부동소수점 유닛) 또는 부동소수점 p라고 불리는 옵션의 부속 프로세서의 하드웨어에 내장되어 있습니다.고속 입출력 디바이스로서 CPU에 액세스 할 수 있습니다.
IBM 확장 정밀도 형식
1965년에 [2]판매된 IBM 1130은 32비트 "표준 정밀도" 형식과 40비트 "확장 정밀도" 형식의 두 가지 부동 소수점 형식을 제공했습니다.표준 정밀도 포맷에는 24비트 2의 보수가 포함되어 있으며 확장 정밀도는 32비트 2의 보수가 사용됩니다.후자의 형식은 CPU의 32비트 정수 연산을 최대한 활용합니다.두 형식의 특성은 128로 바이어스된2의 거듭제곱을 포함하는8비트 필드입니다.부동소수점 연산은 소프트웨어에 의해 수행되며 이중 정밀도는 전혀 지원되지 않습니다.확장 포맷은 3개의 16비트 워드를 차지하며 추가 공간은 [3]무시됩니다.
IBM System/360은 32비트 "짧은" 부동 소수점 형식과 64비트 "긴" 부동 소수점 [4]형식을 지원합니다.360/85 및 후속 시스템/370에서는 128비트 확장 [5]포맷이 지원됩니다.이러한 형식은 현재 설계에서도 계속 지원되고 있으며, 현재는 "16진 부동 소수점" 형식이라고 불립니다.
Microsoft MBF 확장 정밀도 포맷
Commodore BASIC, Apple Soft BASIC, KIM-1 BASIC, Micro 등의 어댑테이션으로 6502 CPU용 Microsoft BASIC 포트TAN BASIC은 1977년 [6]이후 부동소수점 형식인 Microsoft Binary Format(MBF)의 40비트 확장 버전을 지원합니다.
IEEE 754 확장 정밀도 포맷
IEEE 754 부동소수점 표준에서는 구현에 확장 정밀도 포맷을 제공할 것을 권장합니다.표준에서는 확장 포맷의 최소 요건을 지정하지만 [7]인코딩은 지정하지 않습니다.인코딩은 구현자가 선택합니다.[8]
IA32, x86-64 및 Itanium 프로세서는 64비트의 중요도를 가진 80비트의 확장 정밀도 포맷을 지원합니다.인텔 8087 산술 코프로세서는 하드웨어에서 부동소수점 연산을 지원하는 최초의 x86 디바이스입니다.32비트의 「단일 정밀도」형식과 64비트의 「이중 정밀도」형식을 서포트하도록 설계되어 부동 소수점 번호를 부호화 및 교환할 수 있습니다.임시 실제(확장) 형식은 데이터를 더 높은 정밀도로 저장하는 것이 아니라, 주로 중간 [a][10][11]계산에서 오버플로와 반올림 오류를 최소화하여 이중 결과를 더 안정적이고 정확하게 계산할 수 있도록 설계되었다.예를 들어, 많은 부동 소수점 알고리즘(예: 지수화)은 가장 직접적인 구현을 사용하여 계산할 때 상당한 정밀도 손실을 겪는다.이러한 문제를 완화하기 위해 8087의 내부 레지스터는 80비트의 "확장 정밀도" 형식으로 중간 결과를 유지하도록 설계되었습니다.8087은 메모리에서 부동소수점 레지스터를 로드할 때 자동으로 숫자를 이 형식으로 변환하고 레지스터를 메모리에 다시 저장할 때 결과를 더 일반적인 형식으로 변환합니다.중간 하위 표현식 결과를 확장 정밀도 스크래치 변수에 저장하여 프로그래밍 언어 문 간에 계속하고, 그렇지 않으면 중단된 계산을 재개할 수 있도록 하기 위해 변환을 수행하지 않고 이러한 내부 레지스터와 메모리 간에 값을 전송하는 명령을 제공합니다.따라서 계산을 위해[b] 확장 형식에 액세스할 수 있습니다. 또한 이러한 숫자의 함수의 정확성에 대한 문제도 되살아나지만 더 높은 정밀도로 해결할 수 있습니다.
이후의 모든 x86 프로세서의 부동소수점 유닛(FPU)은 이 형식을 지원합니다.그 결과, 이 포맷이 제공하는 고정밀을 이용한 소프트웨어를 개발할 수 있다.x87 산술 및 초기 IEEE 754 표준 제안서의 주요 설계자인 William Kahan은 x87 부동 소수점 개발에 대해 다음과 같이 언급했습니다. "우리가 감히 할 수 있는 범위(80비트)의 확장 포맷은 Hewlett-Packard의 10진수 계산기에서 [13]제공하는 13진수 내부 포맷과 동일한 지원 역할을 수행하기 위해 포함되었습니다."게다가 Kahan는 전파는 8087,[14]에 사이클 타임을 증가시키지 않고 할 수 있고 x87 정밀 확대된 미래의 프로세서에서 정밀성에 확장할 수 있는 준비된 것이었다 지니고 있다는 64비트였다 가장 넓은 significand."지금의 가치 사이의10-byte을 연장하면 형식은 참을 수 있는 타협 지적한다. 전 남편tra-frecision 산술과 이를 구현하여 빠르게 실행할 수 있는 비용. 머지않아 2바이트의 정밀도가 허용 가능해지고 최종적으로 16바이트 형식이 될 것입니다.IEEE Floating Point 산술 표준 754가 만들어졌을 때, 보다 넓은 정밀도를 향한 이러한 점진적인 진화가 이미 가시화되었습니다."[15]
Motorola 6888x 연산 코프로세서 및 Motorola 68040 및 68060 프로세서는 동일한 64비트 확장 정밀도 유형을 지원합니다(Intel 형식과 유사하지만 지수와 significant 필드[16] 사이에 16개의 미사용 비트가 삽입된 96비트 형식으로 패딩되어 있습니다).후속 Coldfire 프로세서는 이 96비트 확장 정밀도 [17]형식을 지원하지 않습니다.
초기 ARM 프로세서용 FPA10 산술 코프로세서에서는 이 확장 정밀도 타입(인텔 형식과 비슷하지만 기호와 지수 필드 사이에 16개의 제로 비트가 삽입된 96비트 형식으로 패딩되어 있습니다)도 지원하지만 [18]반올림하지 않습니다.
x87 및 Motorola 68881 80비트 포맷은 IEEE 754 128비트 포맷과 마찬가지로 IEEE 754 더블 확장 [19]포맷 요건을 충족합니다.
x86 확장 정밀도 포맷
x86 확장 정밀도 포맷은 인텔 8087 마스 코프로세서에 최초로 실장된80비트 포맷으로 부동소수점 유닛(FPU)을 탑재한 x86 설계에 기반한 모든 프로세서에서 지원됩니다.이 80비트 포맷에서는 유의 및 부호에는 1비트가 사용되고 지수 필드에는 15비트(128비트 4배 정밀도의 IEEE 754 포맷과 같은 범위), 유의 및 64비트가 사용됩니다.지수 필드는 16383만큼 치우쳐 있습니다. 즉,[20] 2의 실제 검정력을 계산하려면 지수 필드의 값에서 16383을 빼야 합니다.32767의 지수 필드 값(전체 15비트 1)은 무한대 및 Not a Number 등의 특수 상태를 나타낼 수 있도록 예약되어 있습니다.지수 필드가 0일 경우 값은 10진수이고 2의 지수는 -16382입니다.[21]
다음 표에서 "s"는 부호 비트의 값(0은 양, 1은 음)이고, "e"는 양의 정수로 해석되는 지수 필드의 값이며, "m"은 2진수가 비트 63과 62 사이에 위치한 양의 이진수로 해석되는 값이다."m" 필드는 위 다이어그램의 정수 부분과 분수 부분의 조합입니다.
지수 | 의미심장하다 | 의미. | |
---|---|---|---|
모두 제로 | 비트 63 | 비트 62-0 | |
영 | 영 | 0. 0의 신호 비트는 0의 신호를 준다. | |
제로 이외 | 데노말값은 (-1)s × × 2−16382 입니다. | ||
하나. | 아무거나 | 의사 데노말.80387 이후에서는 이 값이 올바르게 해석되지만 생성되지는 않습니다.값은 (-1)s × × 2−16382 입니다. | |
모든 것 | 비트 63,62 | 비트 61-0 | |
00 | 영 | 의사 무한대부호 비트는 무한의 신호를 준다.8087 및 80287에서는 이를 Infinity로 취급합니다.80387 이후에서는 이것을 무효 오퍼랜드로 취급합니다. | |
제로 이외 | 번호가 아닌 유사.사인 비트는 의미가 없어요.8087 및 80287에서는 이것을 번호가 아닌 시그널링으로 취급합니다.80387 이후에서는 이것을 무효 오퍼랜드로 취급합니다. | ||
01 | 아무거나 | 번호가 아닌 유사.사인 비트는 의미가 없어요.8087 및 80287에서는 이것을 번호가 아닌 시그널링으로 취급합니다.80387 이후에서는 이것을 무효 오퍼랜드로 취급합니다. | |
10 | 영 | 인피니티.부호 비트는 무한의 신호를 준다.8087 및 80287에서는 이것을 번호가 아닌 시그널링으로 취급합니다.8087 및 80287 코프로세서는 무한대에 의사 무한대 표현을 사용했습니다. | |
제로 이외 | 번호가 아닌 신호, 신호 비트는 의미가 없습니다. | ||
11 | 영 | 부동소수점 무한 - 비활성 오퍼랜드에 대한 예외를 생성하지 않도록 프로세서가 구성된 경우 음수의 제곱근, 음수의 로그, 0/0, 무한/무한, 무한 곱하기 0 등과 같은 잘못된 계산의 결과입니다.사인 비트는 의미가 없어요.이것은 번호가 아닌 무음 번호의 특별한 경우입니다. | |
제로 이외 | Quiet Not a Number, 부호 비트는 의미가 없습니다.8087 및 80287에서는 이것을 번호가 아닌 시그널링으로 취급합니다. | ||
기타 모든 값 | 비트 63 | 비트 62-0 | |
영 | 아무거나 | 평범하지 않다.8087 및 80287에서만 생성됩니다.80387 이후에서는 이것을 무효 오퍼랜드로 취급합니다.값은 (-1)s × × 2e−16383 입니다. | |
하나. | 아무거나 | 정규화된 값값은 (-1)s × × 2e−16383 입니다. |
단일 및 배 정밀도 형식과 달리 이 형식은 암묵/숨김 비트를 사용하지 않습니다.오히려 비트 63은 유의 정수 부분을 포함하고 비트 62-0은 분수 부분을 유지한다.모든 정규화된 숫자에 대해 비트 63은 1이 됩니다.8087이 개발되었을 때 이 설계에는 다음과 같은 몇 가지 이점이 있었습니다.
- 의 모든 비트가 레지스터에 존재하면 계산을 조금 더 빠르게 완료할 수 있습니다.
- 64비트가 중요하며, 방대한 수의 케이스에서 결과가 2배 정밀도 형식으로 변환될 때 정밀도가 저하되지 않도록 충분한 정밀도를 제공합니다.
- 이 형식은 언더플로로 인한 정밀도 손실을 나타내는 메커니즘을 제공하며, 이 메커니즘은 추가 작업을 통해 수행될 수 있습니다.예를 들어 2×10−4930×3×10−10×4×1020 계산은 데노말인 중간결과 6×10을−4940 생성하고 정밀손실을 수반한다.모든 항의 곱은 24×10으로−4920 정규화된 수치로 나타낼 수 있습니다.80287은 이 계산을 완료하고 "비정상" 결과(0이 아님, 비트 63 = 0)[22][23]를 반환함으로써 정밀도의 손실을 나타낼 수 있습니다.80387 이후의 프로세서는 더 이상 비정상적 입력을 생성하지 않으며 연산에 대한 비정상적인 입력을 지원하지 않습니다.언더플로우가 발생하면 데노말(denormal)을 생성하지만 데노말에서 후속 작업을 정규화할 [24]수 있으면 정규화된 결과를 생성합니다.
사용법 소개
80비트 부동소수점 형식은 C, Fortran 및 유사한 컴퓨터 언어 개발 이후 [25]1984년까지 널리 사용 가능했는데, 처음에는 일반적인 32비트 및 64비트 부동소수점 크기만 제공했습니다.x86 설계에서는 대부분의 C 컴파일러가 롱 더블 타입을 통해 80비트 확장 정밀도를 지원하게 되었습니다.이것은 C99/C11 규격(IEC 60559 부동소수점 연산(Annex F))으로 지정되어 있습니다.다른 언어용 x86 컴파일러도 종종 확장된 정밀도를 지원합니다. 예를 들어, Turbo Pascal은extended
타입 및 여러 Fortran 컴파일러는REAL*10
타이프(접속처)REAL*4
그리고.REAL*8
이러한 컴파일러는 일반적으로 표준 라이브러리에 제곱근이나 삼각함수 등의 확장 정밀도의 수학적 서브루틴도 포함합니다.
작업 범위
80비트 부동소수점 포맷의 범위는 약 3.65−4951×10 ~ 1.18×104932 입니다.log (264) 19 19.266이지만, 이10 형식은 보통 약 18 자리수의 유의한 정밀도(최소 보증 정밀도인 log(2)의1063 바닥)를 제공하는 것으로 설명됩니다.2/3가 10진수인 것처럼 대부분의 소수 분수가 2진수에서 반복되는 수열이기 때문에 2진수에서 10진수를 사용하는 것은 유감스러운 일입니다.따라서 10.15와 같은 값은 REAL*4의 경우 10.14996185 등 10진수로 나타내지만 REAL*8의 경우 10.150000000000035527 등에서는 0.625와 같이 정확한 이진수를 나타내는 소수점 이하를 제외하고 근사를 수반합니다.REAL*10 의 경우, 10 진문자열은 10.149999999999999999996530553etc 입니다.마지막 9자리는 18번째 소수 자릿수이므로 문자열의 20번째 유효 자릿수입니다.80비트 형식의 10진수와 2진수 변환 경계는 다음과 같이 지정할 수 있습니다.유효 자리수가 최대 18자리인 10진수 문자열을 80비트 IEEE 754 바이너리 부동 소수점 값으로 올바르게 반올림한 후 (입력 시처럼) 같은 수의 유효 소수점수로 다시 변환하면 마지막 문자열은 e가 됩니다.xactly는 원본과 일치합니다.반대로 80비트 IEEE 754 바이너리 부동소수점 값이 올바르게 변환되고 (가장 가까운) 유효 소수 21자리 이상의 소수 문자열로 반올림된 후 바이너리 형식으로 다시 변환되면 [19]원본과 정확히 일치합니다.이러한 근사치는 임의의 정밀도 산술로 계산할 수 있는 높은 정밀도로 공식화된 상수에 대한 최적의 값을 지정할 때 특히 문제가 됩니다.
80비트 포맷 필요
확장 정밀도 포맷의 의미에 있어서 최소 64비트의 정밀도가 필요함을 나타내는 주목할 만한 예는 배 정밀도 [26][27][28][c]값에 대해 지수화를 실행할 때 정밀도 손실을 방지할 필요가 있다는 것입니다.x86 부동소수점 유닛은 직접 지수를 실행하는 명령을 제공하지 않습니다.대신 프로그램이 순차적으로 사용할 수 있는 일련의 명령을 제공하여 다음 방정식을 사용하여 지수화를 수행합니다.
x의 지수 및 유의 필드는 모두 중간 결과의 유의 필드에 효과적으로 적합해야 하기 때문에 정밀도 손실을 방지하기 위해 중간 결과 "log(x)"와2 "y·log2(x)"는 훨씬 더 높은 정밀도로 계산해야 한다.그 후 중간결과의 유의필드는 2를 산출할intermediate result 때 지수필드와 최종결과의 유의필드로 분할된다.다음 설명에서는 이 요건에 대해 자세히 설명합니다.
조금 압축을 풀면 IEEE 754의 2배 정밀도 값은 다음과 같이 표시됩니다.
여기서 s는 지수(0 또는 1)의 부호, E는 0 ~1023 범위의 정수, M은 유의, 53비트 값인 53비트 값은 1µM < 2. 이들 값의 로그는 정의되어 있지 않기 때문에 무시할 수 있습니다.이 설명의 목적상 M은 1보다 크거나 같도록 제약되어 있기 때문에 53비트의 정밀도를 가지지 않습니다(숨겨진 비트는 정밀도에 카운트되지 않습니다).M이 1보다 작은 상황에서는 값이 실제로는 비정규이므로 이미 정밀도가 손실되었을 수 있습니다.이 상황은 이 문서의 범위를 벗어납니다.)
이 2배 정밀도의 수치를 로그에 기록하고 단순화하면 다음과 같은 결과가 됩니다.
이 결과는 어떤 숫자의 base 2 대수를 취할 때, 원래 값의 지수의 부호는 로그의 부호가 되고, 원래 값의 지수의 부호는 로그의 유의의 정수 부분이 되고, 그리고 원래 값의 유의의 분수 부분으로 변환된다는 것을 보여준다.로그의 d.
E는 0 ~ 1023 범위의 정수이므로, 로그의 정수 부분을 나타내려면 기수점 왼쪽에 최대 10비트가 필요합니다.M은 1 µ M < 2 범위에 속하므로 로그 M의2 값은 0 µ2 로그 M < 1 범위에 속하므로 로그의 소수 부분을 나타내려면 기수점 오른쪽에 최소 52비트가 필요합니다.기수점 왼쪽으로 10비트를 기수점 오른쪽으로 52비트를 조합하면 로그의 유의 및 일부를 최소 62비트의 정밀도로 계산해야 합니다.실제로 M 이 2 {2 미만일 경우 기수점 오른쪽에 53비트가 필요하고,({display\style 일 경우 기수점 오른쪽에 54비트가 있어야 정밀도가 손실되지 않습니다.512 미만의 지수는 기수 포인트 왼쪽에 9비트만 필요하고 256 미만의 지수는 기수 포인트 왼쪽에 8비트만 있으면 됩니다.
지수 계산의 마지막 부분은 연산intermediate result 2입니다."중간 결과"는 부분 "F"에 추가된 정수 부분 "I"로 구성된다.중간 결과가 음수인 경우, "I"와 "F" 모두 음수이기 때문에 양의 부분 부품을 얻기 위해 약간의 조정이 필요합니다.
긍정적인 중간 결과의 경우:
음의 중간 결과의 경우:
따라서 중간 결과의 정수 부분("I" 또는 "I-1")에 편향을 더한 값이 최종 결과의 지수가 되고 중간 결과의 변환된 양의 분수 부분F: 2 또는1+F 2가 최종 결과의 유의점이 됩니다.최종 결과에 52비트의 정밀도를 공급하기 위해서는 양의 분수 부분이 적어도 52비트로 유지되어야 한다.
결론적으로 중간 결과의 유의도에 필요한 정밀도의 정확한 비트 수는 데이터에 따라 다소 달라지지만 64비트는 배 정밀도를 포함한 대부분의 지수 계산에서 정밀도 손실을 피하기에 충분하다.
확장 정밀도 포맷의 지수에 필요한 비트 수는 확장 포맷을 사용하여 계산했을 때 두 배 정밀도 숫자의 곱이 오버플로하지 않아야 한다는 요건에 따라 달라집니다.배정도 값의 최대 가능 지수는 1023이므로 두 배정도 숫자의 최대 가능 곱의 지수는 2047(11비트 값)입니다.음의 지수를 설명하기 위해 편향을 추가하는 것은 지수 필드의 폭이 최소 12비트여야 함을 의미합니다.
이러한 요건을 조합하면 부호의 경우 1비트, 바이어스 지수의 경우 12비트, 의 경우 64비트가 됩니다.이는 확장 정밀도 포맷에 적어도77비트가 필요함을 의미합니다.기술적 고려에 의해 80비트 포맷의 최종 정의가 이루어졌습니다(특히 IEEE 754 표준에서는 다음으로 큰 쿼드 정밀도 포맷인 15비트와 [27]일치하도록 확장 정밀도 포맷의 지수 범위가 필요합니다).
확장 정밀 산술의 이점을 얻는 또 다른 계산 예는 반복 정제 체계로, 수치 선형 [30]대수에 대해 일반적으로 매우 많은 수의 계산을 수행하는 동안 직접 해법에 누적된 오류를 간접적으로 제거하는 데 사용된다.
언어 지원
- 일부 C/C++ 구현(GNU 컴파일러 컬렉션(GCC), Clang, Intel C++ 등)
long double
x86 시스템에서 80비트 부동 소수점 숫자를 사용합니다.단, 이는 구현 정의 동작이며 C99 표준 "Annex F IEC 60559 부동소수점 산술"에서 IEEE 754 하드웨어에 대해 명시한 대로 표준에서 허용된다.또한 GCC는__float80
그리고.__float128
타입을 지정합니다.[31] - 일부 공통 리스프 구현(예를 들어 CMU 공통 리스프, 임베디드 가능 공통 리스프)
long-float
x86 시스템에서 80비트 부동 소수점 숫자를 사용합니다. - D 프로그래밍 언어 구현
real
하드웨어에 구현된 최대 부동소수점 크기, x86 CPU의 경우 80비트 또는 2배 정밀도 중 큰 것을 사용합니다. - 오브젝트 파스칼(Delphi)은 싱글(32비트)과 더블(64비트) 외에 확장형(패딩과 플랫폼 사이즈를 변경할 수 있지만 기존 32비트 타깃의 경우 80비트) 타입이 있습니다.
- Racket 런타임 시스템은 x86 시스템에서 80비트 extflonum 데이터 유형을 제공합니다.
- Swift 표준 라이브러리는
Float80
데이터형 - 파워BASIC BASIC 컴파일러는
EXT
또는EXTENDED
10 바이트 정밀도 확장 부동 소수점 데이터 타입.
「 」를 참조해 주세요.
- GNU MPFR – C용 GNU "Multiple Precision 부동소수점 신뢰성"
- IBM 16진 부동 소수점
- IEEE 754
- 롱 더블
- x87
각주
- ^ "이 포맷은 주로 프로그래머가 싱글 및 더블 소프트웨어의 무결성을 향상시키고 더 큰 치수의 더블 매트릭스 연산으로 반올림함으로써 성능 저하를 완화하는 것을 목적으로 하고 있습니다.또한 확장의 4중 대체가 그 사용을 무효화하지 않도록 쉽게 사용할 수 있습니다." - x87 디자이너 W. Kahan[9]
- ^ "고급 언어에서는 확장(보이지 않게)을 사용하여 중간 하위 식을 평가하며 나중에 확장 데이터를 선언 가능한 데이터 유형으로 [12]: 70 제공할 수 있습니다."
- ^ "기본 포맷의 지수 필드에서 지원하는 추가 정밀도 비트가 적어도 같은 수만큼 확장되어 있으면 초월 함수, 내부 곱 및 멱함수x [29]: 70 y의 정확한 계산이 크게 간소화됩니다."
레퍼런스
- ^ IEEE 754(2008, 2.1.21)에서는 확장 정밀도 포맷을 "더 넓은 정밀도와 범위를 제공함으로써 지원되는 기본 포맷을 확장하는 포맷"으로 정의합니다.
- ^ Francis, C.G. (11 February 1965). "IBM introduces powerful small computer". Director of Information (Press release). White Plains, New York: International Business Machines Corporation (IBM). Archived from the original on 2019-07-05.
- ^ Subroutine Library (PDF). IBM 1130 (9th ed.). IBM Corporation. 1974. p. 93.
- ^ Principles of Operation. IBM System/360 (9th ed.). IBM Corporation. 1970. p. 41.
- ^ IBM System/370 Principles of Operation (7th ed.). IBM Corporation. 1980. pp. 9-2–9-3.
- ^ Steil, Michael (2008-10-20). "Create your own version of Microsoft BASIC for 6502". pagetable.com. p. 46. Archived from the original on 2016-05-30. Retrieved 2016-05-30.
- ^ IEEE Computer Society (August 29, 2008). IEEE Standard for Floating-Point Arithmetic (Report). IEEE. §3.7. doi:10.1109/IEEESTD.2008.4610935. ISBN 978-0-7381-5752-8. IEEE Std 754-2008.
- ^ Brewer, Kevin. "Kevin's Report". IEEE-754 Reference Material. Retrieved 2012-02-19.
- ^ Kahan, William (1 October 1997). "Lecture notes on the status of IEEE standard 754 for binary floating-point arithmetic" (PDF). p. 5.
- ^ Einarsson, Bo (2005). Accuracy and reliability in scientific computing. SIAM. pp. 9ff. ISBN 978-0-89871-815-7. Retrieved 3 May 2013.
- ^ "Intel 64 and IA-32 Architectures". Software Developer's Manual. Intel Corp. March 2012. §8.2.
- ^ Coonen, Jerome T. (January 1980). "An implementation guide to a proposed standard for floating-point arithmetic". IEEE Computer. 13: 68–79. doi:10.1109/MC.1980.1653344. S2CID 206445847.
- ^ Kahan, William (22 November 1983). "Mathematics written in sand - the hp-15C, Intel 8087, etc" (PDF).
- ^ Goldberg, David (March 1991). "What every computer scientist should know about floating-point arithmetic" (PDF). ACM Computing Surveys. 23 (1): 192. doi:10.1145/103162.103163. S2CID 222008826.
- ^ Higham, Nicholas (2002). "Designing stable algorithms". Accuracy and Stability of Numerical Algorithms (2 ed.). Society for Industrial and Applied Mathematics (SIAM). p. 43.
- ^ Motorola MC68000 Family (PDF). Programmers' Reference Manual. Freescale Semiconductor. 1992. pp. 1–16.
- ^ ColdFire Family (PDF). Programmers' Reference Manual. Freescale semiconductor. 2005. p. 7-7.
- ^ "FPA10 Data Sheet" (PDF). chrisacorns.computinghistory.org.uk. GEC Plessey Semiconductors. 11 June 1993. Retrieved 26 November 2020.
- ^ a b Kahan, William (1 October 1997). "Lecture notes on the status of IEEE standard 754 for binary floating-point arithmetic" (PDF).
- ^ 인텔 80C187 데이터 시트
- ^ Intel 64 and IA-32 Architectures Developer's Manual: Vol. 1. Intel Corporation. pp. 4-6 thru 4-9 and 4-18 thru 4-21.
- ^ Palmer, John F.; Morse, Stephen P. (1984). The 8087 Primer. Wiley Press. pp. 14. ISBN 0-471-87569-4.
- ^ Morse, Stephen P.; Albert, Douglas J. (1986). The 80286 Architecture. Wiley Press. pp. 91–111. ISBN 0-471-83185-9.
- ^ Intel 64 and IA-32 Architectures Developer's Manual: Vol. 1. Intel Corporation. pp. 8-21 thru 8-22.
- ^ Charles Severance (20 February 1998). "An Interview with the Old Man of Floating-Point".
- ^ Palmer, John F.; Morse, Stephen P. (1984). The 8087 Primer. Wiley Press. pp. 16. ISBN 0-471-87569-4.
- ^ a b Morse, Stephen P.; Albert, Douglas J. (1986). The 80286 Architecture. Wiley Press. pp. 96–98. ISBN 0-471-83185-9.
- ^ Hough, David (March 1981). "Applications of the proposed IEEE 754 standard for floating-point arithmetic". IEEE Computer. 14 (3): 70–74. doi:10.1109/C-M.1981.220381. S2CID 14645749.
- ^ Coonen, Jerome T. (January 1980). "An implementation guide to a proposed standard for floating-point arithmetic". IEEE Computer: 68–79. doi:10.1109/MC.1980.1653344. S2CID 206445847.
- ^ Demmel, James; Hida, Yozo; Kahan, William; Li, Xiaoye S.; Mukherjee, Sonil; Riedy, E. Jason (June 2006). "Error bounds from extra-precise iterative refinement" (PDF). ACM Transactions on Mathematical Software. 32 (2): 325–351. doi:10.1145/1141885.1141894. S2CID 1340891. Retrieved 2014-04-18.
- ^ "Floating Types (Using the GNU Compiler Collection (GCC))".