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.
본 논문은 RLIBM 방식을 이용하여 삼각함수 다항식 근사를 개발한 경험을 기술하며, 이 방식은 다양한 표현 형식과 반올림 모드에 대해 올바르게 반올림된 결과를 생성할 수 있습니다. 삼각함수의 핵심 과제는 π를 포함하는 범위 축소(range reduction)로, 32비트 부동소수점 수의 입력을 작은 영역으로 축소합니다. π 값의 반올림 오차는 범위 축소 과정에서 증폭되어 잘못된 결과를 초래할 수 있습니다. 저자들은 부동소수점과 정수 계산 모두에서 π의 많은 비트를 유지하는 고속 범위 축소 기법 구현 경험을 설명합니다. 최종 삼각함수 구현은 빠르면서도 모든 입력에 대해 올바르게 반올림된 결과를 생성하며, 최대 32비트의 다양한 표현을 지원하면서 단일 구현만 필요합니다.
올바른 반올림의 어려움: 과학 계산은 수학 라이브러리에서 제공하는 기본 함수를 광범위하게 사용하지만, 모든 입력에 대해 올바르게 반올림된 결과를 생성하는 것은 극히 어렵습니다("표 제작자의 딜레마"). 주류 수학 라이브러리는 모든 입력에 대해 올바른 결과를 생성할 수 없습니다.
이식성 및 재현성 문제: 올바른 반올림이 부족한 수학 라이브러리는 응용 프로그램이 서로 다른 기계에서 완전히 다른 결과를 생성하도록 하여 이식성과 재현성에 영향을 미칩니다.
다양한 표현 형식의 필요성: bfloat16, tensorfloat32, FP8 등 사용자 정의 형식의 증가로 인해 다양한 표현과 반올림 모드에 대해 올바른 결과를 제공할 수 있는 참조 라이브러리가 필요합니다.
RLIBM 방식의 핵심 통찰은 함수의 실제 값이 아닌 올바르게 반올림된 결과를 직접 근사하는 것입니다. 주어진 입력의 올바르게 반올림된 결과에 대해, 그 구간 내의 모든 값이 올바른 결과로 반올림되는 실수 구간이 존재합니다. 이는 minimax 방법보다 더 큰 자유도(모든 입력에 대해 1 ULP)를 제공합니다.