Calcular el día de la semana a partir de un día-continuo (rata-die) parece trivial, pero esconde una complejidad inesperada. Este artículo presenta una familia de funciones optimizadas en ensamblador que obtienen el día de la semana con muy baja latencia y alto rendimiento, superando a las soluciones existentes en diferentes plataformas y casos de uso (throughput frente a latencia).
El enfoque parte de la fórmula convencional para epoch Unix (1970-01-01, jueves): weekday = (rd + 4) POSMOD 7, y revisa propuestas previas como la de Howard Hinnant (2014) — adoptada por múltiples bibliotecas de fechas — y la de Cassio Neri (2024), descrita como el patrón de referencia moderno. Sin embargo, los compiladores generan ensamblado con múltiples pasos de corrección porque 7 no es un divisor cooperativo en 32 bits.
La aportación clave es una técnica de tres instrucciones (más una carga de constante) que aprovecha que 7 es un número de Mersenne (2^N − 1). Mediante identidades como N % 7 = floor(N × 8 / 7) % 8, una multiplicación por el recíproco aproximado y un desplazamiento se obtiene el día de la semana en apenas una multiplicación, una suma y un shift, válido para un rango útil de aproximadamente 179 millones de días. Variando constantes se consigue además salida en formato ISO [1‥7] sin penalización.
El artículo también generaliza los métodos a otros módulos (x % 24, x % 60), útiles para timekeeping, e incluye un Function Explorer con código C++ listo para probar y comparar en proyectos de bibliotecas de fechas, motores de base de datos o compiladores.
