El uso de la aritmética de punto fijo puede ser apropiado bajo ciertas circunstancias. En general, para la computación científica (al menos en el sentido en que la mayoría de la gente piensa en ella) no es apropiado debido a la necesidad de expresar los grandes rangos dinámicos encontrados. Usted menciona problemas de valores propios como ejemplo, pero muy a menudo en la ciencia, uno está interesado en los valores propios más pequeños de una matriz (por ejemplo, en el cálculo del estado fundamental de un sistema cuántico). La precisión de los valores propios pequeños generalmente se deteriorará bastante en relación con los valores propios grandes si utiliza un punto fijo. Si su matriz contiene entradas que varían en proporciones grandes, los valores propios pequeños pueden ser completamente inexpresables en la precisión de trabajo. Este es un problema con la representación de números; estos argumentos se mantienen independientemente de cómo se realizan los cálculos intermedios. Posiblemente podría calcular una escala para aplicar a los resultados calculados, pero ahora acaba de inventar el punto flotante. Es fácil construir matrices cuyos elementos se comporten bien, pero cuyos valores propios se comporten extremadamente mal (comoMatrices de Wilkinson , o incluso matrices con entradas enteramente enteras ). Estos ejemplos no son tan patológicos como podrían parecer, y muchos problemas a la vanguardia de la ciencia involucran matrices con un comportamiento muy pobre, por lo que usar un punto fijo en este contexto es una mala idea (TM).
Podría argumentar que conoce la magnitud de los resultados y que no quiere desperdiciar bits en el exponente, así que hablemos de los intermedios. El uso de un punto fijo generalmente exacerbará los efectos de cancelaciones y redondeos catastróficos a menos que realmente se esfuercen mucho para trabajar con mayor precisión. La penalización de rendimiento sería enorme, y supongo que usar una representación de coma flotante con el mismo ancho de bit de mantisa sería más rápido y más preciso.
Un área donde el punto fijo puede brillar es en ciertas áreas de la computación geométrica. Especialmente si necesita una aritmética exacta o conoce el rango dinámico de todos los números de antemano, el punto fijo le permite aprovechar todos los bits en su representación. Por ejemplo, suponga que desea calcular la intersección de dos líneas, y de alguna manera los puntos finales de las dos líneas están normalizados para sentarse en el cuadrado de la unidad. En este caso, el punto de intersección se puede representar con más bits de precisión que el uso de un número de coma flotante equivalente (que desperdiciará bits en el exponente). Ahora, es casi seguro que los números intermedios requeridos en este cálculo deben calcularse con mayor precisión, o al menos hacerse con mucho cuidado (como al dividir el producto de dos números por otro número, debes tener mucho cuidado al respecto ). A este respecto, el punto fijo es más ventajoso desde el punto de vista de la representación que desde el punto de vista computacional, y diría que esto es generalmente cierto cuando puede establecer límites superiores e inferiores definidos en el rango dinámico de las salidas de su algoritmo . Esto sucede raramente.
Solía pensar que las representaciones de coma flotante eran crudas o inexactas (¿por qué desperdiciar bits en un exponente?). Pero con el tiempo me he dado cuenta de que realmente es una de las mejores representaciones posibles para números reales. Las cosas en la naturaleza aparecen en escalas logarítmicas, por lo que los datos reales terminan abarcando una amplia gama de exponentes. Además, para lograr la mayor precisión relativa posible se requiere trabajar en escalas logarítmicas, lo que hace que el seguimiento de un exponente sea más natural. El único otro contendiente para una representación "natural" es el índice de nivel simétrico . Sin embargo, la suma y la resta son mucho más lentas en esa representación, y carece del soporte de hardware de IEEE 754. Se puso una gran cantidad de pensamiento en los estándares de coma flotante, por un pilar de álgebra lineal numérica. Creo que él sabe cuál es la representación "correcta" de los números.