Floating-point extensions part 1: binary floating-point arithmetic
C를 위한 부동 소수점 확장 - 파트 1: 이진 부동 소수점 연산, ISO/IEC TS 18661-1:2014은 ISO/IEC/IEEE 60559:2011(IEEE-754의 현재 개정판)의 권고에 따라 C 표준 라이브러리에 대한 다음과 같은 새로운 구성 요소들을 정의합니다.
|
__STDC_IEC_60559_BFP__
|
long
타입의 정수 상수로 값은
201ymmL
이며,
__STDC_IEC_559__
를 대체합니다
(매크로 상수) |
|
__STDC_IEC_60559_COMPLEX__
|
long
타입의 정수 상수이며 값은
201ymmL
,
__STDC_IEC_559_COMPLEX__
를 대체함
(매크로 상수) |
|
헤더 파일에 정의됨
<limits.h>
|
|
|
CHAR_WIDTH SCHAR_WIDTH UCHAR_WIDTH
SHRT_WIDTH USHRT_WIDTH
INT_WIDTH UINT_WIDTH
LONG_WIDTH ULONG_WIDTH
LLONG_WIDTH ULLONG_WIDTH
(FP Ext 1 TS)
|
해당 타입의 비트 너비
(매크로 상수) |
|
헤더 파일에 정의됨
<float.h>
|
|
|
(FP Ext 1 TS)
|
지원되는 모든 이진 부동소수점 타입과 CR_DECIMAL_DIG 유효 십진 숫자 이하의 문자 시퀀스 간 변환이 올바르게 반올림됨 (이는 최소 DECIMAL_DIG + 3임)
(매크로 상수) |
|
헤더 파일에 정의됨
<fenv.h>
|
|
|
femode_t
(FP Ext 1 TS)
|
구현에서 지원하는 동적 부동 소수점 제어 모드들의 집합으로, 동적 반올림 방향 모드를 포함함
(typedef) |
|
FE_DFL_MODE
(FP Ext 1 TS)
|
기본 femode_t에 대한 포인터
(매크로 상수) |
|
FE_SNANS_ALWAYS_SIGNAL
(FP Ext 1 TS)
|
qNaN을 억제하는 함수들(예:
hypot
또는
fmax
)가 sNaN 인수를 받을 때 FE_INVALID를 발생시키고 qNaN을 반환하는 경우 정의됨 (정수 상수 1)
(매크로 상수) |
|
(FP Ext 1 TS)
|
지정된 부동 소수점 예외 플래그를 설정하며, 해당 예외를 발생시킬 때 발생하는 부수 효과 없이 설정합니다
(함수) |
|
(FP Ext 1 TS)
|
저장된 부동 소수점 예외 플래그 표현에 지정된 플래그들이 설정되어 있는지 검사합니다
(함수) |
|
(FP Ext 1 TS)
|
구현체의 모든 동적 부동 소수점 제어 모드를 집합적으로 가져오고 설정함
(함수) |
|
헤더 파일에 정의됨
<stdint.h>
|
|
|
INTn_WIDTH UINTn_WIDTH
INT_LEASTn_WIDTH UINT_LEASTn_WIDTH
INT_FASTn_WIDTH UINT_FASTn_WIDTH
INTPTR_WIDTH UINTPTR_WIDTH
INTMAX_WIDTH UINTMAX_WIDTH
PTRDIFF_WIDTH
SIG_ATOMIC_WIDTH
SIZE_WIDTH
WCHAR_WIDTH WINT_WIDTH
(FP Ext 1 TS)
|
해당 타입의 비트 단위 너비
(매크로 상수) |
|
헤더 파일에 정의됨
<stdlib.h>
|
|
|
(FP Ext 1 TS)
|
단일 부동소수점 숫자를 지정된 snprintf 형식을 사용하여 문자열로 변환
(함수) |
|
헤더 파일에 정의됨
<math.h>
|
|
|
FP_INT_UPWARD
FP_INT_DOWNWARD
FP_INT_TOWARDZERO
FP_INT_TONEARESTFROMZERO
FP_INT_TONEAREST
(FP Ext 1 TS)
|
ceil, floor, trunc, round, roundeven 함수들에 사용되는 반올림 방향으로, fromfp 함수군과 함께 사용하기에 적합함
(매크로 상수) |
|
FP_LLOGB0
(FP Ext 1 TS)
|
인수가 0일 때
llogb
가 반환하는 값
(매크로 상수) |
|
FP_LLOGBNAN
(FP Ext 1 TS)
|
llogb
가 인수가 NaN일 때 반환하는 값
(매크로 상수) |
|
(FP Ext 1 TS)
|
각각 float, double, long double에 대한 신호화 NaN을 나타냅니다
(매크로 상수) |
|
FP_FAST_FADD FP_FAST_FADDL FP_FAST_DADDL
FP_FAST_FSUB FP_FAST_FSUBL FP_FAST_DSUBL
FP_MAST_FMUL FP_FAST_FMULL FP_FAST_DMULL
FP_FAST_FDIV FP_FAST_FDIVL FP_FAST_DDIVL
FP_FAST_FFMA FP_FAST_FFMAL FP_FAST_DFMAL
FP_FAST_FSQRT FP_FAST_FSQRTL FP_FAST_DSQRTL
(FP Ext 1 TS)
|
정의된 경우, 해당 함수가 더 큰 타입의 동등한 함수를 실행한 후 대상 타입으로 캐스팅하는 것보다 더 빠르게 실행됨을 나타냅니다
(매크로 상수) |
|
iseqsig
(FP Ext 1 TS)
|
(함수 매크로) |
|
iscanonical
(FP Ext 1 TS)
|
부동 소수점 값이 정규 형식인지 테스트합니다
(함수 매크로) |
|
issignaling
(FP Ext 1 TS)
|
부동소수점 값이 시그널링 NaN인지 검사합니다
(함수 매크로) |
|
issubnormal
(FP Ext 1 TS)
|
부동소수점 값이 서브노멀인지 검사합니다
(함수 매크로) |
|
iszero
(FP Ext 1 TS)
|
부동소수점 값이 제로(양수, 음수, 부호 없는)인지 테스트합니다
(function macro) |
|
(FP Ext 1 TS)
|
지정된 반올림 방향을 사용하여 부호 있는 정수로 반올림
(함수) |
|
(FP Ext 1 TS)
|
지정된 반올림 방향을 사용하여 부호 없는 정수로 반올림
(함수) |
|
(FP Ext 1 TS)
|
지정된 반올림 방향을 사용하여 부호 있는 정수로 반올림하고, 부정확함을 보고함
(함수) |
|
(FP Ext 1 TS)
|
지정된 반올림 방향을 사용하여 부호 없는 정수로 반올림하고, 부정확함을 보고함
(함수) |
|
(FP Ext 1 TS)
|
가장 가까운 값으로 반올림, 중간값은 짝수로 반올림
(함수) |
|
(FP Ext 1 TS)
|
logb
와 동일하지만 반환 타입이
long
임
(함수) |
|
(FP Ext 1 TS)
|
인수 중 최대 크기를 가진 값을 반환합니다
(함수) |
|
(FP Ext 1 TS)
|
인수 중 최소 크기 값을 반환합니다
(함수) |
|
(FP Ext 1 TS)
|
다음으로 큰 표현 가능한 부동소수점 값을 반환합니다
(함수) |
|
(FP Ext 1 TS)
|
다음으로 작은 표현 가능한 부동소수점 값을 반환합니다
(함수) |
|
(FP Ext 1 TS)
|
무한 정밀도로 계산된 x+y를 대상 타입으로 한 번만 반올림하여 계산
(함수) |
|
(FP Ext 1 TS)
|
무한 정밀도로 계산된 x-y를 대상 타입으로 한 번만 반올림하여 계산
(함수) |
|
(FP Ext 1 TS)
|
무한 정밀도로 계산하고 대상 타입으로 한 번 반올림한 x*y를 계산합니다
(함수) |
|
(FP Ext 1 TS)
|
무한 정밀도로 계산된 x/y를 대상 타입으로 한 번만 반올림하여 계산
(함수) |
|
(FP Ext 1 TS)
|
무한 정밀도로 계산하고 대상 타입으로 한 번만 반올림한
fma
와 동일하게 계산합니다
(함수) |
|
(FP Ext 1 TS)
|
무한 정밀도로 계산하고 대상 타입으로 한 번만 반올림한
sqrt
와 동일한 값을 계산합니다
(함수) |
|
(FP Ext 1 TS)
|
ISO 60559 전체 순서 관계를 사용하여 두 부동 소수점 값을 정렬합니다
(함수) |
|
(FP Ext 1 TS)
|
ISO 60559 전체 순서 관계를 사용하여 두 부동 소수점 값의 크기를 정렬합니다
(함수) |
|
(FP Ext 1 TS)
|
주어진 부동 소수점 값의 ISO 60559 표준 이진 인코딩을 획득합니다
(함수) |
|
(FP Ext 1 TS)
|
주어진 NaN 값에서 페이로드를 추출합니다
(함수) |
|
(FP Ext 1 TS)
|
지정된 페이로드를 가진 정숙 NaN을 생성합니다
(함수) |
|
(FP Ext 1 TS)
|
지정된 페이로드를 가진 시그널링 NaN을 생성합니다
(함수) |
|
헤더에 정의됨
<tgmath.h>
|
|
|
roundeven
(FP Ext 1 TS)
|
roundeven
의
일반화된 오버로드
(함수) |
|
llogb
(FP Ext 1 TS)
|
llogb
의 일반 오버로드
(함수) |
|
fmaxmag
(FP Ext 1 TS)
|
fmaxmag의 제네릭 오버로드
fmaxmag
(함수) |
|
fminmag
(FP Ext 1 TS)
|
fminmag의 제네릭 오버로드
fminmag
(함수) |
|
nextup
(FP Ext 1 TS)
|
nextup의 제네릭 오버로드
nextup
(함수) |
|
nextdown
(FP Ext 1 TS)
|
nextdown
의 일반 오버로드
(함수) |
|
fromfp
(FP Ext 1 TS)
|
fromfp
의 일반 오버로드
(함수) |
|
ufromfp
(FP Ext 1 TS)
|
ufromfp의 일반 오버로드
ufromfp
(함수) |
|
fromfpx
(FP Ext 1 TS)
|
fromfpx의 제네릭 오버로드
fromfpx
(함수) |
|
ufromfpx
(FP Ext 1 TS)
|
ufromfpx
의
일반 오버로드
(함수) |
|
nextdown
(FP Ext 1 TS)
|
nextdown
의 일반 오버로드
(함수) |
|
totalorder
(FP Ext 1 TS)
|
totalorder의 제네릭 오버로드
totalorder
(함수) |
|
totalordermag
(FP Ext 1 TS)
|
totalordermag의 제네릭 오버로드
totalordermag
(함수) |
|
fadd
(FP Ext 1 TS)
|
fadd의 일반화된 오버로드
fadd
(함수) |
|
dadd
(FP Ext 1 TS)
|
dadd
의 일반 오버로드
(함수) |
|
fsub
(FP Ext 1 TS)
|
fsub
의 일반 오버로드
(함수) |
|
dsub
(FP Ext 1 TS)
|
dsub의 일반 오버로드
dsub
(함수) |
|
fmul
(FP Ext 1 TS)
|
fmul
의
일반 오버로드
(함수) |
|
dmul
(FP Ext 1 TS)
|
dmul의 일반 오버로드
dmul
(함수) |
|
fdiv
(FP Ext 1 TS)
|
fdiv의 제네릭 오버로드
fdiv
(함수) |
|
ddiv
(FP Ext 1 TS)
|
ddiv
의 일반 오버로드
(함수) |
|
ffma
(FP Ext 1 TS)
|
ffma
의 일반 오버로드
(함수) |
|
dfma
(FP Ext 1 TS)
|
dfma
의 일반 오버로드
(함수) |
|
fsqrt
(FP Ext 1 TS)
|
fsqrt
의 일반화된 오버로드
(함수) |
|
dsqrt
(FP Ext 1 TS)
|
dsqrt
의 일반 오버로드
(함수) |
참고 사항
표준 C 매크로 __STDC_IEC_559__ 와 __STDC_IEC_559_COMPLEX__ 는 이 기술 사양에 의해 더 이상 사용되지 않습니다.
이 확장에 의해 C 라이브러리에 추가된 모든 함수와 매크로는 해당 헤더가 포함되기 전에 매크로 __STDC_WANT_IEC_60559_BFP_EXT__ 가 정의된 경우에만 선언됩니다.
표준 라이브러리 추가사항 외에도, ISO/IEC TS 18661-1:2014는 코어 언어에 여러 변경사항을 도입하였으며, 특히 부동 소수점 제어를 정적 방식(새로운 #pragma STDC FENV_ROUND 에 의해 제어됨)과 동적 방식( fesetround 에 의해 제어됨)으로 분리하였습니다. 대부분의 math.h 함수들은 설정된 경우 동적 라운딩 모드보다 정적 라운딩 모드를 우선적으로 따릅니다.
|
이 섹션은 불완전합니다
이유: pragma 페이지에 추가하거나 여기에 pragma를 완전히 설명할까요? |