IEEE 754-1985 [1] fue un estándar de la industria para representar números de punto flotante en computadoras , adoptado oficialmente en 1985 y reemplazado en 2008 por IEEE 754-2008 , y luego nuevamente en 2019 por una revisión menor IEEE 754-2019 . [2] Durante sus 23 años, fue el formato más utilizado para el cálculo de punto flotante. Se implementó en software, en forma de bibliotecas de punto flotante , y en hardware, en las instrucciones de muchas CPU y FPU . El primer circuito integradoPara implementar el borrador de lo que se convertiría en IEEE 754-1985 fue el Intel 8087 .
IEEE 754-1985 representa números en binario , proporcionando definiciones para cuatro niveles de precisión, de los cuales los dos más comúnmente utilizados son:
Nivel | Ancho | Alcance con total precisión | Precisión [a] |
---|---|---|---|
Precisión simple | 32 bits | ± 1,18 × 10 - 38 a ± 3,4 × 10 38 | Aproximadamente 7 dígitos decimales |
Precisión doble | 64 bits | ± 2,23 × 10 - 308 a ± 1,80 × 10 308 | Aproximadamente 16 dígitos decimales |
El estándar también define representaciones para infinito positivo y negativo , un " cero negativo ", cinco excepciones para manejar resultados no válidos como división por cero , valores especiales llamados NaN para representar esas excepciones, números desnormales para representar números más pequeños que los mostrados arriba y cuatro redondeos. modos.
Representación de números
Los números de coma flotante en formato IEEE 754 constan de tres campos: un bit de signo , un exponente sesgado y una fracción. El siguiente ejemplo ilustra el significado de cada uno.
El número decimal 0.15625 10 representado en binario es 0.00101 2 (es decir, 1/8 + 1/32). (Los subíndices indican la base numérica ). De manera análoga a la notación científica , donde los números se escriben para tener un solo dígito distinto de cero a la izquierda del punto decimal, reescribimos este número para que tenga un solo 1 bit a la izquierda del " punto binario ". Simplemente multiplicamos por la potencia apropiada de 2 para compensar el desplazamiento de los bits que quedan en tres posiciones:
Ahora podemos leer la fracción y el exponente: la fracción es .01 2 y el exponente es −3.
Como se ilustra en las imágenes, los tres campos en la representación IEEE 754 de este número son:
- signo = 0, porque el número es positivo. (1 indica negativo).
- exponente sesgado = −3 + el "sesgo". En precisión simple , el sesgo es 127 , por lo que en este ejemplo el exponente sesgado es 124; en doble precisión , el sesgo es 1023 , por lo que el exponente sesgado en este ejemplo es 1020.
- fracción = .01000… 2 .
IEEE 754 agrega un sesgo al exponente para que, en muchos casos, los números puedan compararse convenientemente con el mismo hardware que compara enteros en complemento a 2 con signo . Usando un exponente sesgado, el menor de dos números de coma flotante positivos saldrá "menor que" el mayor siguiendo el mismo orden que para los números enteros de signo y magnitud . Si dos números de punto flotante tienen signos diferentes, la comparación de signo y magnitud también funciona con exponentes sesgados. Sin embargo, si ambos números de punto flotante con exponente sesgado son negativos, entonces el orden debe invertirse. Si el exponente se representara como, digamos, un número en complemento a 2, la comparación para ver cuál de los dos números es mayor no sería tan conveniente.
El bit 1 inicial se omite ya que todos los números, excepto el cero, comienzan con 1 inicial; el 1 inicial es implícito y no es necesario almacenarlo, lo que proporciona un poco de precisión adicional de forma "gratuita".
Cero
El número cero se representa especialmente:
- signo = 0 para cero positivo , 1 para cero negativo .
- exponente sesgado = 0.
- fracción = 0.
Números desnormalizados
Las representaciones numéricas descritas anteriormente se denominan normalizadas, lo que significa que el dígito binario principal implícito es un 1. Para reducir la pérdida de precisión cuando se produce un subdesbordamiento , IEEE 754 incluye la capacidad de representar fracciones más pequeñas de lo que son posibles en la representación normalizada, haciendo el primer dígito implícito es un 0. Estos números se denominan desnormal . No incluyen tantos dígitos significativos como un número normalizado, pero permiten una pérdida gradual de precisión cuando el resultado de una operación aritmética no es exactamente cero pero está demasiado cerca de cero para ser representado por un número normalizado.
Un número desnormal se representa con un exponente sesgado de todos los bits 0, que representa un exponente de −126 en precisión simple (no −127) o −1022 en precisión doble (no −1023). [3] Por el contrario, el exponente sesgado más pequeño que representa un número normal es 1 (ver ejemplos a continuación).
Representación de no números
El campo de exponente sesgado se llena con todos los bits 1 para indicar infinito o un resultado no válido de un cálculo.
Infinito positivo y negativo
El infinito positivo y negativo se representan así:
- signo = 0 para infinito positivo, 1 para infinito negativo.
- exponente sesgado = todos los bits 1.
- fracción = todos 0 bits.
Yaya
Algunas operaciones de la aritmética de punto flotante no son válidas, como sacar la raíz cuadrada de un número negativo. El acto de alcanzar un resultado no válido se denomina excepción de punto flotante . Un resultado excepcional está representado por un código especial llamado NaN, que significa " No es un número ". Todos los NaN en IEEE 754-1985 tienen este formato:
- signo = 0 o 1.
- exponente sesgado = todos los bits 1.
- fracción = cualquier cosa excepto los 0 bits (ya que todos los 0 bits representan infinito).
Alcance y precisión
La precisión se define como la diferencia mínima entre dos representaciones de mantisa sucesivas; por tanto, es una función sólo en la mantisa; mientras que la brecha se define como la diferencia entre dos números sucesivos. [4]
Precisión simple
Los números de precisión simple ocupan 32 bits. En precisión simple:
- Los números positivos y negativos más cercanos a cero (representados por el valor desnormalizado con todos 0 en el campo de exponente y el valor binario 1 en el campo de fracción) son
- ± 2 −23 × 2 −126 ≈ ± 1,40130 × 10 −45
- Los números normalizados positivos y negativos más cercanos a cero (representados con el valor binario 1 en el campo de exponente y 0 en el campo de fracción) son
- ± 1 × 2 −126 ≈ ± 1,17549 × 10 −38
- Los números finitos positivos y negativos finitos más alejados de cero (representados por el valor con 254 en el campo de exponente y todos los 1 en el campo de fracción) son
- ± (2-2 -23 ) x 2 127 [5] ≈ ± 3,40282 × 10 38
Algunos ejemplos de valores de intervalo y espacio para exponentes dados con precisión simple:
Exponente real (sin sesgo) | Exp (sesgado) | Mínimo | Máximo | Brecha |
---|---|---|---|---|
−1 | 126 | 0,5 | ≈ 0,999999940395 | ≈ 5.96046e-8 |
0 | 127 | 1 | ≈ 1.999999880791 | ≈ 1.19209e-7 |
1 | 128 | 2 | ≈ 3.999999761581 | ≈ 2.38419e-7 |
2 | 129 | 4 | ≈ 7,999999523163 | ≈ 4.76837e-7 |
10 | 137 | 1024 | ≈ 2047.999877930 | ≈ 1.22070e-4 |
11 | 138 | 2048 | ≈ 4095.999755859 | ≈ 2.44141e-4 |
23 | 150 | 8388608 | 16777215 | 1 |
24 | 151 | 16777216 | 33554430 | 2 |
127 | 254 | ≈ 1.70141e38 | ≈ 3.40282e38 | ≈ 2.02824e31 |
Por ejemplo, 16.777.217 no se puede codificar como un flotante de 32 bits, ya que se redondeará a 16.777.216. Esto muestra por qué la aritmética de coma flotante no es adecuada para el software de contabilidad. Sin embargo, todos los enteros dentro del rango representable que sean una potencia de 2 se pueden almacenar en un flotante de 32 bits sin redondeo.
Precisión doble
Los números de doble precisión ocupan 64 bits. En doble precisión:
- Los números positivos y negativos más cercanos a cero (representados por el valor desnormalizado con todos 0 en el campo Exp y el valor binario 1 en el campo Fracción) son
- ± 2 −52 × 2 −1022 ≈ ± 4,94066 × 10 −324
- Los números normalizados positivos y negativos más cercanos a cero (representados con el valor binario 1 en el campo Exp y 0 en el campo de fracción) son
- ± 1 × 2 −1022 ≈ ± 2,22507 × 10 −308
- Los números finitos positivos y negativos finitos más alejados de cero (representados por el valor con 2046 en el campo Exp y todos los 1 en el campo de fracción) son
- ± (2−2 −52 ) × 2 1023 [5] ≈ ± 1.79769 × 10 308
Algunos ejemplos de valores de intervalo y espacio para exponentes dados con doble precisión:
Exponente real (sin sesgo) | Exp (sesgado) | Mínimo | Máximo | Brecha |
---|---|---|---|---|
−1 | 1022 | 0,5 | ≈ 0.999999999999999888978 | ≈ 1.11022e-16 |
0 | 1023 | 1 | ≈ 1.999999999999999777955 | ≈ 2.22045e-16 |
1 | 1024 | 2 | ≈ 3.999999999999999555911 | ≈ 4.44089e-16 |
2 | 1025 | 4 | ≈ 7,999999999999999111822 | ≈ 8.88178e-16 |
10 | 1033 | 1024 | ≈ 2047.999999999999772626 | ≈ 2.27374e-13 |
11 | 1034 | 2048 | ≈ 4095.999999999999545253 | ≈ 4.54747e-13 |
52 | 1075 | 4503599627370496 | 9007199254740991 | 1 |
53 | 1076 | 9007199254740992 | 18014398509481982 | 2 |
1023 | 2046 | ≈ 8.98847e307 | ≈ 1.79769e308 | ≈ 1.99584e292 |
Formatos extendidos
El estándar también recomienda el uso de formatos extendidos para realizar cálculos internos con una precisión mayor que la requerida para el resultado final, para minimizar los errores de redondeo: el estándar solo especifica requisitos mínimos de precisión y exponente para tales formatos. El formato extendido x87 de 80 bits es el formato extendido más comúnmente implementado que cumple con estos requisitos.
Ejemplos de
A continuación, se muestran algunos ejemplos de representaciones IEEE 754 de precisión simple:
Tipo | Firmar | Exponente real | Exp (sesgado) | Campo de exponente | Campo de fracción | Valor |
---|---|---|---|---|---|---|
Cero | 0 | −126 | 0 | 0000 0000 | 000 0000 0000 0000 0000 0000 | 0.0 |
Cero negativo | 1 | −126 | 0 | 0000 0000 | 000 0000 0000 0000 0000 0000 | −0,0 |
Uno | 0 | 0 | 127 | 0111 1111 | 000 0000 0000 0000 0000 0000 | 1.0 |
Menos uno | 1 | 0 | 127 | 0111 1111 | 000 0000 0000 0000 0000 0000 | −1,0 |
Número desnormalizado más pequeño | * | −126 | 0 | 0000 0000 | 000 0000 0000 0000 0000 0001 | ± 2 −23 × 2 −126 = ± 2 −149 ≈ ± 1,4 × 10 - 45 |
Número desnormalizado "medio" | * | −126 | 0 | 0000 0000 | 100 0000 0000 0000 0000 0000 | ± 2 −1 × 2 −126 = ± 2 −127 ≈ ± 5,88 × 10 - 39 |
Mayor número desnormalizado | * | −126 | 0 | 0000 0000 | 111 1111 1111 1111 1111 1111 | ± (1−2 −23 ) × 2 −126 ≈ ± 1,18 × 10 - 38 |
Número normalizado más pequeño | * | −126 | 1 | 0000 0001 | 000 0000 0000 0000 0000 0000 | ± 2 −126 ≈ ± 1,18 × 10 - 38 |
Mayor número normalizado | * | 127 | 254 | 1111 1110 | 111 1111 1111 1111 1111 1111 | ± (2−2 −23 ) × 2127 ≈ ± 3,4 × 10 38 |
Infinito positivo | 0 | 128 | 255 | 1111 1111 | 000 0000 0000 0000 0000 0000 | + ∞ |
Infinito negativo | 1 | 128 | 255 | 1111 1111 | 000 0000 0000 0000 0000 0000 | −∞ |
No un número | * | 128 | 255 | 1111 1111 | distinto de cero | Yaya |
* El bit de signo puede ser 0 o 1. |
Comparar números de punto flotante
Cada combinación de bits posible es un NaN o un número con un valor único en el sistema de números reales afines extendido con su orden asociado, excepto por las dos combinaciones de bits para cero negativo y cero positivo, que a veces requieren atención especial (ver más abajo). . La representación binaria tiene la propiedad especial de que, excluyendo los NaN, dos números cualesquiera se pueden comparar como números enteros de signo y magnitud (se aplican cuestiones de endianidad ). Al comparar como enteros en complemento a 2 : si los bits de signo difieren, el número negativo precede al número positivo, por lo que el complemento a 2 da el resultado correcto (excepto que el cero negativo y el cero positivo deben considerarse iguales). Si ambos valores son positivos, la comparación del complemento a 2 nuevamente da el resultado correcto. De lo contrario (dos números negativos), el orden FP correcto es el opuesto al orden del complemento a 2.
Los errores de redondeo inherentes a los cálculos de coma flotante pueden limitar el uso de comparaciones para verificar la igualdad exacta de los resultados. Elegir un rango aceptable es un tema complejo. Una técnica común es utilizar un valor épsilon de comparación para realizar comparaciones aproximadas. [6] Dependiendo de cuán indulgentes sean las comparaciones, los valores comunes incluyen 1e-6
o 1e-5
para precisión simple y 1e-14
para precisión doble. [7] [8] Otra técnica común es ULP, que verifica cuál es la diferencia en los dígitos del último lugar, verificando efectivamente a cuántos pasos están los dos valores. [9]
Aunque el cero negativo y el cero positivo generalmente se consideran iguales para fines de comparación, algunos operadores relacionales de lenguaje de programación y construcciones similares los tratan como distintos. De acuerdo con el Java Language Specification, [10] de comparación y operadores de igualdad de los tratan como iguales, pero y los distinguen (que comienza oficialmente con Java versión 1.1, pero en realidad con 1.1.1), al igual que los métodos de comparación , e incluso de clases y .Math.min()
Math.max()
equals()
compareTo()
compare()
Float
Double
Redondeo de números de coma flotante
El estándar IEEE tiene cuatro modos de redondeo diferentes; el primero es el predeterminado; los otros se denominan redondeos dirigidos .
- Redondear al más cercano : redondea al valor más cercano; si el número cae a la mitad, se redondea al valor más cercano con un bit par (cero) menos significativo, lo que significa que se redondea al alza el 50% del tiempo (en IEEE 754-2008 este modo se llama roundTiesToEven para distinguirlo de otra ronda -al modo más cercano)
- Redondear hacia 0 : redondeo dirigido hacia cero
- Redondear hacia + ∞ - redondeo dirigido hacia infinito positivo
- Redondear hacia −∞ - redondeo dirigido hacia infinito negativo.
Extendiendo los números reales
El estándar IEEE emplea (y amplía) el sistema de números reales afinadamente extendido , con infinitos positivos y negativos separados. Durante la redacción, hubo una propuesta para que el estándar incorpore el sistema de números reales extendido proyectivamente , con un solo infinito sin signo, proporcionando a los programadores una opción de selección de modo. Sin embargo, con el interés de reducir la complejidad del estándar final, se abandonó el modo proyectivo. Los coprocesadores de punto flotante Intel 8087 e Intel 80287 admiten este modo proyectivo. [11] [12] [13]
Funciones y predicados
Operaciones estándar
Deben proporcionarse las siguientes funciones:
- Sumar, restar, multiplicar, dividir
- Raíz cuadrada
- Resto de punto flotante. Esto no es como una operación de módulo normal , puede ser negativo para dos números positivos. Devuelve el valor exacto de x– (round (x / y) · y) .
- Redondea al entero más cercano . Para redondeo no dirigido cuando se encuentra a medio camino entre dos números enteros, se elige el número entero par.
- Operaciones de comparación. Además de los resultados más obvios, IEEE 754 define que −∞ = −∞, + ∞ = + ∞ y x ≠
NaN
para cualquier x (incluidoNaN
).
Funciones y predicados recomendados
copysign(x,y)
devuelve x con el signo de y, por lo queabs(x)
es igualcopysign(x,1.0)
. Esta es una de las pocas operaciones que opera en un NaN de una manera que se asemeja a la aritmética. La funcióncopysign
es nueva en el estándar C99.- −x devuelve x con el signo invertido. Esto es diferente de 0 − x en algunos casos, notablemente cuando x es 0. Entonces - (0) es −0, pero el signo de 0−0 depende del modo de redondeo.
scalb(y, N)
logb(x)
finite(x)
un predicado para "x es un valor finito", equivalente a −Infisnan(x)
un predicado para "x es un NaN", equivalente a "x ≠ x"x <> y
, que resulta tener un comportamiento diferente al de NOT (x = y) debido a NaN.unordered(x, y)
es verdadero cuando "x no está ordenado con y", es decir, x o y es un NaN.class(x)
nextafter(x,y)
devuelve el siguiente valor representable de x en la dirección hacia y
Historia
En 1976, Intel estaba iniciando el desarrollo de un coprocesador de punto flotante . [14] [15] Intel esperaba poder vender un chip que contuviera buenas implementaciones de todas las operaciones que se encuentran en las bibliotecas de software matemático que varían ampliamente. [14] [16]
John Palmer, quien dirigió el proyecto, los convenció de que deberían intentar desarrollar un estándar para todas sus operaciones de punto flotante. Se puso en contacto con William Kahan de la Universidad de California , quien había ayudado a mejorar la precisión de las calculadoras de Hewlett-Packard . Kahan sugirió que Intel use el punto flotante del VAX de Digital Equipment Corporation (DEC). El primer VAX, el VAX-11/780 acababa de salir a finales de 1977 y su punto flotante era muy apreciado. Sin embargo, tratando de comercializar su chip en el mercado más amplio posible, Intel quería el mejor punto flotante posible, y Kahan pasó a redactar las especificaciones. [14] Kahan inicialmente recomendó que la base de coma flotante fuera decimal [17] pero el diseño de hardware del coprocesador era demasiado avanzado para hacer ese cambio.
El trabajo dentro de Intel preocupó a otros proveedores, que establecieron un esfuerzo de estandarización para garantizar un "campo de juego nivelado". Kahan asistió a la segunda reunión del grupo de trabajo de estándares IEEE 754, celebrada en noviembre de 1977. Aquí, recibió permiso de Intel para presentar un borrador de propuesta basado en la parte aritmética estándar de su diseño para un coprocesador; se le permitió explicar las decisiones de diseño de Intel y su razonamiento subyacente, pero no nada relacionado con la arquitectura de implementación de Intel. [14] [15] [16] [18]
Como un exponente de 8 bits no era lo suficientemente ancho para algunas operaciones deseadas para números de doble precisión, por ejemplo, para almacenar el producto de dos números de 32 bits, [19] tanto la propuesta de Kahan como una contrapropuesta de DEC utilizaron 11 bits, como el formato de coma flotante de 60 bits probado en el tiempo del CDC 6600 de 1965. [15] [18] [20] La propuesta de Kahan también preveía infinitos, que son útiles cuando se trata de condiciones de división por cero; valores no numéricos, que son útiles cuando se trata de operaciones no válidas; números desnormales , que ayudan a mitigar los problemas causados por subdesbordamiento; [18] [21] [22] y un sesgo de exponente mejor equilibrado , que puede ayudar a evitar el desbordamiento y el subdesbordamiento al tomar el recíproco de un número. [23] [24]
Incluso antes de su aprobación, varios fabricantes habían implementado el proyecto de norma. [25] [26] El Intel 8087, que se anunció en 1980, fue el primer chip en implementar el borrador del estándar.
En 1980, el chip Intel 8087 ya fue lanzado, [27] pero DEC siguió oponiéndose, en particular a los números desnormales, debido a problemas de rendimiento y dado que le daría a DEC una ventaja competitiva para estandarizar el formato de DEC.
Los argumentos sobre el desbordamiento gradual duraron hasta 1981, cuando un experto contratado por DEC para evaluarlo se puso del lado de los disidentes. DEC hizo el estudio para demostrar que el subdesbordamiento gradual era una mala idea, pero el estudio concluyó lo contrario y DEC cedió. En 1985, el estándar fue ratificado, pero ya se había convertido en el estándar de facto un año antes. implementado por muchos fabricantes. [15] [18] [28]
Ver también
- IEEE 754
- Minifloat para ejemplos simples de propiedades de números de punto flotante IEEE 754
- Aritmética de punto fijo
Notas
- ^ Precisión: La precisión del número de dígitos decimales se calcula mediante number_of_mantissa_bits * Log 10 (2). Por lo tanto, ~ 7.2 y ~ 15.9 para precisión simple y doble respectivamente.
Referencias
- ^ Estándar IEEE para aritmética binaria de coma flotante . 1985. doi : 10.1109 / IEEESTD.1985.82928 . ISBN 0-7381-1165-1.
- ^ "Norma ANSI / IEEE 754-2019" . 754r.ucbtest.org . Consultado el 6 de agosto de 2019 .
- ^ Hennessy (2009). Organización y Diseño de Computadores . Morgan Kaufmann. pag. 270 .
- ^ Hossam AH Fahmy; Shlomo Waser; Michael J. Flynn, Computer Arithmetic (PDF) , archivado desde el original (PDF) el 2010-10-08 , consultado el 2011-01-02
- ^ a b William Kahan . "Notas de la conferencia sobre el estado de IEEE 754" (PDF) . 1 de octubre de 1997 3:36 am. Electo. Ing. Y la Universidad de Ciencias de la Computación de California . Consultado el 12 de abril de 2007 . Cite journal requiere
|journal=
( ayuda ) - ^ "Godot math_funcs.h" . GitHub.com .
- ^ "Godot math_defs.h" . GitHub.com .
- ^ "Godot MathfEx.cs" . GitHub.com .
- ^ "Comparación de números de punto flotante, edición de 2012" . randomascii.wordpress.com .
- ^ "Especificaciones de máquina virtual y lenguaje Java" . Documentación de Java .
- ^ John R. Hauser (marzo de 1996). "Manejo de excepciones de punto flotante en programas numéricos" (PDF) . Transacciones ACM sobre lenguajes y sistemas de programación . 18 (2): 139-174. doi : 10.1145 / 227699.227701 . S2CID 9820157 .
- ^ David Stevenson (marzo de 1981). "Tarea IEEE P754: un estándar propuesto para aritmética de coma flotante binaria". Computadora IEEE . 14 (3): 51–62. doi : 10.1109 / CM.1981.220377 .
- ^ William Kahan y John Palmer (1979). "Sobre un estándar de punto flotante propuesto". Boletín SIGNUM . 14 (Especial): 13-21. doi : 10.1145 / 1057520.1057522 . S2CID 16981715 .
- ^ a b c d "Intel y el punto flotante: actualización de uno de los estándares más exitosos de la industria: la visión tecnológica para el estándar de punto flotante" (PDF) . Intel . 2016. Archivado desde el original (PDF) el 4 de marzo de 2016 . Consultado el 30 de mayo de 2016 . (11 páginas)
- ^ a b c d "Una entrevista con el anciano de Floating-Point" . cs.berkeley.edu. 1998-02-20 . Consultado el 30 de mayo de 2016 .
- ^ a b Woehr, Jack, ed. (1 de noviembre de 1997). "Una conversación con William Kahan" . Dr. Dobb's . drdobbs.com . Consultado el 30 de mayo de 2016 .
- ^ W. Kahan, 2003, pers. com. a Mike Cowlishaw y otros después de una reunión IEEE 754 [ fuente no confiable? ]
- ^ a b c d "IEEE 754: una entrevista con William Kahan" (PDF) . dr-chuck.com . Consultado el 2 de junio de 2016 .
- ^ "IEEE vs formato binario de Microsoft; problemas de redondeo (completo)" . Soporte de Microsoft . Microsoft . 2006-11-21. ID de artículo KB35826, Q35826. Archivado desde el original el 28 de agosto de 2020 . Consultado el 24 de febrero de 2010 .
- ^ Thornton, James E. (1970). Escrito en el Laboratorio de Diseño Avanzado, Control Data Corporation. Diseño de una computadora: Los datos de control 6600 (PDF) (1 ed.). Glenview, Illinois, Estados Unidos: Scott, Foresman and Company . LCCN 74-96462 . Archivado (PDF) desde el original el 28 de agosto de 2020 . Consultado el 2 de junio de 2016 . (1 + 13 + 181 + 2 + 2 páginas)
- ^ Kahan, William Morton . "¿Por qué necesitamos un estándar aritmético de punto flotante?" (PDF) . cs.berkeley.edu . Consultado el 2 de junio de 2016 .
- ^ Kahan, William Morton ; Darcy, Joseph D. "Cómo el punto flotante de Java perjudica a todos en todas partes" (PDF) . cs.berkeley.edu . Consultado el 2 de junio de 2016 .
- ^ Turner, Peter R. (21 de diciembre de 2013). Análisis numérico y procesamiento paralelo: conferencias impartidas en The Lancaster… . ISBN 978-3-66239812-8. Consultado el 30 de mayo de 2016 .
- ^ "Nombres para formatos de coma flotante estandarizados" (PDF) . cs.berkeley.edu . Consultado el 2 de junio de 2016 .
- ^ Charles Severance (20 de febrero de 1998). "Una entrevista con el anciano de Floating-Point" .
- ^ Charles Severance . "Historia del formato de coma flotante IEEE" . Conexiones.
- ^ "Expresiones moleculares: ciencia, óptica y usted - Olympus MIC-D: Galería de circuitos integrados - Coprocesador matemático Intel 8087" . micro.magnet.fsu.edu . Consultado el 30 de mayo de 2016 .
- ^ Kahan, William Morton . "Estándar IEEE 754 para aritmética de coma flotante binaria" (PDF) . cs.berkeley.edu . Consultado el 2 de junio de 2016 .
Otras lecturas
- Charles Severance (marzo de 1998). "IEEE 754: una entrevista con William Kahan" (PDF) . Computadora IEEE . 31 (3): 114-115. doi : 10.1109 / MC.1998.660194 . S2CID 33291145 . Archivado desde el original (PDF) el 23 de agosto de 2009 . Consultado el 28 de abril de 2008 .
- David Goldberg (marzo de 1991). "Lo que todo informático debe saber sobre la aritmética de punto flotante" (PDF) . Encuestas de computación ACM . 23 (1): 5–48. doi : 10.1145 / 103162.103163 . S2CID 222008826 . Consultado el 28 de abril de 2008 .
- Chris Hecker (febrero de 1996). "Vayamos al punto (flotante)" (PDF) . Revista para desarrolladores de juegos : 19-24. ISSN 1073-922X . Archivado desde el original (PDF) el 2007-02-03.
- David Monniaux (mayo de 2008). "Las trampas de verificar cálculos de punto flotante" . Transacciones ACM sobre lenguajes y sistemas de programación . 30 (3): 1–41. arXiv : cs / 0701192 . doi : 10.1145 / 1353445.1353446 . ISSN 0164-0925 . S2CID 218578808 .: Un compendio de comportamientos no intuitivos de punto flotante en arquitecturas populares, con implicaciones para la verificación y prueba de programas.
enlaces externos
- Comparando flotadores
- Coprocessor.info: imágenes de x87 FPU, información sobre el desarrollo y el fabricante
- IEEE 854-1987 - Historial y actas
- Convertidor en línea IEEE754 (precisión simple y doble)