본문 바로가기

컴퓨터 과학 & 영상처리 관련/C / C++

math.h log는 자연로그

http://ko.wikipedia.org/wiki/Math.h

 

 

math.h

위키백과, 우리 모두의 백과사전.
C 표준 라이브러리
v d e h

math.h는 여러 수학 함수들을 포함하는 C 언어표준 라이브러리이다. 대부분의 함수들이 부동소수점을 다루며, 각도는 라디안을 사용한다.

목차

[숨기기]

[편집] 예제

다음 예제는 부동소수점 수들의 거듭제곱을 출력한다.

int main (void)
{
  printf ("7 ^ 3 = %lf\n", pow (7,3));
  printf ("4.73 ^ 12 = %lf\n", pow (4.73,12));
  printf ("32.01 ^ 1.54 = %lf\n", pow (32.01,1.54));
  return 0;
}

실행 결과

7 ^ 3 = 343.000000
4.73 ^ 12 = 125410439.217423
32.01 ^ 1.54 = 208.036691

[편집] 함수

함수 설명
삼각 함수
double sin ( double x ); 사인 x를 구한다.
double cos ( double x ); 코사인 x를 구한다.
double tan ( double x ); 탄젠트 x를 구한다.
역 삼각 함수
double asin ( double x ); 아크 사인 x를 구한다.
double acos ( double x ); 아크 코사인 x를 구한다.
double atan ( double x ); 아크 탄젠트 x를 구한다.
double atan2 ( double y, double x ); 아크 탄젠트 y/x를 구한다.
쌍곡선 함수
double sinh ( double x ); 하이퍼볼릭 사인 x를 구한다.
double cosh ( double x ); 하이퍼볼릭 코사인 x를 구한다.
double tanh ( double x ); 하이퍼볼릭 탄젠트 x를 구한다.
지수 · 대수 함수
double exp ( double x ); ex를 구한다.
double frexp ( double x, int * exp ); 지수를 exp가 가리키는 변수에 저장하고 가수를 반환한다.
double ldexp ( double x, int exp ); x * 2exp를 반환한다.
double log ( double x ); loge x를 구한다.
double log10 ( double x ); log10 x를 구한다.
double modf ( double x, double * intpart ); 정수부를 intpart가 가리키는 변수에 저장하고 소수부를 반환한다.
거듭제곱 · 거듭제곱근 · 올림 · 내림 · 절댓값 · 나머지 함수
double pow ( double base, double exponent ); baseexponent를 구한다.
double sqrt ( double x ); \sqrt{x}를 구한다.
double ceil ( double x ); x보다 작지 않은 가장 작은 정수를 구한다.
double floor ( double x ); x보다 크지 않은 가장 큰 정수를 구한다.
double fabs ( double x ); x의 절댓값을 구한다.
double fmod ( double numerator, double denominator ); numerator를 denominator로 나눈 나머지를 구한다.

[편집] XSI Extensions

아래의 문단에 한국어로 번역되지 않은 내용이 담겨 있습니다. 번역되지 않은 부분은 번역을 마치거나 삭제해주어야 합니다.

This section needs to be translated into Korean. The untranslated parts of the section should be rewritten in Korean or eliminated.

Extra functions may be available as X/Open System Interfaces Extensions. These are not present in any ANSI or ISO C standard.

Name Description
j0(x) Bessel function of x of the first kind of order 0
j1(x) Bessel function of x of the first kind of order 1
jn(n,x) Bessel function of x of the first kind of order n
scalb(x,y) x * FLT_RADIXy (x and y are doubles)
y0(x) Bessel function of x of the second kind of order 0
y1(x) Bessel function of x of the second kind of order 1
yn(n,x) Bessel function of x of the second kind of order n

The double-to-string conversion functions ecvt, fcvt and gcvt have been deprecated in favour of sprintf.

[편집] 변수 · 상수 · 형식

이름 설명
상수
HUGE_VAL 아주 큰 값을 나타낸다. 수학 계산에서 결과가 너무 커 오버플로우가 나면 이 값을 반환한다.
M_E 자연상수 e
M_LOG2E log2e
M_LOG10E log10e
M_LN2 loge2
M_LN10 loge10
M_PI 원주율 π
M_PI_2 {\pi \over 2}
M_PI_4 {\pi \over 4}
M_1_PI {1 \over \pi}
M_2_PI {2 \over \pi}
M_2_SQRTPI {2 \over \sqrt{\pi} }
M_SQRT2 \sqrt{2}
M_SQRT1_2 {1 \over \sqrt{2}}
이름공간

변수
행위

math.h 상용로그

자료구조 4,5 번 과제를 하다가 보니 로그 함수를 쓸 일이 생겼는데

C언어에서 제공되는 로그 함수는 밑을 e로 하는 자연로그와 밑을 10으로 하는 상용로그
밖에 없더군요.

저한테 필요했던 로그는 밑을 2로 하는 것이었는데
처음에 그것도 모르고 하다가 제대로된 동작을 안해서 한참을 삽질을 했었답니다 -_-;

그러다가 혹시나 로그값이 잘못 계산이 되는게 아닌가 싶어서 값을 출력해 보니
역시나.. 그제서야 log() <- 이 함수가 밑을 e로 하는 자연로그 라는걸 깨달았습니다.

그리고 나서 어떻게 밑을 바꾸는 방법이 없나 해서 여기저기 뒤져보니
아래와 같은 식이 있더군요.

logab = logeb / logea

라는 식이 있더군요. 결국 log24 를 구현을 할려면
log(4) / log(2) 이렇게 해 주어야 되더군요

별것 아니지만 모르면 낭패보는 것이기에 올립니다. ^^

 


http://blog.naver.com/PostView.nhn?blogId=pyjhm&logNo=40048668143

자연로그
http://blog.naver.com/PostView.nhn?blogId=lovetaehong&logNo=130076182473