Nelinkertainen luku

Kokeneet kirjoittajat eivät ole vielä tarkistaneet sivun nykyistä versiota, ja se voi poiketa merkittävästi 1. tammikuuta 2020 tarkistetusta versiosta . tarkastukset vaativat 7 muokkausta .

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 .

Nelinkertainen numeromuoto

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

Esimerkkejä nelinkertaisista tarkkuusluvuista

Pienet vakiot: [2]

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

Suurin 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 604

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

Neljänkertaiset nollat: [2]

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

Nelinkertaiset ää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/3

Tuki

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

Katso myös

Muistiinpanot

  1. 1 2 Real, Double ja Quadruple Precision (FORTRAN 77 Language Reference)
  2. 1 2 3 4 5 6 7 IEEE Aritmetiikka
  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 käyttää GCC:n pitkää kaksoisesitystä 128-bittisille nelinkertaisille tarkkuusliukulukuarvoille - Yhdysvallat
  6. Kelluvat tyypit – GNU Compiler Collectionin (GCC) käyttäminen
  7. https://gcc.gnu.org/onlinedocs/gcc-6.2.0/libquadmath.pdf
  8. Nelinkertaisten tarkkojen liukulukulukujen tutkiminen GCC:ssä ja ICC:ssä - Peter Larsson
  9. Arkistoitu kopio (linkki ei saatavilla) . Haettu 30. marraskuuta 2016. Arkistoitu alkuperäisestä 30. marraskuuta 2016. 
  10. Berkeley SoftFloat
  11. Arkistoitu kopio (linkki ei saatavilla) . Haettu 30. marraskuuta 2016. Arkistoitu alkuperäisestä 20. elokuuta 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