Format en menge flotant de doble precisió

El format en menge (o punt) flotant de doble precisió és un format de número de computador o ordenador que ocupa 64 bits en la seua memòria i representa un ampli i dinàmic ranc de valors per mig de l'us de la menge flotant. Este format sol ser conegut com binary64 tal com s'especifica en l'estàndart IEEE 754.[1] En els computadors antics varen ser utilisats diferents formats de menge flotant de 8 bytes, com a eixemple, el tipo de senyes de doble precisió en el llenguage de programació GW-BASIC, el qual era un format de menge flotant de 32 bits MBF (Format Binario de Microsoft).
Descripció del format
[editar | editar còdic]El format binari en menge flotant de doble precisió és d'us comú en els computadors personals, pel seu ranc més ampli de treball sobre el format en menge flotant de simple precisió, a pesar del seu rendiment i el seu cost d'ample de banda. De la mateixa manera que en el format de menge flotant de precisió simple, carix de precisió en número entero quan es compara en un format sancer del mateix tamany. L'estàndart IEEE 754 establix que un número en format binary64 consta de:
- Bit de signe (S): 1 bit.
- Exponent (I): 11 bits.
- Significant o Mantissa: 53 bits (52 bits s'almagasenen explícitament).
Si una cadena decimal en un màxim de 15 dígits significatius es convertix en una representació de doble precisió i després es convertix de nou a una cadena en el mateix número de dígits significatius, a continuació, la cadena final deu coincidir en l'original. Si un número en doble precisió es convertix en una cadena decimal en a lo manco 17 dígits significatius i després es convertix de nou en doble, el número final deu coincidir en l'original.[2]
El format s'escriu en un significant que té un bit sancer implícit de valor 1 (llevat para els números especials). En els 52 bits de la fracció o significant que apareixen en el format de memòria, la precisió total és per lo tant de 53 bits (és dir de 53*log10(2) ≈ 15.955 que es redoneja a 16 dígits decimals). Els bits es presenten de la següent manera:

L'exponent d'este format està biaixat o desplaçat en 1023 unitats, ya que com el màxim valor representat per 11 bits és 211-1=2047, és la mitat d'este ranc la que representa exponents positius i l'atra, exponents negatius, per lo que s'usa la part sancera de la mitat de 2047. El valor verdader () d'un número de menge flotant de doble precisió és:
En l'interval entre 252 (4 503 599 627 370 496) i 253 (9 007 199 254 740 992) l'espayat entre números és 1, per lo que solament són exactament representables els número entero (no es pot representar la part decimal). Per al ranc següent superior, de 253 a 254, tot es multiplica per 2, per lo que els números representables solament són els parells (espayat 2), i aixina en lo sucesivo (aumentant l'espayat en potències de 2). Simétricament, per al ranc anterior, de 251 a 252, l'espayat és de 0,5, podent-se representar exactament els número entero en este ranc i els valors intermijos (0,5, 1,5, etc). En els rancs que els antecedixen l'espayat entre números representables es va reduint en potències de 2. La separació com una fracció dels números en l'interval de 2n a 2n+1 és 2n-52. L'error màxim de grosseig relatiu quan es redoneja un número al representable més pròxim (denominat l'épsilon de la màquina) és per lo tant 2-53.
L'ample d'11 bits de l'exponent permet la representació de números en el ranc comprés entre 2-1023 i 2+1023 (10-308 i 10+308), en una precisió de 15 a 17 dígits decimals complets. En comprometre la precisió, la representació subnormal permet valors inclús més menuts fins a aproximadament 5 × 10-324.
Codificació de l'exponent
[editar | editar còdic]L'exponent del format en menge flotant de doble precisió és codificat usant una representació binaria biaixada en 1023 unitats, de modo que per a obtindre l'exponent verdader,deu restar-se el biaix de 1023 de l'exponent calculat.
Els exponents 00016 i 7ff16 tenen un significat especial:
00016s'usa per a representar zeros en signe (mantissa zero) i números subnormales (mantissa no nula).7ff16s'usa per a representar el valor infinit (∞), en mantissa zero i les cadenes no numèriques o NaN, en mantissa no nula.
a on F és la part fraccionaria del significant o mantissa.
Tots els patrons de bits són de codificació vàlida. Llevat en els casos anteriors, tot número de doble precisió es descriu per:
En el cas de valors subnormales, el número de doble precisió es descriu per mig de:
Velocitat d'eixecució en aritmètica de doble precisió
[editar | editar còdic]L'utilisació de variables de menge flotant de doble precisió i funcions matemàtiques (per eixemple: sen, coseno, arcotangente, logaritmo, exponencial i raïl quadrada) és més llenta que treballar en les seues contrapartes de simple precisió. Un àrea de computació a on es tracta d'un problema particular és per al còdic paralel que s'eixecuta en les GPUs. Per eixemple, quan s'utilisa la plataforma CUDA de NVIDIA, en les targetes de video dissenyades per a jocs, els càlculs en doble precisió tarden 3 a 24 voltes més en completar-se que els càlculs en simple precisió.[3]
Implementacions
[editar | editar còdic]Els formats de menge flotant de doble precisió són implementats en molts llenguages de programació en diverses formes. Els processadors que solament posseïxen precisió dinàmica com els x86 sense SSE2 (o quan SSE2 no és usat, per a propòsits de compatibilitat) i en precisió estesa, usada per defecte, el software pot tindre dificultats per a complir certs requisits.
C i C++
[editar | editar còdic]Cy C++ oferixen una àmplia varietat de tipos aritmètics. El format de doble precisió no és requerit pels estàndarts d'estos llenguages (llevat per l'Anex F opcional de C99 que cobrix l'aritmètica de la norma IEEE 754), pero en la majoria dels sistemes el tipo de variable double correspon a la doble precisió. No obstant, en processadors x86 de 32 bits en precisió estesa per defecte, alguns compiladors poden no complir en l'estàndart C i/o l'aritmètica pot sofrir problemes de doble grosseig.[4]
Object Pascal
[editar | editar còdic]Si be les versions primerenques de Pascal i Turbo Pascal no tenien soport per a Doble precisió, actualment existix soport complet per a números en menge flotants de doble precisisón en els compiladors més usats per a Object Pascal. Delphi, i Free Pascal inclouen el tipo Double com a números en menge flotant de 64 bits d'acort a l'estàndart IEEE-754.
Common Lisp
[editar | editar còdic]El llenguage de programació Common Lisp proporciona els tipos de variables SHORT-FLOAT, SINGLE-FLOAT, DOUBLE-FLOAT i LONG-FLOAT. La majoria de les implementacions proporcionen tipos SINGLE-FLOAT i DOUBLE-FLOAT en els atres tipos de sinònims apropiats. Common Lisp proporciona excepcions per a capturar subflujos de menge flotant i desbordament i l'excepció de menge flotant inexacta, segons IEEE 754. No hi ha valors infinits i les expressions no numèriques (NaNs) es descriuen en l'estàndart ANSI, no obstant, vàries implementacions sí proporcionen estes com a extensions.
JavaScript
[editar | editar còdic]Tal com s'especifica en la norma ECMAScript, tota l'aritmètica en JavaScript es realisarà utilisant aritmètica de menge flotant de doble precisió.[5]
Lua
[editar | editar còdic]En la versió 5.2[6] de Lua i anteriors, s'usa aritmètica de menge flotant de doble precisió. Ademés, es proporcionen conversió de tipo automàtic entre variables double (doble precisió) i string (cadenes).
Vore també
[editar | editar còdic]- Estabilitat numèrica
- Format en menge flotant de simple precisió
- IEEE Menge Flotant
- Tipo de senya elemental
Referències
[editar | editar còdic]- ↑ «IEEE Standard for Floating-Point Arithmetic» (en en). IEEE. Archivat des d'el original, el 6 de novembre de 2016. Consultat el 18 de març de 2017.
- ↑ William Kahan. «Lecture Notes on the Status of IEEE Standard 754 for Binary Floating-Point Arithmetic» (en en). Consultat el 14 de març de 2017.
- ↑ «[1]», Tom's Hardware Guide. Consultat el 14 de març de 2017 (en en).
- ↑ «323 – optimized code gives strange floating point results» (en en). gcc.gnu.org. Free Software Foundation. Consultat el 15 de març de 2017.
- ↑ «ECMA Standard-262: ECMAScript Language Specification» (en en). Ecma International. Consultat el 15 de març de 2017.
- ↑ «Lua 5.2 Reference Manual» (en en). www.lua.org. Consultat el 17 de març de 2017.
Referències
[editar | editar còdic]
- Este artícul conté una traducció derivada de «Formato en coma flotante de doble precisión» de Wikipedia en castellà publicada baix la Llicència de documentació lliure de GNU i la Llicència Creative Commons Reconeiximent-CompartirIgual 4.0 Internacional.