<개인공부>/[C언어, C++]

[C언어/C++] 로그함수(log, log10) 대해서.

BlockDMask 2019. 3. 22. 00:07
반응형

안녕하세요. BlockDMask 입니다.

오늘은 C, C++의 수학함수 중에 log 함수에 대해서 살펴보겠습니다.

다들 중고등학교때 지수, 로그 함수 배웠잖아요. 그 로그 log 함수입니다.

우리가 계산할 필요 없어요. 컴퓨터가 해주잖아요. 학생때보다는 좋아졌죠?

아 중고등학교 학생들도 있겠네요. 학생분들 log 함수 익숙하시죠?

로그도 메이저 로그들이 있잖아요. 이름을 특별히 붙여주는 자연로그, 상용로그 같은게 있었죠?

이름이 붙어있는 그 로그들의 함수를 살펴보러 가겠습니다.


1. C언어 log 함수 헤더파일과 함수 원형

C언어에서는 함수 오버로딩(overloading) 불가능하기 때문에 매개변수 자료형에 따라서 함수명이 다릅니다.


▼ C언어 log 함수 원형(들)과 설명.

헤더파일 : <math.h>

함수원형1 : double log(double n);

함수원형2 : float    logf(float n);

함수원형3 : long double logl(long double n);

함수설명 : log()함수는 자연로그를 말합니다. 밑이 e 인 로그를 계산해주는 함수입니다. 매개변수로 들어온 n을 Log e 를 해서 반환해줍니다.


▼ C언어 log10 함수 원형(들)

헤더파일 : <math.h>

함수원형1 : double log10(double n);

함수원형2 : float    log10f(float n);

함수원형3 : long double log10l(long double n);

함수설명 : log10() 함수는 상용로그를 말합니다. 즉, 밑이 10인 로그를 말합니다. 매개변수로 들어온 n을 Log 10 해서 반환해줍니다.


(잡담) C언어를 공부하시는 여러분들.

이렇게 매개변수 데이터 타입에 따라서 함수명이 다 다르니, 이걸 언제 외우겠습니까!! 그쵸! C++도 공부 하는걸 추천합니다!

(하지만, 만약에 "C++하기가 귀찮다, 힘들다" 하시는 분들은 제 블로그를 구~독 하셔서 여기서 함수를 그때그때 찾으면 됩니다 그쵸?)


2. C++ log 함수 헤더파일과 함수 원형

C++에서는 함수 오버로딩(overloading)이 가능하기 때문에 자료형 상관없이 하나의 함수명으로 이루어져있습니다.

(C언어 공부하시는 분들 C++도 공부하셔요~ 매우 편해요~)


▼ C++ log 함수 원형과 설명

헤더파일 : <cmath>

함수원형1 : double log(double n);

함수원형2 : float    log(float n);

함수원형3 : long double log(long double n);

함수설명 : log()함수는 자연로그를 말합니다. 밑이 e 인 로그를 계산해주는 함수입니다. 매개변수로 들어온 n을 Log e 를 해서 반환해줍니다.


▼ C++ log10 함수 원형과 설명

헤더파일 : <cmath>

함수원형1 : double log10(double n);

함수원형2 : float    log10(float n);

함수원형3 : long double log10(long double n);

함수설명 : log10() 함수는 상용로그를 말합니다. 즉, 밑이 10인 로그를 말합니다. 매개변수로 들어온 n을 Log 10 해서 반환해줍니다.


▽ (잡담얼마나 편하게요?

C++에서는 log() 함수 1개, log10() 함수 1개, 그래서 딱 두개만 외우면 됩니다.


3. C언어 log 함수 예제


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
//C언어 로그함수 예제
//BlockDMask.
#include<stdio.h>    //prinf
#include<math.h>    //log, log10
 
int main(void)
{
    double d1 = 100.0;
    double d2 = 3;
    float f1 = 100.f;
    float f2 = 3;
    int n1 = 100;
    int n2 = 3;
 
    printf("[double] log10(100.0) : %lf\n", log10(d1));
    printf("[double] log(3)       : %lf\n", log(d2));
    
    printf("[float] log10f(100.0) : %f\n", log10f(f1));
    printf("[float] logf(100.0)   : %f\n", logf(f2));
    
    printf("[int to float] log10f(100) : %f\n", log10f((float)n1));
    printf("[int to float] logf(3)     : %f\n", logf((float)n2));
    
    return 0;
}
cs


▲ C언어 로그함수 예제 결과

log10 함수는 밑이 10인 로그함수 이고, log 함수는 밑이 e인 로그함수 입니다.

매개변수 데이터 타입에 맞는 함수를 불러주어야합니다. 

double -> log(), log10()

float -> logf(), log10f();


4. C++ log 함수 예제


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
//C++ 로그함수 예제
//BlockDMask.
#include<iostream>    //cout
#include<cmath>        //log, log10
using namespace std;
 
int main(void)
{
    double d1 = 100.0;
    double d2 = 3;
    float f1 = 100.f;
    float f2 = 3;
    int n1 = 100;
    int n2 = 3;
 
    cout << "[double] log10(100.0) : " << log10(d1) << endl;
    cout << "[double] log(3)       : " << log(d2) << endl;
    
    cout << "[float]  log10(100.0) : " << log10(f1) << endl;
    cout << "[float]  log(100.0)   : " << log(f2) << endl;
    
    cout << "[int to float] log10(100) : " << log10(static_cast<float>(n1)) << endl;
    cout << "[int to float] log(3)     : " << log(static_cast<float>(n2)) << endl;
 
    return 0;
}
cs


▲ C++ 로그함수 예제 결과

log10 함수는 밑이 10인 로그함수 이고, log 함수는 밑이 e인 로그함수 입니다.

매개변수를 넘겨주면, 각 매개변수 타입에 맞는 함수가 불립니다.

double, float -> log(), log10()



끝까지 읽어주셔서 감사합니다. '좋아요'와 '구독'은 저에게 큰 힘이 됩니다.

반응형