C ++ MPIR / MPFR совместимость

Я работаю над проектом, который имеет дело с очень большими целыми числами, и использовал MPIR библиотека, основанная на GMPlib для всего проекта.

Теперь мне требуется функция логарифма, которую MPIR не содержит. Другая библиотека, MPFR, также на основе GMPlib, имеет это.

Оба имеют целочисленный класс и имеют одинаковые имена, MPIR имеет mpz_t, MPFR имеет mpfr_t. Глядя на оба, они, кажется, основаны на том же базовом классе в GMPlib.

Можно ли каким-то образом преобразовать целое число в MPIR в целое число MPFR, чтобы использовать функцию log? Конечно, нелегким способом было бы использовать строку в качестве посредника, но это стоит хороших нескольких секунд. Любая помощь будет оценена.

Если контекст помогает, я пытаюсь реализовать эту логику: Наибольшая мощность 2 меньше, чем п.

0

Решение

MPIR и MPFR могут быть установлены одновременно. Вы можете преобразовать объект MPIR в строку, а затем создать объект MPFR, используя эту строку, но это, вероятно, будет гораздо более неэффективным, чем просто использование типов mpfr_t в вашей программе.

Если вы хотите получить инструкции о том, как установить их вместе, вот два видео, которые могут помочь:
https://www.youtube.com/watch?v=S06mX5dwIJ0
https://www.youtube.com/watch?v=je5ei4rCFiw

0

Другие решения


По вопросам рекламы [email protected]