stringtranslate.com

Revisión IEEE 754-2008

IEEE 754-2008 (anteriormente conocido como IEEE 754r ) es una revisión del estándar IEEE 754 para aritmética de punto flotante . Se publicó en agosto de 2008 y es una revisión importante del estándar IEEE 754-1985 y lo reemplaza . La revisión de 2008 amplió el estándar anterior donde era necesario, agregó formatos y aritmética decimal, endureció ciertas áreas del estándar original que quedaron sin definir y se fusionó en IEEE 854 (el estándar de punto flotante independiente de la raíz). En algunos casos, donde las definiciones más estrictas de aritmética binaria de punto flotante podrían ser incompatibles con alguna implementación existente, se hicieron opcionales. En 2019 se actualizó con una revisión menor IEEE 754-2019 . [1]

Proceso de revisión

El estándar había estado bajo revisión desde 2000, con una fecha prevista de finalización para diciembre de 2006. La revisión de un estándar IEEE sigue en términos generales tres fases:

  1. Grupo de trabajo: un comité que crea un borrador de norma
  2. Boleta: las partes interesadas se suscriben al grupo de votación y votan el borrador (el 75% del grupo debe participar y el 75% debe aprobar para que el borrador siga adelante); los comentarios de las votaciones son resueltos por un Comité de Resolución de Boletas (BRC) y los cambios realizados deben recircularse con una nueva boleta si son sustanciales.
  3. Cuando se resuelven todos los comentarios y no hay más cambios, el borrador se envía al IEEE para su revisión, aprobación y publicación (esto también puede resultar en cambios y votaciones, aunque esto es poco común).

El 11 de junio de 2008, fue aprobado por unanimidad por el Comité de Revisión de IEEE (RevCom) y formalmente aprobado por la Junta de Estándares de IEEE-SA el 12 de junio de 2008. Fue publicado el 29 de agosto de 2008.

Fase del grupo de trabajo 754r

La participación en la redacción de la norma estaba abierta a personas con sólidos conocimientos de aritmética de punto flotante. Más de 90 personas asistieron al menos a una de las reuniones mensuales, que se celebraron en Silicon Valley , y muchas más participaron a través de la lista de correo.

Los progresos fueron a veces lentos, lo que llevó al presidente a declarar en la reunión del 15 de septiembre de 2005 [2] que "no se están realizando progresos; por estos motivos, suspendo estas reuniones hasta nuevo aviso". En diciembre de 2005, el comité se reorganizó según nuevas reglas con una fecha de finalización prevista para diciembre de 2006.

En febrero de 2006 se adoptaron nuevas políticas y procedimientos. En septiembre de 2006, se aprobó un borrador de trabajo para enviarlo al comité patrocinador principal (el Comité de Estándares de Microprocesadores del IEEE, o MSC) para su edición y envío a la boleta de patrocinadores.

Fase de votación 754r

La última versión del borrador, la versión 1.2.5, presentada al MSC fue el 4 de octubre de 2006. [3] El MSC aceptó el borrador el 9 de octubre de 2006. El borrador se modificó significativamente en detalles durante el proceso de votación.

La primera votación de los patrocinadores tuvo lugar del 29 de noviembre de 2006 al 28 de diciembre de 2006. De los 84 miembros del órgano de votación, el 85,7% respondió y el 78,6% votó a favor. Hubo votos negativos (y más de 400 comentarios), por lo que hubo una votación de recirculación en marzo de 2007; esto recibió una aprobación del 84%. Hubo suficientes comentarios (más de 130) de esa votación de que se preparó un tercer borrador para la segunda votación de recirculación de 15 días que comenzó a mediados de abril de 2007. Por una razón técnica, el proceso de votación se reinició con la cuarta votación en octubre. 2007; también hubo cambios sustanciales en el borrador resultantes de los comentarios de 650 votantes y de las solicitudes del patrocinador (el IEEE MSC); esta votación simplemente no logró alcanzar el 75% de aprobación requerido. La quinta votación tuvo una tasa de respuesta del 98,0% con una aprobación del 91,0%, y los comentarios condujeron a cambios relativamente pequeños. Las votaciones sexta, séptima y octava mantuvieron índices de aprobación de más del 90% con progresivamente menos comentarios en cada borrador; el octavo (que no tenía comentarios dentro del alcance: 9 eran repeticiones de comentarios anteriores y uno hacía referencia a material que no estaba en el borrador) se presentó al Comité de Revisión de Estándares del IEEE ("RevCom") para su aprobación como estándar del IEEE.

Fase de revisión y aprobación del 754r

El Comité de Revisión de Estándares IEEE (RevCom) consideró y aprobó por unanimidad el borrador IEEE 754r en su reunión de junio de 2008, y fue aprobado por la Junta de Estándares IEEE-SA el 12 de junio de 2008. La edición final está completa y el documento ahora ha sido enviado a Departamento de Publicaciones de Estándares IEEE para su publicación.

