언어 자료구조 알고리즘/C11 표준 라이브러리 함수

FREXP, FREXPF, FREXPL

언제나휴일 2016. 1. 3. 16:19
반응형

double frexp(double value, int *exp); 지수와 가수 계산
float frexpf(float value, int *exp); 지수와 가수 계산
long double frexpl(long double value, int *exp); 지수와 가수 계산
 
입력 매개 변수 리스트
value 계산에 사용할 값
exp 지수를 설정할 메모리 주소
반환 값
가수
 
frexp 함수는 입력 인자로 받은 value 값을 2진수로 계산할 때 지수부와 가수부를 계산합니다. 가수부는 함수의 결과로 반환하며 지수는 두번째 인지로 전달한 메모리 주소에 설정합니다. 반환받은 값을 mantissa라 하고 두번째 인력 인자로 exp 변수의 주소를 전달했다면 value = mantissa*2^exp 를 성립합니다.
 
사용 예
//C언어 표준 라이브러리 함수 사용법 가이드
//double frexp(double value, int *exp); 지수와 가수 계산
//float frexpf(float value, int *exp); 지수와 가수 계산
//long double frexpl(long double value, int *exp); 지수와 가수 계산
//특정 실수가 x*2^exp 인지 확인
 
#include <math.h>
#include <stdio.h>
 
int main(void)
{
    double value;
    double exp;
    float expf;
    long double expl;
    int mantissa;
 
    value = 1.0;
    exp = frexp(value, &mantissa);
    printf("%f = %f*2^%d \n", value, exp, mantissa);
 
    value = 2.0;
    exp = frexp(value, &mantissa);
    printf("%f = %f*2^%d \n", value, exp, mantissa);
 
    value = 4.0;
    exp = frexp(value, &mantissa);
    printf("%f = %f*2^%d \n", value, exp, mantissa);
 
    value = 0.5;
    exp = frexp(value, &mantissa);
    printf("%f = %f*2^%d \n", value, exp, mantissa);
 
    value = 3.5;
    exp = frexp(value, &mantissa);
    printf("%f = %f*2^%d \n", value, exp, mantissa);
 
    value = 0.1;
    exp = frexp(value, &mantissa);
    expf = frexpf((float)value, &mantissa);
    expl = frexpl(value, &mantissa);
    printf("frexp  함수 사용: %f = %.30f*2^%d \n", value, exp, mantissa);
    printf("frexpf 함수 사용: %f = %.30f*2^%d \n", value, expf, mantissa);
    printf("frexpl 함수 사용: %f = %.30f*2^%d \n", value, expl, mantissa);
    return 0;
}
 
출력
1.000000 = 0.500000*2^1
2.000000 = 0.500000*2^2
4.000000 = 0.500000*2^3
0.500000 = 0.500000*2^0
3.500000 = 0.875000*2^2
frexp  함수 사용: 0.100000 = 0.800000000000000044408920985006*2^-3
frexpf 함수 사용: 0.100000 = 0.800000011920928955078125000000*2^-3
frexpl 함수 사용: 0.100000 = 0.800000000000000044408920985006*2^-3

반응형

'언어 자료구조 알고리즘 > C11 표준 라이브러리 함수' 카테고리의 다른 글

FLOOR, FLOORF, FLOORL  (0) 2016.01.03
FMOD, FMODF, FMODL  (0) 2016.01.03
CEIL, CEILF, CEILL  (0) 2016.01.03
POW, POWF, POWL  (0) 2016.01.03
HYPOT, HYPOTF, HYPOTL  (0) 2016.01.03
MODF, MODFF, MODFL  (0) 2016.01.03
LOG, LOGF, LOGL  (0) 2016.01.03
LDEXP, LDEXPF, LDEXPL  (0) 2016.01.03
LOG1P, LOG1PF, LOG1PL  (0) 2016.01.03
TAN, TANF, TANL  (0) 2016.01.03