<math.h>의 sqrt()를 사용하지 않고 제곱근을 구하는 소스
NUM_REPEAT값은 16~20 이면 충분하다.
큰수의 제곱근을 구할경우 NUM_REPEAT값을 더 큰수로 정하면 된다.
원리는 뉴튼-랩슨법을 이용한 근사값 구하기
double mysqrt(unsigned int src)
{
unsigned int NUM_REPEAT = 16;
unsigned int k;
double t;
double buf = (double)src;
for(k=0,t=buf;k<NUM_REPEAT;k++)
{
if(t<1.0)
break;
t = (t*t+buf)/(2.0*t);
}
return t;
}
NUM_REPEAT값은 16~20 이면 충분하다.
큰수의 제곱근을 구할경우 NUM_REPEAT값을 더 큰수로 정하면 된다.
원리는 뉴튼-랩슨법을 이용한 근사값 구하기
double mysqrt(unsigned int src)
{
unsigned int NUM_REPEAT = 16;
unsigned int k;
double t;
double buf = (double)src;
for(k=0,t=buf;k<NUM_REPEAT;k++)
{
if(t<1.0)
break;
t = (t*t+buf)/(2.0*t);
}
return t;
}
'c/c++' 카테고리의 다른 글
쓰레드를 이용한 행렬 곱연산 (0) | 2010.09.16 |
---|---|
c/c++ 2차원(이차원) 배열 동적할당 방법2 (0) | 2010.08.06 |
c언어 2차원(이차원) 배열 동적 할당 방법 (0) | 2010.08.03 |
sin 그래프 (0) | 2010.07.30 |
중복없는 숫자 뽑기 (0) | 2010.07.29 |