Firedobbelt tal

Den aktuelle version af siden er endnu ikke blevet gennemgået af erfarne bidragydere og kan afvige væsentligt fra den version , der blev gennemgået den 1. januar 2020; checks kræver 7 redigeringer .

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 .

Firedobbelt 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

Eksempler på firdobbelte præcisionstal

Små konstanter: [2]

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

Maksimum 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 0000

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

Firedobbelte nuller: [2]

0x 0000 0000 0000 0000 0000 0000 0000 0000 = 0 0x 8000 0000 0000 0000 0000 0000 0000 0000 = −0

Firedobbelt 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/3

Support

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

Se også

Noter

  1. 1 2 ægte, dobbelt og firdobbelt præcision (FORTRAN 77 sprogreference)
  2. 1 2 3 4 5 6 7 IEEE Aritmetik
  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 Brug GCC's lange dobbelte repræsentation til 128-bit quad præcision flydende kommaværdier - USA
  6. Flydende typer - Brug af GNU Compiler Collection (GCC)
  7. https://gcc.gnu.org/onlinedocs/gcc-6.2.0/libquadmath.pdf
  8. Udforskning af firdobbelt præcision med flydende kommatal i GCC og ICC - Peter Larsson
  9. Arkiveret kopi (link ikke tilgængeligt) . Hentet 30. november 2016. Arkiveret fra originalen 30. november 2016. 
  10. Berkeley SoftFloat
  11. Arkiveret kopi (link ikke tilgængeligt) . Hentet 30. november 2016. Arkiveret fra originalen 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