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

RLIBM 방식을 이용한 고속 삼각함수

기본 정보

  • 논문 ID: 2510.13426
  • 제목: Fast Trigonometric Functions using the RLIBM Approach
  • 저자: Sehyeok Park, Santosh Nagarakatte (Rutgers University)
  • 분류: cs.PL (프로그래밍 언어)
  • 발표 학회: International Workshop on Verification of Scientific Software (VSS 2025)
  • 논문 링크: https://arxiv.org/abs/2510.13426

초록

본 논문은 RLIBM 방식을 이용하여 삼각함수 다항식 근사를 개발한 경험을 기술하며, 이 방식은 다양한 표현 형식과 반올림 모드에 대해 올바르게 반올림된 결과를 생성할 수 있습니다. 삼각함수의 핵심 과제는 π를 포함하는 범위 축소(range reduction)로, 32비트 부동소수점 수의 입력을 작은 영역으로 축소합니다. π 값의 반올림 오차는 범위 축소 과정에서 증폭되어 잘못된 결과를 초래할 수 있습니다. 저자들은 부동소수점과 정수 계산 모두에서 π의 많은 비트를 유지하는 고속 범위 축소 기법 구현 경험을 설명합니다. 최종 삼각함수 구현은 빠르면서도 모든 입력에 대해 올바르게 반올림된 결과를 생성하며, 최대 32비트의 다양한 표현을 지원하면서 단일 구현만 필요합니다.

연구 배경 및 동기

핵심 문제

  1. 올바른 반올림의 어려움: 과학 계산은 수학 라이브러리에서 제공하는 기본 함수를 광범위하게 사용하지만, 모든 입력에 대해 올바르게 반올림된 결과를 생성하는 것은 극히 어렵습니다("표 제작자의 딜레마"). 주류 수학 라이브러리는 모든 입력에 대해 올바른 결과를 생성할 수 없습니다.
  2. 이식성 및 재현성 문제: 올바른 반올림이 부족한 수학 라이브러리는 응용 프로그램이 서로 다른 기계에서 완전히 다른 결과를 생성하도록 하여 이식성과 재현성에 영향을 미칩니다.
  3. 다양한 표현 형식의 필요성: bfloat16, tensorfloat32, FP8 등 사용자 정의 형식의 증가로 인해 다양한 표현과 반올림 모드에 대해 올바른 결과를 제공할 수 있는 참조 라이브러리가 필요합니다.

기존 방법의 한계

  • Minimax 다항식 근사: 전통적 방법은 모든 입력의 최대 오차를 최소화하는 다항식 근사를 생성하지만, 실제 값 출력이 반올림 경계에 매우 가까울 때 자유도가 크게 감소합니다.
  • 성능과 정확성의 트레이드오프: 기존 라이브러리는 성능(예: Payne-Hanek 구현) 또는 정확성(예: GCC의 libm) 중 하나를 선택합니다.

핵심 기여

  1. 효율적인 범위 축소 기법: 부동소수점과 정수 연산을 결합한 효율적인 범위 축소 알고리즘을 개발하여 올바른 결과를 생성하기 위해 충분한 π 비트를 유지합니다.
  2. 다중 표현 단일 구현: 10비트에서 32비트의 다양한 표현과 모든 표준 반올림 모드에 대해 올바르게 반올림된 결과를 생성할 수 있는 단일 다항식 근사를 구현합니다.
  3. 성능 최적화: 정수 기반 범위 축소는 부동소수점 전략 대비 19% 성능 향상을 제공하며, 전체적으로 주류 라이브러리보다 빠르거나 동등한 성능을 제공합니다.
  4. 완전한 삼각함수 라이브러리: sin, cos, tan 함수에 대한 빠르고 정확한 구현을 제공합니다.

방법 상세 설명

RLIBM 방식의 핵심 개념

RLIBM 방식의 핵심 통찰은 함수의 실제 값이 아닌 올바르게 반올림된 결과를 직접 근사하는 것입니다. 주어진 입력의 올바르게 반올림된 결과에 대해, 그 구간 내의 모든 값이 올바른 결과로 반올림되는 실수 구간이 존재합니다. 이는 minimax 방법보다 더 큰 자유도(모든 입력에 대해 1 ULP)를 제공합니다.

다중 표현 지원 메커니즘

