2025-11-17T19:07:12.711716

Fast Trigonometric Functions using the RLIBM Approach

Park, Nagarakatte
This paper describes our experience developing polynomial approximations for trigonometric functions that produce correctly rounded results for multiple representations and rounding modes using the RLIBM approach. A key challenge with trigonometric functions concerns range reduction with "pi", which reduces a given input in the domain of a 32-bit float to a small domain. Any rounding error in the value of "pi" is amplified during range reduction, which can result in wrong results. We describe our experience implementing fast range reduction techniques that maintain a large number of bits of "pi" both with floating-point and integer computations. The resulting implementations for trigonometric functions are fast and produce correctly rounded results for all inputs for multiple representations up to 32-bits with a single implementation.
academic

Funciones Trigonométricas Rápidas Utilizando el Enfoque RLIBM

Información Básica

  • ID del Artículo: 2510.13426
  • Título: Fast Trigonometric Functions using the RLIBM Approach
  • Autores: Sehyeok Park, Santosh Nagarakatte (Rutgers University)
  • Clasificación: cs.PL (Lenguajes de Programación)
  • Conferencia de Publicación: International Workshop on Verification of Scientific Software (VSS 2025)
  • Enlace del Artículo: https://arxiv.org/abs/2510.13426

Resumen

Este artículo describe la experiencia en el desarrollo de aproximaciones polinómicas de funciones trigonométricas utilizando el método RLIBM, que puede producir resultados correctamente redondeados para múltiples representaciones y modos de redondeo. El desafío clave de las funciones trigonométricas radica en la reducción de rango que implica π, la cual reduce las entradas del dominio de punto flotante de 32 bits a un dominio pequeño. Cualquier error de redondeo en el valor de π se amplifica durante el proceso de reducción de rango, lo que puede conducir a resultados incorrectos. Los autores describen la experiencia en la implementación de técnicas rápidas de reducción de rango que mantienen una gran cantidad de dígitos de π tanto en cálculos de punto flotante como en enteros. La implementación final de funciones trigonométricas es rápida y produce resultados correctamente redondeados para todas las entradas, soportando múltiples representaciones de hasta 32 bits con una única implementación.

Antecedentes de Investigación y Motivación

Problemas Centrales

  1. Desafío del Redondeo Correcto: Las bibliotecas matemáticas ampliamente utilizadas en computación científica proporcionan funciones básicas, pero producir resultados correctamente redondeados para todas las entradas es extremadamente difícil (el "dilema del tabulador"), y las bibliotecas matemáticas convencionales no pueden producir resultados correctos para todas las entradas.
  2. Problemas de Portabilidad y Reproducibilidad: La falta de bibliotecas matemáticas correctamente redondeadas causa que las aplicaciones produzcan resultados completamente diferentes en diferentes máquinas, afectando la portabilidad y reproducibilidad.
  3. Necesidad de Múltiples Formatos de Representación: Con el aumento de formatos personalizados (como bfloat16, tensorfloat32, FP8), existe la necesidad de una biblioteca de referencia que proporcione resultados correctos para múltiples representaciones y modos de redondeo.

Limitaciones de los Métodos Existentes

  • Aproximación Polinómica Minimax: Los métodos tradicionales generan aproximaciones polinómicas que minimizan el error máximo para todas las entradas, pero cuando la salida de valor real está muy cerca del límite de redondeo, los grados de libertad se reducen significativamente.
  • Compensación entre Rendimiento y Corrección: Las bibliotecas existentes hacen compromisos en rendimiento (como la implementación de Payne-Hanek) o corrección (como libm de GCC).

Contribuciones Principales

  1. Técnicas Eficientes de Reducción de Rango: Desarrollo de algoritmos eficientes de reducción de rango que combinan operaciones de punto flotante e enteras, manteniendo suficientes dígitos de π para producir resultados correctos.
  2. Implementación Única para Múltiples Representaciones: Implementación de una única aproximación polinómica que produce resultados correctamente redondeados para múltiples representaciones de 10 a 32 bits y todos los modos de redondeo estándar.
  3. Optimización de Rendimiento: La reducción de rango basada en enteros mejora el rendimiento en un 19% en comparación con estrategias de punto flotante, siendo en general más rápida o comparable con las bibliotecas convencionales.
  4. Biblioteca Completa de Funciones Trigonométricas: Implementaciones rápidas y correctas para las funciones sin, cos y tan.

Explicación Detallada del Método

Idea Central del Método RLIBM

La idea clave del método RLIBM es aproximar directamente el resultado correctamente redondeado, en lugar del valor real de la función. Para el resultado correctamente redondeado de una entrada dada, existe un intervalo de valor real dentro del cual cualquier valor se redondeará al resultado correcto. Esto proporciona más grados de libertad que el método minimax (1 ULP para todas las entradas).

