MATH.H

<math.h> 헤더에는 수치 연산에 관한 여러 가지 함수와 매크로와 형식을 제공하고 있습니다.

이 책에서는 <math.h> 헤더에서 제공하는 함수 중에 150여개의 함수 사용법을 소개합니다. 대부분 입력 인자가 double, float, long double만 차이가 있고 실제 수행하는 기능은 같은 함수군으로 제공하여 실제 쓰임새로 구분하면 50여개의 함수군을 소개합니다.

double acos(double x); arc cosine 계산
float acosf(float x); arc cosine 계산
long double acosl(long double x); arc cosine 계산

double asin(double x); arc sine 계산
float asinf(float x); arc sine 계산
long double asinl(long double x); arc sine 계산

double atan(double x); arc tangent 계산
float atanf(float x); arc tangent 계산
long double atanl(long double x); arc tangent 계산

double atan2(double y, double x); arc tangent 계산
float atan2f(float y, float x); arc tangent 계산
long double atan2l(long double y, long double x); arc tangent 계산

double cos(double x); cosine 계산
float cosf(float x); cosine 계산
long double cosl(long double x); cosine 계산

double sin(double x); sine 계산
float sinf(float x); sine 계산
long double sinl(long double x); sine 계산

double tan(double x); tangent 계산
float tanf(float x); tangent 계산
long double tanl(long double x); tangent 계산

double exp(double x); 지수 계산
float expf(float x); 지수 계산
long double expl(long double x); 지수 계산

double frexp(double value, int *exp); 지수와 가수 계산
float frexpf(float value, int *exp); 지수와 가수 계산
long double frexpl(long double value, int *exp); 지수와 가수 계산

double ldexp(double x, int exp); x * 2 ^ exp 계산
float ldexpf(float x, int exp); x * 2 ^ exp 계산
long double ldexpl(long double x, int exp); x * 2 ^ exp 계산

double log(double x); log 계산
float logf(float x); log 계산
long double logl(long double x); log 계산

double modf(double value, double *iptr); 실수 값을 정수 부분과 소수점 부분으로 분할
float modff(float value, float *iptr); 실수 값을 정수 부분과 소수점 부분으로 분할
long double modfl(long double value, long double *iptr); 실수 값을 정수 부분과 소수점 부분으로 분할

double hypot(double x, double y); 직각 삼각형의 빗변의 길이 계산
float hypotf(float x, float y); 직각 삼각형의 빗변의 길이 계산
long double hypotl(long double x, long double y); 직각 삼각형의 빗변의 길이 계산

double pow(double x, double y); 지수를 계산
float powf(float x, float y); 지수를 계산
long double powl(long double x, long double y); 지수를 계산

double ceil(double x); 올림
float ceilf(float x); 올림
long double ceill(long double x); 올림

double floor(double x);  내림
float floorf(float x); 내림
long double floorl(long double x); 내림

double fmod(double x, double y); 나머지
float fmodf(float x, float y); 나머지
long double fmodl(long double x, long double y); 나머지

double acosh(double x); 쌍곡선 arc cosine 함수
float acoshf(float x); 쌍곡선 arc cosine 함수
long double acoshl(long double x); 쌍곡선 arc cosine 함수

double asinh(double x); 쌍곡선 arc sine 함수
float asinhf(float x); 쌍곡선 arc sine 함수
long double asinhl(long double x); 쌍곡선 arc sine 함수

double atanh(double x); 쌍곡선 arc tangent 함수
float atanhf(float x); 쌍곡선 arc tangent 함수
long double atanhl(long double x); 쌍곡선 arc tangent 함수

double cosh(double x); 쌍곡선 cosine 함수
float coshf(float x); 쌍곡선 cosine 함수
long double coshl(long double x); 쌍곡선 cosine 함수

double sinh(double x); 쌍곡선 sine 함수
float sinhf(float x); 쌍곡선 sine 함수
long double sinhl(long double x); 쌍곡선 sine 함수

double tanh(double x); 쌍곡선 tangent 함수
float tanhf(float x); 쌍곡선 tangent 함수
long double tanhl(long double x); 쌍곡선 tangent 함수

double exp2(double x); 밑수가 2인 지수
float exp2f(float x); 밑수가 2인 지수
long double exp2l(long double x); 밑수가 2인 지수

int ilogb(double x); 밑수가 2인 로그 함수
int ilogbf(float x); 밑수가 2인 로그 함수
int ilogbl(long double x); 밑수가 2인 로그 함수

double log2(double x);  밑수가 2인 로그
float log2f(float x); 밑수가 2인 로그
long double log2l(long double x); 밑수가 2인 로그

double logb(double x); 밑수가 2인 로그에서 정수 부분
float logbf(float x); 밑수가 2인 로그에서 정수 부분
long double logbl(long double x); 밑수가 2인 로그에서 정수 부분

double scalbn(double x, int n); x 곱하기 2^n
float scalbnf(float x, int n); x 곱하기 2^n
long double scalbnl(long double x, int n); x 곱하기 2^n

