El número de precisión cuádruple ( ing. Precisión cuádruple ) es un formato de computadora para representar números de punto flotante, ocupando cuatro celdas consecutivas en la memoria (palabras de computadora; en el caso de una computadora de 32 bits - 128 bits o 16 bytes ). Por lo general, denota el formato de número de punto flotante binary128 estándar IEEE 754 .
Signo: 1 bit.
Orden: 15 bits [1] [2] .
Mantissa : 112 bits (112 [1] [2] se almacenan explícitamente).
Número equivalente de dígitos decimales significativos (con el mismo error de representación relativo promedio): 34 ( log 10 (2 113 ) ≈ 34.016 ).
Señal | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
(15 bits) Orden |
(112 bits) Mantisa | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
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 | dieciséis | quince | ocho | 7 | 0 |
Pequeñas constantes: [2]
0x 3fff 0000 0000 0000 0000 0000 0000 0000 = 1 0x c000 0000 0000 0000 0000 0000 0000 0000 = −2Número máximo y mínimo (normal) de precisión cuádruple: [3] [4] [2]
0x 7FFE FFFFFFFFFFFFFF FFFFFFFF ≈ 1,189731495357231765085757593262800702 × 10 4932 0X 0001 0000 0000 0000 0000 ≈ 3,36214311209350622677Números desnormalizados cuádruples : máximo y mínimo positivo: [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^-4966Ceros cuádruples: [2]
0x 0000 0000 0000 0000 0000 0000 0000 0000 = 0 0x 8000 0000 0000 0000 0000 0000 0000 0000 = -0Infinitos cuádruples: [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/3Varios compiladores, incluidos GCC (desde la versión 4.0, 2010 [5] ), IBM XL (10.1 [5] ), Intel, permiten el uso de números de precisión "Cuádruple" en programas C/C++ y Fortran (por ejemplo, como el tipo __float128 [6] , long double, REAL*16), implementando cálculos sobre ellos en software, 1-2 órdenes de magnitud más lentos que con precisión soportada por hardware [7] . Aunque tales cálculos se pueden implementar en sistemas de procesamiento de números de precisión arbitraria (por ejemplo , GMP ), existen varias bibliotecas especializadas con una implementación de software de precisión "Cuádruple" [8] [9] [10] . También se están desarrollando métodos para la implementación de hardware [11] [12] , pero a partir de 2005, la precisión cuádruple no se implementó en hardware en procesadores masivos [13] .
Para algunos métodos de solución, la precisión cuádruple permite una convergencia más rápida (el número de iteraciones del método) en comparación con la precisión doble, y cada iteración se vuelve más larga debido al uso de la implementación de software de operaciones con números [14] .
Existe un enfoque de "doble-doble" para implementar números con una precisión casi cuádruple pero usando un formato de exponente más corto (a veces implementado en compiladores Fortran para el tipo REAL*16). Con este enfoque, por ejemplo, sumar dos números "doble-doble" requiere 8 operaciones de suma y resta y una comparación entre dobles [13] .