blob: 4edabb0c3cde38f8bf52353216c09d8c28ee2e06 (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
|
/* See LICENSE file for copyright and license details. */
#include "internals"
#define num libzahl_tmp_str_num
#define mag libzahl_tmp_str_mag
#define div libzahl_tmp_str_div
size_t
zstr_length(z_t a, unsigned long long int radix)
{
size_t size_total = 1, size_temp;
zset(num, a);
while (!zzero(num)) {
zsetu(mag, radix);
zset(div, mag);
size_temp = 1;
while (zcmpmag(mag, num) <= 0) {
zset(div, mag);
zsqr(mag, mag);
size_temp <<= 1;
}
size_temp >>= 1;
size_total += size_temp;
zdiv(num, num, div);
}
return size_total;
}
|