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

Funzioni Trigonometriche Veloci Utilizzando l'Approccio RLIBM

Informazioni Fondamentali

  • ID Articolo: 2510.13426
  • Titolo: Fast Trigonometric Functions using the RLIBM Approach
  • Autori: Sehyeok Park, Santosh Nagarakatte (Rutgers University)
  • Classificazione: cs.PL (Linguaggi di Programmazione)
  • Conferenza di Pubblicazione: International Workshop on Verification of Scientific Software (VSS 2025)
  • Link Articolo: https://arxiv.org/abs/2510.13426

Riassunto

Questo articolo descrive l'esperienza nello sviluppo di approssimazioni polinomiali per funzioni trigonometriche utilizzando il metodo RLIBM, che è in grado di produrre risultati correttamente arrotondati per molteplici rappresentazioni e modalità di arrotondamento. La sfida principale delle funzioni trigonometriche risiede nella riduzione di intervallo che coinvolge π, la quale riduce gli input dal dominio dei numeri in virgola mobile a 32 bit a un dominio più piccolo. Qualsiasi errore di arrotondamento nel valore di π viene amplificato durante il processo di riduzione di intervallo, potenzialmente causando risultati errati. Gli autori descrivono l'esperienza nell'implementazione di tecniche veloci di riduzione di intervallo che mantengono un gran numero di cifre di π sia nei calcoli in virgola mobile che in quelli interi. L'implementazione finale delle funzioni trigonometriche è sia veloce che in grado di produrre risultati correttamente arrotondati per tutti gli input, supportando molteplici rappresentazioni fino a 32 bit con una singola implementazione.

Contesto di Ricerca e Motivazione

Problemi Fondamentali

  1. Sfida dell'Arrotondamento Corretto: Il calcolo scientifico utilizza ampiamente funzioni elementari fornite da librerie matematiche, ma produrre risultati correttamente arrotondati per tutti gli input è estremamente difficile (il cosiddetto "dilemma del tabulatore"), e le principali librerie matematiche non riescono a produrre risultati corretti per tutti gli input.
  2. Problemi di Portabilità e Riproducibilità: L'assenza di librerie matematiche correttamente arrotondate causa applicazioni che producono risultati completamente diversi su macchine diverse, compromettendo la portabilità e la riproducibilità.
  3. Necessità di Molteplici Formati di Rappresentazione: Con l'aumento di formati personalizzati (come bfloat16, tensorfloat32, FP8), è necessaria una libreria di riferimento che fornisca risultati corretti per molteplici rappresentazioni e modalità di arrotondamento.

