Număr cvadruplu

Versiunea actuală a paginii nu a fost încă examinată de colaboratori experimentați și poate diferi semnificativ de versiunea revizuită la 1 ianuarie 2020; verificările necesită 7 modificări .

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 .

Format de număr cvadruplu

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

Exemple de numere de precizie cvadrupla

Constante mici: [2]

0x 3fff 0000 0000 0000 0000 0000 0000 0000 = 1 0x c000 0000 0000 0000 0000 0000 0000 0000 = −2

Numă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 00000701

Numere 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^-4966

Zerouri cvadruple: [2]

0x 0000 0000 0000 0000 0000 0000 0000 0000 = 0 0x 8000 0000 0000 0000 0000 0000 0000 0000 = -0

Infinităț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/3

Suport

O 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] .

Vezi și

Note

  1. 1 2 Precizie reală, dublă și cvadruplă (Fortran 77 Language Reference)
  2. 1 2 3 4 5 6 7 Aritmetica IEEE
  3. https://github.com/gcc-mirror/gcc/blob/03cb8c1ee6db41ed646eb37f164ba972abc6a87a/libquadmath/quadmath.h#L145 FLT128_MAX
  4. https://github.com/gcc-mirror/gcc/blob/03cb8c1ee6db41ed646eb37f164ba972abc6a87a/libquadmath/quadmath.h#L146 FLT128_MIN
  5. 1 2 IBM Utilizați reprezentarea dublă lungă a GCC pentru valori cu virgulă mobilă de precizie quad pe 128 de biți - Statele Unite
  6. Tipuri plutitoare - Utilizarea GNU Compiler Collection (GCC)
  7. https://gcc.gnu.org/onlinedocs/gcc-6.2.0/libquadmath.pdf
  8. Explorarea numerelor cu virgulă mobilă cu precizie cvadruplă în GCC și ICC - Peter Larsson
  9. Copie arhivată (link nu este disponibil) . Consultat la 30 noiembrie 2016. Arhivat din original pe 30 noiembrie 2016. 
  10. Berkeley SoftFloat
  11. Copie arhivată (link nu este disponibil) . Consultat la 30 noiembrie 2016. Arhivat din original la 20 august 2016. 
  12. http://www.atlantis-press.com/php/download_paper.php?id=4869
  13. 1 2 https://www-zeuthen.desy.de/acat05/talks/de_Dinechin.Florent.2/QuadAndMore.pdf
  14. http://www.siam.org/meetings/la03/proceedings/hhasegaw.pdf