Descubrí que el DEC PDP-10 usaba un formato de punto flotante que difería de IEEE-754 de una manera interesante.
IEEE-754 es como representación de magnitud de signo . La única diferencia entre un valor positivo y su negativo es el valor de la MSB de la palabra. Suponiendo que no hay NaN
s, si utiliza un restador de enteros para comparar dos flotantes IEEE, la operación de comparación arroja el resultado correcto en 3 de 4 casos. El caso en el que el resultado de comparación de enteros es incorrecto es cuando ambos valores son negativos.
El DEC PDP-10 tenía la misma mantisa con "1 bit oculto" , compensaba el exponente binario a la izquierda de la mantisa, pero cuando los números eran negativos, el PDP-10 representaba ese valor como el complemento 2 del valor positivo. Así que no hubo una representación "-0" (solo un 0) y la operación de comparación de enteros funcionó en cualquier caso.
Esto es inteligente. Me pregunto qué otras computadoras tempranas pudieron haber usado esto y ¿por qué no se dio cuenta con IEEE?
Si combina este formato inteligente con flotantes con denormales, puede tener una representación de punto flotante que es un mapeo monotónico que es una aproximación lineal por tramos a la función arcsinh()
al asignar el valor de punto flotante a un entero que tiene El mismo patrón de bits en la palabra. Parece una idea ingeniosa que el comité de IEEE a quien se le ocurrió por primera vez con 754.
Supongo que querían "-0", de modo que si se hiciera una operación como 1/x
, sabrían si usar +INF
o -INF
, pero si deja esa "característica" fuera y deja de lado NaN
s, este formato puede asignar cada patrón de bits a un valor numérico que es un mapeo estrictamente creciente y que parece ser una característica valiosa. Cada patrón de bits es un número y un número único. No NaN
s o INF
s u otros patrones de bits tontos para causar una excepción.