Максимальное целочисленное значение MPFR

Имеют ли типы mpfr_t ограничение на наибольшее целочисленное значение, которое они могут хранить, или целочисленный компонент фактически неограничен (ограничен только ограничениями памяти на целевой машине), как типы mpz_t?

Если да, то есть ли простой способ обнаружить переполнение при анализе значения?


person Toothless204    schedule 22.06.2020    source источник
comment
MPFR построен на GMP. GMP не имеет реальных ограничений, кроме доступной памяти; разумно предположить, что MPFR аналогичен.   -  person Jonathan Leffler    schedule 22.06.2020
comment
@JonathanLeffler В GMP существует ограничение в 2 ^ 37 бит (для mpz_t), хотя оно довольно велико. Я упомянул об этом в своем ответе ниже, а также как мой ответ на конкретный вопрос об ограничениях GMP.   -  person vinc17    schedule 23.06.2020


Ответы (1)


Вы можете представлять большие целые числа, чем mpz_t, благодаря экспоненте, но вы можете расширить диапазон экспоненты с помощью mpfr_set_emax, чтобы максимальное представимое целое число было почти 2 ^ (2 ^ 62−1) на 64-битной платформе. . Тем не менее, вы не сможете точно представить все целые числа, поскольку некоторые целые числа (в частности, нечетные) требуют слишком большой точности. Что касается предела точности, теоретический предел в MPFR составляет MPFR_PREC_MAX, что огромно для 64-битных платформ. Но на практике вы сначала достигнете либо ограничения по объему памяти, либо ограничения в 2^37 бит на размер mpz_t.

person vinc17    schedule 23.06.2020