언제나휴일 2016. 5. 10. 18:09
반응형

실수 판별식 매크로


헤더 파일

[언어 자료구조 알고리즘/C11 표준 라이브러리 함수] - math.h


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가 음수인지 판별

 

math.h 에서는 실수에 관한 다양한 판별식 매크로 함수를 제공합니다. 다음의 예제는 실수에 관한 다양한 판별식 매크로 함수를 사용하는 예제입니다.

 

사용 예

//C언어 표준 라이브러리 함수 가이드

//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가 음수인지 판별

//math.h 에서 제공하는 매크로 판별식 사용

 

#include <math.h>

#include <stdio.h>

 

int main(void)

{

    double d1 = 1.0, d2 = 0.0, d3=-1.0;

    double d4 = d1 / d2;//inf

    double d5 = nan("");//nan

 

    printf("%f>%f   : %d\n",d1,d2, isgreater(d1,d2));

    printf("%f>=%f : %d\n",d1,d2, isgreaterequal(d1,d2));

    printf("%f<%f   : %d\n",d1,d2, isless(d1,d2));

    printf("%f<=%f : %d\n", d1, d2,islessequal(d1, d2));

    printf("%f>%f || %f<%f : %d\n", d1,d2,d1,d2,islessgreater(d1, d2));

    printf("%f or %f is nan: %d\n",d1,d5, isunordered(d1, d5));

 

    printf("실수 분류 (nan:%d, inf:%d, normal:%d, subnormal:%d, zeor:%d)\n",

            FP_NAN, FP_INFINITE, FP_NORMAL, FP_SUBNORMAL, FP_ZERO);

    printf("%f 분류: %d\n", d1, fpclassify(d1));

    printf("%f 분류: %d\n", d2, fpclassify(d2));

    printf("%f 분류: %d\n", d3, fpclassify(d3));

    printf("%f 분류: %d\n", d4, fpclassify(d4));

    printf("%f 분류: %d\n", d5, fpclassify(d5));

 

    printf("%f is finite: %d\n", d4, isfinite(d4));

    printf("%f is nan: %d\n", d5, isnan(d5));

    printf("%f is infinite: %d\n", d4, isinf(d4));

    if (signbit(d3))

    {

        printf("%f is 음수\n", d3);

    }

    else

    {

        printf("%f is 양수\n", d3);

    }

    return 0;

}

 

출력

1.000000>0.000000   : 1

1.000000>=0.000000 : 1

1.000000<0.000000   : 0

1.000000<=0.000000 : 0

1.000000>0.000000 || 1.000000<0.000000 : 1

1.000000 or nan is nan: 1

classify (nan:2, inf:1, normal:-1, subnormal:-2, zeor:0)

1.000000 classify: -1

0.000000 classify: 0

-1.000000 classify: -1

inf classify: 1

nan classify: 2

inf is finite: 0

nan is nan: 1

inf is infinite: 1

-1.000000 is 음수



사용한 함수

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




  앞으로 프로그래밍 관련 글은 새롭게 개설한 언제나 휴일 전용 사이트에서 만나보세요. 

2017년 1월 1일까지 이 곳의 프로그래밍 자료는 http://ehpub.co.kr 로 옮길 예정입니다.
 

반응형