임의의 정밀도 산술을위한 라이브러리를 프로그래밍 중입니다. 내가 직면하고있는 마지막 문제는 힘 기능이다. 나는 x^y
대신에 2^(y log2(x))
을 계산했으며, 하나의 하위 문제가 남아 있다고 생각했습니다. (0,1)
(0과 1은 제외) 범위의 x
으로 2^x
을 효율적으로 계산하려면 어떻게해야합니까?2^x의 수치 근사법
어쨌든 나는 분명히 합계를 저장하기 때문에, x
의 형태는 p/q
(p < q
)입니다. 따라서 (위키 백과의 n 번째 루트 알고리즘 https://en.wikipedia.org/wiki/Nth_root_algorithm)의 q
번째 루트를 계산 한 다음 결과를 p
으로 계산할 수 있습니다.
그러나 이것은 매우 비효율적 인 것처럼 보입니다. 어떤 우수한 알고리즘이 있습니까? 당신의 도움을 주셔서 감사합니다.
당신이 그것에 대해 더 생각한다면 자연 로그가 왜 자연인지를 알게 될 것입니다. 'exp (y * ln (x))'는 상수가 적다. -이 기능들의 입증 된 구현을 위해 [bc libmath] (http://www.rkeene.org/viewer/devel/old/bc-dos/bc/libmath.b.htm)를 공부하십시오. – LutzL
기본 사항에 대해서는 [음의 지수에 대한 제곱에 의한 힘] (http://stackoverflow.com/a/30962495/2521214)을 참조하십시오. 고급 항목에 대한 하위 링크 특히 '고정 소수점 비넘 풋 (fixed point bignum pow)' – Spektre