Я унаследовал проект, написанный на C, который использует реальный тип числа, отображаемый на число с плавающей запятой с множественной точностью из библиотеки многоточечной арифметики GNU (а) GMP).Как получить числа байтов числа реального типа, определенного в C, используя GMP
Во время выполнения, чтобы проверить количество байтов для этого вещественного типа номера, можно запустить:
printf("Storage size for Real type: %d bytes\n", sizeof(Real));
дает 24 байта, то есть 192 бит.
Однако файл, определяющий класс также имеет следующие строки:
#define REAL_EPSILON 1e-24
#define REAL_FORMAT "% 25.24Fe"
#define REAL_IOTA 1e-96
#define REAL_PRECISION 128
Может кто-нибудь пролить свет на эти строки? Я особенно обеспокоен тем, указывает ли последняя строка 128 бит, или 16 байт, на количество байтов для десятичной части числа.
Это означает, что для мантиссы 16 байт, но структура 'Real' также включает в себя элементы для экспонента и знака, а может быть и другие вещи. Это остальные 8 байтов. – Barmar
@ Барнар: Позвольте мне убедиться, что я вас понимаю: вы говорите, что я, по сути, правильно понял, что 16 байтов для десятичного числа? –
Да, я так думаю. Если вы хотите быть уверенным, проверьте исходный код и посмотрите на объявление структуры для «Real». – Barmar