Mecanismo de Soporte para Múltiples Representaciones

Para soportar múltiples representaciones, el proyecto RLIBM propone generar aproximaciones polinómicas de representación de (n+2) bits, utilizando el modo de redondeo round-to-odd. Las ventajas de este enfoque son:

  • Los resultados round-to-odd preservan toda la información necesaria para redondear directamente a la representación objetivo
  • El redondeo posterior a representaciones de menor ancho de bits produce resultados correctos
  • Evita errores de doble redondeo

Algoritmo de Reducción de Rango

Principios Básicos

La reducción de rango de funciones trigonométricas mapea la entrada x∈-∞,∞ a la entrada reducida x'∈-π/2^(t+1), π/2^(t+1), donde:

x = x' + kπ/2^t
k = [2^t * x/π]
x' = π/2^t * r, donde r = 2^t*x/π - k

Estrategia de Implementación en Punto Flotante

Procesamiento de Entradas Pequeñas (|x| < 2^30):

  • Utiliza 256/π de 80 bits, almacenado en dos valores double
  • Evita errores de redondeo intermedio
  • Utiliza productos parciales para calcular exactamente k y la parte fraccionaria r

Procesamiento de Entradas Grandes (2^30 ≤ |x|):

  • Versión 1: Divide 256/π en segmentos de 28 bits almacenados en un array de double, cada segmento generado usando modo de truncamiento
  • Versión 2: Utiliza segmentos de precisión de 53 bits, aprovechando instrucciones de multiplicación-suma fusionada para reducir errores de redondeo

Estrategia de Implementación en Enteros

Optimización de Entradas Pequeñas:

  • Utiliza 256/π de 80 bits, dividido en dos enteros de 40 bits P1 y P0
  • Identifica el entero k y bits fraccionarios mediante operaciones de desplazamiento de bits
  • Evita la pérdida de precisión de operaciones de punto flotante

Procesamiento de Entradas Grandes:

  • Utiliza 256/π de 192 bits, dividido en tres enteros de 64 bits
  • Calcula productos parciales de 128 bits
  • Extrae bits relevantes mediante operaciones de desplazamiento de bits

Compensación de Salida

Utiliza identidades trigonométricas para la compensación de salida:

sin(x) = sin(k'π/2^t)cos(x') + cos(k'π/2^t)sin(x')
cos(x) = cos(k'π/2^t)cos(x') - sin(k'π/2^t)sin(x')

Mediante tablas precalculadas y optimizaciones de periodicidad/simetría, se reduce el número de valores precalculados necesarios a 512.

Configuración Experimental

Entorno de Prueba

  • Hardware: Servidor Intel Xeon(R) Silver 4310 a 2.10GHz, 256GB RAM
  • Sistema Operativo: Ubuntu 24.04.1 LTS
  • Herramienta de Medición: Contadores de rendimiento

Bibliotecas Comparadas

  • GLIBC: libm de float y double
  • Core-Math: Biblioteca correctamente redondeada
  • Implementación RLIBM: Variantes de diferentes estrategias de reducción de rango

Métricas de Evaluación

  • Corrección: Verificación mediante enumeración completa de la corrección para todas las entradas
  • Rendimiento: Aceleración relativa respecto a otras bibliotecas

Resultados Experimentales

Verificación de Corrección

  • Funciones RLIBM: Producen resultados correctamente redondeados para todas las entradas en todas las representaciones de 10 a 32 bits
  • GLIBC float libm: Tiene miles de resultados incorrectos para sin, cos, tan en entradas de 32 bits float
  • GLIBC double libm: Más preciso que la versión float pero aún con errores
  • Core-Math: Solo produce resultados correctos para 32 bits; falla en el rango de 10-32 bits debido a errores de doble redondeo

Resultados de Rendimiento

Efecto de Optimización de Reducción de Rango

El método híbrido (punto flotante para entradas pequeñas, enteros para entradas grandes) en comparación con otras estrategias:

  • 19% más rápido que el método de punto flotante inicial (FP V1)
  • Mejora significativa respecto al método de punto flotante alternativo (FP V2)
  • 4% más rápido que el método puramente entero

Comparación con Otras Bibliotecas

  • Promedio 10% más rápido que Core-Math
  • Promedio 137% más rápido que funciones GLIBC double
  • Las mejoras de rendimiento se atribuyen principalmente a la reducción de rango eficiente y las ventajas de precisión de las operaciones enteras

Puntos de Innovación Técnica

1. Equilibrio entre Precisión y Rendimiento

  • Las operaciones enteras proporcionan mayor precisión que double de 64 bits (uint64_t y uint128_t)
  • Reduce la cantidad de productos parciales necesarios para obtener suficiente precisión en la reducción de entrada