Limitazioni dei Metodi Esistenti

  • Approssimazione Polinomiale Minimax: I metodi tradizionali generano approssimazioni polinomiali che minimizzano l'errore massimo per tutti gli input, ma quando l'output di valore reale è molto vicino al limite di arrotondamento, i gradi di libertà si riducono significativamente.
  • Compromesso tra Prestazioni e Correttezza: Le librerie esistenti fanno compromessi tra prestazioni (come l'implementazione di Payne-Hanek) o correttezza (come libm di GCC).

Contributi Principali

  1. Tecniche Efficienti di Riduzione di Intervallo: Sviluppo di algoritmi efficienti di riduzione di intervallo che combinano calcoli in virgola mobile e interi, mantenendo un numero sufficiente di cifre di π per produrre risultati corretti.
  2. Singola Implementazione per Molteplici Rappresentazioni: Implementazione di una singola approssimazione polinomiale in grado di produrre risultati correttamente arrotondati per rappresentazioni da 10 a 32 bit e per tutte le modalità di arrotondamento standard.
  3. Ottimizzazione delle Prestazioni: La riduzione di intervallo basata su interi migliora le prestazioni del 19% rispetto alla strategia in virgola mobile, con prestazioni complessive più veloci o equivalenti alle librerie principali.
  4. Libreria Trigonometrica Completa: Implementazioni veloci e corrette per le funzioni sin, cos e tan.

Dettagli del Metodo

Concetto Fondamentale del Metodo RLIBM

L'intuizione chiave del metodo RLIBM è approssimare direttamente il risultato correttamente arrotondato, piuttosto che il valore reale della funzione. Per il risultato correttamente arrotondato di un dato input, esiste un intervallo di valori reali tale che qualsiasi valore all'interno di questo intervallo si arrotonda al risultato corretto. Questo fornisce maggiore libertà rispetto al metodo minimax (1 ULP per tutti gli input).

Meccanismo di Supporto per Molteplici Rappresentazioni

Per supportare molteplici rappresentazioni, il progetto RLIBM propone di generare approssimazioni polinomiali per rappresentazioni a (n+2) bit, utilizzando la modalità di arrotondamento round-to-odd. I vantaggi di questo approccio sono:

  • Il risultato round-to-odd conserva tutte le informazioni necessarie per l'arrotondamento diretto alla rappresentazione target
  • L'arrotondamento successivo a rappresentazioni a larghezza di bit inferiore produce risultati corretti
  • Evita errori di doppio arrotondamento

Algoritmo di Riduzione di Intervallo

Principi Fondamentali

La riduzione di intervallo per funzioni trigonometriche mappa l'input x∈-∞,∞ all'input ridotto x'∈-π/2^(t+1), π/2^(t+1), dove:

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

Strategia di Implementazione in Virgola Mobile

Gestione di Input Piccoli (|x| < 2^30):

  • Utilizzo di 256/π a 80 bit, memorizzato come due valori double
  • Evita errori di arrotondamento intermedi
  • Sfrutta il calcolo esatto dei prodotti parziali per generare k e la parte frazionaria r

Gestione di Input Grandi (2^30 ≤ |x|):

  • Versione 1: Divisione di 256/π in segmenti di 28 bit memorizzati in un array di double, con ogni segmento generato utilizzando la modalità di troncamento
  • Versione 2: Utilizzo di segmenti di precisione 53 bit, sfruttando l'istruzione fused-multiply-add per ridurre gli errori di arrotondamento

Strategia di Implementazione Intera

Ottimizzazione di Input Piccoli:

  • Utilizzo di 256/π a 80 bit, diviso in due interi a 40 bit P1 e P0
  • Identificazione dell'intero k e dei bit frazionari attraverso operazioni di bit shift
  • Evita la perdita di precisione dei calcoli in virgola mobile

Gestione di Input Grandi:

  • Utilizzo di 256/π a 192 bit, diviso in tre interi a 64 bit
  • Calcolo di prodotti parziali a 128 bit
  • Estrazione dei bit rilevanti attraverso operazioni di bit shift

Compensazione dell'Output

Utilizzo di identità trigonometriche per la compensazione dell'output:

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')

Attraverso tabelle precalcolate e ottimizzazioni di periodicità/simmetria, i valori precalcolati necessari vengono ridotti a 512.

Configurazione Sperimentale

Ambiente di Test

  • Hardware: Server Intel Xeon(R) Silver 4310 a 2.10GHz, 256GB RAM
  • Sistema Operativo: Ubuntu 24.04.1 LTS
  • Strumento di Misurazione: Contatori di prestazioni

Librerie di Confronto

  • GLIBC: libm per float e double
  • Core-Math: Libreria correttamente arrotondata
  • Implementazione RLIBM: Varianti di strategie di riduzione di intervallo

Metriche di Valutazione

  • Correttezza: Verifica tramite enumerazione completa della correttezza per tutti gli input
  • Prestazioni: Rapporto di accelerazione relativo ad altre librerie

Risultati Sperimentali

Verifica di Correttezza

  • Funzioni RLIBM: Producono risultati correttamente arrotondati per tutti gli input di tutte le rappresentazioni da 10 a 32 bit
  • GLIBC float libm: Contiene migliaia di risultati errati per sin, cos, tan su input float a 32 bit
  • GLIBC double libm: Più accurato della versione float ma contiene ancora errori
  • Core-Math: Produce risultati corretti solo per 32 bit, fallisce nell'intervallo 10-32 bit a causa di errori di doppio arrotondamento

Risultati di Prestazioni

Effetto dell'Ottimizzazione della Riduzione di Intervallo

Il metodo ibrido (virgola mobile per input piccoli, interi per input grandi) rispetto ad altre strategie:

  • 19% più veloce del metodo iniziale in virgola mobile (FP V1)
  • Miglioramento significativo rispetto al metodo alternativo in virgola mobile (FP V2)
  • 4% più veloce del metodo puramente intero

Confronto con Altre Librerie

  • In media 10% più veloce di Core-Math
  • In media 137% più veloce delle funzioni double di GLIBC
  • I miglioramenti di prestazioni sono principalmente attribuibili alla riduzione di intervallo efficiente e ai vantaggi di precisione dei calcoli interi

Punti di Innovazione Tecnica

1. Equilibrio tra Precisione e Prestazioni

  • I calcoli interi forniscono precisione superiore ai double a 64 bit (uint64_t e uint128_t)
  • Riduce il numero di prodotti parziali necessari per ottenere precisione sufficiente nella riduzione dell'input

2. Strategia Ibrida di Riduzione di Intervallo

  • Input piccoli utilizzano calcoli in virgola mobile (quando la parte intera di 256*x/π è sufficientemente piccola)
  • Input grandi utilizzano calcoli interi (fornendo maggiore precisione e operazioni di bit più semplici)

3. Ottimizzazione delle Operazioni di Bit

  • Utilizzo di operazioni di bit shift per identificare le parti di 256*x/π correlate all'input ridotto e ai bit bassi di k
  • Evita l'accumulo di errori di arrotondamento nei calcoli in virgola mobile

Lavori Correlati

Metodi Tradizionali

  • Approssimazione Minimax: Algoritmi come Remez, ma con libertà limitata vicino ai limiti di arrotondamento
  • Algoritmo di Payne-Hanek: Metodo classico di riduzione di intervallo, ma l'efficienza di implementazione è una sfida

Ricerca sull'Arrotondamento Corretto

  • CR-LIBM: Libreria correttamente arrotondata iniziale, ma con prestazioni più lente
  • Core-Math: Implementazione moderna correttamente arrotondata, ma supporta solo una singola rappresentazione

Sviluppo del Progetto RLIBM

  • Estensione dalle funzioni elementari (e^x, log, ecc.) alle funzioni trigonometriche
  • Approccio innovativo al supporto di molteplici rappresentazioni

Conclusioni e Discussione

Conclusioni Principali

  1. Prova di Fattibilità: Dimostra che è possibile generare implementazioni veloci e corrette per funzioni trigonometriche
  2. Criticità della Riduzione di Intervallo: La riduzione di intervallo efficiente è altrettanto importante quanto l'approssimazione polinomiale di basso grado
  3. Vantaggi dei Calcoli Interi: Le implementazioni basate su interi sono significativamente superiori ai metodi in virgola mobile per input grandi

Limitazioni

  1. Complessità: La complessità di implementazione è elevata, richiedendo operazioni di bit precise e strategie multiple
  2. Overhead di Memoria: Richiede tabelle precalcolate e memorizzazione di costanti a precisione multipla
  3. Scalabilità: L'estensione a rappresentazioni di precisione superiore richiede una riprogettazione

Direzioni Future

  1. Piattaforme GPU: Esplorazione di librerie correttamente arrotondate per piattaforme GPU
  2. Standardizzazione: Partecipazione al comitato standard IEEE-754 per promuovere l'arrotondamento corretto obbligatorio
  3. Integrazione Mainstream: Collaborazione con sviluppatori di librerie matematiche mainstream per integrare questi metodi

Valutazione Approfondita

Punti di Forza

  1. Combinazione di Teoria e Pratica: Applicazione riuscita della teoria RLIBM alle funzioni trigonometriche impegnative
  2. Ottimizzazione Ingegneristica Completa: Ottimizzazione a 360 gradi dall'algoritmo all'implementazione
  3. Verifica Rigorosa: Verifica della correttezza tramite enumerazione completa
  4. Valore Pratico: Risolve problemi importanti nelle applicazioni reali

Carenze

  1. Complessità di Implementazione: La combinazione di strategie multiple aumenta la complessità di implementazione e manutenzione
  2. Leggibilità: La leggibilità e la manutenibilità del codice con numerose operazioni di bit richiedono miglioramenti
  3. Analisi Teorica: Manca un'analisi teorica approfondita del perché il metodo intero sia superiore

Impatto

  1. Contributo Accademico: Fornisce nuovi metodi di implementazione correttamente arrotondata al campo del calcolo numerico
  2. Valore Pratico: Applicabile direttamente al calcolo scientifico che richiede alta precisione e numerica
  3. Promozione degli Standard: Potrebbe influenzare lo sviluppo futuro degli standard di virgola mobile

Scenari Applicabili

  1. Calcolo Scientifico: Simulazioni numeriche che richiedono alta precisione e riproducibilità
  2. Calcolo Finanziario: Modellazione finanziaria che richiede risultati precisi
  3. Sistemi Embedded: Sistemi che necessitano di supporto per molteplici formati di virgola mobile
  4. Implementazione di Riferimento: Come benchmark di correttezza per altre librerie

Bibliografia

Questo articolo cita letteratura importante nei campi dell'analisi numerica, dell'aritmetica in virgola mobile e dell'arrotondamento corretto, inclusi:

  • Libro di riferimento sulle funzioni elementari di Muller
  • Libreria MPFR ad alta precisione
  • Algoritmo di riduzione di intervallo di Payne-Hanek
  • Ricerca correlata allo standard IEEE-754 per la virgola mobile

Questo articolo fornisce un contributo importante al campo del calcolo numerico, trasformando con successo metodi teorici in implementazioni pratiche ad alte prestazioni, fornendo una soluzione efficace al problema dell'arrotondamento corretto nel calcolo scientifico.