Namespaces
Variants

Floating-point extensions part 1: binary floating-point arithmetic

From cppreference.net

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>
단일 부동소수점 숫자를 지정된 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)
logb 와 동일하지만 반환 타입이 long
(함수)
인수 중 최대 크기를 가진 값을 반환합니다
(함수)
인수 중 최소 크기 값을 반환합니다
(함수)
다음으로 큰 표현 가능한 부동소수점 값을 반환합니다
(함수)
다음으로 작은 표현 가능한 부동소수점 값을 반환합니다
(함수)
(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 와 동일한 값을 계산합니다
(함수)
ISO 60559 전체 순서 관계를 사용하여 두 부동 소수점 값을 정렬합니다
(함수)
ISO 60559 전체 순서 관계를 사용하여 두 부동 소수점 값의 크기를 정렬합니다
(함수)
주어진 부동 소수점 값의 ISO 60559 표준 이진 인코딩을 획득합니다
(함수)
주어진 NaN 값에서 페이로드를 추출합니다
(함수)
지정된 페이로드를 가진 정숙 NaN을 생성합니다
(함수)
지정된 페이로드를 가진 시그널링 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 함수들은 설정된 경우 동적 라운딩 모드보다 정적 라운딩 모드를 우선적으로 따릅니다.