Как я могу реализовать библиотеку GMP.mpz для генерации больших чисел в Pike?

Когда я ввожу команду:

пау (9,999999);

Я получаю следующее:

Bad argument 1 to pow(). Exponent too large.
Unknown program: pow(Gmp.mpz(999999))
-:1: 9->pow(@0=Gmp.mpz(999999))
HilfeInput:1: HilfeInput()->___HilfeWrapper()

Кто-нибудь сможет указать мне, как эффективно реализовать библиотеку GMP.mpz, например, для вычисления 9 ^999999 или факториала 500000. Заранее большое спасибо за вашу помощь.

С наилучшими пожеланиями

2 ответа

Похоже, это ограничение жестко закодировано в источниках Pike: static void mpzmod_pow(INT32 args) в src/modules/Gmp/mpz_glue.c, Источники, доступные здесь: источники щуки

Прошло 15 лет с тех пор, как я использовал щуку, так что это единственный возможный ответ:

1) возможно, вам понадобится pike, скомпилированный с поддержкой bignum: https://pike.lysator.liu.se/docs/man/chapter_3.html а затем вы можете использовать
pow() с произвольными целыми числами.

2) В качестве альтернативы возможно использование математического модуля.

Другие вопросы по тегам