수학 라이브러리
Math library컴퓨터 공학에서 수학 라이브러리(또는 수학 라이브러리)는 삼각법과 지수화와 같은 가장 일반적인 수학 함수에 대한 함수(또는 서브루틴)를 포함하는 프로그래밍 언어의 표준 라이브러리의 구성요소입니다.부동소수점 숫자와 관련된 비트 트위들링 및 제어 기능도 포함할 수 있다(C 등).
예를 들어 다음과 같습니다.
- C 표준 라이브러리 수학 함수,[1]
- Java 산술[2] 라이브러리
- '전제'수학은 [3]해스켈로 되어 있어.
일부 언어(예: 해스켈)에서는 표준 라이브러리의 일부(수학 포함)가 기본적으로 [4]Import됩니다.
선형대수와 같은 보다 고급 기능은 보통 선형대수 라이브러리 또는 벡터 수학 라이브러리와 같은 서드파티 라이브러리에서 제공됩니다.
구현 개요
기본 조작
수학 라이브러리에서 유형 펀닝을 사용하여 부동 소수점 숫자를 같은 크기의 부호 없는 정수로 해석하는 것이 자주 유용합니다.이를 통해 특정 숫자 속성(양수 또는 비양수) 및 숫자 비교를 보다 빠르게 수행할 수 있습니다.보다 고도의 경우 비트 트위들링을 사용하여 특정 방법으로 번호를 변경할 수 있습니다.
보다 정확한 작동을 위해 이중 또는 삼중 이중 형식을 사용할 수 있습니다.이 경우 고정밀 숫자는 부동소수점 [5]숫자 2개 또는 3개의 합으로 표현됩니다.
초월함수
로그, 지수 및 트리거 함수와 같은 초월 함수는 모든 산술 라이브러리의 백본을 구성합니다.이러한 함수는 일반적으로 레메즈 알고리즘에 의해 도출된 다항식 또는 체비셰프 다항식으로 구현되지만(개선된 오차 한계의 이점이 있음) 전처리 단계는 동등하게 중요하다.[5]
삼각 측정법
범위 축소(인수 축소, 도메인 분할도)는 비정상적인 값(infinity 및 NaN)을 체크한 후 모든 함수의 첫 번째 단계입니다.여기서의 목표는 함수의 대칭성과 변이성(있는 경우)을 사용하여 처리할 다항식의 인수 영역을 줄이는 것이며, 예를 들어 최종적으로 결과를 부정할 것인지(필요한 경우)를 나타내는 플래그를 설정하는 것이다.Payne-Hanek-Corbett [6]알고리즘이 프로토타입 방법인 경우 주기적 함수는 감소 시 입력 정밀도보다 높은 정밀도를 요구합니다.범위 축소 후 0에 가까운 값은 "고속 경로"에 노출될 수 있습니다. 예를 들어, 작은 입력 x는 sin으로 직접 반환될 수 있으며, 1 - x는 cos에 사용될 수 있습니다.
다음 단계는 기존의 호너 방법을 사용한 다항식의 평가입니다.그 후, 반환 전에 레인지 리덕션 루틴으로부터의 정보에 따라 결과의 부호를 반전시킬 수 있다.
로그 및 지수
정수 부분 k가 이미 부동소수점 지수 내에 있기 때문에 기저 2의 로그는 비교적 간단하며, 이에 따라 예비 범위 축소가 이루어져 k가 된다.그런 다음 가수 x(여기서 log2(x)는 -1/2와 1/2) 사이의 표 및 간격과 비교되며, x/z 간격에 사용되는 다항식 계수와 함께 알려진 log2와 범위 내 x/z가 있는 z로 추가로 감소합니다.결과는 log(z) + log(x/z) + [7]k이다. 다른 베이스의 로그는 (a) 다른 테이블을 사용하고 (b) k에 log2(new-base)[7]를 곱해야 한다.
기저 2의 지수 역시 마찬가지로 부동소수점 구조로 인한 "기본 케이스"입니다.이 절차는 단순히 범위 축소(일반적으로 룩업에 의한)와 나머지 [7]가수에 대한 다항식의 조합입니다.자연지수는 정밀도를 위해 별도의 테이블을 사용하여 구현할 수 있지만 exp10은 범위 [7]내일 경우 exp(x × log2(10)로 간단히 지정할 수 있습니다.마지막으로 any-base 지수 함수 pow()는 일반적인 [7]경우 exp() 및 log() 주위에 구축됩니다.
「 」를 참조해 주세요.
레퍼런스
- ^ "C math library".
- ^ "java maths library".
- ^ "haskell prelude maths".
- ^ "haskell prelude".
- ^ a b Daramy-Loirat, Catherine; Defour, David; Dinechin, Florent de; Gallet, Matthieu; Gast, Nicolas; Lauter, Christoph; Muller, Jean-Michel (December 2006). CR-LIBM A library of correctly rounded elementary functions in double-precision (Report).
- ^ Brisebarre, N.; Defour, D.; Kornerup, P.; Muller, J.-M.; Revol, N. (March 2005). "A new range-reduction algorithm". IEEE Transactions on Computers. 54 (3): 331–339. doi:10.1109/TC.2005.36.
- ^ a b c d e musl v1.2.2 연산 디렉토리, log1p.c, log2.c, log10.c, exp2.c