sizeinbase для mpz_class в GNU GMP - PullRequest
       12

sizeinbase для mpz_class в GNU GMP

0 голосов
/ 27 января 2019

В C у нас есть mpz_t, и мы можем получить доступ к размеру в base по

size_t mpz_sizeinbase (const mpz_t op, int base)

В mpz_class я пробовал

counter.sizeinbase(2);

, который не сделалне работает.

error: ‘mpz_class {aka class __gmp_expr<__mpz_struct [1], __mpz_struct [1]>}’ has no member named ‘sizeinbase’
      size_t size = (counter.sizeinbase(2) + CHAR_BIT-1) / CHAR_BIT;

Мне нужно использовать mpz_class, чтобы упростить код для unordered_map

Существует ли аналогичная функция для mpz_class или обходного пути?

1 Ответ

0 голосов
/ 27 января 2019

Используйте метод get_mpz_t для доступа к завернутому значению mpz_t.

mpz_class x = ...;
size_t xbits = mpz_sizeinbase(x.get_mpz_t(), 2);

По крайней мере, это работает в MPIR, я предполагаю, что оно работает и в GMP.

...