Programming/C C++
1. 수학함수 일반

아래 함수사용시 math.h Header File선언이 필요합니다.

 함수  사용  설명
 sin()  sin(d);  sin값을 double형으로 반환합니다.
 cos()  cos(d);  cosin값을 double형으로 반환합니다.
 tan()  tan(d);  tangent값을 double형으로 반환합니다.
 exp()  exp(d);  ex값을 double형으로 반환합니다.
 expl()  expl(d);  ex값을 long double형으로 반환합니다.
 log()  log(d);  자연log(밑이e)값을 double형으로 반환합니다.
 log10()  log10(d);  상용log값을 double형으로 반환합니다.
 frexp()  frexp(d, *i);  d에서 mantissa(가수부)와 exponent(지부수)로 나누고 mantissa를 double형으로 반환합니다.
 ldexp()  ldexp(d, i)  d*2i 형식으로 계산을 수행합니다.

각 함수에서 d는 double형 인수를 의미하며 *i는 int형 Pointer, i는 int형 인수를 의미합니다.

#include <stdio.h>
#include <math.h>

main()
{
  double d1, d2;
  int i;
 
  printf("%f\n", sin(45*3.14/180));
  printf("%f\n", exp(-4));
  printf("%f\n", log(4));
 
  d1 = 5.0;
  d2 = frexp(d1, &i);
 
  printf("%f\n", d1);
  printf("%f\n", d2);
  printf("%d\n", i);
 
  printf("%f\n", ldexp(10,5));
}


sin(), cos(), tan()함수에서 인수는 각도가 아닌 Radian(호도)값입니다. 따라서 각도를 인수로 할 경우 d*3.14/180형식을 갖추어 Radian으로 변환하여야 합니다.


2. 절대값

아래 함수사용을 위해서는 stdlib.h(abs, labs)와 math.h(fabs) Header File선언이 필요합니다.

 함수  사용  설명
 abs()  abs(i);  int형 data의 절대값을 반환합니다.
 labs()  labs(l);  long형 data의 절대값을 반환합니다.
 fabs()  fabs(d);  double형 data의 절대값을 반환합니다.

각 함수의 인수에서 i는 int형, l은 long형, d는 double형 인수를 의미합니다.

#include <stdio.h>
#include <stdlib.h>
#include <math.h>

main()
{
  printf("%d\n", abs(-123));
  printf("%ld\n", labs(-123456789));
  printf("%f\n", fabs(-12.23));
}



3. 나머지

아래 함수 사용을 위해서는 stdlib.h(div(), ldiv())와 math.h(fmod()) Header File선언이 필요합니다.

 함수  사용  설명
 div()  div(ni, di);  분자(ni)와 분모(di)사이에 몫과 나머지값을 반환합니다.(int형)
 ldiv()  ldiv(nl, dl);  분자(nd)와 분모(dd)사이에 몫과 나머지값을 반환합니다.(long int형)
 fmod()  fmod(nd, dd);  double형 data의 나머지값을 반환합니다.

각 함수의 인수에서 ni, di는 int형, nl, dl은 long int형, nd, dd는 double형 인수를 의미합니다.

#include <stdio.h>
#include <stdlib.h>
#include <math.h>

main()
{
  div_t i;
 
  i = div(15, 4);
 
  printf("몫 %d\n", i.quot);
  printf("나머지 %d\n", i.rem);
 
  printf("%f\n", fmod(12.45, 2.38));
}


div()함수와 ldiv()함수는 몫과 나머지값을 동시에 반환하기 때문에 단일 형식의 변수로는 이 함수의 반환값을 받아올 수 없습니다.  따라서 div()함수인 경우 div_t로 ldiv()함수인 경우 ldiv_t로 변수를 선언하고 값을 받아와야 합니다.

이때 값을 받은 변수는 quot에는 몫을 rem에는 나머지값을 저장하도록 합니다.


4. 제곱근 처리

아래 함수 사용을 위해서는 math.h Header File선언이 필요합니다.

 함수  사용  설명
 pow()  pow(d1, d2);  d1의 d2승값을 double형태로 반환합니다.
 sqrt()  sqrt(d1);  d1의 제곱근값을 double형태로 반환합니다.

각 함수의 인수에서 d1, d2는 double형 인수를 의미합니다.

#include <stdio.h>
#include <math.h>

main()
{
  printf("%f\n", pow(5.5, 2.0));
  printf("%f\n", sqrt(12.34));
}



5. 소수점 처리

아래 함수 사용을 위해서는 math.h Header File선언이 필요합니다.

 함수  사용  설명
 ceil()  ceil(d);  double형의 d값에서 소수점 이하를 반올림한 값을 반환합니다.
 floor()  floor(d);  double형의 d값에서 소수점이하를 버린값을 반환합니다.
 modf()  modf(d, *d);  double형의 d값을 정수와 소수로 분리합니다.

각 함수의 인수에서 d는 double형, *d는 double형 Pointer인수를 의미합니다.

#include <stdio.h>
#include <math.h>

main()
{
  double d;
 
  printf("%f\n", ceil(12.34));
  printf("%f\n", floor(12.34));
 
  printf("소수부 : %f\n", modf(12.34, &d));
  printf("정수부 : %f\n", d);
}


modf()함수에서 소수부분은 직접반환하고 정수부분은 Pointer변수에 저장합니다.

0 0