2013-11-26 3 views
0

연습용과 권태감 용으로 맞춤 BigDecimal 클래스를 만들고 추가, 뺄셈, 곱셈 및 나눗셈을위한 맞춤 알고리즘을 보유하고 있으며 지수화를위한 함수를 만들고 싶습니다. 그러나 소수 부분의 힘은 n-root를 포함하므로, 나는 지수화할 수있는 간단한 방법이 없다고 생각할 수 있습니다. 내 수업은 두 개의 BigInteger (java.math.BigInteger 클래스는 아니지만 숫자가 포함 된 String BigInteger.number 및 분명히 숫자가 음수인지 여부를 알려주는 boolean BigInteger.negative을 포함하는 클래스)를 사용하여 작동합니다. 그 중 하나는 다음과 같습니다. 숫자의 정수 부분 (BigInteger BigDecimal.ipart)과 나머지 부분 (BigInteger BigDecimal.fpart)입니다. 또한 나눗셈의 정확도를 정의하는 boolean BigDecimal.negativelong BigDecimal.precission을 포함합니다. 내 질문은, 현재의 설치와 잘 작동하는 알고리즘이 있습니까?BigDecimal 지수화

참고 : 두 java 파일이 여기 될 수있다 .. 보통 BigInteger.java & BigDecimal.java

+1

예, 구현을 공개하지 마십시오. 우리 중 대부분은 코드를 더 잘 생각한다고 생각합니다. –

+0

@InduDevanath 파일에 대한 링크를 추가했습니다. –

답변

2

, POW (a, b)과 같이 계산된다 EXP (b *의 LN의 (a)). exp()와 ln()은 시리즈의 특정 정밀도까지 계산됩니다 (예 : this). 필요한 것은 이미 가지고있는 더하기, 빼기, 곱하기 및 나누기 연산뿐입니다.

숫자가 항상 진짜 합계이기 때문에 정수 지수 알고리즘, n 번째 루트 알고리즘 및 존재 여부를 확인하기위한 신중한 확인이 필요합니다 (예 : sqrt (-1)은 NaN이어야 함). Newton's method과 같이 n 번째 루트를 계산하기 위해 + - */만 사용하는 다양한 알고리즘이 있습니다.

업데이트 :here's another n-th root algorithm 정수 연산 만 있습니다.

또한 정수 계산을 효율적으로 구현하면 대답을 이진 검색 할 수 있습니다.

다음은 현재 설정에 맞는 가장 간단한 방법입니다.