다양한 표현을 지원하기 위해 RLIBM 프로젝트는 (n+2)비트 표현의 다항식 근사를 생성하고 round-to-odd 반올림 모드를 사용합니다. 이 방식의 장점은:

  • round-to-odd 결과는 목표 표현으로 직접 반올림하는 데 필요한 모든 정보를 보존합니다
  • 낮은 비트폭 표현으로의 후속 반올림이 올바른 결과를 생성합니다
  • 이중 반올림 오류를 방지합니다

범위 축소 알고리즘

기본 원리

삼각함수의 범위 축소는 입력 x∈-∞,∞를 축소된 입력 x'∈-π/2^(t+1), π/2^(t+1)로 매핑합니다. 여기서:

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

부동소수점 구현 전략

소수 입력 처리 (|x| < 2^30):

  • 80비트의 256/π를 사용하며, 두 개의 double 값으로 저장합니다
  • 중간 반올림 오차를 방지합니다
  • 부분 곱셈을 이용하여 k와 분수 부분 r을 정확하게 계산합니다

대수 입력 처리 (2^30 ≤ |x|):

  • 버전 1: 256/π를 28비트 조각으로 분할하여 double 배열에 저장하며, 각 조각은 절단 모드를 사용하여 생성합니다
  • 버전 2: 53비트 정밀도 조각을 사용하며, fused-multiply-add 명령어를 활용하여 반올림 오차를 감소시킵니다

정수 구현 전략

소수 입력 최적화:

  • 80비트의 256/π를 사용하며, 두 개의 40비트 정수 P1과 P0으로 분할합니다
  • 비트 시프트 연산을 통해 정수 k와 분수 비트를 식별합니다
  • 부동소수점 연산의 정밀도 손실을 방지합니다

대수 입력 처리:

  • 192비트의 256/π를 사용하며, 세 개의 64비트 정수로 분할합니다
  • 128비트 부분 곱셈을 계산합니다
  • 비트 시프트 연산을 통해 관련 비트를 추출합니다

출력 보정

삼각함수 항등식을 이용한 출력 보정:

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

사전 계산 테이블과 주기성/대칭성 최적화를 통해 필요한 사전 계산 값을 512개로 감소시킵니다.

실험 설정

테스트 환경

  • 하드웨어: 2.10GHz Intel Xeon(R) Silver 4310 서버, 256GB RAM
  • 운영체제: Ubuntu 24.04.1 LTS
  • 측정 도구: 성능 카운터

비교 라이브러리

  • GLIBC: float 및 double libm
  • Core-Math: 올바른 반올림 라이브러리
  • RLIBM 구현: 다양한 범위 축소 전략의 변형

평가 지표

  • 정확성: 완전 열거를 통한 모든 입력의 정확성 검증
  • 성능: 다른 라이브러리 대비 가속 비율

실험 결과

정확성 검증

  • RLIBM 함수: 10비트에서 32비트의 모든 표현에 대한 모든 입력에서 올바르게 반올림된 결과 생성
  • GLIBC float libm: 32비트 float 입력의 sin, cos, tan에 대해 수천 개의 오류 결과
  • GLIBC double libm: float 버전보다 더 정확하지만 여전히 오류 존재
  • Core-Math: 32비트에만 올바른 결과를 생성하며, 10-32비트 범위에서는 이중 반올림 오류로 인해 실패

성능 결과

범위 축소 최적화 효과

혼합 방법(소수 입력은 부동소수점, 대수 입력은 정수)은 다른 전략 대비:

  • 초기 부동소수점 방법(FP V1)보다 19% 빠름
  • 대체 부동소수점 방법(FP V2)보다 현저한 향상
  • 순수 정수 방법보다 4% 빠름

다른 라이브러리와의 비교

  • Core-Math보다 평균 10% 빠름
  • GLIBC double 함수보다 평균 137% 빠름
  • 성능 향상은 주로 효율적인 범위 축소와 정수 연산의 정밀도 우위에 기인합니다

기술 혁신점

1. 정밀도와 성능의 균형

  • 정수 연산은 64비트 double보다 높은 정밀도 제공(uint64_t 및 uint128_t)
  • 입력 축소에 충분한 정밀도를 얻기 위해 필요한 부분 곱셈 수 감소