double cbrt(double x); 삼제곱근
float cbrtf(float x); 삼제곱근
long double cbrtl(long double x); 삼제곱근

double erf(double x); 오차 함수
float erff(float x); 오차 함수
long double erfl(long double x); 오차 함수

double erfc(double x); 여오차함수 (1 - erf(x))
float erfcf(float x); 여오차함수 (1 - erf(x))
long double erfcl(long double x); 여오차함수 (1 - erf(x))

double lgamma(double x); 감마(x)의 절대값의 자연 로그 계산
float lgammaf(float x); 감마(x)의 절대값의 자연 로그 계산
long double lgammal(long double x); 감마(x)의 절대값의 자연로그 계산

double tgamma(double x); 감마함수
float tgammaf(float x); 감마함수
long double tgammal(long double x); 감마함수

double nearbyint(double x); 가장 가까운 정수
float nearbyintf(float x); 가장 가까운 정수
long double nearbyintl(long double x); 가장 가까운 정수

long int lrint(double x); 가장 가까운 정수
long int lrintf(float x); 가장 가까운 정수
long int lrintl(long double x); 가장 가까운 정수
long long int llrint(double x); 가장 가까운 정수
long long int llrintf(float x); 가장 가까운 정수
long long int llrintl(long double x); 가장 가까운 정수

double round(double x); 반올림, nearbyint와 같음
float roundf(float x); 반올림, nearbyintf와 같음
long double roundl(long double x); 반올림, nearbyintl과 같음

long int lround(double x); 반올림, lrint와 같음
long int lroundf(float x); 반올림, lrintf와 같음
long int lroundl(long double x); 반올림, lrintl과 같음
long long int llround(double x); 반올림, llrint와 같음
long long int llroundf(float x); 반올림, llrintf와 같음
long long int llroundl(long double x); 반올림, llrintl과 같음

double trunc(double x); 소수점 이하 자리 버림
float truncf(float x);  소수점 이하 자리 버림
long double truncl(long double x); 소수점 이하 자리 버림

double remainder(double x, double y); 나머지
float remainderf(float x, float y); 나머지
long double remainderl(long double x, long double y); 나머지

double remquo(double x, double y, int *quo); 나누기
float remquof(float x, float y, int *quo); 나누기
long double remquol(long double x, long double y,int *quo); 나누기

double copysign(double x, double y); y의 부호를 x의 부호로 사용
float copysignf(float x, float y); y의 부호를 x의 부호로 사용
long double copysignl(long double x, long double y); y의 부호를 x의 부호로 사용

double nan(const char *tagp); nan 반환
float nanf(const char *tagp); nan 반환
long double nanl(const char *tagp); nan 반환

double nextafter(double x, double y); x 보다 바로 큰(작은) 실수
float nextafterf(float x, float y); x 보다 바로 큰(작은) 실수
long double nextafterl(long double x, long double y); x 보다 바로 큰(작은) 실수

double nexttoward(double x, long double y); x 보다 바로 큰(작은) 실수
float nexttowardf(float x, long double y); x 보다 바로 큰(작은) 실수
long double nexttowardl(long double x, long double y); x 보다 바로 큰(작은) 실수

double fdim(double x, double y); x-y와 0 중에 큰 값
float fdimf(float x, float y); x-y와 0 중에 큰 값
long double fdiml(long double x, long double y); x-y와 0 중에 큰 값

double fmax(double x, double y); 최대값
float fmaxf(float x, float y); 최대값
long double fmaxl(long double x, long double y); 최대값

double fmin(double x, double y); 최소값
float fminf(float x, float y); 최소값
long double fminl(long double x, long double y); 최소값

double fma(double x, double y, double z); (x*y)+z
float fmaf(float x, float y, float z); (x*y)+z
long double fmal(long double x, long double y,long double z);(x*y)+z

int isgreater(real-floating x, real-floating y); x>y 매크로 함수
int isgreaterequal(real - floating x, real - floating y); x>=y 매크로 함수
int isless(real-floating x, real-floating y); x<y 매크로 함수
int islessequal(real-floating x, real-floating y); x<=y 매크로 함수
int islessgreater(real-floating x, real-floating y); (x>y)||(x<y) 매크로 함수
int isunordered(real-floating x, real-floating y); (isnan(x)||isnan(y)) 매크로 함수
int fpclassify(real-floating x); x가 어떤 종류의 값인지 판별
int isfinite(real - floating x); x가 inf가 아닌지 판별
int isnan(real-floating x); x가 nan인지 판별
int isinf(real-floating x); x가 inf인지 팔별
int signbit(real-floating x); x가 음수인지 판별

acos asin atan atan2 cos sin tan log1p ldexp log modf frexp hypot pow ceil floor fmod acosh asinh atanh cosh sinh tanh exp2 ilogb log2 logb scalbn cbrt erf erfc lgamma tgamma nearbyint lrint round lround trunc remainder remquo copysign nan nextafter nexttoward fdim fmax fmin fma 실수 판별식 매크로