Antalet fyrfaldig precision ( eng. Quadruple precision ) är ett datorformat för att representera flyttal, som upptar fyra på varandra följande celler i minnet (datorord; i fallet med en 32-bitars dator - 128 bitar eller 16 byte ). Betecknar typiskt IEEE 754 standard binary128 flyttalsformat .
Tecken: 1 bit.
Ordning: 15 bitar [1] [2] .
Mantissa : 112 bitar (112 [1] [2] är explicit lagrade).
Ekvivalent antal signifikanta decimalsiffror (med samma genomsnittliga relativa representationsfel): 34 ( log 10 (2 113 ) ≈ 34,016 ).
Tecken | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
(15 bitar) Beställ |
(112 bitar) 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 | femton | åtta | 7 | 0 |
Små konstanter: [2]
0x 3fff 0000 0000 0000 0000 0000 0000 0000 = 1 0x c000 0000 0000 0000 0000 0000 0000 0000 = −2Högsta och lägsta (normala) quad-precision antal: [3] [4] [2]
0x 7FFE FFFFFFFFFFFFFF FFF FFFF ≈ 1.18973149535723176508575932662800702 × 10 4932 0X 0001 0000 0000 0000 0000 0000 0000 0000 315 201 0000 315 0000 0000 0000 0000 0000 0000 315Fyrdubbla denormaliserade tal : maximalt och minst positivt: [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^-4966Fyrdubbla nollor: [2]
0x 0000 0000 0000 0000 0000 0000 0000 0000 = 0 0x 8000 0000 0000 0000 0000 0000 0000 0000 = -0Fyrdubbla oändligheter: [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/3Ett antal kompilatorer, inklusive GCC (sedan version 4.0, 2010 [5] ), IBM XL (10.1 [5] ), Intel, tillåter användning av "Quadruple" precisionsnummer i C/C++- och Fortran-program (till exempel som typen __float128 [6] , lång dubbel, REAL*16), implementerar beräkningar på dem i mjukvara, 1-2 storleksordningar långsammare än med hårdvarustödd precision [7] . Även om sådana beräkningar kan implementeras i system för bearbetning av godtyckliga precisionsnummer (t.ex. GMP ), finns det flera specialiserade bibliotek med en mjukvaruimplementering av "Quadruple" precision [8] [9] [10] . Metoder för hårdvaruimplementering utvecklas också [11] [12] , men från och med 2005 implementerades inte fyrdubbel precision i hårdvara i massprocessorer [13] .
För vissa lösningsmetoder tillåter fyrdubbel precision snabbare konvergens (antalet iterationer av metoden) jämfört med dubbel precision, där varje iteration blir längre på grund av användningen av mjukvaruimplementering av operationer på siffror [14] .
Det finns en "dubbel-dubbel" metod för att implementera siffror med nästan fyrdubblad precision men med ett kortare exponentformat (ibland implementerat i Fortran-kompilatorer för REAL*16-typ). Med detta tillvägagångssätt kräver till exempel att lägga till två "dubbel-dubbla" tal 8 additions- och subtraktionsoperationer och en jämförelse över dubblar [13] .