2. 혼합 범위 축소 전략

  • 소수 입력은 부동소수점 연산 사용(256*x/π의 정수 부분이 충분히 작을 때)
  • 대수 입력은 정수 연산 사용(더 높은 정밀도와 더 간단한 비트 연산 제공)

3. 비트 연산 최적화

  • 비트 시프트 연산을 사용하여 256*x/π에서 축소된 입력 및 k의 하위 비트와 관련된 부분 식별
  • 부동소수점 연산의 오차 누적 방지

관련 연구

전통적 방법

  • Minimax 근사: Remez 알고리즘 등, 하지만 반올림 경계 근처에서 자유도 제한
  • Payne-Hanek 알고리즘: 고전적 범위 축소 방법, 하지만 구현 효율성이 과제

올바른 반올림 연구

  • CR-LIBM: 초기 올바른 반올림 라이브러리, 하지만 성능 느림
  • Core-Math: 현대적 올바른 반올림 구현, 하지만 단일 표현만 지원

RLIBM 프로젝트 발전

  • 기본 함수(e^x, log 등)에서 삼각함수로 확장
  • 다중 표현 지원의 혁신적 방법

결론 및 논의

주요 결론

  1. 실현 가능성 증명: 삼각함수에 대한 빠르고 정확한 구현 생성이 가능함을 증명합니다
  2. 범위 축소의 중요성: 효율적인 범위 축소는 저차 다항식 근사만큼 중요합니다
  3. 정수 연산의 우위: 정수 기반 구현은 대수 입력에서 부동소수점 방법보다 현저히 우수합니다

한계

  1. 복잡성: 구현 복잡도가 높으며, 정확한 비트 연산과 다양한 전략이 필요합니다
  2. 메모리 오버헤드: 사전 계산 테이블 및 다중 정밀도 상수 저장 필요
  3. 확장성: 더 높은 정밀도 표현으로의 확장은 재설계가 필요합니다

향후 방향

  1. GPU 플랫폼: GPU 플랫폼의 올바른 반올림 라이브러리 탐색
  2. 표준화: IEEE-754 표준 위원회와 협력하여 강제 올바른 반올림 추진
  3. 주류 통합: 주류 수학 라이브러리 개발자와 협력하여 이러한 방법 통합

심층 평가

장점

  1. 이론과 실제의 결합: RLIBM 이론을 도전적인 삼각함수에 성공적으로 적용
  2. 포괄적인 공학 최적화: 알고리즘에서 구현까지의 전방위 최적화
  3. 엄격한 검증: 완전 열거를 통한 정확성 검증
  4. 실용적 가치: 실제 응용에서의 중요한 문제 해결

부족한 점

  1. 구현 복잡성: 다양한 전략의 조합으로 인한 구현 및 유지보수 복잡성 증가
  2. 가독성: 많은 비트 연산 코드의 가독성 및 유지보수성 개선 필요
  3. 이론적 분석: 정수 방법이 더 우수한 이유에 대한 심층 이론적 분석 부족

영향력

  1. 학술적 기여: 수치 계산 분야에 새로운 올바른 반올림 구현 방법 제공
  2. 실용적 가치: 높은 정밀도 수치 계산이 필요한 과학 계산에 직접 적용 가능
  3. 표준 추진: 향후 부동소수점 표준 발전에 영향을 미칠 수 있음

적용 분야

  1. 과학 계산: 높은 정밀도와 재현성이 필요한 수치 시뮬레이션
  2. 금융 계산: 정확한 결과를 요구하는 금융 모델링
  3. 임베디드 시스템: 다양한 부동소수점 형식을 지원해야 하는 시스템
  4. 참조 구현: 다른 라이브러리의 정확성 기준으로 사용

참고문헌

본 논문은 수치 분석, 부동소수점 연산 및 올바른 반올림 분야의 중요한 문헌을 인용하며, 다음을 포함합니다:

  • Muller의 기본 함수 참고서
  • MPFR 고정밀도 라이브러리
  • Payne-Hanek 범위 축소 알고리즘
  • IEEE-754 부동소수점 표준 관련 연구

본 논문은 수치 계산 분야에서 중요한 기여를 하였으며, 이론적 방법을 실용적인 고성능 구현으로 성공적으로 전환하여 과학 계산에서의 올바른 반올림 문제에 효과적인 해결책을 제공합니다.