La instrucción vfmaddrnd231pd no existe en la CPU de Intel

La instrucción vfmaddrnd231pd, documentada en el Software Development Manual (SDM) de Intel, no es ejecutable en las CPU actuales. Aunque el manual describe una operación de multiplicación y adición fusionada (FMA) con control de redondeo por instrucción, la implementación real ha sido retirada del

Incompatibilidades entre el estándar C y las implementaciones de GCC y Clang

El lenguaje C, aunque estandarizado, presenta divergencias significativas entre su especificación teórica y las implementaciones prácticas de compiladores como GCC y Clang, así como de librerías como glibc y musl. Esta discrepancia afecta la portabilidad y la conformidad del código, especialmente en

Implementación vectorizada de CLZ y CTZ mediante aritmética de punto flotante

El artículo detalla la implementación de instrucciones vectorizadas para calcular el número de bits cero leading (CLZ) y trailing (CTZ) en enteros de 32 bits, utilizando técnicas de aritmética de punto flotante para evitar las instrucciones nativas de CPU. El autor, trabajando en un emulador de FPU,

La aritmética de punto flotante requiere un paradigma de seguridad distinto

La aritmética de punto flotante sigue un paradigma de seguridad radicalmente diferente al de la aritmética de enteros, lo que explica por qué los modelos de lenguaje de gran escala (LLM) suelen fallar al tratar con números reales. Mientras que en la programación con enteros, el objetivo es prevenir

Análisis técnico de los errores de redondeo en la suma de decimales

El artículo técnico explora la naturaleza de los errores de redondeo que ocurren al sumar números decimales utilizando la precisión de punto flotante estándar en la computación. Aunque se recomienda evitar estas operaciones para cálculos financieros críticos, el texto demuestra que en rangos de valo

Análisis técnico del algoritmo de tangente en el chip Intel 8087

El artículo técnico detalla la ingeniería inversa del algoritmo de la instrucción FPTAN en el microprocesador Intel 8087, introducido en 1980. Este chip revolucionó el rendimiento de las operaciones de punto flotante en el IBM PC, reduciendo el tiempo de cálculo de la tangente de 13.000 a solo 90 mi

Apache Parquet incorpora codificación ALP para datos de punto flotante

Apache Parquet ha integrado la codificación de punto flotante sin pérdidas adaptativa (ALP), una nueva técnica de compresión diseñada para valores decimales almacenados como tipos de punto flotante (FLOAT y DOUBLE). Esta adición ofrece una relación de compresión similar a la del algoritmo zstd, pero

Alternativas a los puntos flotantes en programación

La representación de números en computación no se limita a los puntos flotantes estándar, que operan en base binaria y pueden introducir errores de precisión. Existen cinco alternativas principales implementadas en software, cada una con ventajas y desventajas específicas en términos de velocidad y

Modelos precisos de los núcleos de matriz de AMD

Un estudio académico publicado en arXiv presenta modelos matemáticos precisos para los núcleos de matriz de las GPUs de AMD, un componente que no sigue el estándar IEEE 754 de punto flotante. La investigación, realizada por Faizan Ahmad Khattak, analiza las diferencias arquitectónicas en tres genera

Los números flotantes subnormales son lentos en procesadores Intel

Los números de punto flotante subnormales, definidos por el estándar IEEE para valores muy pequeños, presentan un coste de rendimiento significativo en procesadores Intel. Un análisis técnico realizado por Daniel Lemire demuestra que estas operaciones pueden ralentizar las computaciones hasta 45 vec

Implementación de FMA y bugs hallados en las bibliotecas estándar de C y Rust

Sergey "Shnatsel" Davidoff, desarrollador del proyecto fearless_simd, relata cómo, al intentar implementar de forma eficiente la operación fused multiply-add (a*b+c) en SIMD para máquinas sin soporte hardware de FMA —aproximadamente un 15% de los equipos según la encuesta de hardware de Firefox—, de

Ingeniería inversa del microcódigo de la instrucción FSCALE en el Intel 8087

El coprocesador de punto flotante Intel 8087, lanzado en 1980, estableció el estándar de aritmética de punto flotante en la computación moderna al ofrecer precisión superior a los sistemas anteriores. Aunque su implementación de instrucciones se realiza mediante microcódigo de bajo nivel, la complej

El algoritmo doble-a-cadena más rápido que no conoces

Este artículo analiza yy, un algoritmo de conversión de números binarios en coma flotante a su representación decimal más corta, incluido en la biblioteca yyjson de ibireme. Aunque no tiene publicación académica ni nombre propio más allá del archivo que lo contiene, yy se sitúa entre las implementac

