Я хотел бы написать функцию, которая проверяет, что float
, double
или long double
полностью соответствуют формату IEEE-754. Я имею в виду:
- float = двоичный файл IEEE-75432
- double = двоичный файл IEEE-75464
- long double = двоичный файл IEEE-754128
Я думал, что std::numeric_limits<T>::is_iec559
соответствует этому, но он возвращает true
вместо long double
в моей 64-разрядной версии Linux, где sizeof(long double) = 16 bytes
, но внутренне закодирован в формате 80-bit
Intel. Итак, как это сделать?
is_iec559
указывает. - person Stephen Canon   schedule 30.06.2013sizeof(long double)
как 12 байтов на x86_32 и 16 байтов на x86_64 GNU G++ из-за требований к выравниванию памяти. - person Charles L Wilcox   schedule 25.11.2013