2. Estrategia Híbrida de Reducción de Rango

  • Utiliza operaciones de punto flotante para entradas pequeñas (cuando la parte entera de 256*x/π es suficientemente pequeña)
  • Utiliza operaciones enteras para entradas grandes (proporcionando mayor precisión y operaciones de bits más simples)

3. Optimización de Operaciones de Bits

  • Utiliza operaciones de desplazamiento de bits para identificar partes de 256*x/π relacionadas con la entrada reducida y los bits bajos de k
  • Evita la acumulación de errores de redondeo en operaciones de punto flotante

Trabajo Relacionado

Métodos Tradicionales

  • Aproximación Minimax: Algoritmo de Remez, etc., pero con libertad limitada cerca de límites de redondeo
  • Algoritmo de Payne-Hanek: Método clásico de reducción de rango, pero la eficiencia de implementación es un desafío

Investigación en Redondeo Correcto

  • CR-LIBM: Biblioteca de redondeo correcto temprana, pero rendimiento más lento
  • Core-Math: Implementación moderna de redondeo correcto, pero solo soporta una única representación

Desarrollo del Proyecto RLIBM

  • Extensión desde funciones básicas (e^x, log, etc.) a funciones trigonométricas
  • Método innovador para soporte de múltiples representaciones

Conclusiones y Discusión

Conclusiones Principales

  1. Prueba de Viabilidad: Demuestra que es posible generar implementaciones rápidas y correctas para funciones trigonométricas
  2. Criticidad de la Reducción de Rango: La reducción de rango eficiente es tan importante como la aproximación polinómica de bajo orden
  3. Ventajas de Operaciones Enteras: Las implementaciones basadas en enteros son significativamente superiores a los métodos de punto flotante para entradas grandes

Limitaciones

  1. Complejidad: La complejidad de implementación es relativamente alta, requiriendo operaciones de bits precisas y múltiples estrategias
  2. Sobrecarga de Memoria: Requiere tablas precalculadas y almacenamiento de constantes de múltiple precisión
  3. Escalabilidad: La extensión a representaciones de mayor precisión requiere rediseño

Direcciones Futuras

  1. Plataformas GPU: Exploración de bibliotecas de redondeo correcto para plataformas GPU
  2. Estandarización: Participación en comités de estándares IEEE-754 para promover redondeo correcto obligatorio
  3. Integración Convencional: Colaboración con desarrolladores de bibliotecas matemáticas convencionales para integrar estos métodos

Evaluación Profunda

Fortalezas

  1. Combinación de Teoría y Práctica: Aplicación exitosa de la teoría RLIBM a funciones trigonométricas desafiantes
  2. Optimización Integral de Ingeniería: Optimización completa desde algoritmo hasta implementación
  3. Verificación Rigurosa: Verificación de corrección mediante enumeración completa
  4. Valor Práctico: Resuelve problemas importantes en aplicaciones reales

Deficiencias

  1. Complejidad de Implementación: La combinación de múltiples estrategias aumenta la complejidad de implementación y mantenimiento
  2. Legibilidad: La legibilidad y mantenibilidad del código con muchas operaciones de bits requiere mejora
  3. Análisis Teórico: Falta análisis teórico profundo sobre por qué los métodos enteros son superiores

Impacto

  1. Contribución Académica: Proporciona nuevos métodos de implementación de redondeo correcto para el campo del cálculo numérico
  2. Valor Práctico: Aplicable directamente a computación científica que requiere cálculos numéricos de alta precisión
  3. Impulso de Estándares: Puede influir en el desarrollo futuro de estándares de punto flotante

Escenarios Aplicables

  1. Computación Científica: Simulaciones numéricas que requieren alta precisión y reproducibilidad
  2. Computación Financiera: Modelado financiero que requiere resultados precisos
  3. Sistemas Embebidos: Sistemas que necesitan soportar múltiples formatos de punto flotante
  4. Implementación de Referencia: Como referencia de corrección para otras bibliotecas

Referencias

Este artículo cita literatura importante en los campos del análisis numérico, aritmética de punto flotante y redondeo correcto, incluyendo:

  • Libro de referencia de funciones básicas de Muller
  • Biblioteca de alta precisión MPFR
  • Algoritmo de reducción de rango de Payne-Hanek
  • Investigación relacionada con el estándar IEEE-754 de punto flotante

Este artículo realiza contribuciones importantes en el campo del cálculo numérico, transformando exitosamente métodos teóricos en implementaciones prácticas de alto rendimiento, proporcionando una solución efectiva para el problema del redondeo correcto en computación científica.