float
, double
또는 long double
이 IEEE-754 형식을 완벽하게 준수하는지 확인하는 함수를 작성하고 싶습니다. 내 말은 :부동 소수점 유형이 IEEE-754를 완전히 준수하는지 여부를 반환하는 함수?
- 플로트 = IEEE-754 binary32
- 이중 = IEEE-754 binary64
- 긴 이중 = IEEE-754 binary128
내가 std::numeric_limits<T>::is_iec559
그에 해당하는 것을 생각했지만, 내 리눅스 (64)에 long double
에 대한 true
을 반환 비트는 sizeof(long double) = 16 bytes
이지만 내부적으로는 Intel 형식 인 80-bit
으로 인코딩됩니다. 그렇게하는 법?
인텔 ® 형식 80 비트 **는 ** IEEE-754 규격 형식입니다 (특히 3.7 절에서 정의 된 "binary64 확장"형식의 요구 사항을 충족 함). 나는 형식이 IEEE-754 "기본 형식"(또는 아마도 "교환 형식")인지 여부를 지정하는 술어를 원한다고 생각합니다. 그것은 is_iec559가 가리키는 것보다 훨씬 더 구체적인 요구 사항이다. –
나는'sizeof (long double)'을 메모리 정렬 요구 사항 때문에 x86_32에서 12 바이트로, x86_64 GNU G ++에서 16 바이트로 정기적으로 봅니다. –