C에는 자연로그(Natural Logarithm)를 구하는 log() 함수와, 밑(Base)이 10인 상용 로그를 구하는 log10() 함수만 있기에, 밑이 2인 로그 등을 구하려면 직접 함수를 만들어야 한다. 아래 예제에 logB() 라는 함수가 있는데
logB(숫자, 밑)
이런 형식으로 임의의 실수를 밑으로 지정할 수 있다.
C에서, 자연로그, 상용로그, 밑(Base)이 2인 로그 계산 예제
#include <stdio.h>
#include <math.h>
double logB(double x, double base);
int main(void) {
puts(” 자연 로그 :n”);
for (double d = 1.0; d <= 10.0; d++)
printf(” ln(%2.0f) = %.16fn”, d, log(d));
puts(“nnn 상용 로그 :n”);
for (double d = 1.0; d <= 10.0; d++)
printf(“log10(%2.0f) = %.16fn”, d, log10(d));
puts(“nnn 밑이 2인 로그 :n”);
for (double d = 1.0; d <= 10.0; d++)
printf(” log2(%2.0f) = %.16fn”, d, logB(d, 2.0));
return 0;
}
double logB(double x, double base) {
return log(x) / log(base);
}
#include <math.h>
double logB(double x, double base);
int main(void) {
puts(” 자연 로그 :n”);
for (double d = 1.0; d <= 10.0; d++)
printf(” ln(%2.0f) = %.16fn”, d, log(d));
puts(“nnn 상용 로그 :n”);
for (double d = 1.0; d <= 10.0; d++)
printf(“log10(%2.0f) = %.16fn”, d, log10(d));
puts(“nnn 밑이 2인 로그 :n”);
for (double d = 1.0; d <= 10.0; d++)
printf(” log2(%2.0f) = %.16fn”, d, logB(d, 2.0));
return 0;
}
double logB(double x, double base) {
return log(x) / log(base);
}