Antallet af firdobbelt præcision ( eng. Quadruple precision ) er et computerformat til at repræsentere flydende kommatal, der optager fire på hinanden følgende celler i hukommelsen (computerord; i tilfælde af en 32-bit computer - 128 bit eller 16 bytes ). Betegner typisk IEEE 754 standard binary128 flydende talformat .
Tegn: 1 bit.
Rækkefølge: 15 bits [1] [2] .
Mantisse : 112 bit (112 [1] [2] er eksplicit gemt).
Tilsvarende antal signifikante decimalcifre (med samme gennemsnitlige relative repræsentationsfejl): 34 ( log 10 (2 113 ) ≈ 34,016 ).
Skilt | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
(15 bit) Bestil |
(112 bit) Mantisse | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
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 | femten | otte | 7 | 0 |
Små konstanter: [2]
0x 3fff 0000 0000 0000 0000 0000 0000 0000 = 1 0x c000 0000 0000 0000 0000 0000 0000 0000 = −2Maksimum og minimum (normal) quad-præcision antal: [3] [4] [2]
0x 7FFE FFFFFFFFFFFFFF FFF FFFF ≈ 1.18973149535723176508575932662800702 × 10 4932 0X 0001 0000 0000 0000 0000 0000 0000 316 020 316 0000 316 0000 0000Firedobbelt denormaliserede tal : maksimum og minimum positive: [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^-4966Firedobbelte nuller: [2]
0x 0000 0000 0000 0000 0000 0000 0000 0000 = 0 0x 8000 0000 0000 0000 0000 0000 0000 0000 = −0Firedobbelt uendelighed: [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/3En række compilere, herunder GCC (siden version 4.0, 2010 [5] ), IBM XL (10.1 [5] ), Intel, tillader brugen af "firdobbelte" præcisionsnumre i C/C++ og Fortran-programmer (f.eks. som __float128-typen [6] , lang dobbelt, REAL*16), implementerer beregninger på dem i software, 1-2 størrelsesordener langsommere end med hardware-understøttet præcision [7] . Selvom sådanne beregninger kan implementeres i arbitrære præcisionstalbehandlingssystemer (f.eks. GMP ), er der adskillige specialiserede biblioteker med en softwareimplementering af "firdobbelt" præcision [8] [9] [10] . Metoder til hardwareimplementering er også under udvikling [11] [12] , men fra og med 2005 blev firdobbelt præcision ikke implementeret i hardware i masseprocessorer [13] .
For nogle løsningsmetoder tillader firedobbelt præcision hurtigere konvergens (antallet af iterationer af metoden) sammenlignet med dobbelt præcision, hvor hver iteration bliver længere på grund af brugen af softwareimplementering af operationer på tal [14] .
Der er en "dobbelt-dobbelt" tilgang til at implementere tal med næsten firdobbelt præcision, men ved at bruge et kortere eksponentformat (nogle gange implementeret i Fortran-kompilere til REAL*16-typen). Med denne tilgang, for eksempel, kræver tilføjelse af to "dobbelt-dobbelt" tal 8 additions- og subtraktionsoperationer og en sammenligning over fordoblinger [13] .