Publicación de la norma IEEE 754-2008

El nuevo IEEE 754 (formalmente IEEE Std 754-2008, el estándar IEEE para aritmética de punto flotante) fue publicado por IEEE Computer Society el 29 de agosto de 2008 y está disponible en el sitio web de IEEE Xplore [4].

Este estándar reemplaza al IEEE 754-1985 . IEEE 854, el estándar de punto flotante independiente de Radix, fue retirado en diciembre de 2008.

Resumen de las revisiones

Las mejoras más obvias al estándar son la adición de un tipo binario de 16 y 128 bits y tres tipos decimales, algunas operaciones nuevas y muchas funciones recomendadas. Sin embargo, ha habido importantes aclaraciones terminológicas en todo momento. Este resumen destaca las principales diferencias en cada cláusula principal de la norma.

Cláusula 1: Descripción general

El alcance (determinado por el patrocinador del estándar) se ha ampliado para incluir formatos decimales y aritméticos, y agrega formatos extensibles.

Cláusula 2: Definiciones

Muchas de las definiciones se han reescrito para mayor claridad y coherencia. Se ha cambiado el nombre de algunos términos para mayor claridad (por ejemplo, se ha cambiado el nombre de desnormalizado a subnormal ).

Cláusula 3: Formatos

Se ha regularizado la descripción de formatos, distinguiendo entre formatos aritméticos (en los que se puede realizar aritmética) y formatos de intercambio (que tienen una codificación estándar). La conformidad con la norma ahora se define en estos términos.

Se han enumerado los niveles de especificación de un formato de punto flotante para aclarar la distinción entre:

  1. los números reales teóricos (una recta numérica extendida)
  2. las entidades que se pueden representar en el formato (un conjunto finito de números, junto con −0 , infinitos y NaN )
  3. las representaciones particulares de las entidades: signo-exponente-significativo, etc.
  4. el patrón de bits (codificación) utilizado.

Luego se explican en detalle los conjuntos de entidades representables, mostrando que pueden tratarse considerando el significado como una fracción o un número entero. Se definen los conjuntos particulares conocidos como formatos básicos y se explican las codificaciones utilizadas para el intercambio de formatos binarios y decimales.

A los formatos de intercambio binario se les añade la " precisión media " (formato de almacenamiento de 16 bits) y la " precisión cuádruple " (formato de 128 bits), junto con fórmulas generalizadas para algunos formatos más amplios; los formatos básicos tienen codificaciones de 32, 64 y 128 bits.

Se describen tres nuevos formatos decimales, que coinciden con las longitudes de los formatos binarios de 32 a 128 bits. Estos proporcionan formatos de intercambio decimal con significados de 7, 16 y 34 dígitos, que pueden estar normalizados o no normalizados. Para obtener el máximo rango y precisión, los formatos fusionan parte del exponente y el significado en un campo combinado y comprimen el resto del significado utilizando una codificación de entero decimal (que utiliza Decimal densamente empaquetado o DPD, una forma comprimida de BCD ). o codificación de enteros binarios convencional . Los formatos básicos son los dos tamaños más grandes, que tienen codificaciones de 64 y 128 bits. También se especifican fórmulas generalizadas para algunos otros formatos de intercambio.

Los formatos ampliados y ampliables permiten la aritmética con otras precisiones y rangos.

Cláusula 4: Atributos y redondeo

Esta cláusula se ha modificado para fomentar el uso de atributos estáticos para controlar operaciones de punto flotante y (además de los atributos de redondeo requeridos) permitir un manejo alternativo de excepciones, ampliación de resultados intermedios, optimizaciones de cambio de valores y reproducibilidad.

Se ha agregado el atributo de redondeo de redondeo al más cercano, alejado del cero (requerido solo para operaciones decimales).

Cláusula 5: Operaciones

Esta sección tiene numerosas aclaraciones (notablemente en el área de comparaciones) y ahora se requieren varias operaciones previamente recomendadas (como copiar, negar, abs y clase).

Las nuevas operaciones incluyen multiplicación-suma fusionada (FMA), conversiones explícitas, predicados de clasificación (isNan( x ), etc.), varias funciones mínimas y máximas, un predicado de orden total y dos operaciones decimales específicas (samequantum y quantize).

Mínimo y máximo

Las operaciones mínima y máxima están definidas, pero dejan cierto margen para el caso en que las entradas sean iguales en valor pero difieran en representación. En particular:

Para admitir operaciones como la creación de ventanas en las que una entrada NaN debe reemplazarse silenciosamente con uno de los puntos finales, se definen min y max para seleccionar un número, x , en lugar de un NaN silencioso:

