2016-12-16 3 views
0

죄 함수의 다중 정밀도 버전의 구현을 찾으려고합니다. mpfr 라이브러리 (C/C++ 소스 코드)를 읽으려고하는데 실제 구현과 관련된 코드를 찾을 수 없습니다.다중 정밀도 기본 함수 구현

내가 근본적으로 알고 싶은 것은 인수 감소가 이런 경우에 (다중 정밀도) 수행되는 방법이다. 어쩌면 거대한 LUT가 pi의 역수를 나타 내기 위해 저장되어 모든 가능한 경우를 처리 할 수있다. 경우에 따라 가수 크기를 의미합니다).

구체적인 소스를 살펴 보겠습니까? 코드는 읽기가 아주 복잡합니다.

답변

1

거대한 LUT에서는 범위 축소가 구현되지 않습니다. 지수 범위가 너무 크기 때문에이 작업을 수행 할 수 없습니다. 완료되는 것은 단지 충분한 정확도로 pi를 계산하는 것입니다. pi의 값은 삼각 함수에 대한 다음 호출을 위해 캐시되고 pi는 더 많은 정확도가 필요할 때마다 다시 계산됩니다.

MPFR의 출처 및/또는 LaTeX가있는 doc 디렉토리에서 algorithms.pdf을 빌드하여 정보를 얻을 수 있습니다. 그러나이 문서는 항상 최신 정보가 아닐 수 있으며 일부 정보가 누락 될 수 있습니다.

+0

충분한 정확도로 무엇을 의미합니까? trig 함수를 평가할 때마다 계산됩니까? – user8469759

+0

@ user8469759 함수 구현은 어떤 정밀도 (동적으로 결정됨)를 가진 변수에서'mpfr_const_pi'를 호출합니다. 예를 들어, 변수의 정밀도가 500 비트이고 pi의 캐시 된 값의 정밀도가 600 비트이면 pi는 다시 계산되지 않습니다. 그러나 pi의 캐싱 된 값이 400 비트의 정밀도를 가지면,'mpfr_const_pi' 함수는 pi를 다시 계산하여 적어도 500 비트의 정밀도를 얻습니다. – vinc17

+0

왜 'pi'가 역 ('1/pi') 대신에 필요합니까? – user8469759