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

Fuentes: The fastest double-to-string algorithm you've never heard of

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 implementaciones de dtoa (double to ASCII) más rápidas según el benchmark dtoa-benchmark. Pertenece a la familia Schubfach: busca la representación decimal más corta que recupere el valor binario original intersecando el intervalo de redondeo con rejillas decimales de distinto espaciado. Su novedad frente al Schubfach clásico es operar solo con aritmética entera de ancho fijo y recurrir a una única multiplicación por una potencia de 10 precalculada, frente a las dos o tres del algoritmo original.

El artículo explica cómo yy escoge entre cuatro candidatos decimales mediante tres predicados evaluados sobre una banda de medio ULP, con pequeños ajustes de paridad para implementar el redondeo al par en empates exactos. También describe un caso límite en formato E4M3 (8 bits, usado en inferencia de IA en GPU) donde el truncamiento de la tabla de potencias de 10 hace que la comparación parezca fallar por una unidad, pero el algoritmo compensa restando exactamente ese ULP del umbral, manteniendo la corrección. Finalmente, el autor acompaña la explicación con una visualización interactiva en HTML que recorre el pipeline paso a paso sobre los 256 valores del formato E4M3.