Estas funciones se denominan minNum y maxNum para indicar su preferencia por un número sobre un NaN silencioso. Sin embargo, en presencia de una entrada NaN de señalización, se devuelve un NaN silencioso como ocurre con las operaciones habituales. Después de la publicación de la norma, se observó que estas reglas hacen que estas operaciones no sean asociativas; por este motivo han sido sustituidos por nuevas operaciones en IEEE 754-2019 .

Aritmética decimal

En este apartado también se define la aritmética decimal, compatible con la utilizada en Java , C# , PL/I , COBOL , Python , REXX , etc. En general, la aritmética decimal sigue las mismas reglas que la aritmética binaria (los resultados se redondean correctamente, etc.), con reglas adicionales que definen el exponente de un resultado (en muchos casos es posible más de uno).

Conversión de base correctamente redondeada

A diferencia de 854, 754-2008 requiere una conversión de base correctamente redondeada entre coma flotante decimal y binaria dentro de un rango que depende del formato.

Cláusula 6: Infinito, NaN y bit de signo

Esta cláusula ha sido revisada y aclarada, pero sin grandes añadidos. En particular, hace recomendaciones formales para la codificación del estado NaN de señalización/silencio .

Cláusula 7: Manejo de excepciones predeterminado

Esta cláusula ha sido revisada y aclarada considerablemente, pero sin grandes añadidos.

Cláusula 8: Manejo alternativo de excepciones

Esta cláusula se ha ampliado desde la Cláusula 8 anterior ("Trampas") para permitir el manejo opcional de excepciones en varias formas, incluidas trampas y otros modelos como try/catch. Las trampas y otros mecanismos de excepción siguen siendo opcionales, como lo eran en IEEE 754-1985.

Cláusula 9: Operaciones recomendadas

Esta cláusula es nueva; recomienda cincuenta operaciones, incluidas funciones log, potencia y trigonométricas, que los estándares del lenguaje deberían definir. Todos estos son opcionales (ninguno es obligatorio para cumplir con el estándar). Las operaciones incluyen algunas sobre modos dinámicos para atributos, y también un conjunto de operaciones de reducción (suma, producto escalado, etc.).

Cláusula 10: Evaluación de expresiones

Esta cláusula es nueva; recomienda cómo los estándares del lenguaje deberían especificar la semántica de secuencias de operaciones y señala las sutilezas de los significados literales y las optimizaciones que cambian el valor de un resultado.

Cláusula 11: Reproducibilidad

Esta cláusula es nueva; recomienda que los estándares del lenguaje proporcionen un medio para escribir programas reproducibles (es decir, programas que producirán el mismo resultado en todas las implementaciones de un lenguaje) y describe lo que se debe hacer para lograr resultados reproducibles.

Anexo A: Bibliografía

Este anexo es nuevo; enumera algunas referencias útiles.

Anexo B: Soporte de depuración del programa

Este anexo es nuevo; proporciona orientación a los desarrolladores de depuradores sobre las funciones deseadas para admitir la depuración de código de punto flotante.

Índice de operaciones

Este es un nuevo índice, que enumera todas las operaciones descritas en el estándar (obligatorias u opcionales).

Discutido pero no incluido.

Debido a cambios en el diseño y desarrollo de la CPU, el estándar de punto flotante IEEE de 2008 podría considerarse tan histórico u obsoleto como el estándar de 1985 al que reemplazó. Hubo muchas discusiones externas y elementos no cubiertos en el proceso de estandarización, los siguientes elementos son los que se hicieron de conocimiento público:

En 754, la definición de desbordamiento era que el resultado es pequeño y sufre una pérdida de precisión.
Se permitieron dos definiciones para la determinación de la condición "pequeña": antes o después de redondear el resultado infinitamente preciso a la precisión de trabajo, con exponente ilimitado.
Se permitieron dos definiciones de pérdida de precisión: resultado inexacto o pérdida debida únicamente a la desnormalización. Ningún sistema de hardware conocido implementó este último y se eliminó del estándar revisado como una opción.
El anexo U de 754r recomendó que sólo la pequeñez después del redondeo y la inexactitud como pérdida de precisión sean causas de señal de desbordamiento insuficiente.

Referencias

  1. ^ "Norma ANSI/IEEE 754-2019". 754r.ucbtest.org . Consultado el 6 de agosto de 2019 .
  2. ^ "Reunión del 15 de septiembre de 2005".[ enlace muerto ]
  3. ^ BORRADOR de estándar para aritmética de punto flotante P754, versión 1.2.5. Revisión de ANSI/IEEE Std 754-1985 (Reporte). 2006-10-04.
  4. ^ 754-2008 - Estándar IEEE para aritmética de punto flotante . IEEE . 2008-08-29. doi :10.1109/IEEESTD.2008.4610935. ISBN 978-0-7381-5752-8.(NB. Reemplazado por IEEE Std 754-2019, una revisión de IEEE 754-2008).

enlaces externos