-
[C] Log2 (밑이 2인 로그 함수) 구하기Programming/C언어 2014. 3. 28. 02:53반응형
C에는 자연로그를 구하는 log() 함수와, 밑(base)이 10인 상용 로그를 구하는 log10()함수만 있기때문에 밑이 2인 로그를 구하려면 직접 함수를 만들어야 한다.
logB(숫자, 밑)
이라는 함수를 만들어 사용하도록 하자.
double logB(double x, double base) { return log(x)/log(base); }
매크로 함수로 정의해서 사용해도 잘 된다.
#define logB(x, base) log(x)/log(base)
base에 2.0 대신 다른수를 넣어주면 다양한 밑을 가진 로그를 구할 수 있다.
원리는 다음과 같은 공식을 사용한 것이다.
예제
#include <stdio.h> #include <math.h> //#define logB(x, base) log(x)/log(base) double logB(double x, double base) { return log(x)/log(base); } int main() { printf("log2(8) = %f", logB(8.0,2.0)); return 0; }
반응형'Programming > C언어' 카테고리의 다른 글
[C] malloc, calloc, realloc을 이용한 메모리 동적 할당 (22) 2014.06.26 [C] 스택(Stack), 힙(Heap), 데이터(Data)영역 (26) 2014.06.26 [C] C언어 M_PI 사용하기 (3) 2014.03.26