Neljänkertaisen tarkkuuden lukumäärä ( eng. Quadruple precision ) on tietokonemuoto liukulukujen esittämiseen, ja se vie muistissa neljä peräkkäistä solua (tietokonesanat; 32-bittisessä tietokoneessa - 128 bittiä tai 16 tavua ). Tarkoittaa tyypillisesti IEEE 754 - standardin mukaista binary128 liukulukumuotoa .
Merkki: 1 bitti.
Järjestys: 15 bittiä [1] [2] .
Mantissa : 112 bittiä (112 [1] [2] on eksplisiittisesti tallennettu).
Merkittäviä desimaalilukuja vastaava määrä (samalla keskimääräisellä suhteellisella esitysvirheellä): 34 ( log 10 (2 113 ) ≈ 34,016 ).
Merkki | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
(15 bittiä) Järjestys |
(112-bittinen) 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 | viisitoista | kahdeksan | 7 | 0 |
Pienet vakiot: [2]
0x 3fff 0000 0000 0000 0000 0000 0000 0000 = 1 0x c000 0000 0000 0000 0000 0000 0000 0000 = -2Suurin ja pienin (normaali) nelitarkkuuden luku: [3] [4] [2]
0x 7FFE FFFFFFFFFFFFFFFF FFF FFFF ≈ 1.18973149535723176508575932662800702 × 10 4932 0X 0001 0000 0001 0001 0000 .105 303 2673 2000 0000 604Nelinkertaiset denormalisoidut luvut : suurin ja pienin positiivinen: [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^-4966Neljänkertaiset nollat: [2]
0x 0000 0000 0000 0000 0000 0000 0000 0000 = 0 0x 8000 0000 0000 0000 0000 0000 0000 0000 = -0Nelinkertaiset äärettömät: [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/3Useat kääntäjät, mukaan lukien GCC (versiosta 4.0 lähtien, 2010 [5] ), IBM XL (10.1 [5] ), Intel, sallivat "Quadruple"-tarkkuusnumeroiden käytön C/C++- ja Fortran-ohjelmissa (esim. __float128 tyyppi [6] , long double, REAL*16), laskelmien toteuttaminen niille ohjelmistossa, 1-2 suuruusluokkaa hitaammin kuin laitteiston tukemalla tarkkuudella [7] . Vaikka tällaisia laskelmia voidaan toteuttaa mielivaltaisissa tarkkuuden lukuprosessointijärjestelmissä (esim . GMP ), on olemassa useita erikoiskirjastoja, joiden ohjelmistototeutus on "neljänkertainen" [8] [9] [10] . Myös laitteistototeutusmenetelmiä kehitetään [11] [12] , mutta vuodesta 2005 lähtien nelinkertaista tarkkuutta ei ole otettu käyttöön massaprosessorien laitteistoissa [13] .
Joissakin ratkaisumenetelmissä nelinkertainen tarkkuus mahdollistaa nopeamman konvergenssin (menetelmän iteraatioiden lukumäärän) verrattuna kaksinkertaiseen tarkkuuteen, jolloin jokainen iteraatio pidentyy numerooperaatioiden ohjelmistototeutuksen käytön vuoksi [14] .
On olemassa "double-double" -lähestymistapa lukujen toteuttamiseen lähes nelinkertaisella tarkkuudella, mutta käyttämällä lyhyempää eksponenttimuotoa (joskus toteutettu Fortran-kääntäjissä REAL*16-tyypillä). Tällä lähestymistavalla esimerkiksi kahden "kaksois-kaksois" -luvun lisääminen vaatii 8 yhteen- ja vähennysoperaatiota ja yhden vertaamisen tuplaan [13] .