Numărul de precizie cvadruplă ( ing. Precizie cvadruplă ) este un format de computer pentru reprezentarea numerelor în virgulă mobilă, ocupând patru celule consecutive în memorie (cuvinte de calculator; în cazul unui computer pe 32 de biți - 128 de biți sau 16 octeți ). În mod obișnuit, denotă formatul de număr în virgulă mobilă IEEE 754 standard binary128 .
Semn: 1 bit.
Comanda: 15 biți [1] [2] .
Mantissa : 112 biți (112 [1] [2] sunt stocați în mod explicit).
Număr echivalent de cifre zecimale semnificative (cu aceeași eroare medie de reprezentare relativă): 34 ( log 10 (2 113 ) ≈ 34,016 ).
Semn | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
(15 biți) Comanda |
(112 biți) Mantissa | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
127 | 120 | 119 | 112 | 111 | 104 | 103 | 96 | 95 | 88 | 87 | 80 | 79 | 72 | 71 | 64 | 63 | 56 | 55 | 48 | 47 | 40 | 39 | 32 | 31 | 24 | 23 | 16 | cincisprezece | opt | 7 | 0 |
Constante mici: [2]
0x 3fff 0000 0000 0000 0000 0000 0000 0000 = 1 0x c000 0000 0000 0000 0000 0000 0000 0000 = −2Număr maxim și minim (normal) cu patru precizie: [3] [4] [2]
0x 7FFE FFFFFFFFFFFFFF FFF FFFF ≈ 1,18973149535723176508575932662800702 × 10 4932 0X 0001 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 00000701Numere cvadruple denormalizate : pozitive maxime și minime: [2]
0x 0000 ffff ffff ffff ffff ffff ffff ffff ≈ 3,3621031431120935062626778173217520*10^-4932 0x 0000 0000 0000 0000 0000 0000 0000 0001 ≈ 6,4751751194380251109244389582276466 * 10^-4966Zerouri cvadruple: [2]
0x 0000 0000 0000 0000 0000 0000 0000 0000 = 0 0x 8000 0000 0000 0000 0000 0000 0000 0000 = -0Infinități cvadruple: [2]
0x 7fff 0000 0000 0000 0000 0000 0000 0000 = ∞ 0xffff 0000 0000 0000 0000 0000 0000 0000 = −∞ 0x 3ffd 5555 5555 5555 5555 5555 5555 5555 ≈ 1/3O serie de compilatoare, inclusiv GCC (din versiunea 4.0, 2010 [5] ), IBM XL (10.1 [5] ), Intel, permit utilizarea numerelor de precizie „Quadruple” în programele C/C++ și Fortran (de exemplu, ca tipul __float128 [6] , long double, REAL*16), implementând calcule pe acestea în software, cu 1-2 ordine de mărime mai lent decât cu precizie suportată de hardware [7] . Deși astfel de calcule pot fi implementate în sisteme de procesare a numerelor de precizie arbitrară (de exemplu GMP ), există mai multe biblioteci specializate cu o implementare software de precizie „Quadruple” [8] [9] [10] . Metode de implementare hardware sunt, de asemenea, în curs de dezvoltare [11] [12] , dar din 2005, precizia cvadruplă nu a fost implementată în hardware în procesoarele de masă [13] .
Pentru unele metode de soluție, precizia cvadruplă permite o convergență mai rapidă (numărul de iterații ale metodei) în comparație cu precizia dublă, fiecare iterație devenind mai lungă datorită utilizării implementării software a operațiilor pe numere [14] .
Există o abordare „dublu-dublă” pentru implementarea numerelor cu o precizie aproape cvadruplă, dar folosind un format de exponent mai scurt (uneori implementat în compilatoarele Fortran pentru tipul REAL*16). Cu această abordare, de exemplu, adăugarea a două numere „duble-duble” necesită 8 operații de adunare și scădere și o comparație peste duble [13] .