Cómo convertir números en coma flotante a binario pasando por hexadecimal

Los números enteros pueden pasarse de base 16 (hexadecimal) a base 2 (binario) convirtiendo cada dígito por separado; por ejemplo, CAFE en hexadecimal equivale a 1100 1010 1111 1110 en binario. Esta misma técnica puede extenderse a los números en coma flotante, pese a ser un truco poco conocido. En

ALP: compresión sin pérdida de coma flotante presente en repositorio de GitHub

ALP es un algoritmo de compresión sin pérdida para datos en coma flotante conforme al estándar IEEE 754, publicado como código fuente y banco de pruebas en el repositorio cwida/ALP de GitHub. Su artículo asociado, "ALP: Adaptive Lossless Floating-Point Compression", fue presentado en ACM SIGMOD 2024

Por qué log no es monótona en PHP y Lua: el caso base que rompe la intuición

Una falla silenciosa en la intuición matemática del cómputo En el mundo del software, una función tan aparentemente inocente como el logaritmo esconde trampas que rompen las expectativas más básicas de los programadores. Un análisis publicado por el desarrollador conocido como purplesyringa revela

Dos casos de estudio sobre los efectos inesperados de NaN en Python y Lua

NaN, el valor especial que representa «no es un número», infringe una de las reglas más asumidas en programación: que todo objeto es igual a sí mismo. Esa peculiaridad, definida en el estándar IEEE-754, se cuela en el diseño de lenguajes que dan por buena esa misma regla y produce comportamientos di

La Underhanded C Contest 2015 premia el código oculto en verificación nuclear

La organización del concurso Underhanded C Contest ha hecho públicos los resultados de su edición de 2015, una competición anual que premia el código C más sutilmente malicioso escrito con apariencia inocente. Este año se recibieron más de 40 propuestas, todas ellas de alta calidad, lo que obligó a

Conversión exacta de UNORM8 a coma flotante: dos multiplicaciones bastan

Los formatos UNORM8 almacenan un valor en el intervalo [0, 1] como un entero sin signo de 8 bits en GPUs. La conversión exacta a coma flotante consistiría, en aritmética exacta, en dividir el entero por 255. Sin embargo, la especificación funcional de D3D11.3 desaconseja exigir una precisión de 1/2

Manejo de errores de coma flotante en C++: lo que realmente funciona

Este artículo explora las técnicas para manejar eficientemente los errores de coma flotante en C++. Se abordan métodos como la inspección directa de resultados (verificación de infinito y NaN), el uso de bits de 'sticky' en el registro de estado de coma flotante y la habilitación de 'traps' de hardw

¿Dividir entre 255 o entre 256 al normalizar valores RGB?

En el procesamiento de imágenes, al convertir valores enteros de 8 bits a coma flotante surge una duda recurrente: ¿conviene dividir entre 255 o entre 256 con un sesgo de 0,5? El artículo examina ambas fórmulas — `x/255` y `(x+0.5)/256` — y compara sus consecuencias prácticas. La fórmula estándar `

Extensiones F, D y Q: el soporte de punto flotante en RISC-V

La arquitectura de conjunto de instrucciones RISC-V ha desarrollado un ecosistema completo de extensiones para soportar operaciones de punto flotante. El ISA base (RV32I o RV64I) no define instrucciones de punto flotante, por lo que RISC-V proporciona extensiones específicas. La extensión F ofrece s

NaN: el número que guarda secretos

Este artículo explora un aspecto poco conocido de los números de punto flotante: el valor `NaN` (Not a Number). `NaN` no es simplemente un error; es un valor especial definido por el estándar IEEE 754-2008 para representar resultados indefinidos o no numéricos, como la raíz cuadrada de un número neg

Criptografía en Cortex-M: incompatibilidad de punto flotante

Desarrolladores que trabajan con microcontroladores (MCUs) Arm Cortex-M están encontrando problemas de compatibilidad al usar bibliotecas criptográficas, específicamente al integrar sistemas de seguridad como el TrustZone CryptoCell 310. El problema surge de la incompatibilidad entre las diferentes

FP4: Nuevo formato de punto flotante optimiza eficiencia

El artículo explora el formato de punto flotante de 4 bits (FP4), una alternativa de baja precisión a los formatos de punto flotante tradicionales de 32 y 64 bits. Originalmente, los números de punto flotante se almacenaban en 32 bits, luego evolucionaron a 64 bits para aumentar la precisión. Sin e