1 /* mpfr_get_str -- output a floating-point number to a string
2
3 Copyright 1999-2023 Free Software Foundation, Inc.
4 Contributed by the AriC and Caramba projects, INRIA.
5
6 This file is part of the GNU MPFR Library.
7
8 The GNU MPFR Library is free software; you can redistribute it and/or modify
9 it under the terms of the GNU Lesser General Public License as published by
10 the Free Software Foundation; either version 3 of the License, or (at your
11 option) any later version.
12
13 The GNU MPFR Library is distributed in the hope that it will be useful, but
14 WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
15 or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
16 License for more details.
17
18 You should have received a copy of the GNU Lesser General Public License
19 along with the GNU MPFR Library; see the file COPYING.LESSER. If not, see
20 https://www.gnu.org/licenses/ or write to the Free Software Foundation, Inc.,
21 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. */
22
23 #define MPFR_NEED_LONGLONG_H
24 #define MPFR_NEED_INTMAX_H
25 #include "mpfr-impl.h"
26
27 static int mpfr_get_str_aux (char *const, mpfr_exp_t *const, mp_limb_t *const,
28 mp_size_t, mpfr_exp_t, long, int, size_t, mpfr_rnd_t);
29
30 /* The implicit \0 is useless, but we do not write num_to_text[62] otherwise
31 g++ complains. */
32 static const char num_to_text36[] = "0123456789abcdefghijklmnopqrstuvwxyz";
33 static const char num_to_text62[] = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"
34 "abcdefghijklmnopqrstuvwxyz";
35
36 /* copy most important limbs of {op, n2} in {rp, n1} */
37 /* if n1 > n2 put 0 in low limbs of {rp, n1} */
38 #define MPN_COPY2(rp, n1, op, n2) \
39 if ((n1) <= (n2)) \
40 { \
41 MPN_COPY ((rp), (op) + (n2) - (n1), (n1)); \
42 } \
43 else \
44 { \
45 MPN_COPY ((rp) + (n1) - (n2), (op), (n2)); \
46 MPN_ZERO ((rp), (n1) - (n2)); \
47 }
48
49 #define MPFR_ROUND_FAILED 3
50
51 /* Input: an approximation r*2^f to a real Y, with |r*2^f - Y| <= 2^(e+f).
52
53 If rounding is possible, returns:
54 - in s: a string representing the significand corresponding to
55 the integer nearest to Y, within the direction rnd;
56 - in exp: the exponent.
57
58 n is the number of limbs of r.
59 e represents the maximal error in the approximation to Y (see above),
60 (e < 0 means that the approximation is known to be exact, i.e.,
61 r*2^f = Y).
62 b is the wanted base (2 <= b <= 62 or -36 <= b <= -2).
63 m is the number of wanted digits in the significand.
64 rnd is the rounding mode.
65 It is assumed that b^(m-1) <= Y < b^(m+1), thus the returned value
66 satisfies b^(m-1) <= rnd(Y) < b^(m+1).
67
68 Rounding may fail for two reasons:
69 - the error is too large to determine the integer N nearest to Y
70 - either the number of digits of N in base b is too large (m+1),
71 N=2*N1+(b/2) and the rounding mode is to nearest. This can
72 only happen when b is even.
73
74 Return value:
75 - the direction of rounding (-1, 0, 1) if rounding is possible
76 - -MPFR_ROUND_FAILED if rounding not possible because m+1 digits
77 - MPFR_ROUND_FAILED otherwise (too large error)
78 */
79 static int
mpfr_get_str_aux(char * const str,mpfr_exp_t * const exp,mp_limb_t * const r,mp_size_t n,mpfr_exp_t f,long e,int b,size_t m,mpfr_rnd_t rnd)80 mpfr_get_str_aux (char *const str, mpfr_exp_t *const exp, mp_limb_t *const r,
81 mp_size_t n, mpfr_exp_t f, long e, int b, size_t m,
82 mpfr_rnd_t rnd)
83 {
84 const char *num_to_text;
85 int b0 = b; /* initial base (might be negative) */
86 int dir; /* direction of the rounded result */
87 mp_limb_t ret = 0; /* possible carry in addition */
88 mp_size_t i0, j0; /* number of limbs and bits of Y */
89 unsigned char *str1; /* string of m+2 characters */
90 size_t size_s1; /* length of str1 */
91 mpfr_rnd_t rnd1;
92 size_t i;
93 int exact = (e < 0);
94 MPFR_TMP_DECL(marker);
95
96 /* if f > 0, then the maximal error 2^(e+f) is larger than 2 so we can't
97 determine the integer Y */
98 MPFR_ASSERTN(f <= 0);
99 /* if f is too small, then r*2^f is smaller than 1 */
100 MPFR_ASSERTN(f > (-n * GMP_NUMB_BITS));
101
102 MPFR_TMP_MARK(marker);
103
104 num_to_text = (2 <= b0 && b0 <= 36) ? num_to_text36 : num_to_text62;
105 b = (b0 > 0) ? b0 : -b0;
106
107 /* R = 2^f sum r[i]K^(i)
108 r[i] = (r_(i,k-1)...r_(i,0))_2
109 R = sum r(i,j)2^(j+ki+f)
110 the bits from R are referenced by pairs (i,j) */
111
112 /* check if is possible to round r with rnd mode
113 where |r*2^f - Y| <= 2^(e+f)
114 the exponent of R is: f + n*GMP_NUMB_BITS
115 we must have e + f == f + n*GMP_NUMB_BITS - err
116 err = n*GMP_NUMB_BITS - e
117 R contains exactly -f bits after the integer point:
118 to determine the nearest integer, we thus need a precision of
119 n * GMP_NUMB_BITS + f */
120
121 if (exact || mpfr_round_p (r, n, n * GMP_NUMB_BITS - e,
122 n * GMP_NUMB_BITS + f + (rnd == MPFR_RNDN)))
123 {
124 /* compute the nearest integer to R */
125
126 /* bit of weight 0 in R has position j0 in limb r[i0] */
127 i0 = (-f) / GMP_NUMB_BITS;
128 j0 = (-f) % GMP_NUMB_BITS;
129
130 ret = mpfr_round_raw (r + i0, r, n * GMP_NUMB_BITS, 0,
131 n * GMP_NUMB_BITS + f, rnd, &dir);
132 MPFR_ASSERTD(dir != MPFR_ROUND_FAILED);
133
134 if (ret) /* Y is a power of 2 */
135 {
136 if (j0)
137 r[n - 1] = MPFR_LIMB_HIGHBIT >> (j0 - 1);
138 else /* j0=0, necessarily i0 >= 1 otherwise f=0 and r is exact */
139 {
140 r[n - 1] = ret;
141 r[--i0] = 0; /* set to zero the new low limb */
142 }
143 }
144 else /* shift r to the right by (-f) bits (i0 already done) */
145 {
146 if (j0)
147 mpn_rshift (r + i0, r + i0, n - i0, j0);
148 }
149
150 /* now the rounded value Y is in {r+i0, n-i0} */
151
152 /* convert r+i0 into base b: we use b0 which might be in -36..-2 */
153 str1 = (unsigned char*) MPFR_TMP_ALLOC (m + 3); /* need one extra character for mpn_get_str */
154 size_s1 = mpn_get_str (str1, b, r + i0, n - i0);
155
156 /* round str1 */
157 MPFR_ASSERTN(size_s1 >= m);
158 *exp = size_s1 - m; /* number of superfluous characters */
159
160 /* if size_s1 = m + 2, necessarily we have b^(m+1) as result,
161 and the result will not change */
162
163 /* so we have to double-round only when size_s1 = m + 1 and
164 (i) the result is inexact
165 (ii) or the last digit is non-zero */
166 if ((size_s1 == m + 1) && ((dir != 0) || (str1[size_s1 - 1] != 0)))
167 {
168 /* rounding mode */
169 rnd1 = rnd;
170
171 /* round to nearest case */
172 if (rnd == MPFR_RNDN)
173 {
174 if (2 * str1[size_s1 - 1] == b)
175 {
176 if (dir == 0 && exact) /* exact: even rounding */
177 {
178 rnd1 = ((str1[size_s1 - 2] & 1) == 0)
179 ? MPFR_RNDD : MPFR_RNDU;
180 }
181 else
182 {
183 /* otherwise we cannot round correctly: for example
184 if b=10, we might have a mantissa of
185 xxxxxxx5.00000000 which can be rounded to nearest
186 to 8 digits but not to 7 */
187 dir = -MPFR_ROUND_FAILED;
188 MPFR_ASSERTD(dir != MPFR_EVEN_INEX);
189 goto free_and_return;
190 }
191 }
192 else if (2 * str1[size_s1 - 1] < b)
193 rnd1 = MPFR_RNDD;
194 else
195 rnd1 = MPFR_RNDU;
196 }
197
198 /* now rnd1 is either
199 MPFR_RNDD or MPFR_RNDZ -> truncate, or
200 MPFR_RNDU or MPFR_RNDA -> round toward infinity */
201
202 /* round away from zero */
203 if (rnd1 == MPFR_RNDU || rnd1 == MPFR_RNDA)
204 {
205 if (str1[size_s1 - 1] != 0)
206 {
207 /* the carry cannot propagate to the whole string, since
208 Y = x*b^(m-g) < 2*b^m <= b^(m+1)-b
209 where x is the input float */
210 MPFR_ASSERTN(size_s1 >= 2);
211 i = size_s1 - 2;
212 while (str1[i] == b - 1)
213 {
214 MPFR_ASSERTD(i > 0);
215 str1[i--] = 0;
216 }
217 str1[i]++;
218 }
219 dir = 1;
220 }
221 /* round toward zero (truncate) */
222 else
223 dir = -1;
224 }
225
226 /* copy str1 into str and convert to characters (digits and
227 lowercase letters from the source character set) */
228 for (i = 0; i < m; i++)
229 str[i] = num_to_text[(int) str1[i]]; /* str1[i] is an unsigned char */
230 str[m] = 0;
231 }
232 /* mpfr_can_round_raw failed: rounding is not possible */
233 else
234 {
235 dir = MPFR_ROUND_FAILED; /* should be different from MPFR_EVEN_INEX */
236 MPFR_ASSERTD(dir != MPFR_EVEN_INEX);
237 }
238
239 free_and_return:
240 MPFR_TMP_FREE(marker);
241
242 return dir;
243 }
244
245 /***************************************************************************
246 * __gmpfr_l2b[b-2][0] is a 23-bit upper approximation to log(b)/log(2), *
247 * __gmpfr_l2b[b-2][1] is a 77-bit upper approximation to log(2)/log(b). *
248 * The following code is generated by tests/tl2b (with an argument). *
249 ***************************************************************************/
250
251 #ifndef UINT64_C
252 # define UINT64_C(c) c
253 #endif
254
255 #if 0
256 #elif GMP_NUMB_BITS == 8
257 const mp_limb_t mpfr_l2b_2_0__tab[] = { 0x00, 0x00, 0x80 };
258 #elif GMP_NUMB_BITS == 16
259 const mp_limb_t mpfr_l2b_2_0__tab[] = { 0x0000, 0x8000 };
260 #elif GMP_NUMB_BITS == 32
261 const mp_limb_t mpfr_l2b_2_0__tab[] = { 0x80000000 };
262 #elif GMP_NUMB_BITS == 64
263 const mp_limb_t mpfr_l2b_2_0__tab[] = { UINT64_C(0x8000000000000000) };
264 #elif GMP_NUMB_BITS == 96
265 const mp_limb_t mpfr_l2b_2_0__tab[] = { 0x800000000000000000000000 };
266 #elif GMP_NUMB_BITS == 128
267 const mp_limb_t mpfr_l2b_2_0__tab[] = { 0x80000000000000000000000000000000 };
268 #elif GMP_NUMB_BITS == 256
269 const mp_limb_t mpfr_l2b_2_0__tab[] = { 0x8000000000000000000000000000000000000000000000000000000000000000 };
270 #endif
271
272 #if 0
273 #elif GMP_NUMB_BITS == 8
274 const mp_limb_t mpfr_l2b_2_1__tab[] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80 };
275 #elif GMP_NUMB_BITS == 16
276 const mp_limb_t mpfr_l2b_2_1__tab[] = { 0x0000, 0x0000, 0x0000, 0x0000, 0x8000 };
277 #elif GMP_NUMB_BITS == 32
278 const mp_limb_t mpfr_l2b_2_1__tab[] = { 0x00000000, 0x00000000, 0x80000000 };
279 #elif GMP_NUMB_BITS == 64
280 const mp_limb_t mpfr_l2b_2_1__tab[] = { UINT64_C(0x0000000000000000), UINT64_C(0x8000000000000000) };
281 #elif GMP_NUMB_BITS == 96
282 const mp_limb_t mpfr_l2b_2_1__tab[] = { 0x800000000000000000000000 };
283 #elif GMP_NUMB_BITS == 128
284 const mp_limb_t mpfr_l2b_2_1__tab[] = { 0x80000000000000000000000000000000 };
285 #elif GMP_NUMB_BITS == 256
286 const mp_limb_t mpfr_l2b_2_1__tab[] = { 0x8000000000000000000000000000000000000000000000000000000000000000 };
287 #endif
288
289 #if 0
290 #elif GMP_NUMB_BITS == 8
291 const mp_limb_t mpfr_l2b_3_0__tab[] = { 0x0e, 0xe0, 0xca };
292 #elif GMP_NUMB_BITS == 16
293 const mp_limb_t mpfr_l2b_3_0__tab[] = { 0x0e00, 0xcae0 };
294 #elif GMP_NUMB_BITS == 32
295 const mp_limb_t mpfr_l2b_3_0__tab[] = { 0xcae00e00 };
296 #elif GMP_NUMB_BITS == 64
297 const mp_limb_t mpfr_l2b_3_0__tab[] = { UINT64_C(0xcae00e0000000000) };
298 #elif GMP_NUMB_BITS == 96
299 const mp_limb_t mpfr_l2b_3_0__tab[] = { 0xcae00e000000000000000000 };
300 #elif GMP_NUMB_BITS == 128
301 const mp_limb_t mpfr_l2b_3_0__tab[] = { 0xcae00e00000000000000000000000000 };
302 #elif GMP_NUMB_BITS == 256
303 const mp_limb_t mpfr_l2b_3_0__tab[] = { 0xcae00e0000000000000000000000000000000000000000000000000000000000 };
304 #endif
305
306 #if 0
307 #elif GMP_NUMB_BITS == 8
308 const mp_limb_t mpfr_l2b_3_1__tab[] = { 0x48, 0x04, 0x4e, 0xe9, 0xa9, 0xa9, 0xc1, 0x9c, 0x84, 0xa1 };
309 #elif GMP_NUMB_BITS == 16
310 const mp_limb_t mpfr_l2b_3_1__tab[] = { 0x0448, 0xe94e, 0xa9a9, 0x9cc1, 0xa184 };
311 #elif GMP_NUMB_BITS == 32
312 const mp_limb_t mpfr_l2b_3_1__tab[] = { 0x04480000, 0xa9a9e94e, 0xa1849cc1 };
313 #elif GMP_NUMB_BITS == 64
314 const mp_limb_t mpfr_l2b_3_1__tab[] = { UINT64_C(0x0448000000000000), UINT64_C(0xa1849cc1a9a9e94e) };
315 #elif GMP_NUMB_BITS == 96
316 const mp_limb_t mpfr_l2b_3_1__tab[] = { 0xa1849cc1a9a9e94e04480000 };
317 #elif GMP_NUMB_BITS == 128
318 const mp_limb_t mpfr_l2b_3_1__tab[] = { 0xa1849cc1a9a9e94e0448000000000000 };
319 #elif GMP_NUMB_BITS == 256
320 const mp_limb_t mpfr_l2b_3_1__tab[] = { 0xa1849cc1a9a9e94e044800000000000000000000000000000000000000000000 };
321 #endif
322
323 #if 0
324 #elif GMP_NUMB_BITS == 8
325 const mp_limb_t mpfr_l2b_4_0__tab[] = { 0x00, 0x00, 0x80 };
326 #elif GMP_NUMB_BITS == 16
327 const mp_limb_t mpfr_l2b_4_0__tab[] = { 0x0000, 0x8000 };
328 #elif GMP_NUMB_BITS == 32
329 const mp_limb_t mpfr_l2b_4_0__tab[] = { 0x80000000 };
330 #elif GMP_NUMB_BITS == 64
331 const mp_limb_t mpfr_l2b_4_0__tab[] = { UINT64_C(0x8000000000000000) };
332 #elif GMP_NUMB_BITS == 96
333 const mp_limb_t mpfr_l2b_4_0__tab[] = { 0x800000000000000000000000 };
334 #elif GMP_NUMB_BITS == 128
335 const mp_limb_t mpfr_l2b_4_0__tab[] = { 0x80000000000000000000000000000000 };
336 #elif GMP_NUMB_BITS == 256
337 const mp_limb_t mpfr_l2b_4_0__tab[] = { 0x8000000000000000000000000000000000000000000000000000000000000000 };
338 #endif
339
340 #if 0
341 #elif GMP_NUMB_BITS == 8
342 const mp_limb_t mpfr_l2b_4_1__tab[] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80 };
343 #elif GMP_NUMB_BITS == 16
344 const mp_limb_t mpfr_l2b_4_1__tab[] = { 0x0000, 0x0000, 0x0000, 0x0000, 0x8000 };
345 #elif GMP_NUMB_BITS == 32
346 const mp_limb_t mpfr_l2b_4_1__tab[] = { 0x00000000, 0x00000000, 0x80000000 };
347 #elif GMP_NUMB_BITS == 64
348 const mp_limb_t mpfr_l2b_4_1__tab[] = { UINT64_C(0x0000000000000000), UINT64_C(0x8000000000000000) };
349 #elif GMP_NUMB_BITS == 96
350 const mp_limb_t mpfr_l2b_4_1__tab[] = { 0x800000000000000000000000 };
351 #elif GMP_NUMB_BITS == 128
352 const mp_limb_t mpfr_l2b_4_1__tab[] = { 0x80000000000000000000000000000000 };
353 #elif GMP_NUMB_BITS == 256
354 const mp_limb_t mpfr_l2b_4_1__tab[] = { 0x8000000000000000000000000000000000000000000000000000000000000000 };
355 #endif
356
357 #if 0
358 #elif GMP_NUMB_BITS == 8
359 const mp_limb_t mpfr_l2b_5_0__tab[] = { 0x7a, 0x9a, 0x94 };
360 #elif GMP_NUMB_BITS == 16
361 const mp_limb_t mpfr_l2b_5_0__tab[] = { 0x7a00, 0x949a };
362 #elif GMP_NUMB_BITS == 32
363 const mp_limb_t mpfr_l2b_5_0__tab[] = { 0x949a7a00 };
364 #elif GMP_NUMB_BITS == 64
365 const mp_limb_t mpfr_l2b_5_0__tab[] = { UINT64_C(0x949a7a0000000000) };
366 #elif GMP_NUMB_BITS == 96
367 const mp_limb_t mpfr_l2b_5_0__tab[] = { 0x949a7a000000000000000000 };
368 #elif GMP_NUMB_BITS == 128
369 const mp_limb_t mpfr_l2b_5_0__tab[] = { 0x949a7a00000000000000000000000000 };
370 #elif GMP_NUMB_BITS == 256
371 const mp_limb_t mpfr_l2b_5_0__tab[] = { 0x949a7a0000000000000000000000000000000000000000000000000000000000 };
372 #endif
373
374 #if 0
375 #elif GMP_NUMB_BITS == 8
376 const mp_limb_t mpfr_l2b_5_1__tab[] = { 0xb8, 0x67, 0x28, 0x97, 0x7b, 0x28, 0x48, 0xa3, 0x81, 0xdc };
377 #elif GMP_NUMB_BITS == 16
378 const mp_limb_t mpfr_l2b_5_1__tab[] = { 0x67b8, 0x9728, 0x287b, 0xa348, 0xdc81 };
379 #elif GMP_NUMB_BITS == 32
380 const mp_limb_t mpfr_l2b_5_1__tab[] = { 0x67b80000, 0x287b9728, 0xdc81a348 };
381 #elif GMP_NUMB_BITS == 64
382 const mp_limb_t mpfr_l2b_5_1__tab[] = { UINT64_C(0x67b8000000000000), UINT64_C(0xdc81a348287b9728) };
383 #elif GMP_NUMB_BITS == 96
384 const mp_limb_t mpfr_l2b_5_1__tab[] = { 0xdc81a348287b972867b80000 };
385 #elif GMP_NUMB_BITS == 128
386 const mp_limb_t mpfr_l2b_5_1__tab[] = { 0xdc81a348287b972867b8000000000000 };
387 #elif GMP_NUMB_BITS == 256
388 const mp_limb_t mpfr_l2b_5_1__tab[] = { 0xdc81a348287b972867b800000000000000000000000000000000000000000000 };
389 #endif
390
391 #if 0
392 #elif GMP_NUMB_BITS == 8
393 const mp_limb_t mpfr_l2b_6_0__tab[] = { 0x08, 0x70, 0xa5 };
394 #elif GMP_NUMB_BITS == 16
395 const mp_limb_t mpfr_l2b_6_0__tab[] = { 0x0800, 0xa570 };
396 #elif GMP_NUMB_BITS == 32
397 const mp_limb_t mpfr_l2b_6_0__tab[] = { 0xa5700800 };
398 #elif GMP_NUMB_BITS == 64
399 const mp_limb_t mpfr_l2b_6_0__tab[] = { UINT64_C(0xa570080000000000) };
400 #elif GMP_NUMB_BITS == 96
401 const mp_limb_t mpfr_l2b_6_0__tab[] = { 0xa57008000000000000000000 };
402 #elif GMP_NUMB_BITS == 128
403 const mp_limb_t mpfr_l2b_6_0__tab[] = { 0xa5700800000000000000000000000000 };
404 #elif GMP_NUMB_BITS == 256
405 const mp_limb_t mpfr_l2b_6_0__tab[] = { 0xa570080000000000000000000000000000000000000000000000000000000000 };
406 #endif
407
408 #if 0
409 #elif GMP_NUMB_BITS == 8
410 const mp_limb_t mpfr_l2b_6_1__tab[] = { 0x10, 0xff, 0xe9, 0xf9, 0x54, 0xe0, 0x36, 0x92, 0x11, 0xc6 };
411 #elif GMP_NUMB_BITS == 16
412 const mp_limb_t mpfr_l2b_6_1__tab[] = { 0xff10, 0xf9e9, 0xe054, 0x9236, 0xc611 };
413 #elif GMP_NUMB_BITS == 32
414 const mp_limb_t mpfr_l2b_6_1__tab[] = { 0xff100000, 0xe054f9e9, 0xc6119236 };
415 #elif GMP_NUMB_BITS == 64
416 const mp_limb_t mpfr_l2b_6_1__tab[] = { UINT64_C(0xff10000000000000), UINT64_C(0xc6119236e054f9e9) };
417 #elif GMP_NUMB_BITS == 96
418 const mp_limb_t mpfr_l2b_6_1__tab[] = { 0xc6119236e054f9e9ff100000 };
419 #elif GMP_NUMB_BITS == 128
420 const mp_limb_t mpfr_l2b_6_1__tab[] = { 0xc6119236e054f9e9ff10000000000000 };
421 #elif GMP_NUMB_BITS == 256
422 const mp_limb_t mpfr_l2b_6_1__tab[] = { 0xc6119236e054f9e9ff1000000000000000000000000000000000000000000000 };
423 #endif
424
425 #if 0
426 #elif GMP_NUMB_BITS == 8
427 const mp_limb_t mpfr_l2b_7_0__tab[] = { 0xb4, 0xab, 0xb3 };
428 #elif GMP_NUMB_BITS == 16
429 const mp_limb_t mpfr_l2b_7_0__tab[] = { 0xb400, 0xb3ab };
430 #elif GMP_NUMB_BITS == 32
431 const mp_limb_t mpfr_l2b_7_0__tab[] = { 0xb3abb400 };
432 #elif GMP_NUMB_BITS == 64
433 const mp_limb_t mpfr_l2b_7_0__tab[] = { UINT64_C(0xb3abb40000000000) };
434 #elif GMP_NUMB_BITS == 96
435 const mp_limb_t mpfr_l2b_7_0__tab[] = { 0xb3abb4000000000000000000 };
436 #elif GMP_NUMB_BITS == 128
437 const mp_limb_t mpfr_l2b_7_0__tab[] = { 0xb3abb400000000000000000000000000 };
438 #elif GMP_NUMB_BITS == 256
439 const mp_limb_t mpfr_l2b_7_0__tab[] = { 0xb3abb40000000000000000000000000000000000000000000000000000000000 };
440 #endif
441
442 #if 0
443 #elif GMP_NUMB_BITS == 8
444 const mp_limb_t mpfr_l2b_7_1__tab[] = { 0xb8, 0x37, 0x11, 0xa7, 0x4d, 0x75, 0xd6, 0xc9, 0x60, 0xb6 };
445 #elif GMP_NUMB_BITS == 16
446 const mp_limb_t mpfr_l2b_7_1__tab[] = { 0x37b8, 0xa711, 0x754d, 0xc9d6, 0xb660 };
447 #elif GMP_NUMB_BITS == 32
448 const mp_limb_t mpfr_l2b_7_1__tab[] = { 0x37b80000, 0x754da711, 0xb660c9d6 };
449 #elif GMP_NUMB_BITS == 64
450 const mp_limb_t mpfr_l2b_7_1__tab[] = { UINT64_C(0x37b8000000000000), UINT64_C(0xb660c9d6754da711) };
451 #elif GMP_NUMB_BITS == 96
452 const mp_limb_t mpfr_l2b_7_1__tab[] = { 0xb660c9d6754da71137b80000 };
453 #elif GMP_NUMB_BITS == 128
454 const mp_limb_t mpfr_l2b_7_1__tab[] = { 0xb660c9d6754da71137b8000000000000 };
455 #elif GMP_NUMB_BITS == 256
456 const mp_limb_t mpfr_l2b_7_1__tab[] = { 0xb660c9d6754da71137b800000000000000000000000000000000000000000000 };
457 #endif
458
459 #if 0
460 #elif GMP_NUMB_BITS == 8
461 const mp_limb_t mpfr_l2b_8_0__tab[] = { 0x00, 0x00, 0xc0 };
462 #elif GMP_NUMB_BITS == 16
463 const mp_limb_t mpfr_l2b_8_0__tab[] = { 0x0000, 0xc000 };
464 #elif GMP_NUMB_BITS == 32
465 const mp_limb_t mpfr_l2b_8_0__tab[] = { 0xc0000000 };
466 #elif GMP_NUMB_BITS == 64
467 const mp_limb_t mpfr_l2b_8_0__tab[] = { UINT64_C(0xc000000000000000) };
468 #elif GMP_NUMB_BITS == 96
469 const mp_limb_t mpfr_l2b_8_0__tab[] = { 0xc00000000000000000000000 };
470 #elif GMP_NUMB_BITS == 128
471 const mp_limb_t mpfr_l2b_8_0__tab[] = { 0xc0000000000000000000000000000000 };
472 #elif GMP_NUMB_BITS == 256
473 const mp_limb_t mpfr_l2b_8_0__tab[] = { 0xc000000000000000000000000000000000000000000000000000000000000000 };
474 #endif
475
476 #if 0
477 #elif GMP_NUMB_BITS == 8
478 const mp_limb_t mpfr_l2b_8_1__tab[] = { 0xb0, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa };
479 #elif GMP_NUMB_BITS == 16
480 const mp_limb_t mpfr_l2b_8_1__tab[] = { 0xaab0, 0xaaaa, 0xaaaa, 0xaaaa, 0xaaaa };
481 #elif GMP_NUMB_BITS == 32
482 const mp_limb_t mpfr_l2b_8_1__tab[] = { 0xaab00000, 0xaaaaaaaa, 0xaaaaaaaa };
483 #elif GMP_NUMB_BITS == 64
484 const mp_limb_t mpfr_l2b_8_1__tab[] = { UINT64_C(0xaab0000000000000), UINT64_C(0xaaaaaaaaaaaaaaaa) };
485 #elif GMP_NUMB_BITS == 96
486 const mp_limb_t mpfr_l2b_8_1__tab[] = { 0xaaaaaaaaaaaaaaaaaab00000 };
487 #elif GMP_NUMB_BITS == 128
488 const mp_limb_t mpfr_l2b_8_1__tab[] = { 0xaaaaaaaaaaaaaaaaaab0000000000000 };
489 #elif GMP_NUMB_BITS == 256
490 const mp_limb_t mpfr_l2b_8_1__tab[] = { 0xaaaaaaaaaaaaaaaaaab000000000000000000000000000000000000000000000 };
491 #endif
492
493 #if 0
494 #elif GMP_NUMB_BITS == 8
495 const mp_limb_t mpfr_l2b_9_0__tab[] = { 0x0e, 0xe0, 0xca };
496 #elif GMP_NUMB_BITS == 16
497 const mp_limb_t mpfr_l2b_9_0__tab[] = { 0x0e00, 0xcae0 };
498 #elif GMP_NUMB_BITS == 32
499 const mp_limb_t mpfr_l2b_9_0__tab[] = { 0xcae00e00 };
500 #elif GMP_NUMB_BITS == 64
501 const mp_limb_t mpfr_l2b_9_0__tab[] = { UINT64_C(0xcae00e0000000000) };
502 #elif GMP_NUMB_BITS == 96
503 const mp_limb_t mpfr_l2b_9_0__tab[] = { 0xcae00e000000000000000000 };
504 #elif GMP_NUMB_BITS == 128
505 const mp_limb_t mpfr_l2b_9_0__tab[] = { 0xcae00e00000000000000000000000000 };
506 #elif GMP_NUMB_BITS == 256
507 const mp_limb_t mpfr_l2b_9_0__tab[] = { 0xcae00e0000000000000000000000000000000000000000000000000000000000 };
508 #endif
509
510 #if 0
511 #elif GMP_NUMB_BITS == 8
512 const mp_limb_t mpfr_l2b_9_1__tab[] = { 0x48, 0x04, 0x4e, 0xe9, 0xa9, 0xa9, 0xc1, 0x9c, 0x84, 0xa1 };
513 #elif GMP_NUMB_BITS == 16
514 const mp_limb_t mpfr_l2b_9_1__tab[] = { 0x0448, 0xe94e, 0xa9a9, 0x9cc1, 0xa184 };
515 #elif GMP_NUMB_BITS == 32
516 const mp_limb_t mpfr_l2b_9_1__tab[] = { 0x04480000, 0xa9a9e94e, 0xa1849cc1 };
517 #elif GMP_NUMB_BITS == 64
518 const mp_limb_t mpfr_l2b_9_1__tab[] = { UINT64_C(0x0448000000000000), UINT64_C(0xa1849cc1a9a9e94e) };
519 #elif GMP_NUMB_BITS == 96
520 const mp_limb_t mpfr_l2b_9_1__tab[] = { 0xa1849cc1a9a9e94e04480000 };
521 #elif GMP_NUMB_BITS == 128
522 const mp_limb_t mpfr_l2b_9_1__tab[] = { 0xa1849cc1a9a9e94e0448000000000000 };
523 #elif GMP_NUMB_BITS == 256
524 const mp_limb_t mpfr_l2b_9_1__tab[] = { 0xa1849cc1a9a9e94e044800000000000000000000000000000000000000000000 };
525 #endif
526
527 #if 0
528 #elif GMP_NUMB_BITS == 8
529 const mp_limb_t mpfr_l2b_10_0__tab[] = { 0x7a, 0x9a, 0xd4 };
530 #elif GMP_NUMB_BITS == 16
531 const mp_limb_t mpfr_l2b_10_0__tab[] = { 0x7a00, 0xd49a };
532 #elif GMP_NUMB_BITS == 32
533 const mp_limb_t mpfr_l2b_10_0__tab[] = { 0xd49a7a00 };
534 #elif GMP_NUMB_BITS == 64
535 const mp_limb_t mpfr_l2b_10_0__tab[] = { UINT64_C(0xd49a7a0000000000) };
536 #elif GMP_NUMB_BITS == 96
537 const mp_limb_t mpfr_l2b_10_0__tab[] = { 0xd49a7a000000000000000000 };
538 #elif GMP_NUMB_BITS == 128
539 const mp_limb_t mpfr_l2b_10_0__tab[] = { 0xd49a7a00000000000000000000000000 };
540 #elif GMP_NUMB_BITS == 256
541 const mp_limb_t mpfr_l2b_10_0__tab[] = { 0xd49a7a0000000000000000000000000000000000000000000000000000000000 };
542 #endif
543
544 #if 0
545 #elif GMP_NUMB_BITS == 8
546 const mp_limb_t mpfr_l2b_10_1__tab[] = { 0x90, 0x8f, 0x98, 0xf7, 0xcf, 0xfb, 0x84, 0x9a, 0x20, 0x9a };
547 #elif GMP_NUMB_BITS == 16
548 const mp_limb_t mpfr_l2b_10_1__tab[] = { 0x8f90, 0xf798, 0xfbcf, 0x9a84, 0x9a20 };
549 #elif GMP_NUMB_BITS == 32
550 const mp_limb_t mpfr_l2b_10_1__tab[] = { 0x8f900000, 0xfbcff798, 0x9a209a84 };
551 #elif GMP_NUMB_BITS == 64
552 const mp_limb_t mpfr_l2b_10_1__tab[] = { UINT64_C(0x8f90000000000000), UINT64_C(0x9a209a84fbcff798) };
553 #elif GMP_NUMB_BITS == 96
554 const mp_limb_t mpfr_l2b_10_1__tab[] = { 0x9a209a84fbcff7988f900000 };
555 #elif GMP_NUMB_BITS == 128
556 const mp_limb_t mpfr_l2b_10_1__tab[] = { 0x9a209a84fbcff7988f90000000000000 };
557 #elif GMP_NUMB_BITS == 256
558 const mp_limb_t mpfr_l2b_10_1__tab[] = { 0x9a209a84fbcff7988f9000000000000000000000000000000000000000000000 };
559 #endif
560
561 #if 0
562 #elif GMP_NUMB_BITS == 8
563 const mp_limb_t mpfr_l2b_11_0__tab[] = { 0x54, 0x67, 0xdd };
564 #elif GMP_NUMB_BITS == 16
565 const mp_limb_t mpfr_l2b_11_0__tab[] = { 0x5400, 0xdd67 };
566 #elif GMP_NUMB_BITS == 32
567 const mp_limb_t mpfr_l2b_11_0__tab[] = { 0xdd675400 };
568 #elif GMP_NUMB_BITS == 64
569 const mp_limb_t mpfr_l2b_11_0__tab[] = { UINT64_C(0xdd67540000000000) };
570 #elif GMP_NUMB_BITS == 96
571 const mp_limb_t mpfr_l2b_11_0__tab[] = { 0xdd6754000000000000000000 };
572 #elif GMP_NUMB_BITS == 128
573 const mp_limb_t mpfr_l2b_11_0__tab[] = { 0xdd675400000000000000000000000000 };
574 #elif GMP_NUMB_BITS == 256
575 const mp_limb_t mpfr_l2b_11_0__tab[] = { 0xdd67540000000000000000000000000000000000000000000000000000000000 };
576 #endif
577
578 #if 0
579 #elif GMP_NUMB_BITS == 8
580 const mp_limb_t mpfr_l2b_11_1__tab[] = { 0x70, 0xe1, 0x10, 0x9d, 0x22, 0xeb, 0x0e, 0x4e, 0x00, 0x94 };
581 #elif GMP_NUMB_BITS == 16
582 const mp_limb_t mpfr_l2b_11_1__tab[] = { 0xe170, 0x9d10, 0xeb22, 0x4e0e, 0x9400 };
583 #elif GMP_NUMB_BITS == 32
584 const mp_limb_t mpfr_l2b_11_1__tab[] = { 0xe1700000, 0xeb229d10, 0x94004e0e };
585 #elif GMP_NUMB_BITS == 64
586 const mp_limb_t mpfr_l2b_11_1__tab[] = { UINT64_C(0xe170000000000000), UINT64_C(0x94004e0eeb229d10) };
587 #elif GMP_NUMB_BITS == 96
588 const mp_limb_t mpfr_l2b_11_1__tab[] = { 0x94004e0eeb229d10e1700000 };
589 #elif GMP_NUMB_BITS == 128
590 const mp_limb_t mpfr_l2b_11_1__tab[] = { 0x94004e0eeb229d10e170000000000000 };
591 #elif GMP_NUMB_BITS == 256
592 const mp_limb_t mpfr_l2b_11_1__tab[] = { 0x94004e0eeb229d10e17000000000000000000000000000000000000000000000 };
593 #endif
594
595 #if 0
596 #elif GMP_NUMB_BITS == 8
597 const mp_limb_t mpfr_l2b_12_0__tab[] = { 0x08, 0x70, 0xe5 };
598 #elif GMP_NUMB_BITS == 16
599 const mp_limb_t mpfr_l2b_12_0__tab[] = { 0x0800, 0xe570 };
600 #elif GMP_NUMB_BITS == 32
601 const mp_limb_t mpfr_l2b_12_0__tab[] = { 0xe5700800 };
602 #elif GMP_NUMB_BITS == 64
603 const mp_limb_t mpfr_l2b_12_0__tab[] = { UINT64_C(0xe570080000000000) };
604 #elif GMP_NUMB_BITS == 96
605 const mp_limb_t mpfr_l2b_12_0__tab[] = { 0xe57008000000000000000000 };
606 #elif GMP_NUMB_BITS == 128
607 const mp_limb_t mpfr_l2b_12_0__tab[] = { 0xe5700800000000000000000000000000 };
608 #elif GMP_NUMB_BITS == 256
609 const mp_limb_t mpfr_l2b_12_0__tab[] = { 0xe570080000000000000000000000000000000000000000000000000000000000 };
610 #endif
611
612 #if 0
613 #elif GMP_NUMB_BITS == 8
614 const mp_limb_t mpfr_l2b_12_1__tab[] = { 0x28, 0xfe, 0x24, 0x1c, 0x03, 0x0b, 0x1a, 0x9c, 0xd1, 0x8e };
615 #elif GMP_NUMB_BITS == 16
616 const mp_limb_t mpfr_l2b_12_1__tab[] = { 0xfe28, 0x1c24, 0x0b03, 0x9c1a, 0x8ed1 };
617 #elif GMP_NUMB_BITS == 32
618 const mp_limb_t mpfr_l2b_12_1__tab[] = { 0xfe280000, 0x0b031c24, 0x8ed19c1a };
619 #elif GMP_NUMB_BITS == 64
620 const mp_limb_t mpfr_l2b_12_1__tab[] = { UINT64_C(0xfe28000000000000), UINT64_C(0x8ed19c1a0b031c24) };
621 #elif GMP_NUMB_BITS == 96
622 const mp_limb_t mpfr_l2b_12_1__tab[] = { 0x8ed19c1a0b031c24fe280000 };
623 #elif GMP_NUMB_BITS == 128
624 const mp_limb_t mpfr_l2b_12_1__tab[] = { 0x8ed19c1a0b031c24fe28000000000000 };
625 #elif GMP_NUMB_BITS == 256
626 const mp_limb_t mpfr_l2b_12_1__tab[] = { 0x8ed19c1a0b031c24fe2800000000000000000000000000000000000000000000 };
627 #endif
628
629 #if 0
630 #elif GMP_NUMB_BITS == 8
631 const mp_limb_t mpfr_l2b_13_0__tab[] = { 0x02, 0xd4, 0xec };
632 #elif GMP_NUMB_BITS == 16
633 const mp_limb_t mpfr_l2b_13_0__tab[] = { 0x0200, 0xecd4 };
634 #elif GMP_NUMB_BITS == 32
635 const mp_limb_t mpfr_l2b_13_0__tab[] = { 0xecd40200 };
636 #elif GMP_NUMB_BITS == 64
637 const mp_limb_t mpfr_l2b_13_0__tab[] = { UINT64_C(0xecd4020000000000) };
638 #elif GMP_NUMB_BITS == 96
639 const mp_limb_t mpfr_l2b_13_0__tab[] = { 0xecd402000000000000000000 };
640 #elif GMP_NUMB_BITS == 128
641 const mp_limb_t mpfr_l2b_13_0__tab[] = { 0xecd40200000000000000000000000000 };
642 #elif GMP_NUMB_BITS == 256
643 const mp_limb_t mpfr_l2b_13_0__tab[] = { 0xecd4020000000000000000000000000000000000000000000000000000000000 };
644 #endif
645
646 #if 0
647 #elif GMP_NUMB_BITS == 8
648 const mp_limb_t mpfr_l2b_13_1__tab[] = { 0xf8, 0x57, 0xb4, 0xf7, 0x20, 0xcb, 0xc6, 0xa7, 0x5c, 0x8a };
649 #elif GMP_NUMB_BITS == 16
650 const mp_limb_t mpfr_l2b_13_1__tab[] = { 0x57f8, 0xf7b4, 0xcb20, 0xa7c6, 0x8a5c };
651 #elif GMP_NUMB_BITS == 32
652 const mp_limb_t mpfr_l2b_13_1__tab[] = { 0x57f80000, 0xcb20f7b4, 0x8a5ca7c6 };
653 #elif GMP_NUMB_BITS == 64
654 const mp_limb_t mpfr_l2b_13_1__tab[] = { UINT64_C(0x57f8000000000000), UINT64_C(0x8a5ca7c6cb20f7b4) };
655 #elif GMP_NUMB_BITS == 96
656 const mp_limb_t mpfr_l2b_13_1__tab[] = { 0x8a5ca7c6cb20f7b457f80000 };
657 #elif GMP_NUMB_BITS == 128
658 const mp_limb_t mpfr_l2b_13_1__tab[] = { 0x8a5ca7c6cb20f7b457f8000000000000 };
659 #elif GMP_NUMB_BITS == 256
660 const mp_limb_t mpfr_l2b_13_1__tab[] = { 0x8a5ca7c6cb20f7b457f800000000000000000000000000000000000000000000 };
661 #endif
662
663 #if 0
664 #elif GMP_NUMB_BITS == 8
665 const mp_limb_t mpfr_l2b_14_0__tab[] = { 0xb4, 0xab, 0xf3 };
666 #elif GMP_NUMB_BITS == 16
667 const mp_limb_t mpfr_l2b_14_0__tab[] = { 0xb400, 0xf3ab };
668 #elif GMP_NUMB_BITS == 32
669 const mp_limb_t mpfr_l2b_14_0__tab[] = { 0xf3abb400 };
670 #elif GMP_NUMB_BITS == 64
671 const mp_limb_t mpfr_l2b_14_0__tab[] = { UINT64_C(0xf3abb40000000000) };
672 #elif GMP_NUMB_BITS == 96
673 const mp_limb_t mpfr_l2b_14_0__tab[] = { 0xf3abb4000000000000000000 };
674 #elif GMP_NUMB_BITS == 128
675 const mp_limb_t mpfr_l2b_14_0__tab[] = { 0xf3abb400000000000000000000000000 };
676 #elif GMP_NUMB_BITS == 256
677 const mp_limb_t mpfr_l2b_14_0__tab[] = { 0xf3abb40000000000000000000000000000000000000000000000000000000000 };
678 #endif
679
680 #if 0
681 #elif GMP_NUMB_BITS == 8
682 const mp_limb_t mpfr_l2b_14_1__tab[] = { 0xa8, 0x85, 0xab, 0x5c, 0xb5, 0x96, 0xf6, 0xff, 0x79, 0x86 };
683 #elif GMP_NUMB_BITS == 16
684 const mp_limb_t mpfr_l2b_14_1__tab[] = { 0x85a8, 0x5cab, 0x96b5, 0xfff6, 0x8679 };
685 #elif GMP_NUMB_BITS == 32
686 const mp_limb_t mpfr_l2b_14_1__tab[] = { 0x85a80000, 0x96b55cab, 0x8679fff6 };
687 #elif GMP_NUMB_BITS == 64
688 const mp_limb_t mpfr_l2b_14_1__tab[] = { UINT64_C(0x85a8000000000000), UINT64_C(0x8679fff696b55cab) };
689 #elif GMP_NUMB_BITS == 96
690 const mp_limb_t mpfr_l2b_14_1__tab[] = { 0x8679fff696b55cab85a80000 };
691 #elif GMP_NUMB_BITS == 128
692 const mp_limb_t mpfr_l2b_14_1__tab[] = { 0x8679fff696b55cab85a8000000000000 };
693 #elif GMP_NUMB_BITS == 256
694 const mp_limb_t mpfr_l2b_14_1__tab[] = { 0x8679fff696b55cab85a800000000000000000000000000000000000000000000 };
695 #endif
696
697 #if 0
698 #elif GMP_NUMB_BITS == 8
699 const mp_limb_t mpfr_l2b_15_0__tab[] = { 0x80, 0x0a, 0xfa };
700 #elif GMP_NUMB_BITS == 16
701 const mp_limb_t mpfr_l2b_15_0__tab[] = { 0x8000, 0xfa0a };
702 #elif GMP_NUMB_BITS == 32
703 const mp_limb_t mpfr_l2b_15_0__tab[] = { 0xfa0a8000 };
704 #elif GMP_NUMB_BITS == 64
705 const mp_limb_t mpfr_l2b_15_0__tab[] = { UINT64_C(0xfa0a800000000000) };
706 #elif GMP_NUMB_BITS == 96
707 const mp_limb_t mpfr_l2b_15_0__tab[] = { 0xfa0a80000000000000000000 };
708 #elif GMP_NUMB_BITS == 128
709 const mp_limb_t mpfr_l2b_15_0__tab[] = { 0xfa0a8000000000000000000000000000 };
710 #elif GMP_NUMB_BITS == 256
711 const mp_limb_t mpfr_l2b_15_0__tab[] = { 0xfa0a800000000000000000000000000000000000000000000000000000000000 };
712 #endif
713
714 #if 0
715 #elif GMP_NUMB_BITS == 8
716 const mp_limb_t mpfr_l2b_15_1__tab[] = { 0x80, 0x6f, 0xaa, 0xa6, 0xf0, 0x69, 0x23, 0xee, 0x0c, 0x83 };
717 #elif GMP_NUMB_BITS == 16
718 const mp_limb_t mpfr_l2b_15_1__tab[] = { 0x6f80, 0xa6aa, 0x69f0, 0xee23, 0x830c };
719 #elif GMP_NUMB_BITS == 32
720 const mp_limb_t mpfr_l2b_15_1__tab[] = { 0x6f800000, 0x69f0a6aa, 0x830cee23 };
721 #elif GMP_NUMB_BITS == 64
722 const mp_limb_t mpfr_l2b_15_1__tab[] = { UINT64_C(0x6f80000000000000), UINT64_C(0x830cee2369f0a6aa) };
723 #elif GMP_NUMB_BITS == 96
724 const mp_limb_t mpfr_l2b_15_1__tab[] = { 0x830cee2369f0a6aa6f800000 };
725 #elif GMP_NUMB_BITS == 128
726 const mp_limb_t mpfr_l2b_15_1__tab[] = { 0x830cee2369f0a6aa6f80000000000000 };
727 #elif GMP_NUMB_BITS == 256
728 const mp_limb_t mpfr_l2b_15_1__tab[] = { 0x830cee2369f0a6aa6f8000000000000000000000000000000000000000000000 };
729 #endif
730
731 #if 0
732 #elif GMP_NUMB_BITS == 8
733 const mp_limb_t mpfr_l2b_16_0__tab[] = { 0x00, 0x00, 0x80 };
734 #elif GMP_NUMB_BITS == 16
735 const mp_limb_t mpfr_l2b_16_0__tab[] = { 0x0000, 0x8000 };
736 #elif GMP_NUMB_BITS == 32
737 const mp_limb_t mpfr_l2b_16_0__tab[] = { 0x80000000 };
738 #elif GMP_NUMB_BITS == 64
739 const mp_limb_t mpfr_l2b_16_0__tab[] = { UINT64_C(0x8000000000000000) };
740 #elif GMP_NUMB_BITS == 96
741 const mp_limb_t mpfr_l2b_16_0__tab[] = { 0x800000000000000000000000 };
742 #elif GMP_NUMB_BITS == 128
743 const mp_limb_t mpfr_l2b_16_0__tab[] = { 0x80000000000000000000000000000000 };
744 #elif GMP_NUMB_BITS == 256
745 const mp_limb_t mpfr_l2b_16_0__tab[] = { 0x8000000000000000000000000000000000000000000000000000000000000000 };
746 #endif
747
748 #if 0
749 #elif GMP_NUMB_BITS == 8
750 const mp_limb_t mpfr_l2b_16_1__tab[] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80 };
751 #elif GMP_NUMB_BITS == 16
752 const mp_limb_t mpfr_l2b_16_1__tab[] = { 0x0000, 0x0000, 0x0000, 0x0000, 0x8000 };
753 #elif GMP_NUMB_BITS == 32
754 const mp_limb_t mpfr_l2b_16_1__tab[] = { 0x00000000, 0x00000000, 0x80000000 };
755 #elif GMP_NUMB_BITS == 64
756 const mp_limb_t mpfr_l2b_16_1__tab[] = { UINT64_C(0x0000000000000000), UINT64_C(0x8000000000000000) };
757 #elif GMP_NUMB_BITS == 96
758 const mp_limb_t mpfr_l2b_16_1__tab[] = { 0x800000000000000000000000 };
759 #elif GMP_NUMB_BITS == 128
760 const mp_limb_t mpfr_l2b_16_1__tab[] = { 0x80000000000000000000000000000000 };
761 #elif GMP_NUMB_BITS == 256
762 const mp_limb_t mpfr_l2b_16_1__tab[] = { 0x8000000000000000000000000000000000000000000000000000000000000000 };
763 #endif
764
765 #if 0
766 #elif GMP_NUMB_BITS == 8
767 const mp_limb_t mpfr_l2b_17_0__tab[] = { 0x80, 0xcc, 0x82 };
768 #elif GMP_NUMB_BITS == 16
769 const mp_limb_t mpfr_l2b_17_0__tab[] = { 0x8000, 0x82cc };
770 #elif GMP_NUMB_BITS == 32
771 const mp_limb_t mpfr_l2b_17_0__tab[] = { 0x82cc8000 };
772 #elif GMP_NUMB_BITS == 64
773 const mp_limb_t mpfr_l2b_17_0__tab[] = { UINT64_C(0x82cc800000000000) };
774 #elif GMP_NUMB_BITS == 96
775 const mp_limb_t mpfr_l2b_17_0__tab[] = { 0x82cc80000000000000000000 };
776 #elif GMP_NUMB_BITS == 128
777 const mp_limb_t mpfr_l2b_17_0__tab[] = { 0x82cc8000000000000000000000000000 };
778 #elif GMP_NUMB_BITS == 256
779 const mp_limb_t mpfr_l2b_17_0__tab[] = { 0x82cc800000000000000000000000000000000000000000000000000000000000 };
780 #endif
781
782 #if 0
783 #elif GMP_NUMB_BITS == 8
784 const mp_limb_t mpfr_l2b_17_1__tab[] = { 0x20, 0x87, 0x9b, 0x25, 0xc4, 0x62, 0xf5, 0xab, 0x85, 0xfa };
785 #elif GMP_NUMB_BITS == 16
786 const mp_limb_t mpfr_l2b_17_1__tab[] = { 0x8720, 0x259b, 0x62c4, 0xabf5, 0xfa85 };
787 #elif GMP_NUMB_BITS == 32
788 const mp_limb_t mpfr_l2b_17_1__tab[] = { 0x87200000, 0x62c4259b, 0xfa85abf5 };
789 #elif GMP_NUMB_BITS == 64
790 const mp_limb_t mpfr_l2b_17_1__tab[] = { UINT64_C(0x8720000000000000), UINT64_C(0xfa85abf562c4259b) };
791 #elif GMP_NUMB_BITS == 96
792 const mp_limb_t mpfr_l2b_17_1__tab[] = { 0xfa85abf562c4259b87200000 };
793 #elif GMP_NUMB_BITS == 128
794 const mp_limb_t mpfr_l2b_17_1__tab[] = { 0xfa85abf562c4259b8720000000000000 };
795 #elif GMP_NUMB_BITS == 256
796 const mp_limb_t mpfr_l2b_17_1__tab[] = { 0xfa85abf562c4259b872000000000000000000000000000000000000000000000 };
797 #endif
798
799 #if 0
800 #elif GMP_NUMB_BITS == 8
801 const mp_limb_t mpfr_l2b_18_0__tab[] = { 0x08, 0x70, 0x85 };
802 #elif GMP_NUMB_BITS == 16
803 const mp_limb_t mpfr_l2b_18_0__tab[] = { 0x0800, 0x8570 };
804 #elif GMP_NUMB_BITS == 32
805 const mp_limb_t mpfr_l2b_18_0__tab[] = { 0x85700800 };
806 #elif GMP_NUMB_BITS == 64
807 const mp_limb_t mpfr_l2b_18_0__tab[] = { UINT64_C(0x8570080000000000) };
808 #elif GMP_NUMB_BITS == 96
809 const mp_limb_t mpfr_l2b_18_0__tab[] = { 0x857008000000000000000000 };
810 #elif GMP_NUMB_BITS == 128
811 const mp_limb_t mpfr_l2b_18_0__tab[] = { 0x85700800000000000000000000000000 };
812 #elif GMP_NUMB_BITS == 256
813 const mp_limb_t mpfr_l2b_18_0__tab[] = { 0x8570080000000000000000000000000000000000000000000000000000000000 };
814 #endif
815
816 #if 0
817 #elif GMP_NUMB_BITS == 8
818 const mp_limb_t mpfr_l2b_18_1__tab[] = { 0x98, 0x36, 0x78, 0x13, 0x37, 0x55, 0x34, 0x66, 0x91, 0xf5 };
819 #elif GMP_NUMB_BITS == 16
820 const mp_limb_t mpfr_l2b_18_1__tab[] = { 0x3698, 0x1378, 0x5537, 0x6634, 0xf591 };
821 #elif GMP_NUMB_BITS == 32
822 const mp_limb_t mpfr_l2b_18_1__tab[] = { 0x36980000, 0x55371378, 0xf5916634 };
823 #elif GMP_NUMB_BITS == 64
824 const mp_limb_t mpfr_l2b_18_1__tab[] = { UINT64_C(0x3698000000000000), UINT64_C(0xf591663455371378) };
825 #elif GMP_NUMB_BITS == 96
826 const mp_limb_t mpfr_l2b_18_1__tab[] = { 0xf59166345537137836980000 };
827 #elif GMP_NUMB_BITS == 128
828 const mp_limb_t mpfr_l2b_18_1__tab[] = { 0xf5916634553713783698000000000000 };
829 #elif GMP_NUMB_BITS == 256
830 const mp_limb_t mpfr_l2b_18_1__tab[] = { 0xf591663455371378369800000000000000000000000000000000000000000000 };
831 #endif
832
833 #if 0
834 #elif GMP_NUMB_BITS == 8
835 const mp_limb_t mpfr_l2b_19_0__tab[] = { 0x06, 0xef, 0x87 };
836 #elif GMP_NUMB_BITS == 16
837 const mp_limb_t mpfr_l2b_19_0__tab[] = { 0x0600, 0x87ef };
838 #elif GMP_NUMB_BITS == 32
839 const mp_limb_t mpfr_l2b_19_0__tab[] = { 0x87ef0600 };
840 #elif GMP_NUMB_BITS == 64
841 const mp_limb_t mpfr_l2b_19_0__tab[] = { UINT64_C(0x87ef060000000000) };
842 #elif GMP_NUMB_BITS == 96
843 const mp_limb_t mpfr_l2b_19_0__tab[] = { 0x87ef06000000000000000000 };
844 #elif GMP_NUMB_BITS == 128
845 const mp_limb_t mpfr_l2b_19_0__tab[] = { 0x87ef0600000000000000000000000000 };
846 #elif GMP_NUMB_BITS == 256
847 const mp_limb_t mpfr_l2b_19_0__tab[] = { 0x87ef060000000000000000000000000000000000000000000000000000000000 };
848 #endif
849
850 #if 0
851 #elif GMP_NUMB_BITS == 8
852 const mp_limb_t mpfr_l2b_19_1__tab[] = { 0xb8, 0x0d, 0x8c, 0x55, 0xed, 0x62, 0xc0, 0x08, 0x0f, 0xf1 };
853 #elif GMP_NUMB_BITS == 16
854 const mp_limb_t mpfr_l2b_19_1__tab[] = { 0x0db8, 0x558c, 0x62ed, 0x08c0, 0xf10f };
855 #elif GMP_NUMB_BITS == 32
856 const mp_limb_t mpfr_l2b_19_1__tab[] = { 0x0db80000, 0x62ed558c, 0xf10f08c0 };
857 #elif GMP_NUMB_BITS == 64
858 const mp_limb_t mpfr_l2b_19_1__tab[] = { UINT64_C(0x0db8000000000000), UINT64_C(0xf10f08c062ed558c) };
859 #elif GMP_NUMB_BITS == 96
860 const mp_limb_t mpfr_l2b_19_1__tab[] = { 0xf10f08c062ed558c0db80000 };
861 #elif GMP_NUMB_BITS == 128
862 const mp_limb_t mpfr_l2b_19_1__tab[] = { 0xf10f08c062ed558c0db8000000000000 };
863 #elif GMP_NUMB_BITS == 256
864 const mp_limb_t mpfr_l2b_19_1__tab[] = { 0xf10f08c062ed558c0db800000000000000000000000000000000000000000000 };
865 #endif
866
867 #if 0
868 #elif GMP_NUMB_BITS == 8
869 const mp_limb_t mpfr_l2b_20_0__tab[] = { 0x3e, 0x4d, 0x8a };
870 #elif GMP_NUMB_BITS == 16
871 const mp_limb_t mpfr_l2b_20_0__tab[] = { 0x3e00, 0x8a4d };
872 #elif GMP_NUMB_BITS == 32
873 const mp_limb_t mpfr_l2b_20_0__tab[] = { 0x8a4d3e00 };
874 #elif GMP_NUMB_BITS == 64
875 const mp_limb_t mpfr_l2b_20_0__tab[] = { UINT64_C(0x8a4d3e0000000000) };
876 #elif GMP_NUMB_BITS == 96
877 const mp_limb_t mpfr_l2b_20_0__tab[] = { 0x8a4d3e000000000000000000 };
878 #elif GMP_NUMB_BITS == 128
879 const mp_limb_t mpfr_l2b_20_0__tab[] = { 0x8a4d3e00000000000000000000000000 };
880 #elif GMP_NUMB_BITS == 256
881 const mp_limb_t mpfr_l2b_20_0__tab[] = { 0x8a4d3e0000000000000000000000000000000000000000000000000000000000 };
882 #endif
883
884 #if 0
885 #elif GMP_NUMB_BITS == 8
886 const mp_limb_t mpfr_l2b_20_1__tab[] = { 0x40, 0x0b, 0x1c, 0xa7, 0xc1, 0x1c, 0x0a, 0x69, 0xee, 0xec };
887 #elif GMP_NUMB_BITS == 16
888 const mp_limb_t mpfr_l2b_20_1__tab[] = { 0x0b40, 0xa71c, 0x1cc1, 0x690a, 0xecee };
889 #elif GMP_NUMB_BITS == 32
890 const mp_limb_t mpfr_l2b_20_1__tab[] = { 0x0b400000, 0x1cc1a71c, 0xecee690a };
891 #elif GMP_NUMB_BITS == 64
892 const mp_limb_t mpfr_l2b_20_1__tab[] = { UINT64_C(0x0b40000000000000), UINT64_C(0xecee690a1cc1a71c) };
893 #elif GMP_NUMB_BITS == 96
894 const mp_limb_t mpfr_l2b_20_1__tab[] = { 0xecee690a1cc1a71c0b400000 };
895 #elif GMP_NUMB_BITS == 128
896 const mp_limb_t mpfr_l2b_20_1__tab[] = { 0xecee690a1cc1a71c0b40000000000000 };
897 #elif GMP_NUMB_BITS == 256
898 const mp_limb_t mpfr_l2b_20_1__tab[] = { 0xecee690a1cc1a71c0b4000000000000000000000000000000000000000000000 };
899 #endif
900
901 #if 0
902 #elif GMP_NUMB_BITS == 8
903 const mp_limb_t mpfr_l2b_21_0__tab[] = { 0xde, 0x8d, 0x8c };
904 #elif GMP_NUMB_BITS == 16
905 const mp_limb_t mpfr_l2b_21_0__tab[] = { 0xde00, 0x8c8d };
906 #elif GMP_NUMB_BITS == 32
907 const mp_limb_t mpfr_l2b_21_0__tab[] = { 0x8c8dde00 };
908 #elif GMP_NUMB_BITS == 64
909 const mp_limb_t mpfr_l2b_21_0__tab[] = { UINT64_C(0x8c8dde0000000000) };
910 #elif GMP_NUMB_BITS == 96
911 const mp_limb_t mpfr_l2b_21_0__tab[] = { 0x8c8dde000000000000000000 };
912 #elif GMP_NUMB_BITS == 128
913 const mp_limb_t mpfr_l2b_21_0__tab[] = { 0x8c8dde00000000000000000000000000 };
914 #elif GMP_NUMB_BITS == 256
915 const mp_limb_t mpfr_l2b_21_0__tab[] = { 0x8c8dde0000000000000000000000000000000000000000000000000000000000 };
916 #endif
917
918 #if 0
919 #elif GMP_NUMB_BITS == 8
920 const mp_limb_t mpfr_l2b_21_1__tab[] = { 0x08, 0x41, 0x26, 0x6b, 0xd0, 0xb3, 0xc1, 0x63, 0x22, 0xe9 };
921 #elif GMP_NUMB_BITS == 16
922 const mp_limb_t mpfr_l2b_21_1__tab[] = { 0x4108, 0x6b26, 0xb3d0, 0x63c1, 0xe922 };
923 #elif GMP_NUMB_BITS == 32
924 const mp_limb_t mpfr_l2b_21_1__tab[] = { 0x41080000, 0xb3d06b26, 0xe92263c1 };
925 #elif GMP_NUMB_BITS == 64
926 const mp_limb_t mpfr_l2b_21_1__tab[] = { UINT64_C(0x4108000000000000), UINT64_C(0xe92263c1b3d06b26) };
927 #elif GMP_NUMB_BITS == 96
928 const mp_limb_t mpfr_l2b_21_1__tab[] = { 0xe92263c1b3d06b2641080000 };
929 #elif GMP_NUMB_BITS == 128
930 const mp_limb_t mpfr_l2b_21_1__tab[] = { 0xe92263c1b3d06b264108000000000000 };
931 #elif GMP_NUMB_BITS == 256
932 const mp_limb_t mpfr_l2b_21_1__tab[] = { 0xe92263c1b3d06b26410800000000000000000000000000000000000000000000 };
933 #endif
934
935 #if 0
936 #elif GMP_NUMB_BITS == 8
937 const mp_limb_t mpfr_l2b_22_0__tab[] = { 0xaa, 0xb3, 0x8e };
938 #elif GMP_NUMB_BITS == 16
939 const mp_limb_t mpfr_l2b_22_0__tab[] = { 0xaa00, 0x8eb3 };
940 #elif GMP_NUMB_BITS == 32
941 const mp_limb_t mpfr_l2b_22_0__tab[] = { 0x8eb3aa00 };
942 #elif GMP_NUMB_BITS == 64
943 const mp_limb_t mpfr_l2b_22_0__tab[] = { UINT64_C(0x8eb3aa0000000000) };
944 #elif GMP_NUMB_BITS == 96
945 const mp_limb_t mpfr_l2b_22_0__tab[] = { 0x8eb3aa000000000000000000 };
946 #elif GMP_NUMB_BITS == 128
947 const mp_limb_t mpfr_l2b_22_0__tab[] = { 0x8eb3aa00000000000000000000000000 };
948 #elif GMP_NUMB_BITS == 256
949 const mp_limb_t mpfr_l2b_22_0__tab[] = { 0x8eb3aa0000000000000000000000000000000000000000000000000000000000 };
950 #endif
951
952 #if 0
953 #elif GMP_NUMB_BITS == 8
954 const mp_limb_t mpfr_l2b_22_1__tab[] = { 0xe8, 0xdb, 0x61, 0xf0, 0xb9, 0x60, 0x4d, 0x2c, 0xa0, 0xe5 };
955 #elif GMP_NUMB_BITS == 16
956 const mp_limb_t mpfr_l2b_22_1__tab[] = { 0xdbe8, 0xf061, 0x60b9, 0x2c4d, 0xe5a0 };
957 #elif GMP_NUMB_BITS == 32
958 const mp_limb_t mpfr_l2b_22_1__tab[] = { 0xdbe80000, 0x60b9f061, 0xe5a02c4d };
959 #elif GMP_NUMB_BITS == 64
960 const mp_limb_t mpfr_l2b_22_1__tab[] = { UINT64_C(0xdbe8000000000000), UINT64_C(0xe5a02c4d60b9f061) };
961 #elif GMP_NUMB_BITS == 96
962 const mp_limb_t mpfr_l2b_22_1__tab[] = { 0xe5a02c4d60b9f061dbe80000 };
963 #elif GMP_NUMB_BITS == 128
964 const mp_limb_t mpfr_l2b_22_1__tab[] = { 0xe5a02c4d60b9f061dbe8000000000000 };
965 #elif GMP_NUMB_BITS == 256
966 const mp_limb_t mpfr_l2b_22_1__tab[] = { 0xe5a02c4d60b9f061dbe800000000000000000000000000000000000000000000 };
967 #endif
968
969 #if 0
970 #elif GMP_NUMB_BITS == 8
971 const mp_limb_t mpfr_l2b_23_0__tab[] = { 0x06, 0xc1, 0x90 };
972 #elif GMP_NUMB_BITS == 16
973 const mp_limb_t mpfr_l2b_23_0__tab[] = { 0x0600, 0x90c1 };
974 #elif GMP_NUMB_BITS == 32
975 const mp_limb_t mpfr_l2b_23_0__tab[] = { 0x90c10600 };
976 #elif GMP_NUMB_BITS == 64
977 const mp_limb_t mpfr_l2b_23_0__tab[] = { UINT64_C(0x90c1060000000000) };
978 #elif GMP_NUMB_BITS == 96
979 const mp_limb_t mpfr_l2b_23_0__tab[] = { 0x90c106000000000000000000 };
980 #elif GMP_NUMB_BITS == 128
981 const mp_limb_t mpfr_l2b_23_0__tab[] = { 0x90c10600000000000000000000000000 };
982 #elif GMP_NUMB_BITS == 256
983 const mp_limb_t mpfr_l2b_23_0__tab[] = { 0x90c1060000000000000000000000000000000000000000000000000000000000 };
984 #endif
985
986 #if 0
987 #elif GMP_NUMB_BITS == 8
988 const mp_limb_t mpfr_l2b_23_1__tab[] = { 0xe0, 0xc3, 0x6a, 0x58, 0xb9, 0x46, 0xdd, 0xca, 0x5e, 0xe2 };
989 #elif GMP_NUMB_BITS == 16
990 const mp_limb_t mpfr_l2b_23_1__tab[] = { 0xc3e0, 0x586a, 0x46b9, 0xcadd, 0xe25e };
991 #elif GMP_NUMB_BITS == 32
992 const mp_limb_t mpfr_l2b_23_1__tab[] = { 0xc3e00000, 0x46b9586a, 0xe25ecadd };
993 #elif GMP_NUMB_BITS == 64
994 const mp_limb_t mpfr_l2b_23_1__tab[] = { UINT64_C(0xc3e0000000000000), UINT64_C(0xe25ecadd46b9586a) };
995 #elif GMP_NUMB_BITS == 96
996 const mp_limb_t mpfr_l2b_23_1__tab[] = { 0xe25ecadd46b9586ac3e00000 };
997 #elif GMP_NUMB_BITS == 128
998 const mp_limb_t mpfr_l2b_23_1__tab[] = { 0xe25ecadd46b9586ac3e0000000000000 };
999 #elif GMP_NUMB_BITS == 256
1000 const mp_limb_t mpfr_l2b_23_1__tab[] = { 0xe25ecadd46b9586ac3e000000000000000000000000000000000000000000000 };
1001 #endif
1002
1003 #if 0
1004 #elif GMP_NUMB_BITS == 8
1005 const mp_limb_t mpfr_l2b_24_0__tab[] = { 0x04, 0xb8, 0x92 };
1006 #elif GMP_NUMB_BITS == 16
1007 const mp_limb_t mpfr_l2b_24_0__tab[] = { 0x0400, 0x92b8 };
1008 #elif GMP_NUMB_BITS == 32
1009 const mp_limb_t mpfr_l2b_24_0__tab[] = { 0x92b80400 };
1010 #elif GMP_NUMB_BITS == 64
1011 const mp_limb_t mpfr_l2b_24_0__tab[] = { UINT64_C(0x92b8040000000000) };
1012 #elif GMP_NUMB_BITS == 96
1013 const mp_limb_t mpfr_l2b_24_0__tab[] = { 0x92b804000000000000000000 };
1014 #elif GMP_NUMB_BITS == 128
1015 const mp_limb_t mpfr_l2b_24_0__tab[] = { 0x92b80400000000000000000000000000 };
1016 #elif GMP_NUMB_BITS == 256
1017 const mp_limb_t mpfr_l2b_24_0__tab[] = { 0x92b8040000000000000000000000000000000000000000000000000000000000 };
1018 #endif
1019
1020 #if 0
1021 #elif GMP_NUMB_BITS == 8
1022 const mp_limb_t mpfr_l2b_24_1__tab[] = { 0x68, 0x36, 0x63, 0x72, 0xc6, 0xc7, 0x44, 0xbb, 0x56, 0xdf };
1023 #elif GMP_NUMB_BITS == 16
1024 const mp_limb_t mpfr_l2b_24_1__tab[] = { 0x3668, 0x7263, 0xc7c6, 0xbb44, 0xdf56 };
1025 #elif GMP_NUMB_BITS == 32
1026 const mp_limb_t mpfr_l2b_24_1__tab[] = { 0x36680000, 0xc7c67263, 0xdf56bb44 };
1027 #elif GMP_NUMB_BITS == 64
1028 const mp_limb_t mpfr_l2b_24_1__tab[] = { UINT64_C(0x3668000000000000), UINT64_C(0xdf56bb44c7c67263) };
1029 #elif GMP_NUMB_BITS == 96
1030 const mp_limb_t mpfr_l2b_24_1__tab[] = { 0xdf56bb44c7c6726336680000 };
1031 #elif GMP_NUMB_BITS == 128
1032 const mp_limb_t mpfr_l2b_24_1__tab[] = { 0xdf56bb44c7c672633668000000000000 };
1033 #elif GMP_NUMB_BITS == 256
1034 const mp_limb_t mpfr_l2b_24_1__tab[] = { 0xdf56bb44c7c67263366800000000000000000000000000000000000000000000 };
1035 #endif
1036
1037 #if 0
1038 #elif GMP_NUMB_BITS == 8
1039 const mp_limb_t mpfr_l2b_25_0__tab[] = { 0x7a, 0x9a, 0x94 };
1040 #elif GMP_NUMB_BITS == 16
1041 const mp_limb_t mpfr_l2b_25_0__tab[] = { 0x7a00, 0x949a };
1042 #elif GMP_NUMB_BITS == 32
1043 const mp_limb_t mpfr_l2b_25_0__tab[] = { 0x949a7a00 };
1044 #elif GMP_NUMB_BITS == 64
1045 const mp_limb_t mpfr_l2b_25_0__tab[] = { UINT64_C(0x949a7a0000000000) };
1046 #elif GMP_NUMB_BITS == 96
1047 const mp_limb_t mpfr_l2b_25_0__tab[] = { 0x949a7a000000000000000000 };
1048 #elif GMP_NUMB_BITS == 128
1049 const mp_limb_t mpfr_l2b_25_0__tab[] = { 0x949a7a00000000000000000000000000 };
1050 #elif GMP_NUMB_BITS == 256
1051 const mp_limb_t mpfr_l2b_25_0__tab[] = { 0x949a7a0000000000000000000000000000000000000000000000000000000000 };
1052 #endif
1053
1054 #if 0
1055 #elif GMP_NUMB_BITS == 8
1056 const mp_limb_t mpfr_l2b_25_1__tab[] = { 0xb8, 0x67, 0x28, 0x97, 0x7b, 0x28, 0x48, 0xa3, 0x81, 0xdc };
1057 #elif GMP_NUMB_BITS == 16
1058 const mp_limb_t mpfr_l2b_25_1__tab[] = { 0x67b8, 0x9728, 0x287b, 0xa348, 0xdc81 };
1059 #elif GMP_NUMB_BITS == 32
1060 const mp_limb_t mpfr_l2b_25_1__tab[] = { 0x67b80000, 0x287b9728, 0xdc81a348 };
1061 #elif GMP_NUMB_BITS == 64
1062 const mp_limb_t mpfr_l2b_25_1__tab[] = { UINT64_C(0x67b8000000000000), UINT64_C(0xdc81a348287b9728) };
1063 #elif GMP_NUMB_BITS == 96
1064 const mp_limb_t mpfr_l2b_25_1__tab[] = { 0xdc81a348287b972867b80000 };
1065 #elif GMP_NUMB_BITS == 128
1066 const mp_limb_t mpfr_l2b_25_1__tab[] = { 0xdc81a348287b972867b8000000000000 };
1067 #elif GMP_NUMB_BITS == 256
1068 const mp_limb_t mpfr_l2b_25_1__tab[] = { 0xdc81a348287b972867b800000000000000000000000000000000000000000000 };
1069 #endif
1070
1071 #if 0
1072 #elif GMP_NUMB_BITS == 8
1073 const mp_limb_t mpfr_l2b_26_0__tab[] = { 0x02, 0x6a, 0x96 };
1074 #elif GMP_NUMB_BITS == 16
1075 const mp_limb_t mpfr_l2b_26_0__tab[] = { 0x0200, 0x966a };
1076 #elif GMP_NUMB_BITS == 32
1077 const mp_limb_t mpfr_l2b_26_0__tab[] = { 0x966a0200 };
1078 #elif GMP_NUMB_BITS == 64
1079 const mp_limb_t mpfr_l2b_26_0__tab[] = { UINT64_C(0x966a020000000000) };
1080 #elif GMP_NUMB_BITS == 96
1081 const mp_limb_t mpfr_l2b_26_0__tab[] = { 0x966a02000000000000000000 };
1082 #elif GMP_NUMB_BITS == 128
1083 const mp_limb_t mpfr_l2b_26_0__tab[] = { 0x966a0200000000000000000000000000 };
1084 #elif GMP_NUMB_BITS == 256
1085 const mp_limb_t mpfr_l2b_26_0__tab[] = { 0x966a020000000000000000000000000000000000000000000000000000000000 };
1086 #endif
1087
1088 #if 0
1089 #elif GMP_NUMB_BITS == 8
1090 const mp_limb_t mpfr_l2b_26_1__tab[] = { 0x58, 0x64, 0xa4, 0x78, 0x83, 0x75, 0xf9, 0x19, 0xda, 0xd9 };
1091 #elif GMP_NUMB_BITS == 16
1092 const mp_limb_t mpfr_l2b_26_1__tab[] = { 0x6458, 0x78a4, 0x7583, 0x19f9, 0xd9da };
1093 #elif GMP_NUMB_BITS == 32
1094 const mp_limb_t mpfr_l2b_26_1__tab[] = { 0x64580000, 0x758378a4, 0xd9da19f9 };
1095 #elif GMP_NUMB_BITS == 64
1096 const mp_limb_t mpfr_l2b_26_1__tab[] = { UINT64_C(0x6458000000000000), UINT64_C(0xd9da19f9758378a4) };
1097 #elif GMP_NUMB_BITS == 96
1098 const mp_limb_t mpfr_l2b_26_1__tab[] = { 0xd9da19f9758378a464580000 };
1099 #elif GMP_NUMB_BITS == 128
1100 const mp_limb_t mpfr_l2b_26_1__tab[] = { 0xd9da19f9758378a46458000000000000 };
1101 #elif GMP_NUMB_BITS == 256
1102 const mp_limb_t mpfr_l2b_26_1__tab[] = { 0xd9da19f9758378a4645800000000000000000000000000000000000000000000 };
1103 #endif
1104
1105 #if 0
1106 #elif GMP_NUMB_BITS == 8
1107 const mp_limb_t mpfr_l2b_27_0__tab[] = { 0x0a, 0x28, 0x98 };
1108 #elif GMP_NUMB_BITS == 16
1109 const mp_limb_t mpfr_l2b_27_0__tab[] = { 0x0a00, 0x9828 };
1110 #elif GMP_NUMB_BITS == 32
1111 const mp_limb_t mpfr_l2b_27_0__tab[] = { 0x98280a00 };
1112 #elif GMP_NUMB_BITS == 64
1113 const mp_limb_t mpfr_l2b_27_0__tab[] = { UINT64_C(0x98280a0000000000) };
1114 #elif GMP_NUMB_BITS == 96
1115 const mp_limb_t mpfr_l2b_27_0__tab[] = { 0x98280a000000000000000000 };
1116 #elif GMP_NUMB_BITS == 128
1117 const mp_limb_t mpfr_l2b_27_0__tab[] = { 0x98280a00000000000000000000000000 };
1118 #elif GMP_NUMB_BITS == 256
1119 const mp_limb_t mpfr_l2b_27_0__tab[] = { 0x98280a0000000000000000000000000000000000000000000000000000000000 };
1120 #endif
1121
1122 #if 0
1123 #elif GMP_NUMB_BITS == 8
1124 const mp_limb_t mpfr_l2b_27_1__tab[] = { 0x08, 0x5b, 0xbd, 0xe1, 0x37, 0xe2, 0xac, 0x7b, 0x5b, 0xd7 };
1125 #elif GMP_NUMB_BITS == 16
1126 const mp_limb_t mpfr_l2b_27_1__tab[] = { 0x5b08, 0xe1bd, 0xe237, 0x7bac, 0xd75b };
1127 #elif GMP_NUMB_BITS == 32
1128 const mp_limb_t mpfr_l2b_27_1__tab[] = { 0x5b080000, 0xe237e1bd, 0xd75b7bac };
1129 #elif GMP_NUMB_BITS == 64
1130 const mp_limb_t mpfr_l2b_27_1__tab[] = { UINT64_C(0x5b08000000000000), UINT64_C(0xd75b7bace237e1bd) };
1131 #elif GMP_NUMB_BITS == 96
1132 const mp_limb_t mpfr_l2b_27_1__tab[] = { 0xd75b7bace237e1bd5b080000 };
1133 #elif GMP_NUMB_BITS == 128
1134 const mp_limb_t mpfr_l2b_27_1__tab[] = { 0xd75b7bace237e1bd5b08000000000000 };
1135 #elif GMP_NUMB_BITS == 256
1136 const mp_limb_t mpfr_l2b_27_1__tab[] = { 0xd75b7bace237e1bd5b0800000000000000000000000000000000000000000000 };
1137 #endif
1138
1139 #if 0
1140 #elif GMP_NUMB_BITS == 8
1141 const mp_limb_t mpfr_l2b_28_0__tab[] = { 0xda, 0xd5, 0x99 };
1142 #elif GMP_NUMB_BITS == 16
1143 const mp_limb_t mpfr_l2b_28_0__tab[] = { 0xda00, 0x99d5 };
1144 #elif GMP_NUMB_BITS == 32
1145 const mp_limb_t mpfr_l2b_28_0__tab[] = { 0x99d5da00 };
1146 #elif GMP_NUMB_BITS == 64
1147 const mp_limb_t mpfr_l2b_28_0__tab[] = { UINT64_C(0x99d5da0000000000) };
1148 #elif GMP_NUMB_BITS == 96
1149 const mp_limb_t mpfr_l2b_28_0__tab[] = { 0x99d5da000000000000000000 };
1150 #elif GMP_NUMB_BITS == 128
1151 const mp_limb_t mpfr_l2b_28_0__tab[] = { 0x99d5da00000000000000000000000000 };
1152 #elif GMP_NUMB_BITS == 256
1153 const mp_limb_t mpfr_l2b_28_0__tab[] = { 0x99d5da0000000000000000000000000000000000000000000000000000000000 };
1154 #endif
1155
1156 #if 0
1157 #elif GMP_NUMB_BITS == 8
1158 const mp_limb_t mpfr_l2b_28_1__tab[] = { 0xb8, 0xde, 0xb8, 0xe8, 0xdf, 0x71, 0x58, 0xc7, 0x01, 0xd5 };
1159 #elif GMP_NUMB_BITS == 16
1160 const mp_limb_t mpfr_l2b_28_1__tab[] = { 0xdeb8, 0xe8b8, 0x71df, 0xc758, 0xd501 };
1161 #elif GMP_NUMB_BITS == 32
1162 const mp_limb_t mpfr_l2b_28_1__tab[] = { 0xdeb80000, 0x71dfe8b8, 0xd501c758 };
1163 #elif GMP_NUMB_BITS == 64
1164 const mp_limb_t mpfr_l2b_28_1__tab[] = { UINT64_C(0xdeb8000000000000), UINT64_C(0xd501c75871dfe8b8) };
1165 #elif GMP_NUMB_BITS == 96
1166 const mp_limb_t mpfr_l2b_28_1__tab[] = { 0xd501c75871dfe8b8deb80000 };
1167 #elif GMP_NUMB_BITS == 128
1168 const mp_limb_t mpfr_l2b_28_1__tab[] = { 0xd501c75871dfe8b8deb8000000000000 };
1169 #elif GMP_NUMB_BITS == 256
1170 const mp_limb_t mpfr_l2b_28_1__tab[] = { 0xd501c75871dfe8b8deb800000000000000000000000000000000000000000000 };
1171 #endif
1172
1173 #if 0
1174 #elif GMP_NUMB_BITS == 8
1175 const mp_limb_t mpfr_l2b_29_0__tab[] = { 0x96, 0x74, 0x9b };
1176 #elif GMP_NUMB_BITS == 16
1177 const mp_limb_t mpfr_l2b_29_0__tab[] = { 0x9600, 0x9b74 };
1178 #elif GMP_NUMB_BITS == 32
1179 const mp_limb_t mpfr_l2b_29_0__tab[] = { 0x9b749600 };
1180 #elif GMP_NUMB_BITS == 64
1181 const mp_limb_t mpfr_l2b_29_0__tab[] = { UINT64_C(0x9b74960000000000) };
1182 #elif GMP_NUMB_BITS == 96
1183 const mp_limb_t mpfr_l2b_29_0__tab[] = { 0x9b7496000000000000000000 };
1184 #elif GMP_NUMB_BITS == 128
1185 const mp_limb_t mpfr_l2b_29_0__tab[] = { 0x9b749600000000000000000000000000 };
1186 #elif GMP_NUMB_BITS == 256
1187 const mp_limb_t mpfr_l2b_29_0__tab[] = { 0x9b74960000000000000000000000000000000000000000000000000000000000 };
1188 #endif
1189
1190 #if 0
1191 #elif GMP_NUMB_BITS == 8
1192 const mp_limb_t mpfr_l2b_29_1__tab[] = { 0xc8, 0xcc, 0xb3, 0x62, 0x6c, 0x9c, 0x15, 0x83, 0xc9, 0xd2 };
1193 #elif GMP_NUMB_BITS == 16
1194 const mp_limb_t mpfr_l2b_29_1__tab[] = { 0xccc8, 0x62b3, 0x9c6c, 0x8315, 0xd2c9 };
1195 #elif GMP_NUMB_BITS == 32
1196 const mp_limb_t mpfr_l2b_29_1__tab[] = { 0xccc80000, 0x9c6c62b3, 0xd2c98315 };
1197 #elif GMP_NUMB_BITS == 64
1198 const mp_limb_t mpfr_l2b_29_1__tab[] = { UINT64_C(0xccc8000000000000), UINT64_C(0xd2c983159c6c62b3) };
1199 #elif GMP_NUMB_BITS == 96
1200 const mp_limb_t mpfr_l2b_29_1__tab[] = { 0xd2c983159c6c62b3ccc80000 };
1201 #elif GMP_NUMB_BITS == 128
1202 const mp_limb_t mpfr_l2b_29_1__tab[] = { 0xd2c983159c6c62b3ccc8000000000000 };
1203 #elif GMP_NUMB_BITS == 256
1204 const mp_limb_t mpfr_l2b_29_1__tab[] = { 0xd2c983159c6c62b3ccc800000000000000000000000000000000000000000000 };
1205 #endif
1206
1207 #if 0
1208 #elif GMP_NUMB_BITS == 8
1209 const mp_limb_t mpfr_l2b_30_0__tab[] = { 0x40, 0x05, 0x9d };
1210 #elif GMP_NUMB_BITS == 16
1211 const mp_limb_t mpfr_l2b_30_0__tab[] = { 0x4000, 0x9d05 };
1212 #elif GMP_NUMB_BITS == 32
1213 const mp_limb_t mpfr_l2b_30_0__tab[] = { 0x9d054000 };
1214 #elif GMP_NUMB_BITS == 64
1215 const mp_limb_t mpfr_l2b_30_0__tab[] = { UINT64_C(0x9d05400000000000) };
1216 #elif GMP_NUMB_BITS == 96
1217 const mp_limb_t mpfr_l2b_30_0__tab[] = { 0x9d0540000000000000000000 };
1218 #elif GMP_NUMB_BITS == 128
1219 const mp_limb_t mpfr_l2b_30_0__tab[] = { 0x9d054000000000000000000000000000 };
1220 #elif GMP_NUMB_BITS == 256
1221 const mp_limb_t mpfr_l2b_30_0__tab[] = { 0x9d05400000000000000000000000000000000000000000000000000000000000 };
1222 #endif
1223
1224 #if 0
1225 #elif GMP_NUMB_BITS == 8
1226 const mp_limb_t mpfr_l2b_30_1__tab[] = { 0x88, 0x35, 0x32, 0x17, 0xad, 0x5c, 0x19, 0xa6, 0xaf, 0xd0 };
1227 #elif GMP_NUMB_BITS == 16
1228 const mp_limb_t mpfr_l2b_30_1__tab[] = { 0x3588, 0x1732, 0x5cad, 0xa619, 0xd0af };
1229 #elif GMP_NUMB_BITS == 32
1230 const mp_limb_t mpfr_l2b_30_1__tab[] = { 0x35880000, 0x5cad1732, 0xd0afa619 };
1231 #elif GMP_NUMB_BITS == 64
1232 const mp_limb_t mpfr_l2b_30_1__tab[] = { UINT64_C(0x3588000000000000), UINT64_C(0xd0afa6195cad1732) };
1233 #elif GMP_NUMB_BITS == 96
1234 const mp_limb_t mpfr_l2b_30_1__tab[] = { 0xd0afa6195cad173235880000 };
1235 #elif GMP_NUMB_BITS == 128
1236 const mp_limb_t mpfr_l2b_30_1__tab[] = { 0xd0afa6195cad17323588000000000000 };
1237 #elif GMP_NUMB_BITS == 256
1238 const mp_limb_t mpfr_l2b_30_1__tab[] = { 0xd0afa6195cad1732358800000000000000000000000000000000000000000000 };
1239 #endif
1240
1241 #if 0
1242 #elif GMP_NUMB_BITS == 8
1243 const mp_limb_t mpfr_l2b_31_0__tab[] = { 0xc8, 0x88, 0x9e };
1244 #elif GMP_NUMB_BITS == 16
1245 const mp_limb_t mpfr_l2b_31_0__tab[] = { 0xc800, 0x9e88 };
1246 #elif GMP_NUMB_BITS == 32
1247 const mp_limb_t mpfr_l2b_31_0__tab[] = { 0x9e88c800 };
1248 #elif GMP_NUMB_BITS == 64
1249 const mp_limb_t mpfr_l2b_31_0__tab[] = { UINT64_C(0x9e88c80000000000) };
1250 #elif GMP_NUMB_BITS == 96
1251 const mp_limb_t mpfr_l2b_31_0__tab[] = { 0x9e88c8000000000000000000 };
1252 #elif GMP_NUMB_BITS == 128
1253 const mp_limb_t mpfr_l2b_31_0__tab[] = { 0x9e88c800000000000000000000000000 };
1254 #elif GMP_NUMB_BITS == 256
1255 const mp_limb_t mpfr_l2b_31_0__tab[] = { 0x9e88c80000000000000000000000000000000000000000000000000000000000 };
1256 #endif
1257
1258 #if 0
1259 #elif GMP_NUMB_BITS == 8
1260 const mp_limb_t mpfr_l2b_31_1__tab[] = { 0x78, 0xd5, 0xca, 0xf7, 0xee, 0x63, 0xe6, 0x86, 0xb1, 0xce };
1261 #elif GMP_NUMB_BITS == 16
1262 const mp_limb_t mpfr_l2b_31_1__tab[] = { 0xd578, 0xf7ca, 0x63ee, 0x86e6, 0xceb1 };
1263 #elif GMP_NUMB_BITS == 32
1264 const mp_limb_t mpfr_l2b_31_1__tab[] = { 0xd5780000, 0x63eef7ca, 0xceb186e6 };
1265 #elif GMP_NUMB_BITS == 64
1266 const mp_limb_t mpfr_l2b_31_1__tab[] = { UINT64_C(0xd578000000000000), UINT64_C(0xceb186e663eef7ca) };
1267 #elif GMP_NUMB_BITS == 96
1268 const mp_limb_t mpfr_l2b_31_1__tab[] = { 0xceb186e663eef7cad5780000 };
1269 #elif GMP_NUMB_BITS == 128
1270 const mp_limb_t mpfr_l2b_31_1__tab[] = { 0xceb186e663eef7cad578000000000000 };
1271 #elif GMP_NUMB_BITS == 256
1272 const mp_limb_t mpfr_l2b_31_1__tab[] = { 0xceb186e663eef7cad57800000000000000000000000000000000000000000000 };
1273 #endif
1274
1275 #if 0
1276 #elif GMP_NUMB_BITS == 8
1277 const mp_limb_t mpfr_l2b_32_0__tab[] = { 0x00, 0x00, 0xa0 };
1278 #elif GMP_NUMB_BITS == 16
1279 const mp_limb_t mpfr_l2b_32_0__tab[] = { 0x0000, 0xa000 };
1280 #elif GMP_NUMB_BITS == 32
1281 const mp_limb_t mpfr_l2b_32_0__tab[] = { 0xa0000000 };
1282 #elif GMP_NUMB_BITS == 64
1283 const mp_limb_t mpfr_l2b_32_0__tab[] = { UINT64_C(0xa000000000000000) };
1284 #elif GMP_NUMB_BITS == 96
1285 const mp_limb_t mpfr_l2b_32_0__tab[] = { 0xa00000000000000000000000 };
1286 #elif GMP_NUMB_BITS == 128
1287 const mp_limb_t mpfr_l2b_32_0__tab[] = { 0xa0000000000000000000000000000000 };
1288 #elif GMP_NUMB_BITS == 256
1289 const mp_limb_t mpfr_l2b_32_0__tab[] = { 0xa000000000000000000000000000000000000000000000000000000000000000 };
1290 #endif
1291
1292 #if 0
1293 #elif GMP_NUMB_BITS == 8
1294 const mp_limb_t mpfr_l2b_32_1__tab[] = { 0xd0, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc };
1295 #elif GMP_NUMB_BITS == 16
1296 const mp_limb_t mpfr_l2b_32_1__tab[] = { 0xccd0, 0xcccc, 0xcccc, 0xcccc, 0xcccc };
1297 #elif GMP_NUMB_BITS == 32
1298 const mp_limb_t mpfr_l2b_32_1__tab[] = { 0xccd00000, 0xcccccccc, 0xcccccccc };
1299 #elif GMP_NUMB_BITS == 64
1300 const mp_limb_t mpfr_l2b_32_1__tab[] = { UINT64_C(0xccd0000000000000), UINT64_C(0xcccccccccccccccc) };
1301 #elif GMP_NUMB_BITS == 96
1302 const mp_limb_t mpfr_l2b_32_1__tab[] = { 0xccccccccccccccccccd00000 };
1303 #elif GMP_NUMB_BITS == 128
1304 const mp_limb_t mpfr_l2b_32_1__tab[] = { 0xccccccccccccccccccd0000000000000 };
1305 #elif GMP_NUMB_BITS == 256
1306 const mp_limb_t mpfr_l2b_32_1__tab[] = { 0xccccccccccccccccccd000000000000000000000000000000000000000000000 };
1307 #endif
1308
1309 #if 0
1310 #elif GMP_NUMB_BITS == 8
1311 const mp_limb_t mpfr_l2b_33_0__tab[] = { 0xae, 0x6b, 0xa1 };
1312 #elif GMP_NUMB_BITS == 16
1313 const mp_limb_t mpfr_l2b_33_0__tab[] = { 0xae00, 0xa16b };
1314 #elif GMP_NUMB_BITS == 32
1315 const mp_limb_t mpfr_l2b_33_0__tab[] = { 0xa16bae00 };
1316 #elif GMP_NUMB_BITS == 64
1317 const mp_limb_t mpfr_l2b_33_0__tab[] = { UINT64_C(0xa16bae0000000000) };
1318 #elif GMP_NUMB_BITS == 96
1319 const mp_limb_t mpfr_l2b_33_0__tab[] = { 0xa16bae000000000000000000 };
1320 #elif GMP_NUMB_BITS == 128
1321 const mp_limb_t mpfr_l2b_33_0__tab[] = { 0xa16bae00000000000000000000000000 };
1322 #elif GMP_NUMB_BITS == 256
1323 const mp_limb_t mpfr_l2b_33_0__tab[] = { 0xa16bae0000000000000000000000000000000000000000000000000000000000 };
1324 #endif
1325
1326 #if 0
1327 #elif GMP_NUMB_BITS == 8
1328 const mp_limb_t mpfr_l2b_33_1__tab[] = { 0x88, 0x08, 0x87, 0xa1, 0x04, 0x53, 0x04, 0x64, 0xff, 0xca };
1329 #elif GMP_NUMB_BITS == 16
1330 const mp_limb_t mpfr_l2b_33_1__tab[] = { 0x0888, 0xa187, 0x5304, 0x6404, 0xcaff };
1331 #elif GMP_NUMB_BITS == 32
1332 const mp_limb_t mpfr_l2b_33_1__tab[] = { 0x08880000, 0x5304a187, 0xcaff6404 };
1333 #elif GMP_NUMB_BITS == 64
1334 const mp_limb_t mpfr_l2b_33_1__tab[] = { UINT64_C(0x0888000000000000), UINT64_C(0xcaff64045304a187) };
1335 #elif GMP_NUMB_BITS == 96
1336 const mp_limb_t mpfr_l2b_33_1__tab[] = { 0xcaff64045304a18708880000 };
1337 #elif GMP_NUMB_BITS == 128
1338 const mp_limb_t mpfr_l2b_33_1__tab[] = { 0xcaff64045304a1870888000000000000 };
1339 #elif GMP_NUMB_BITS == 256
1340 const mp_limb_t mpfr_l2b_33_1__tab[] = { 0xcaff64045304a187088800000000000000000000000000000000000000000000 };
1341 #endif
1342
1343 #if 0
1344 #elif GMP_NUMB_BITS == 8
1345 const mp_limb_t mpfr_l2b_34_0__tab[] = { 0x80, 0xcc, 0xa2 };
1346 #elif GMP_NUMB_BITS == 16
1347 const mp_limb_t mpfr_l2b_34_0__tab[] = { 0x8000, 0xa2cc };
1348 #elif GMP_NUMB_BITS == 32
1349 const mp_limb_t mpfr_l2b_34_0__tab[] = { 0xa2cc8000 };
1350 #elif GMP_NUMB_BITS == 64
1351 const mp_limb_t mpfr_l2b_34_0__tab[] = { UINT64_C(0xa2cc800000000000) };
1352 #elif GMP_NUMB_BITS == 96
1353 const mp_limb_t mpfr_l2b_34_0__tab[] = { 0xa2cc80000000000000000000 };
1354 #elif GMP_NUMB_BITS == 128
1355 const mp_limb_t mpfr_l2b_34_0__tab[] = { 0xa2cc8000000000000000000000000000 };
1356 #elif GMP_NUMB_BITS == 256
1357 const mp_limb_t mpfr_l2b_34_0__tab[] = { 0xa2cc800000000000000000000000000000000000000000000000000000000000 };
1358 #endif
1359
1360 #if 0
1361 #elif GMP_NUMB_BITS == 8
1362 const mp_limb_t mpfr_l2b_34_1__tab[] = { 0x50, 0xfb, 0xca, 0x17, 0x79, 0x5a, 0xd8, 0x73, 0x47, 0xc9 };
1363 #elif GMP_NUMB_BITS == 16
1364 const mp_limb_t mpfr_l2b_34_1__tab[] = { 0xfb50, 0x17ca, 0x5a79, 0x73d8, 0xc947 };
1365 #elif GMP_NUMB_BITS == 32
1366 const mp_limb_t mpfr_l2b_34_1__tab[] = { 0xfb500000, 0x5a7917ca, 0xc94773d8 };
1367 #elif GMP_NUMB_BITS == 64
1368 const mp_limb_t mpfr_l2b_34_1__tab[] = { UINT64_C(0xfb50000000000000), UINT64_C(0xc94773d85a7917ca) };
1369 #elif GMP_NUMB_BITS == 96
1370 const mp_limb_t mpfr_l2b_34_1__tab[] = { 0xc94773d85a7917cafb500000 };
1371 #elif GMP_NUMB_BITS == 128
1372 const mp_limb_t mpfr_l2b_34_1__tab[] = { 0xc94773d85a7917cafb50000000000000 };
1373 #elif GMP_NUMB_BITS == 256
1374 const mp_limb_t mpfr_l2b_34_1__tab[] = { 0xc94773d85a7917cafb5000000000000000000000000000000000000000000000 };
1375 #endif
1376
1377 #if 0
1378 #elif GMP_NUMB_BITS == 8
1379 const mp_limb_t mpfr_l2b_35_0__tab[] = { 0x18, 0x23, 0xa4 };
1380 #elif GMP_NUMB_BITS == 16
1381 const mp_limb_t mpfr_l2b_35_0__tab[] = { 0x1800, 0xa423 };
1382 #elif GMP_NUMB_BITS == 32
1383 const mp_limb_t mpfr_l2b_35_0__tab[] = { 0xa4231800 };
1384 #elif GMP_NUMB_BITS == 64
1385 const mp_limb_t mpfr_l2b_35_0__tab[] = { UINT64_C(0xa423180000000000) };
1386 #elif GMP_NUMB_BITS == 96
1387 const mp_limb_t mpfr_l2b_35_0__tab[] = { 0xa42318000000000000000000 };
1388 #elif GMP_NUMB_BITS == 128
1389 const mp_limb_t mpfr_l2b_35_0__tab[] = { 0xa4231800000000000000000000000000 };
1390 #elif GMP_NUMB_BITS == 256
1391 const mp_limb_t mpfr_l2b_35_0__tab[] = { 0xa423180000000000000000000000000000000000000000000000000000000000 };
1392 #endif
1393
1394 #if 0
1395 #elif GMP_NUMB_BITS == 8
1396 const mp_limb_t mpfr_l2b_35_1__tab[] = { 0x60, 0x69, 0xc2, 0x18, 0x37, 0x60, 0x7c, 0x56, 0xa3, 0xc7 };
1397 #elif GMP_NUMB_BITS == 16
1398 const mp_limb_t mpfr_l2b_35_1__tab[] = { 0x6960, 0x18c2, 0x6037, 0x567c, 0xc7a3 };
1399 #elif GMP_NUMB_BITS == 32
1400 const mp_limb_t mpfr_l2b_35_1__tab[] = { 0x69600000, 0x603718c2, 0xc7a3567c };
1401 #elif GMP_NUMB_BITS == 64
1402 const mp_limb_t mpfr_l2b_35_1__tab[] = { UINT64_C(0x6960000000000000), UINT64_C(0xc7a3567c603718c2) };
1403 #elif GMP_NUMB_BITS == 96
1404 const mp_limb_t mpfr_l2b_35_1__tab[] = { 0xc7a3567c603718c269600000 };
1405 #elif GMP_NUMB_BITS == 128
1406 const mp_limb_t mpfr_l2b_35_1__tab[] = { 0xc7a3567c603718c26960000000000000 };
1407 #elif GMP_NUMB_BITS == 256
1408 const mp_limb_t mpfr_l2b_35_1__tab[] = { 0xc7a3567c603718c2696000000000000000000000000000000000000000000000 };
1409 #endif
1410
1411 #if 0
1412 #elif GMP_NUMB_BITS == 8
1413 const mp_limb_t mpfr_l2b_36_0__tab[] = { 0x08, 0x70, 0xa5 };
1414 #elif GMP_NUMB_BITS == 16
1415 const mp_limb_t mpfr_l2b_36_0__tab[] = { 0x0800, 0xa570 };
1416 #elif GMP_NUMB_BITS == 32
1417 const mp_limb_t mpfr_l2b_36_0__tab[] = { 0xa5700800 };
1418 #elif GMP_NUMB_BITS == 64
1419 const mp_limb_t mpfr_l2b_36_0__tab[] = { UINT64_C(0xa570080000000000) };
1420 #elif GMP_NUMB_BITS == 96
1421 const mp_limb_t mpfr_l2b_36_0__tab[] = { 0xa57008000000000000000000 };
1422 #elif GMP_NUMB_BITS == 128
1423 const mp_limb_t mpfr_l2b_36_0__tab[] = { 0xa5700800000000000000000000000000 };
1424 #elif GMP_NUMB_BITS == 256
1425 const mp_limb_t mpfr_l2b_36_0__tab[] = { 0xa570080000000000000000000000000000000000000000000000000000000000 };
1426 #endif
1427
1428 #if 0
1429 #elif GMP_NUMB_BITS == 8
1430 const mp_limb_t mpfr_l2b_36_1__tab[] = { 0x10, 0xff, 0xe9, 0xf9, 0x54, 0xe0, 0x36, 0x92, 0x11, 0xc6 };
1431 #elif GMP_NUMB_BITS == 16
1432 const mp_limb_t mpfr_l2b_36_1__tab[] = { 0xff10, 0xf9e9, 0xe054, 0x9236, 0xc611 };
1433 #elif GMP_NUMB_BITS == 32
1434 const mp_limb_t mpfr_l2b_36_1__tab[] = { 0xff100000, 0xe054f9e9, 0xc6119236 };
1435 #elif GMP_NUMB_BITS == 64
1436 const mp_limb_t mpfr_l2b_36_1__tab[] = { UINT64_C(0xff10000000000000), UINT64_C(0xc6119236e054f9e9) };
1437 #elif GMP_NUMB_BITS == 96
1438 const mp_limb_t mpfr_l2b_36_1__tab[] = { 0xc6119236e054f9e9ff100000 };
1439 #elif GMP_NUMB_BITS == 128
1440 const mp_limb_t mpfr_l2b_36_1__tab[] = { 0xc6119236e054f9e9ff10000000000000 };
1441 #elif GMP_NUMB_BITS == 256
1442 const mp_limb_t mpfr_l2b_36_1__tab[] = { 0xc6119236e054f9e9ff1000000000000000000000000000000000000000000000 };
1443 #endif
1444
1445 #if 0
1446 #elif GMP_NUMB_BITS == 8
1447 const mp_limb_t mpfr_l2b_37_0__tab[] = { 0xd8, 0xb3, 0xa6 };
1448 #elif GMP_NUMB_BITS == 16
1449 const mp_limb_t mpfr_l2b_37_0__tab[] = { 0xd800, 0xa6b3 };
1450 #elif GMP_NUMB_BITS == 32
1451 const mp_limb_t mpfr_l2b_37_0__tab[] = { 0xa6b3d800 };
1452 #elif GMP_NUMB_BITS == 64
1453 const mp_limb_t mpfr_l2b_37_0__tab[] = { UINT64_C(0xa6b3d80000000000) };
1454 #elif GMP_NUMB_BITS == 96
1455 const mp_limb_t mpfr_l2b_37_0__tab[] = { 0xa6b3d8000000000000000000 };
1456 #elif GMP_NUMB_BITS == 128
1457 const mp_limb_t mpfr_l2b_37_0__tab[] = { 0xa6b3d800000000000000000000000000 };
1458 #elif GMP_NUMB_BITS == 256
1459 const mp_limb_t mpfr_l2b_37_0__tab[] = { 0xa6b3d80000000000000000000000000000000000000000000000000000000000 };
1460 #endif
1461
1462 #if 0
1463 #elif GMP_NUMB_BITS == 8
1464 const mp_limb_t mpfr_l2b_37_1__tab[] = { 0x18, 0x16, 0x36, 0x6b, 0xd7, 0x70, 0xa2, 0xd3, 0x90, 0xc4 };
1465 #elif GMP_NUMB_BITS == 16
1466 const mp_limb_t mpfr_l2b_37_1__tab[] = { 0x1618, 0x6b36, 0x70d7, 0xd3a2, 0xc490 };
1467 #elif GMP_NUMB_BITS == 32
1468 const mp_limb_t mpfr_l2b_37_1__tab[] = { 0x16180000, 0x70d76b36, 0xc490d3a2 };
1469 #elif GMP_NUMB_BITS == 64
1470 const mp_limb_t mpfr_l2b_37_1__tab[] = { UINT64_C(0x1618000000000000), UINT64_C(0xc490d3a270d76b36) };
1471 #elif GMP_NUMB_BITS == 96
1472 const mp_limb_t mpfr_l2b_37_1__tab[] = { 0xc490d3a270d76b3616180000 };
1473 #elif GMP_NUMB_BITS == 128
1474 const mp_limb_t mpfr_l2b_37_1__tab[] = { 0xc490d3a270d76b361618000000000000 };
1475 #elif GMP_NUMB_BITS == 256
1476 const mp_limb_t mpfr_l2b_37_1__tab[] = { 0xc490d3a270d76b36161800000000000000000000000000000000000000000000 };
1477 #endif
1478
1479 #if 0
1480 #elif GMP_NUMB_BITS == 8
1481 const mp_limb_t mpfr_l2b_38_0__tab[] = { 0x06, 0xef, 0xa7 };
1482 #elif GMP_NUMB_BITS == 16
1483 const mp_limb_t mpfr_l2b_38_0__tab[] = { 0x0600, 0xa7ef };
1484 #elif GMP_NUMB_BITS == 32
1485 const mp_limb_t mpfr_l2b_38_0__tab[] = { 0xa7ef0600 };
1486 #elif GMP_NUMB_BITS == 64
1487 const mp_limb_t mpfr_l2b_38_0__tab[] = { UINT64_C(0xa7ef060000000000) };
1488 #elif GMP_NUMB_BITS == 96
1489 const mp_limb_t mpfr_l2b_38_0__tab[] = { 0xa7ef06000000000000000000 };
1490 #elif GMP_NUMB_BITS == 128
1491 const mp_limb_t mpfr_l2b_38_0__tab[] = { 0xa7ef0600000000000000000000000000 };
1492 #elif GMP_NUMB_BITS == 256
1493 const mp_limb_t mpfr_l2b_38_0__tab[] = { 0xa7ef060000000000000000000000000000000000000000000000000000000000 };
1494 #endif
1495
1496 #if 0
1497 #elif GMP_NUMB_BITS == 8
1498 const mp_limb_t mpfr_l2b_38_1__tab[] = { 0xe0, 0xa3, 0x05, 0x95, 0x82, 0x51, 0xd2, 0xe8, 0x1f, 0xc3 };
1499 #elif GMP_NUMB_BITS == 16
1500 const mp_limb_t mpfr_l2b_38_1__tab[] = { 0xa3e0, 0x9505, 0x5182, 0xe8d2, 0xc31f };
1501 #elif GMP_NUMB_BITS == 32
1502 const mp_limb_t mpfr_l2b_38_1__tab[] = { 0xa3e00000, 0x51829505, 0xc31fe8d2 };
1503 #elif GMP_NUMB_BITS == 64
1504 const mp_limb_t mpfr_l2b_38_1__tab[] = { UINT64_C(0xa3e0000000000000), UINT64_C(0xc31fe8d251829505) };
1505 #elif GMP_NUMB_BITS == 96
1506 const mp_limb_t mpfr_l2b_38_1__tab[] = { 0xc31fe8d251829505a3e00000 };
1507 #elif GMP_NUMB_BITS == 128
1508 const mp_limb_t mpfr_l2b_38_1__tab[] = { 0xc31fe8d251829505a3e0000000000000 };
1509 #elif GMP_NUMB_BITS == 256
1510 const mp_limb_t mpfr_l2b_38_1__tab[] = { 0xc31fe8d251829505a3e000000000000000000000000000000000000000000000 };
1511 #endif
1512
1513 #if 0
1514 #elif GMP_NUMB_BITS == 8
1515 const mp_limb_t mpfr_l2b_39_0__tab[] = { 0x04, 0x22, 0xa9 };
1516 #elif GMP_NUMB_BITS == 16
1517 const mp_limb_t mpfr_l2b_39_0__tab[] = { 0x0400, 0xa922 };
1518 #elif GMP_NUMB_BITS == 32
1519 const mp_limb_t mpfr_l2b_39_0__tab[] = { 0xa9220400 };
1520 #elif GMP_NUMB_BITS == 64
1521 const mp_limb_t mpfr_l2b_39_0__tab[] = { UINT64_C(0xa922040000000000) };
1522 #elif GMP_NUMB_BITS == 96
1523 const mp_limb_t mpfr_l2b_39_0__tab[] = { 0xa92204000000000000000000 };
1524 #elif GMP_NUMB_BITS == 128
1525 const mp_limb_t mpfr_l2b_39_0__tab[] = { 0xa9220400000000000000000000000000 };
1526 #elif GMP_NUMB_BITS == 256
1527 const mp_limb_t mpfr_l2b_39_0__tab[] = { 0xa922040000000000000000000000000000000000000000000000000000000000 };
1528 #endif
1529
1530 #if 0
1531 #elif GMP_NUMB_BITS == 8
1532 const mp_limb_t mpfr_l2b_39_1__tab[] = { 0xf8, 0xfc, 0xb5, 0xf1, 0xca, 0x10, 0x32, 0xbd, 0xbd, 0xc1 };
1533 #elif GMP_NUMB_BITS == 16
1534 const mp_limb_t mpfr_l2b_39_1__tab[] = { 0xfcf8, 0xf1b5, 0x10ca, 0xbd32, 0xc1bd };
1535 #elif GMP_NUMB_BITS == 32
1536 const mp_limb_t mpfr_l2b_39_1__tab[] = { 0xfcf80000, 0x10caf1b5, 0xc1bdbd32 };
1537 #elif GMP_NUMB_BITS == 64
1538 const mp_limb_t mpfr_l2b_39_1__tab[] = { UINT64_C(0xfcf8000000000000), UINT64_C(0xc1bdbd3210caf1b5) };
1539 #elif GMP_NUMB_BITS == 96
1540 const mp_limb_t mpfr_l2b_39_1__tab[] = { 0xc1bdbd3210caf1b5fcf80000 };
1541 #elif GMP_NUMB_BITS == 128
1542 const mp_limb_t mpfr_l2b_39_1__tab[] = { 0xc1bdbd3210caf1b5fcf8000000000000 };
1543 #elif GMP_NUMB_BITS == 256
1544 const mp_limb_t mpfr_l2b_39_1__tab[] = { 0xc1bdbd3210caf1b5fcf800000000000000000000000000000000000000000000 };
1545 #endif
1546
1547 #if 0
1548 #elif GMP_NUMB_BITS == 8
1549 const mp_limb_t mpfr_l2b_40_0__tab[] = { 0x3e, 0x4d, 0xaa };
1550 #elif GMP_NUMB_BITS == 16
1551 const mp_limb_t mpfr_l2b_40_0__tab[] = { 0x3e00, 0xaa4d };
1552 #elif GMP_NUMB_BITS == 32
1553 const mp_limb_t mpfr_l2b_40_0__tab[] = { 0xaa4d3e00 };
1554 #elif GMP_NUMB_BITS == 64
1555 const mp_limb_t mpfr_l2b_40_0__tab[] = { UINT64_C(0xaa4d3e0000000000) };
1556 #elif GMP_NUMB_BITS == 96
1557 const mp_limb_t mpfr_l2b_40_0__tab[] = { 0xaa4d3e000000000000000000 };
1558 #elif GMP_NUMB_BITS == 128
1559 const mp_limb_t mpfr_l2b_40_0__tab[] = { 0xaa4d3e00000000000000000000000000 };
1560 #elif GMP_NUMB_BITS == 256
1561 const mp_limb_t mpfr_l2b_40_0__tab[] = { 0xaa4d3e0000000000000000000000000000000000000000000000000000000000 };
1562 #endif
1563
1564 #if 0
1565 #elif GMP_NUMB_BITS == 8
1566 const mp_limb_t mpfr_l2b_40_1__tab[] = { 0xe8, 0xdc, 0x48, 0x49, 0xf7, 0xef, 0xff, 0x55, 0x69, 0xc0 };
1567 #elif GMP_NUMB_BITS == 16
1568 const mp_limb_t mpfr_l2b_40_1__tab[] = { 0xdce8, 0x4948, 0xeff7, 0x55ff, 0xc069 };
1569 #elif GMP_NUMB_BITS == 32
1570 const mp_limb_t mpfr_l2b_40_1__tab[] = { 0xdce80000, 0xeff74948, 0xc06955ff };
1571 #elif GMP_NUMB_BITS == 64
1572 const mp_limb_t mpfr_l2b_40_1__tab[] = { UINT64_C(0xdce8000000000000), UINT64_C(0xc06955ffeff74948) };
1573 #elif GMP_NUMB_BITS == 96
1574 const mp_limb_t mpfr_l2b_40_1__tab[] = { 0xc06955ffeff74948dce80000 };
1575 #elif GMP_NUMB_BITS == 128
1576 const mp_limb_t mpfr_l2b_40_1__tab[] = { 0xc06955ffeff74948dce8000000000000 };
1577 #elif GMP_NUMB_BITS == 256
1578 const mp_limb_t mpfr_l2b_40_1__tab[] = { 0xc06955ffeff74948dce800000000000000000000000000000000000000000000 };
1579 #endif
1580
1581 #if 0
1582 #elif GMP_NUMB_BITS == 8
1583 const mp_limb_t mpfr_l2b_41_0__tab[] = { 0x12, 0x71, 0xab };
1584 #elif GMP_NUMB_BITS == 16
1585 const mp_limb_t mpfr_l2b_41_0__tab[] = { 0x1200, 0xab71 };
1586 #elif GMP_NUMB_BITS == 32
1587 const mp_limb_t mpfr_l2b_41_0__tab[] = { 0xab711200 };
1588 #elif GMP_NUMB_BITS == 64
1589 const mp_limb_t mpfr_l2b_41_0__tab[] = { UINT64_C(0xab71120000000000) };
1590 #elif GMP_NUMB_BITS == 96
1591 const mp_limb_t mpfr_l2b_41_0__tab[] = { 0xab7112000000000000000000 };
1592 #elif GMP_NUMB_BITS == 128
1593 const mp_limb_t mpfr_l2b_41_0__tab[] = { 0xab711200000000000000000000000000 };
1594 #elif GMP_NUMB_BITS == 256
1595 const mp_limb_t mpfr_l2b_41_0__tab[] = { 0xab71120000000000000000000000000000000000000000000000000000000000 };
1596 #endif
1597
1598 #if 0
1599 #elif GMP_NUMB_BITS == 8
1600 const mp_limb_t mpfr_l2b_41_1__tab[] = { 0x28, 0xdc, 0xef, 0x7c, 0x95, 0xf6, 0x47, 0xcf, 0x21, 0xbf };
1601 #elif GMP_NUMB_BITS == 16
1602 const mp_limb_t mpfr_l2b_41_1__tab[] = { 0xdc28, 0x7cef, 0xf695, 0xcf47, 0xbf21 };
1603 #elif GMP_NUMB_BITS == 32
1604 const mp_limb_t mpfr_l2b_41_1__tab[] = { 0xdc280000, 0xf6957cef, 0xbf21cf47 };
1605 #elif GMP_NUMB_BITS == 64
1606 const mp_limb_t mpfr_l2b_41_1__tab[] = { UINT64_C(0xdc28000000000000), UINT64_C(0xbf21cf47f6957cef) };
1607 #elif GMP_NUMB_BITS == 96
1608 const mp_limb_t mpfr_l2b_41_1__tab[] = { 0xbf21cf47f6957cefdc280000 };
1609 #elif GMP_NUMB_BITS == 128
1610 const mp_limb_t mpfr_l2b_41_1__tab[] = { 0xbf21cf47f6957cefdc28000000000000 };
1611 #elif GMP_NUMB_BITS == 256
1612 const mp_limb_t mpfr_l2b_41_1__tab[] = { 0xbf21cf47f6957cefdc2800000000000000000000000000000000000000000000 };
1613 #endif
1614
1615 #if 0
1616 #elif GMP_NUMB_BITS == 8
1617 const mp_limb_t mpfr_l2b_42_0__tab[] = { 0xde, 0x8d, 0xac };
1618 #elif GMP_NUMB_BITS == 16
1619 const mp_limb_t mpfr_l2b_42_0__tab[] = { 0xde00, 0xac8d };
1620 #elif GMP_NUMB_BITS == 32
1621 const mp_limb_t mpfr_l2b_42_0__tab[] = { 0xac8dde00 };
1622 #elif GMP_NUMB_BITS == 64
1623 const mp_limb_t mpfr_l2b_42_0__tab[] = { UINT64_C(0xac8dde0000000000) };
1624 #elif GMP_NUMB_BITS == 96
1625 const mp_limb_t mpfr_l2b_42_0__tab[] = { 0xac8dde000000000000000000 };
1626 #elif GMP_NUMB_BITS == 128
1627 const mp_limb_t mpfr_l2b_42_0__tab[] = { 0xac8dde00000000000000000000000000 };
1628 #elif GMP_NUMB_BITS == 256
1629 const mp_limb_t mpfr_l2b_42_0__tab[] = { 0xac8dde0000000000000000000000000000000000000000000000000000000000 };
1630 #endif
1631
1632 #if 0
1633 #elif GMP_NUMB_BITS == 8
1634 const mp_limb_t mpfr_l2b_42_1__tab[] = { 0x10, 0xba, 0x25, 0x71, 0x9b, 0x93, 0x4a, 0x59, 0xe6, 0xbd };
1635 #elif GMP_NUMB_BITS == 16
1636 const mp_limb_t mpfr_l2b_42_1__tab[] = { 0xba10, 0x7125, 0x939b, 0x594a, 0xbde6 };
1637 #elif GMP_NUMB_BITS == 32
1638 const mp_limb_t mpfr_l2b_42_1__tab[] = { 0xba100000, 0x939b7125, 0xbde6594a };
1639 #elif GMP_NUMB_BITS == 64
1640 const mp_limb_t mpfr_l2b_42_1__tab[] = { UINT64_C(0xba10000000000000), UINT64_C(0xbde6594a939b7125) };
1641 #elif GMP_NUMB_BITS == 96
1642 const mp_limb_t mpfr_l2b_42_1__tab[] = { 0xbde6594a939b7125ba100000 };
1643 #elif GMP_NUMB_BITS == 128
1644 const mp_limb_t mpfr_l2b_42_1__tab[] = { 0xbde6594a939b7125ba10000000000000 };
1645 #elif GMP_NUMB_BITS == 256
1646 const mp_limb_t mpfr_l2b_42_1__tab[] = { 0xbde6594a939b7125ba1000000000000000000000000000000000000000000000 };
1647 #endif
1648
1649 #if 0
1650 #elif GMP_NUMB_BITS == 8
1651 const mp_limb_t mpfr_l2b_43_0__tab[] = { 0xf6, 0xa3, 0xad };
1652 #elif GMP_NUMB_BITS == 16
1653 const mp_limb_t mpfr_l2b_43_0__tab[] = { 0xf600, 0xada3 };
1654 #elif GMP_NUMB_BITS == 32
1655 const mp_limb_t mpfr_l2b_43_0__tab[] = { 0xada3f600 };
1656 #elif GMP_NUMB_BITS == 64
1657 const mp_limb_t mpfr_l2b_43_0__tab[] = { UINT64_C(0xada3f60000000000) };
1658 #elif GMP_NUMB_BITS == 96
1659 const mp_limb_t mpfr_l2b_43_0__tab[] = { 0xada3f6000000000000000000 };
1660 #elif GMP_NUMB_BITS == 128
1661 const mp_limb_t mpfr_l2b_43_0__tab[] = { 0xada3f600000000000000000000000000 };
1662 #elif GMP_NUMB_BITS == 256
1663 const mp_limb_t mpfr_l2b_43_0__tab[] = { 0xada3f60000000000000000000000000000000000000000000000000000000000 };
1664 #endif
1665
1666 #if 0
1667 #elif GMP_NUMB_BITS == 8
1668 const mp_limb_t mpfr_l2b_43_1__tab[] = { 0x60, 0x95, 0xb5, 0x2a, 0x18, 0x91, 0x3d, 0x36, 0xb6, 0xbc };
1669 #elif GMP_NUMB_BITS == 16
1670 const mp_limb_t mpfr_l2b_43_1__tab[] = { 0x9560, 0x2ab5, 0x9118, 0x363d, 0xbcb6 };
1671 #elif GMP_NUMB_BITS == 32
1672 const mp_limb_t mpfr_l2b_43_1__tab[] = { 0x95600000, 0x91182ab5, 0xbcb6363d };
1673 #elif GMP_NUMB_BITS == 64
1674 const mp_limb_t mpfr_l2b_43_1__tab[] = { UINT64_C(0x9560000000000000), UINT64_C(0xbcb6363d91182ab5) };
1675 #elif GMP_NUMB_BITS == 96
1676 const mp_limb_t mpfr_l2b_43_1__tab[] = { 0xbcb6363d91182ab595600000 };
1677 #elif GMP_NUMB_BITS == 128
1678 const mp_limb_t mpfr_l2b_43_1__tab[] = { 0xbcb6363d91182ab59560000000000000 };
1679 #elif GMP_NUMB_BITS == 256
1680 const mp_limb_t mpfr_l2b_43_1__tab[] = { 0xbcb6363d91182ab5956000000000000000000000000000000000000000000000 };
1681 #endif
1682
1683 #if 0
1684 #elif GMP_NUMB_BITS == 8
1685 const mp_limb_t mpfr_l2b_44_0__tab[] = { 0xaa, 0xb3, 0xae };
1686 #elif GMP_NUMB_BITS == 16
1687 const mp_limb_t mpfr_l2b_44_0__tab[] = { 0xaa00, 0xaeb3 };
1688 #elif GMP_NUMB_BITS == 32
1689 const mp_limb_t mpfr_l2b_44_0__tab[] = { 0xaeb3aa00 };
1690 #elif GMP_NUMB_BITS == 64
1691 const mp_limb_t mpfr_l2b_44_0__tab[] = { UINT64_C(0xaeb3aa0000000000) };
1692 #elif GMP_NUMB_BITS == 96
1693 const mp_limb_t mpfr_l2b_44_0__tab[] = { 0xaeb3aa000000000000000000 };
1694 #elif GMP_NUMB_BITS == 128
1695 const mp_limb_t mpfr_l2b_44_0__tab[] = { 0xaeb3aa00000000000000000000000000 };
1696 #elif GMP_NUMB_BITS == 256
1697 const mp_limb_t mpfr_l2b_44_0__tab[] = { 0xaeb3aa0000000000000000000000000000000000000000000000000000000000 };
1698 #endif
1699
1700 #if 0
1701 #elif GMP_NUMB_BITS == 8
1702 const mp_limb_t mpfr_l2b_44_1__tab[] = { 0x90, 0x15, 0x90, 0x4e, 0x3d, 0x3a, 0x59, 0xb8, 0x90, 0xbb };
1703 #elif GMP_NUMB_BITS == 16
1704 const mp_limb_t mpfr_l2b_44_1__tab[] = { 0x1590, 0x4e90, 0x3a3d, 0xb859, 0xbb90 };
1705 #elif GMP_NUMB_BITS == 32
1706 const mp_limb_t mpfr_l2b_44_1__tab[] = { 0x15900000, 0x3a3d4e90, 0xbb90b859 };
1707 #elif GMP_NUMB_BITS == 64
1708 const mp_limb_t mpfr_l2b_44_1__tab[] = { UINT64_C(0x1590000000000000), UINT64_C(0xbb90b8593a3d4e90) };
1709 #elif GMP_NUMB_BITS == 96
1710 const mp_limb_t mpfr_l2b_44_1__tab[] = { 0xbb90b8593a3d4e9015900000 };
1711 #elif GMP_NUMB_BITS == 128
1712 const mp_limb_t mpfr_l2b_44_1__tab[] = { 0xbb90b8593a3d4e901590000000000000 };
1713 #elif GMP_NUMB_BITS == 256
1714 const mp_limb_t mpfr_l2b_44_1__tab[] = { 0xbb90b8593a3d4e90159000000000000000000000000000000000000000000000 };
1715 #endif
1716
1717 #if 0
1718 #elif GMP_NUMB_BITS == 8
1719 const mp_limb_t mpfr_l2b_45_0__tab[] = { 0x44, 0xbd, 0xaf };
1720 #elif GMP_NUMB_BITS == 16
1721 const mp_limb_t mpfr_l2b_45_0__tab[] = { 0x4400, 0xafbd };
1722 #elif GMP_NUMB_BITS == 32
1723 const mp_limb_t mpfr_l2b_45_0__tab[] = { 0xafbd4400 };
1724 #elif GMP_NUMB_BITS == 64
1725 const mp_limb_t mpfr_l2b_45_0__tab[] = { UINT64_C(0xafbd440000000000) };
1726 #elif GMP_NUMB_BITS == 96
1727 const mp_limb_t mpfr_l2b_45_0__tab[] = { 0xafbd44000000000000000000 };
1728 #elif GMP_NUMB_BITS == 128
1729 const mp_limb_t mpfr_l2b_45_0__tab[] = { 0xafbd4400000000000000000000000000 };
1730 #elif GMP_NUMB_BITS == 256
1731 const mp_limb_t mpfr_l2b_45_0__tab[] = { 0xafbd440000000000000000000000000000000000000000000000000000000000 };
1732 #endif
1733
1734 #if 0
1735 #elif GMP_NUMB_BITS == 8
1736 const mp_limb_t mpfr_l2b_45_1__tab[] = { 0x78, 0x1e, 0xf5, 0x76, 0x10, 0x10, 0x26, 0x40, 0x75, 0xba };
1737 #elif GMP_NUMB_BITS == 16
1738 const mp_limb_t mpfr_l2b_45_1__tab[] = { 0x1e78, 0x76f5, 0x1010, 0x4026, 0xba75 };
1739 #elif GMP_NUMB_BITS == 32
1740 const mp_limb_t mpfr_l2b_45_1__tab[] = { 0x1e780000, 0x101076f5, 0xba754026 };
1741 #elif GMP_NUMB_BITS == 64
1742 const mp_limb_t mpfr_l2b_45_1__tab[] = { UINT64_C(0x1e78000000000000), UINT64_C(0xba754026101076f5) };
1743 #elif GMP_NUMB_BITS == 96
1744 const mp_limb_t mpfr_l2b_45_1__tab[] = { 0xba754026101076f51e780000 };
1745 #elif GMP_NUMB_BITS == 128
1746 const mp_limb_t mpfr_l2b_45_1__tab[] = { 0xba754026101076f51e78000000000000 };
1747 #elif GMP_NUMB_BITS == 256
1748 const mp_limb_t mpfr_l2b_45_1__tab[] = { 0xba754026101076f51e7800000000000000000000000000000000000000000000 };
1749 #endif
1750
1751 #if 0
1752 #elif GMP_NUMB_BITS == 8
1753 const mp_limb_t mpfr_l2b_46_0__tab[] = { 0x06, 0xc1, 0xb0 };
1754 #elif GMP_NUMB_BITS == 16
1755 const mp_limb_t mpfr_l2b_46_0__tab[] = { 0x0600, 0xb0c1 };
1756 #elif GMP_NUMB_BITS == 32
1757 const mp_limb_t mpfr_l2b_46_0__tab[] = { 0xb0c10600 };
1758 #elif GMP_NUMB_BITS == 64
1759 const mp_limb_t mpfr_l2b_46_0__tab[] = { UINT64_C(0xb0c1060000000000) };
1760 #elif GMP_NUMB_BITS == 96
1761 const mp_limb_t mpfr_l2b_46_0__tab[] = { 0xb0c106000000000000000000 };
1762 #elif GMP_NUMB_BITS == 128
1763 const mp_limb_t mpfr_l2b_46_0__tab[] = { 0xb0c10600000000000000000000000000 };
1764 #elif GMP_NUMB_BITS == 256
1765 const mp_limb_t mpfr_l2b_46_0__tab[] = { 0xb0c1060000000000000000000000000000000000000000000000000000000000 };
1766 #endif
1767
1768 #if 0
1769 #elif GMP_NUMB_BITS == 8
1770 const mp_limb_t mpfr_l2b_46_1__tab[] = { 0x70, 0xb6, 0x12, 0x05, 0xaa, 0x69, 0x01, 0x3b, 0x63, 0xb9 };
1771 #elif GMP_NUMB_BITS == 16
1772 const mp_limb_t mpfr_l2b_46_1__tab[] = { 0xb670, 0x0512, 0x69aa, 0x3b01, 0xb963 };
1773 #elif GMP_NUMB_BITS == 32
1774 const mp_limb_t mpfr_l2b_46_1__tab[] = { 0xb6700000, 0x69aa0512, 0xb9633b01 };
1775 #elif GMP_NUMB_BITS == 64
1776 const mp_limb_t mpfr_l2b_46_1__tab[] = { UINT64_C(0xb670000000000000), UINT64_C(0xb9633b0169aa0512) };
1777 #elif GMP_NUMB_BITS == 96
1778 const mp_limb_t mpfr_l2b_46_1__tab[] = { 0xb9633b0169aa0512b6700000 };
1779 #elif GMP_NUMB_BITS == 128
1780 const mp_limb_t mpfr_l2b_46_1__tab[] = { 0xb9633b0169aa0512b670000000000000 };
1781 #elif GMP_NUMB_BITS == 256
1782 const mp_limb_t mpfr_l2b_46_1__tab[] = { 0xb9633b0169aa0512b67000000000000000000000000000000000000000000000 };
1783 #endif
1784
1785 #if 0
1786 #elif GMP_NUMB_BITS == 8
1787 const mp_limb_t mpfr_l2b_47_0__tab[] = { 0x32, 0xbf, 0xb1 };
1788 #elif GMP_NUMB_BITS == 16
1789 const mp_limb_t mpfr_l2b_47_0__tab[] = { 0x3200, 0xb1bf };
1790 #elif GMP_NUMB_BITS == 32
1791 const mp_limb_t mpfr_l2b_47_0__tab[] = { 0xb1bf3200 };
1792 #elif GMP_NUMB_BITS == 64
1793 const mp_limb_t mpfr_l2b_47_0__tab[] = { UINT64_C(0xb1bf320000000000) };
1794 #elif GMP_NUMB_BITS == 96
1795 const mp_limb_t mpfr_l2b_47_0__tab[] = { 0xb1bf32000000000000000000 };
1796 #elif GMP_NUMB_BITS == 128
1797 const mp_limb_t mpfr_l2b_47_0__tab[] = { 0xb1bf3200000000000000000000000000 };
1798 #elif GMP_NUMB_BITS == 256
1799 const mp_limb_t mpfr_l2b_47_0__tab[] = { 0xb1bf320000000000000000000000000000000000000000000000000000000000 };
1800 #endif
1801
1802 #if 0
1803 #elif GMP_NUMB_BITS == 8
1804 const mp_limb_t mpfr_l2b_47_1__tab[] = { 0x18, 0x51, 0x33, 0x41, 0xe4, 0xfb, 0xd0, 0x21, 0x5a, 0xb8 };
1805 #elif GMP_NUMB_BITS == 16
1806 const mp_limb_t mpfr_l2b_47_1__tab[] = { 0x5118, 0x4133, 0xfbe4, 0x21d0, 0xb85a };
1807 #elif GMP_NUMB_BITS == 32
1808 const mp_limb_t mpfr_l2b_47_1__tab[] = { 0x51180000, 0xfbe44133, 0xb85a21d0 };
1809 #elif GMP_NUMB_BITS == 64
1810 const mp_limb_t mpfr_l2b_47_1__tab[] = { UINT64_C(0x5118000000000000), UINT64_C(0xb85a21d0fbe44133) };
1811 #elif GMP_NUMB_BITS == 96
1812 const mp_limb_t mpfr_l2b_47_1__tab[] = { 0xb85a21d0fbe4413351180000 };
1813 #elif GMP_NUMB_BITS == 128
1814 const mp_limb_t mpfr_l2b_47_1__tab[] = { 0xb85a21d0fbe441335118000000000000 };
1815 #elif GMP_NUMB_BITS == 256
1816 const mp_limb_t mpfr_l2b_47_1__tab[] = { 0xb85a21d0fbe44133511800000000000000000000000000000000000000000000 };
1817 #endif
1818
1819 #if 0
1820 #elif GMP_NUMB_BITS == 8
1821 const mp_limb_t mpfr_l2b_48_0__tab[] = { 0x04, 0xb8, 0xb2 };
1822 #elif GMP_NUMB_BITS == 16
1823 const mp_limb_t mpfr_l2b_48_0__tab[] = { 0x0400, 0xb2b8 };
1824 #elif GMP_NUMB_BITS == 32
1825 const mp_limb_t mpfr_l2b_48_0__tab[] = { 0xb2b80400 };
1826 #elif GMP_NUMB_BITS == 64
1827 const mp_limb_t mpfr_l2b_48_0__tab[] = { UINT64_C(0xb2b8040000000000) };
1828 #elif GMP_NUMB_BITS == 96
1829 const mp_limb_t mpfr_l2b_48_0__tab[] = { 0xb2b804000000000000000000 };
1830 #elif GMP_NUMB_BITS == 128
1831 const mp_limb_t mpfr_l2b_48_0__tab[] = { 0xb2b80400000000000000000000000000 };
1832 #elif GMP_NUMB_BITS == 256
1833 const mp_limb_t mpfr_l2b_48_0__tab[] = { 0xb2b8040000000000000000000000000000000000000000000000000000000000 };
1834 #endif
1835
1836 #if 0
1837 #elif GMP_NUMB_BITS == 8
1838 const mp_limb_t mpfr_l2b_48_1__tab[] = { 0x90, 0x04, 0x3d, 0x66, 0x0d, 0x96, 0xde, 0x77, 0x59, 0xb7 };
1839 #elif GMP_NUMB_BITS == 16
1840 const mp_limb_t mpfr_l2b_48_1__tab[] = { 0x0490, 0x663d, 0x960d, 0x77de, 0xb759 };
1841 #elif GMP_NUMB_BITS == 32
1842 const mp_limb_t mpfr_l2b_48_1__tab[] = { 0x04900000, 0x960d663d, 0xb75977de };
1843 #elif GMP_NUMB_BITS == 64
1844 const mp_limb_t mpfr_l2b_48_1__tab[] = { UINT64_C(0x0490000000000000), UINT64_C(0xb75977de960d663d) };
1845 #elif GMP_NUMB_BITS == 96
1846 const mp_limb_t mpfr_l2b_48_1__tab[] = { 0xb75977de960d663d04900000 };
1847 #elif GMP_NUMB_BITS == 128
1848 const mp_limb_t mpfr_l2b_48_1__tab[] = { 0xb75977de960d663d0490000000000000 };
1849 #elif GMP_NUMB_BITS == 256
1850 const mp_limb_t mpfr_l2b_48_1__tab[] = { 0xb75977de960d663d049000000000000000000000000000000000000000000000 };
1851 #endif
1852
1853 #if 0
1854 #elif GMP_NUMB_BITS == 8
1855 const mp_limb_t mpfr_l2b_49_0__tab[] = { 0xb4, 0xab, 0xb3 };
1856 #elif GMP_NUMB_BITS == 16
1857 const mp_limb_t mpfr_l2b_49_0__tab[] = { 0xb400, 0xb3ab };
1858 #elif GMP_NUMB_BITS == 32
1859 const mp_limb_t mpfr_l2b_49_0__tab[] = { 0xb3abb400 };
1860 #elif GMP_NUMB_BITS == 64
1861 const mp_limb_t mpfr_l2b_49_0__tab[] = { UINT64_C(0xb3abb40000000000) };
1862 #elif GMP_NUMB_BITS == 96
1863 const mp_limb_t mpfr_l2b_49_0__tab[] = { 0xb3abb4000000000000000000 };
1864 #elif GMP_NUMB_BITS == 128
1865 const mp_limb_t mpfr_l2b_49_0__tab[] = { 0xb3abb400000000000000000000000000 };
1866 #elif GMP_NUMB_BITS == 256
1867 const mp_limb_t mpfr_l2b_49_0__tab[] = { 0xb3abb40000000000000000000000000000000000000000000000000000000000 };
1868 #endif
1869
1870 #if 0
1871 #elif GMP_NUMB_BITS == 8
1872 const mp_limb_t mpfr_l2b_49_1__tab[] = { 0xb8, 0x37, 0x11, 0xa7, 0x4d, 0x75, 0xd6, 0xc9, 0x60, 0xb6 };
1873 #elif GMP_NUMB_BITS == 16
1874 const mp_limb_t mpfr_l2b_49_1__tab[] = { 0x37b8, 0xa711, 0x754d, 0xc9d6, 0xb660 };
1875 #elif GMP_NUMB_BITS == 32
1876 const mp_limb_t mpfr_l2b_49_1__tab[] = { 0x37b80000, 0x754da711, 0xb660c9d6 };
1877 #elif GMP_NUMB_BITS == 64
1878 const mp_limb_t mpfr_l2b_49_1__tab[] = { UINT64_C(0x37b8000000000000), UINT64_C(0xb660c9d6754da711) };
1879 #elif GMP_NUMB_BITS == 96
1880 const mp_limb_t mpfr_l2b_49_1__tab[] = { 0xb660c9d6754da71137b80000 };
1881 #elif GMP_NUMB_BITS == 128
1882 const mp_limb_t mpfr_l2b_49_1__tab[] = { 0xb660c9d6754da71137b8000000000000 };
1883 #elif GMP_NUMB_BITS == 256
1884 const mp_limb_t mpfr_l2b_49_1__tab[] = { 0xb660c9d6754da71137b800000000000000000000000000000000000000000000 };
1885 #endif
1886
1887 #if 0
1888 #elif GMP_NUMB_BITS == 8
1889 const mp_limb_t mpfr_l2b_50_0__tab[] = { 0x7a, 0x9a, 0xb4 };
1890 #elif GMP_NUMB_BITS == 16
1891 const mp_limb_t mpfr_l2b_50_0__tab[] = { 0x7a00, 0xb49a };
1892 #elif GMP_NUMB_BITS == 32
1893 const mp_limb_t mpfr_l2b_50_0__tab[] = { 0xb49a7a00 };
1894 #elif GMP_NUMB_BITS == 64
1895 const mp_limb_t mpfr_l2b_50_0__tab[] = { UINT64_C(0xb49a7a0000000000) };
1896 #elif GMP_NUMB_BITS == 96
1897 const mp_limb_t mpfr_l2b_50_0__tab[] = { 0xb49a7a000000000000000000 };
1898 #elif GMP_NUMB_BITS == 128
1899 const mp_limb_t mpfr_l2b_50_0__tab[] = { 0xb49a7a00000000000000000000000000 };
1900 #elif GMP_NUMB_BITS == 256
1901 const mp_limb_t mpfr_l2b_50_0__tab[] = { 0xb49a7a0000000000000000000000000000000000000000000000000000000000 };
1902 #endif
1903
1904 #if 0
1905 #elif GMP_NUMB_BITS == 8
1906 const mp_limb_t mpfr_l2b_50_1__tab[] = { 0xf0, 0x27, 0x32, 0xe5, 0x44, 0x73, 0xe3, 0xac, 0x6f, 0xb5 };
1907 #elif GMP_NUMB_BITS == 16
1908 const mp_limb_t mpfr_l2b_50_1__tab[] = { 0x27f0, 0xe532, 0x7344, 0xace3, 0xb56f };
1909 #elif GMP_NUMB_BITS == 32
1910 const mp_limb_t mpfr_l2b_50_1__tab[] = { 0x27f00000, 0x7344e532, 0xb56face3 };
1911 #elif GMP_NUMB_BITS == 64
1912 const mp_limb_t mpfr_l2b_50_1__tab[] = { UINT64_C(0x27f0000000000000), UINT64_C(0xb56face37344e532) };
1913 #elif GMP_NUMB_BITS == 96
1914 const mp_limb_t mpfr_l2b_50_1__tab[] = { 0xb56face37344e53227f00000 };
1915 #elif GMP_NUMB_BITS == 128
1916 const mp_limb_t mpfr_l2b_50_1__tab[] = { 0xb56face37344e53227f0000000000000 };
1917 #elif GMP_NUMB_BITS == 256
1918 const mp_limb_t mpfr_l2b_50_1__tab[] = { 0xb56face37344e53227f000000000000000000000000000000000000000000000 };
1919 #endif
1920
1921 #if 0
1922 #elif GMP_NUMB_BITS == 8
1923 const mp_limb_t mpfr_l2b_51_0__tab[] = { 0x84, 0x84, 0xb5 };
1924 #elif GMP_NUMB_BITS == 16
1925 const mp_limb_t mpfr_l2b_51_0__tab[] = { 0x8400, 0xb584 };
1926 #elif GMP_NUMB_BITS == 32
1927 const mp_limb_t mpfr_l2b_51_0__tab[] = { 0xb5848400 };
1928 #elif GMP_NUMB_BITS == 64
1929 const mp_limb_t mpfr_l2b_51_0__tab[] = { UINT64_C(0xb584840000000000) };
1930 #elif GMP_NUMB_BITS == 96
1931 const mp_limb_t mpfr_l2b_51_0__tab[] = { 0xb58484000000000000000000 };
1932 #elif GMP_NUMB_BITS == 128
1933 const mp_limb_t mpfr_l2b_51_0__tab[] = { 0xb5848400000000000000000000000000 };
1934 #elif GMP_NUMB_BITS == 256
1935 const mp_limb_t mpfr_l2b_51_0__tab[] = { 0xb584840000000000000000000000000000000000000000000000000000000000 };
1936 #endif
1937
1938 #if 0
1939 #elif GMP_NUMB_BITS == 8
1940 const mp_limb_t mpfr_l2b_51_1__tab[] = { 0x00, 0x40, 0xa9, 0xe9, 0x8a, 0x0f, 0xe5, 0xbd, 0x85, 0xb4 };
1941 #elif GMP_NUMB_BITS == 16
1942 const mp_limb_t mpfr_l2b_51_1__tab[] = { 0x4000, 0xe9a9, 0x0f8a, 0xbde5, 0xb485 };
1943 #elif GMP_NUMB_BITS == 32
1944 const mp_limb_t mpfr_l2b_51_1__tab[] = { 0x40000000, 0x0f8ae9a9, 0xb485bde5 };
1945 #elif GMP_NUMB_BITS == 64
1946 const mp_limb_t mpfr_l2b_51_1__tab[] = { UINT64_C(0x4000000000000000), UINT64_C(0xb485bde50f8ae9a9) };
1947 #elif GMP_NUMB_BITS == 96
1948 const mp_limb_t mpfr_l2b_51_1__tab[] = { 0xb485bde50f8ae9a940000000 };
1949 #elif GMP_NUMB_BITS == 128
1950 const mp_limb_t mpfr_l2b_51_1__tab[] = { 0xb485bde50f8ae9a94000000000000000 };
1951 #elif GMP_NUMB_BITS == 256
1952 const mp_limb_t mpfr_l2b_51_1__tab[] = { 0xb485bde50f8ae9a9400000000000000000000000000000000000000000000000 };
1953 #endif
1954
1955 #if 0
1956 #elif GMP_NUMB_BITS == 8
1957 const mp_limb_t mpfr_l2b_52_0__tab[] = { 0x02, 0x6a, 0xb6 };
1958 #elif GMP_NUMB_BITS == 16
1959 const mp_limb_t mpfr_l2b_52_0__tab[] = { 0x0200, 0xb66a };
1960 #elif GMP_NUMB_BITS == 32
1961 const mp_limb_t mpfr_l2b_52_0__tab[] = { 0xb66a0200 };
1962 #elif GMP_NUMB_BITS == 64
1963 const mp_limb_t mpfr_l2b_52_0__tab[] = { UINT64_C(0xb66a020000000000) };
1964 #elif GMP_NUMB_BITS == 96
1965 const mp_limb_t mpfr_l2b_52_0__tab[] = { 0xb66a02000000000000000000 };
1966 #elif GMP_NUMB_BITS == 128
1967 const mp_limb_t mpfr_l2b_52_0__tab[] = { 0xb66a0200000000000000000000000000 };
1968 #elif GMP_NUMB_BITS == 256
1969 const mp_limb_t mpfr_l2b_52_0__tab[] = { 0xb66a020000000000000000000000000000000000000000000000000000000000 };
1970 #endif
1971
1972 #if 0
1973 #elif GMP_NUMB_BITS == 8
1974 const mp_limb_t mpfr_l2b_52_1__tab[] = { 0x08, 0x46, 0xb3, 0xfc, 0xcf, 0xee, 0xbb, 0xa0, 0xa2, 0xb3 };
1975 #elif GMP_NUMB_BITS == 16
1976 const mp_limb_t mpfr_l2b_52_1__tab[] = { 0x4608, 0xfcb3, 0xeecf, 0xa0bb, 0xb3a2 };
1977 #elif GMP_NUMB_BITS == 32
1978 const mp_limb_t mpfr_l2b_52_1__tab[] = { 0x46080000, 0xeecffcb3, 0xb3a2a0bb };
1979 #elif GMP_NUMB_BITS == 64
1980 const mp_limb_t mpfr_l2b_52_1__tab[] = { UINT64_C(0x4608000000000000), UINT64_C(0xb3a2a0bbeecffcb3) };
1981 #elif GMP_NUMB_BITS == 96
1982 const mp_limb_t mpfr_l2b_52_1__tab[] = { 0xb3a2a0bbeecffcb346080000 };
1983 #elif GMP_NUMB_BITS == 128
1984 const mp_limb_t mpfr_l2b_52_1__tab[] = { 0xb3a2a0bbeecffcb34608000000000000 };
1985 #elif GMP_NUMB_BITS == 256
1986 const mp_limb_t mpfr_l2b_52_1__tab[] = { 0xb3a2a0bbeecffcb3460800000000000000000000000000000000000000000000 };
1987 #endif
1988
1989 #if 0
1990 #elif GMP_NUMB_BITS == 8
1991 const mp_limb_t mpfr_l2b_53_0__tab[] = { 0x20, 0x4b, 0xb7 };
1992 #elif GMP_NUMB_BITS == 16
1993 const mp_limb_t mpfr_l2b_53_0__tab[] = { 0x2000, 0xb74b };
1994 #elif GMP_NUMB_BITS == 32
1995 const mp_limb_t mpfr_l2b_53_0__tab[] = { 0xb74b2000 };
1996 #elif GMP_NUMB_BITS == 64
1997 const mp_limb_t mpfr_l2b_53_0__tab[] = { UINT64_C(0xb74b200000000000) };
1998 #elif GMP_NUMB_BITS == 96
1999 const mp_limb_t mpfr_l2b_53_0__tab[] = { 0xb74b20000000000000000000 };
2000 #elif GMP_NUMB_BITS == 128
2001 const mp_limb_t mpfr_l2b_53_0__tab[] = { 0xb74b2000000000000000000000000000 };
2002 #elif GMP_NUMB_BITS == 256
2003 const mp_limb_t mpfr_l2b_53_0__tab[] = { 0xb74b200000000000000000000000000000000000000000000000000000000000 };
2004 #endif
2005
2006 #if 0
2007 #elif GMP_NUMB_BITS == 8
2008 const mp_limb_t mpfr_l2b_53_1__tab[] = { 0x60, 0xa3, 0xcb, 0x8c, 0x5f, 0xeb, 0xa9, 0xff, 0xc5, 0xb2 };
2009 #elif GMP_NUMB_BITS == 16
2010 const mp_limb_t mpfr_l2b_53_1__tab[] = { 0xa360, 0x8ccb, 0xeb5f, 0xffa9, 0xb2c5 };
2011 #elif GMP_NUMB_BITS == 32
2012 const mp_limb_t mpfr_l2b_53_1__tab[] = { 0xa3600000, 0xeb5f8ccb, 0xb2c5ffa9 };
2013 #elif GMP_NUMB_BITS == 64
2014 const mp_limb_t mpfr_l2b_53_1__tab[] = { UINT64_C(0xa360000000000000), UINT64_C(0xb2c5ffa9eb5f8ccb) };
2015 #elif GMP_NUMB_BITS == 96
2016 const mp_limb_t mpfr_l2b_53_1__tab[] = { 0xb2c5ffa9eb5f8ccba3600000 };
2017 #elif GMP_NUMB_BITS == 128
2018 const mp_limb_t mpfr_l2b_53_1__tab[] = { 0xb2c5ffa9eb5f8ccba360000000000000 };
2019 #elif GMP_NUMB_BITS == 256
2020 const mp_limb_t mpfr_l2b_53_1__tab[] = { 0xb2c5ffa9eb5f8ccba36000000000000000000000000000000000000000000000 };
2021 #endif
2022
2023 #if 0
2024 #elif GMP_NUMB_BITS == 8
2025 const mp_limb_t mpfr_l2b_54_0__tab[] = { 0x0a, 0x28, 0xb8 };
2026 #elif GMP_NUMB_BITS == 16
2027 const mp_limb_t mpfr_l2b_54_0__tab[] = { 0x0a00, 0xb828 };
2028 #elif GMP_NUMB_BITS == 32
2029 const mp_limb_t mpfr_l2b_54_0__tab[] = { 0xb8280a00 };
2030 #elif GMP_NUMB_BITS == 64
2031 const mp_limb_t mpfr_l2b_54_0__tab[] = { UINT64_C(0xb8280a0000000000) };
2032 #elif GMP_NUMB_BITS == 96
2033 const mp_limb_t mpfr_l2b_54_0__tab[] = { 0xb8280a000000000000000000 };
2034 #elif GMP_NUMB_BITS == 128
2035 const mp_limb_t mpfr_l2b_54_0__tab[] = { 0xb8280a00000000000000000000000000 };
2036 #elif GMP_NUMB_BITS == 256
2037 const mp_limb_t mpfr_l2b_54_0__tab[] = { 0xb8280a0000000000000000000000000000000000000000000000000000000000 };
2038 #endif
2039
2040 #if 0
2041 #elif GMP_NUMB_BITS == 8
2042 const mp_limb_t mpfr_l2b_54_1__tab[] = { 0x68, 0xf3, 0x40, 0xe9, 0x86, 0x3e, 0xc3, 0x8a, 0xef, 0xb1 };
2043 #elif GMP_NUMB_BITS == 16
2044 const mp_limb_t mpfr_l2b_54_1__tab[] = { 0xf368, 0xe940, 0x3e86, 0x8ac3, 0xb1ef };
2045 #elif GMP_NUMB_BITS == 32
2046 const mp_limb_t mpfr_l2b_54_1__tab[] = { 0xf3680000, 0x3e86e940, 0xb1ef8ac3 };
2047 #elif GMP_NUMB_BITS == 64
2048 const mp_limb_t mpfr_l2b_54_1__tab[] = { UINT64_C(0xf368000000000000), UINT64_C(0xb1ef8ac33e86e940) };
2049 #elif GMP_NUMB_BITS == 96
2050 const mp_limb_t mpfr_l2b_54_1__tab[] = { 0xb1ef8ac33e86e940f3680000 };
2051 #elif GMP_NUMB_BITS == 128
2052 const mp_limb_t mpfr_l2b_54_1__tab[] = { 0xb1ef8ac33e86e940f368000000000000 };
2053 #elif GMP_NUMB_BITS == 256
2054 const mp_limb_t mpfr_l2b_54_1__tab[] = { 0xb1ef8ac33e86e940f36800000000000000000000000000000000000000000000 };
2055 #endif
2056
2057 #if 0
2058 #elif GMP_NUMB_BITS == 8
2059 const mp_limb_t mpfr_l2b_55_0__tab[] = { 0xe8, 0x00, 0xb9 };
2060 #elif GMP_NUMB_BITS == 16
2061 const mp_limb_t mpfr_l2b_55_0__tab[] = { 0xe800, 0xb900 };
2062 #elif GMP_NUMB_BITS == 32
2063 const mp_limb_t mpfr_l2b_55_0__tab[] = { 0xb900e800 };
2064 #elif GMP_NUMB_BITS == 64
2065 const mp_limb_t mpfr_l2b_55_0__tab[] = { UINT64_C(0xb900e80000000000) };
2066 #elif GMP_NUMB_BITS == 96
2067 const mp_limb_t mpfr_l2b_55_0__tab[] = { 0xb900e8000000000000000000 };
2068 #elif GMP_NUMB_BITS == 128
2069 const mp_limb_t mpfr_l2b_55_0__tab[] = { 0xb900e800000000000000000000000000 };
2070 #elif GMP_NUMB_BITS == 256
2071 const mp_limb_t mpfr_l2b_55_0__tab[] = { 0xb900e80000000000000000000000000000000000000000000000000000000000 };
2072 #endif
2073
2074 #if 0
2075 #elif GMP_NUMB_BITS == 8
2076 const mp_limb_t mpfr_l2b_55_1__tab[] = { 0x40, 0x7a, 0x8e, 0xd1, 0xb5, 0xa4, 0x6e, 0xf7, 0x1e, 0xb1 };
2077 #elif GMP_NUMB_BITS == 16
2078 const mp_limb_t mpfr_l2b_55_1__tab[] = { 0x7a40, 0xd18e, 0xa4b5, 0xf76e, 0xb11e };
2079 #elif GMP_NUMB_BITS == 32
2080 const mp_limb_t mpfr_l2b_55_1__tab[] = { 0x7a400000, 0xa4b5d18e, 0xb11ef76e };
2081 #elif GMP_NUMB_BITS == 64
2082 const mp_limb_t mpfr_l2b_55_1__tab[] = { UINT64_C(0x7a40000000000000), UINT64_C(0xb11ef76ea4b5d18e) };
2083 #elif GMP_NUMB_BITS == 96
2084 const mp_limb_t mpfr_l2b_55_1__tab[] = { 0xb11ef76ea4b5d18e7a400000 };
2085 #elif GMP_NUMB_BITS == 128
2086 const mp_limb_t mpfr_l2b_55_1__tab[] = { 0xb11ef76ea4b5d18e7a40000000000000 };
2087 #elif GMP_NUMB_BITS == 256
2088 const mp_limb_t mpfr_l2b_55_1__tab[] = { 0xb11ef76ea4b5d18e7a4000000000000000000000000000000000000000000000 };
2089 #endif
2090
2091 #if 0
2092 #elif GMP_NUMB_BITS == 8
2093 const mp_limb_t mpfr_l2b_56_0__tab[] = { 0xda, 0xd5, 0xb9 };
2094 #elif GMP_NUMB_BITS == 16
2095 const mp_limb_t mpfr_l2b_56_0__tab[] = { 0xda00, 0xb9d5 };
2096 #elif GMP_NUMB_BITS == 32
2097 const mp_limb_t mpfr_l2b_56_0__tab[] = { 0xb9d5da00 };
2098 #elif GMP_NUMB_BITS == 64
2099 const mp_limb_t mpfr_l2b_56_0__tab[] = { UINT64_C(0xb9d5da0000000000) };
2100 #elif GMP_NUMB_BITS == 96
2101 const mp_limb_t mpfr_l2b_56_0__tab[] = { 0xb9d5da000000000000000000 };
2102 #elif GMP_NUMB_BITS == 128
2103 const mp_limb_t mpfr_l2b_56_0__tab[] = { 0xb9d5da00000000000000000000000000 };
2104 #elif GMP_NUMB_BITS == 256
2105 const mp_limb_t mpfr_l2b_56_0__tab[] = { 0xb9d5da0000000000000000000000000000000000000000000000000000000000 };
2106 #endif
2107
2108 #if 0
2109 #elif GMP_NUMB_BITS == 8
2110 const mp_limb_t mpfr_l2b_56_1__tab[] = { 0x18, 0xe8, 0x7b, 0x4c, 0x2c, 0xaa, 0xf2, 0xff, 0x53, 0xb0 };
2111 #elif GMP_NUMB_BITS == 16
2112 const mp_limb_t mpfr_l2b_56_1__tab[] = { 0xe818, 0x4c7b, 0xaa2c, 0xfff2, 0xb053 };
2113 #elif GMP_NUMB_BITS == 32
2114 const mp_limb_t mpfr_l2b_56_1__tab[] = { 0xe8180000, 0xaa2c4c7b, 0xb053fff2 };
2115 #elif GMP_NUMB_BITS == 64
2116 const mp_limb_t mpfr_l2b_56_1__tab[] = { UINT64_C(0xe818000000000000), UINT64_C(0xb053fff2aa2c4c7b) };
2117 #elif GMP_NUMB_BITS == 96
2118 const mp_limb_t mpfr_l2b_56_1__tab[] = { 0xb053fff2aa2c4c7be8180000 };
2119 #elif GMP_NUMB_BITS == 128
2120 const mp_limb_t mpfr_l2b_56_1__tab[] = { 0xb053fff2aa2c4c7be818000000000000 };
2121 #elif GMP_NUMB_BITS == 256
2122 const mp_limb_t mpfr_l2b_56_1__tab[] = { 0xb053fff2aa2c4c7be81800000000000000000000000000000000000000000000 };
2123 #endif
2124
2125 #if 0
2126 #elif GMP_NUMB_BITS == 8
2127 const mp_limb_t mpfr_l2b_57_0__tab[] = { 0x0a, 0xa7, 0xba };
2128 #elif GMP_NUMB_BITS == 16
2129 const mp_limb_t mpfr_l2b_57_0__tab[] = { 0x0a00, 0xbaa7 };
2130 #elif GMP_NUMB_BITS == 32
2131 const mp_limb_t mpfr_l2b_57_0__tab[] = { 0xbaa70a00 };
2132 #elif GMP_NUMB_BITS == 64
2133 const mp_limb_t mpfr_l2b_57_0__tab[] = { UINT64_C(0xbaa70a0000000000) };
2134 #elif GMP_NUMB_BITS == 96
2135 const mp_limb_t mpfr_l2b_57_0__tab[] = { 0xbaa70a000000000000000000 };
2136 #elif GMP_NUMB_BITS == 128
2137 const mp_limb_t mpfr_l2b_57_0__tab[] = { 0xbaa70a00000000000000000000000000 };
2138 #elif GMP_NUMB_BITS == 256
2139 const mp_limb_t mpfr_l2b_57_0__tab[] = { 0xbaa70a0000000000000000000000000000000000000000000000000000000000 };
2140 #endif
2141
2142 #if 0
2143 #elif GMP_NUMB_BITS == 8
2144 const mp_limb_t mpfr_l2b_57_1__tab[] = { 0xb0, 0xef, 0x4f, 0x81, 0x2f, 0x8e, 0x0e, 0x63, 0x8e, 0xaf };
2145 #elif GMP_NUMB_BITS == 16
2146 const mp_limb_t mpfr_l2b_57_1__tab[] = { 0xefb0, 0x814f, 0x8e2f, 0x630e, 0xaf8e };
2147 #elif GMP_NUMB_BITS == 32
2148 const mp_limb_t mpfr_l2b_57_1__tab[] = { 0xefb00000, 0x8e2f814f, 0xaf8e630e };
2149 #elif GMP_NUMB_BITS == 64
2150 const mp_limb_t mpfr_l2b_57_1__tab[] = { UINT64_C(0xefb0000000000000), UINT64_C(0xaf8e630e8e2f814f) };
2151 #elif GMP_NUMB_BITS == 96
2152 const mp_limb_t mpfr_l2b_57_1__tab[] = { 0xaf8e630e8e2f814fefb00000 };
2153 #elif GMP_NUMB_BITS == 128
2154 const mp_limb_t mpfr_l2b_57_1__tab[] = { 0xaf8e630e8e2f814fefb0000000000000 };
2155 #elif GMP_NUMB_BITS == 256
2156 const mp_limb_t mpfr_l2b_57_1__tab[] = { 0xaf8e630e8e2f814fefb000000000000000000000000000000000000000000000 };
2157 #endif
2158
2159 #if 0
2160 #elif GMP_NUMB_BITS == 8
2161 const mp_limb_t mpfr_l2b_58_0__tab[] = { 0x96, 0x74, 0xbb };
2162 #elif GMP_NUMB_BITS == 16
2163 const mp_limb_t mpfr_l2b_58_0__tab[] = { 0x9600, 0xbb74 };
2164 #elif GMP_NUMB_BITS == 32
2165 const mp_limb_t mpfr_l2b_58_0__tab[] = { 0xbb749600 };
2166 #elif GMP_NUMB_BITS == 64
2167 const mp_limb_t mpfr_l2b_58_0__tab[] = { UINT64_C(0xbb74960000000000) };
2168 #elif GMP_NUMB_BITS == 96
2169 const mp_limb_t mpfr_l2b_58_0__tab[] = { 0xbb7496000000000000000000 };
2170 #elif GMP_NUMB_BITS == 128
2171 const mp_limb_t mpfr_l2b_58_0__tab[] = { 0xbb749600000000000000000000000000 };
2172 #elif GMP_NUMB_BITS == 256
2173 const mp_limb_t mpfr_l2b_58_0__tab[] = { 0xbb74960000000000000000000000000000000000000000000000000000000000 };
2174 #endif
2175
2176 #if 0
2177 #elif GMP_NUMB_BITS == 8
2178 const mp_limb_t mpfr_l2b_58_1__tab[] = { 0x18, 0x5d, 0xa1, 0x41, 0x14, 0x61, 0x9d, 0xe3, 0xcd, 0xae };
2179 #elif GMP_NUMB_BITS == 16
2180 const mp_limb_t mpfr_l2b_58_1__tab[] = { 0x5d18, 0x41a1, 0x6114, 0xe39d, 0xaecd };
2181 #elif GMP_NUMB_BITS == 32
2182 const mp_limb_t mpfr_l2b_58_1__tab[] = { 0x5d180000, 0x611441a1, 0xaecde39d };
2183 #elif GMP_NUMB_BITS == 64
2184 const mp_limb_t mpfr_l2b_58_1__tab[] = { UINT64_C(0x5d18000000000000), UINT64_C(0xaecde39d611441a1) };
2185 #elif GMP_NUMB_BITS == 96
2186 const mp_limb_t mpfr_l2b_58_1__tab[] = { 0xaecde39d611441a15d180000 };
2187 #elif GMP_NUMB_BITS == 128
2188 const mp_limb_t mpfr_l2b_58_1__tab[] = { 0xaecde39d611441a15d18000000000000 };
2189 #elif GMP_NUMB_BITS == 256
2190 const mp_limb_t mpfr_l2b_58_1__tab[] = { 0xaecde39d611441a15d1800000000000000000000000000000000000000000000 };
2191 #endif
2192
2193 #if 0
2194 #elif GMP_NUMB_BITS == 8
2195 const mp_limb_t mpfr_l2b_59_0__tab[] = { 0x9e, 0x3e, 0xbc };
2196 #elif GMP_NUMB_BITS == 16
2197 const mp_limb_t mpfr_l2b_59_0__tab[] = { 0x9e00, 0xbc3e };
2198 #elif GMP_NUMB_BITS == 32
2199 const mp_limb_t mpfr_l2b_59_0__tab[] = { 0xbc3e9e00 };
2200 #elif GMP_NUMB_BITS == 64
2201 const mp_limb_t mpfr_l2b_59_0__tab[] = { UINT64_C(0xbc3e9e0000000000) };
2202 #elif GMP_NUMB_BITS == 96
2203 const mp_limb_t mpfr_l2b_59_0__tab[] = { 0xbc3e9e000000000000000000 };
2204 #elif GMP_NUMB_BITS == 128
2205 const mp_limb_t mpfr_l2b_59_0__tab[] = { 0xbc3e9e00000000000000000000000000 };
2206 #elif GMP_NUMB_BITS == 256
2207 const mp_limb_t mpfr_l2b_59_0__tab[] = { 0xbc3e9e0000000000000000000000000000000000000000000000000000000000 };
2208 #endif
2209
2210 #if 0
2211 #elif GMP_NUMB_BITS == 8
2212 const mp_limb_t mpfr_l2b_59_1__tab[] = { 0x00, 0xd0, 0xdf, 0x97, 0x97, 0x2f, 0x42, 0x48, 0x12, 0xae };
2213 #elif GMP_NUMB_BITS == 16
2214 const mp_limb_t mpfr_l2b_59_1__tab[] = { 0xd000, 0x97df, 0x2f97, 0x4842, 0xae12 };
2215 #elif GMP_NUMB_BITS == 32
2216 const mp_limb_t mpfr_l2b_59_1__tab[] = { 0xd0000000, 0x2f9797df, 0xae124842 };
2217 #elif GMP_NUMB_BITS == 64
2218 const mp_limb_t mpfr_l2b_59_1__tab[] = { UINT64_C(0xd000000000000000), UINT64_C(0xae1248422f9797df) };
2219 #elif GMP_NUMB_BITS == 96
2220 const mp_limb_t mpfr_l2b_59_1__tab[] = { 0xae1248422f9797dfd0000000 };
2221 #elif GMP_NUMB_BITS == 128
2222 const mp_limb_t mpfr_l2b_59_1__tab[] = { 0xae1248422f9797dfd000000000000000 };
2223 #elif GMP_NUMB_BITS == 256
2224 const mp_limb_t mpfr_l2b_59_1__tab[] = { 0xae1248422f9797dfd00000000000000000000000000000000000000000000000 };
2225 #endif
2226
2227 #if 0
2228 #elif GMP_NUMB_BITS == 8
2229 const mp_limb_t mpfr_l2b_60_0__tab[] = { 0x40, 0x05, 0xbd };
2230 #elif GMP_NUMB_BITS == 16
2231 const mp_limb_t mpfr_l2b_60_0__tab[] = { 0x4000, 0xbd05 };
2232 #elif GMP_NUMB_BITS == 32
2233 const mp_limb_t mpfr_l2b_60_0__tab[] = { 0xbd054000 };
2234 #elif GMP_NUMB_BITS == 64
2235 const mp_limb_t mpfr_l2b_60_0__tab[] = { UINT64_C(0xbd05400000000000) };
2236 #elif GMP_NUMB_BITS == 96
2237 const mp_limb_t mpfr_l2b_60_0__tab[] = { 0xbd0540000000000000000000 };
2238 #elif GMP_NUMB_BITS == 128
2239 const mp_limb_t mpfr_l2b_60_0__tab[] = { 0xbd054000000000000000000000000000 };
2240 #elif GMP_NUMB_BITS == 256
2241 const mp_limb_t mpfr_l2b_60_0__tab[] = { 0xbd05400000000000000000000000000000000000000000000000000000000000 };
2242 #endif
2243
2244 #if 0
2245 #elif GMP_NUMB_BITS == 8
2246 const mp_limb_t mpfr_l2b_60_1__tab[] = { 0x58, 0xfe, 0x6d, 0x20, 0x55, 0x35, 0x1c, 0x5b, 0x5b, 0xad };
2247 #elif GMP_NUMB_BITS == 16
2248 const mp_limb_t mpfr_l2b_60_1__tab[] = { 0xfe58, 0x206d, 0x3555, 0x5b1c, 0xad5b };
2249 #elif GMP_NUMB_BITS == 32
2250 const mp_limb_t mpfr_l2b_60_1__tab[] = { 0xfe580000, 0x3555206d, 0xad5b5b1c };
2251 #elif GMP_NUMB_BITS == 64
2252 const mp_limb_t mpfr_l2b_60_1__tab[] = { UINT64_C(0xfe58000000000000), UINT64_C(0xad5b5b1c3555206d) };
2253 #elif GMP_NUMB_BITS == 96
2254 const mp_limb_t mpfr_l2b_60_1__tab[] = { 0xad5b5b1c3555206dfe580000 };
2255 #elif GMP_NUMB_BITS == 128
2256 const mp_limb_t mpfr_l2b_60_1__tab[] = { 0xad5b5b1c3555206dfe58000000000000 };
2257 #elif GMP_NUMB_BITS == 256
2258 const mp_limb_t mpfr_l2b_60_1__tab[] = { 0xad5b5b1c3555206dfe5800000000000000000000000000000000000000000000 };
2259 #endif
2260
2261 #if 0
2262 #elif GMP_NUMB_BITS == 8
2263 const mp_limb_t mpfr_l2b_61_0__tab[] = { 0x9a, 0xc8, 0xbd };
2264 #elif GMP_NUMB_BITS == 16
2265 const mp_limb_t mpfr_l2b_61_0__tab[] = { 0x9a00, 0xbdc8 };
2266 #elif GMP_NUMB_BITS == 32
2267 const mp_limb_t mpfr_l2b_61_0__tab[] = { 0xbdc89a00 };
2268 #elif GMP_NUMB_BITS == 64
2269 const mp_limb_t mpfr_l2b_61_0__tab[] = { UINT64_C(0xbdc89a0000000000) };
2270 #elif GMP_NUMB_BITS == 96
2271 const mp_limb_t mpfr_l2b_61_0__tab[] = { 0xbdc89a000000000000000000 };
2272 #elif GMP_NUMB_BITS == 128
2273 const mp_limb_t mpfr_l2b_61_0__tab[] = { 0xbdc89a00000000000000000000000000 };
2274 #elif GMP_NUMB_BITS == 256
2275 const mp_limb_t mpfr_l2b_61_0__tab[] = { 0xbdc89a0000000000000000000000000000000000000000000000000000000000 };
2276 #endif
2277
2278 #if 0
2279 #elif GMP_NUMB_BITS == 8
2280 const mp_limb_t mpfr_l2b_61_1__tab[] = { 0xf8, 0x4d, 0x57, 0x77, 0xcb, 0x31, 0x82, 0xe9, 0xa8, 0xac };
2281 #elif GMP_NUMB_BITS == 16
2282 const mp_limb_t mpfr_l2b_61_1__tab[] = { 0x4df8, 0x7757, 0x31cb, 0xe982, 0xaca8 };
2283 #elif GMP_NUMB_BITS == 32
2284 const mp_limb_t mpfr_l2b_61_1__tab[] = { 0x4df80000, 0x31cb7757, 0xaca8e982 };
2285 #elif GMP_NUMB_BITS == 64
2286 const mp_limb_t mpfr_l2b_61_1__tab[] = { UINT64_C(0x4df8000000000000), UINT64_C(0xaca8e98231cb7757) };
2287 #elif GMP_NUMB_BITS == 96
2288 const mp_limb_t mpfr_l2b_61_1__tab[] = { 0xaca8e98231cb77574df80000 };
2289 #elif GMP_NUMB_BITS == 128
2290 const mp_limb_t mpfr_l2b_61_1__tab[] = { 0xaca8e98231cb77574df8000000000000 };
2291 #elif GMP_NUMB_BITS == 256
2292 const mp_limb_t mpfr_l2b_61_1__tab[] = { 0xaca8e98231cb77574df800000000000000000000000000000000000000000000 };
2293 #endif
2294
2295 #if 0
2296 #elif GMP_NUMB_BITS == 8
2297 const mp_limb_t mpfr_l2b_62_0__tab[] = { 0xc8, 0x88, 0xbe };
2298 #elif GMP_NUMB_BITS == 16
2299 const mp_limb_t mpfr_l2b_62_0__tab[] = { 0xc800, 0xbe88 };
2300 #elif GMP_NUMB_BITS == 32
2301 const mp_limb_t mpfr_l2b_62_0__tab[] = { 0xbe88c800 };
2302 #elif GMP_NUMB_BITS == 64
2303 const mp_limb_t mpfr_l2b_62_0__tab[] = { UINT64_C(0xbe88c80000000000) };
2304 #elif GMP_NUMB_BITS == 96
2305 const mp_limb_t mpfr_l2b_62_0__tab[] = { 0xbe88c8000000000000000000 };
2306 #elif GMP_NUMB_BITS == 128
2307 const mp_limb_t mpfr_l2b_62_0__tab[] = { 0xbe88c800000000000000000000000000 };
2308 #elif GMP_NUMB_BITS == 256
2309 const mp_limb_t mpfr_l2b_62_0__tab[] = { 0xbe88c80000000000000000000000000000000000000000000000000000000000 };
2310 #endif
2311
2312 #if 0
2313 #elif GMP_NUMB_BITS == 8
2314 const mp_limb_t mpfr_l2b_62_1__tab[] = { 0xf8, 0x74, 0x05, 0xf9, 0x31, 0x18, 0xc4, 0xc3, 0xfa, 0xab };
2315 #elif GMP_NUMB_BITS == 16
2316 const mp_limb_t mpfr_l2b_62_1__tab[] = { 0x74f8, 0xf905, 0x1831, 0xc3c4, 0xabfa };
2317 #elif GMP_NUMB_BITS == 32
2318 const mp_limb_t mpfr_l2b_62_1__tab[] = { 0x74f80000, 0x1831f905, 0xabfac3c4 };
2319 #elif GMP_NUMB_BITS == 64
2320 const mp_limb_t mpfr_l2b_62_1__tab[] = { UINT64_C(0x74f8000000000000), UINT64_C(0xabfac3c41831f905) };
2321 #elif GMP_NUMB_BITS == 96
2322 const mp_limb_t mpfr_l2b_62_1__tab[] = { 0xabfac3c41831f90574f80000 };
2323 #elif GMP_NUMB_BITS == 128
2324 const mp_limb_t mpfr_l2b_62_1__tab[] = { 0xabfac3c41831f90574f8000000000000 };
2325 #elif GMP_NUMB_BITS == 256
2326 const mp_limb_t mpfr_l2b_62_1__tab[] = { 0xabfac3c41831f90574f800000000000000000000000000000000000000000000 };
2327 #endif
2328
2329 const __mpfr_struct __gmpfr_l2b[BASE_MAX-1][2] = {
2330 { { 23, 1, 1, (mp_limb_t *) mpfr_l2b_2_0__tab },
2331 { 77, 1, 1, (mp_limb_t *) mpfr_l2b_2_1__tab } },
2332 { { 23, 1, 1, (mp_limb_t *) mpfr_l2b_3_0__tab },
2333 { 77, 1, 0, (mp_limb_t *) mpfr_l2b_3_1__tab } },
2334 { { 23, 1, 2, (mp_limb_t *) mpfr_l2b_4_0__tab },
2335 { 77, 1, 0, (mp_limb_t *) mpfr_l2b_4_1__tab } },
2336 { { 23, 1, 2, (mp_limb_t *) mpfr_l2b_5_0__tab },
2337 { 77, 1, -1, (mp_limb_t *) mpfr_l2b_5_1__tab } },
2338 { { 23, 1, 2, (mp_limb_t *) mpfr_l2b_6_0__tab },
2339 { 77, 1, -1, (mp_limb_t *) mpfr_l2b_6_1__tab } },
2340 { { 23, 1, 2, (mp_limb_t *) mpfr_l2b_7_0__tab },
2341 { 77, 1, -1, (mp_limb_t *) mpfr_l2b_7_1__tab } },
2342 { { 23, 1, 2, (mp_limb_t *) mpfr_l2b_8_0__tab },
2343 { 77, 1, -1, (mp_limb_t *) mpfr_l2b_8_1__tab } },
2344 { { 23, 1, 2, (mp_limb_t *) mpfr_l2b_9_0__tab },
2345 { 77, 1, -1, (mp_limb_t *) mpfr_l2b_9_1__tab } },
2346 { { 23, 1, 2, (mp_limb_t *) mpfr_l2b_10_0__tab },
2347 { 77, 1, -1, (mp_limb_t *) mpfr_l2b_10_1__tab } },
2348 { { 23, 1, 2, (mp_limb_t *) mpfr_l2b_11_0__tab },
2349 { 77, 1, -1, (mp_limb_t *) mpfr_l2b_11_1__tab } },
2350 { { 23, 1, 2, (mp_limb_t *) mpfr_l2b_12_0__tab },
2351 { 77, 1, -1, (mp_limb_t *) mpfr_l2b_12_1__tab } },
2352 { { 23, 1, 2, (mp_limb_t *) mpfr_l2b_13_0__tab },
2353 { 77, 1, -1, (mp_limb_t *) mpfr_l2b_13_1__tab } },
2354 { { 23, 1, 2, (mp_limb_t *) mpfr_l2b_14_0__tab },
2355 { 77, 1, -1, (mp_limb_t *) mpfr_l2b_14_1__tab } },
2356 { { 23, 1, 2, (mp_limb_t *) mpfr_l2b_15_0__tab },
2357 { 77, 1, -1, (mp_limb_t *) mpfr_l2b_15_1__tab } },
2358 { { 23, 1, 3, (mp_limb_t *) mpfr_l2b_16_0__tab },
2359 { 77, 1, -1, (mp_limb_t *) mpfr_l2b_16_1__tab } },
2360 { { 23, 1, 3, (mp_limb_t *) mpfr_l2b_17_0__tab },
2361 { 77, 1, -2, (mp_limb_t *) mpfr_l2b_17_1__tab } },
2362 { { 23, 1, 3, (mp_limb_t *) mpfr_l2b_18_0__tab },
2363 { 77, 1, -2, (mp_limb_t *) mpfr_l2b_18_1__tab } },
2364 { { 23, 1, 3, (mp_limb_t *) mpfr_l2b_19_0__tab },
2365 { 77, 1, -2, (mp_limb_t *) mpfr_l2b_19_1__tab } },
2366 { { 23, 1, 3, (mp_limb_t *) mpfr_l2b_20_0__tab },
2367 { 77, 1, -2, (mp_limb_t *) mpfr_l2b_20_1__tab } },
2368 { { 23, 1, 3, (mp_limb_t *) mpfr_l2b_21_0__tab },
2369 { 77, 1, -2, (mp_limb_t *) mpfr_l2b_21_1__tab } },
2370 { { 23, 1, 3, (mp_limb_t *) mpfr_l2b_22_0__tab },
2371 { 77, 1, -2, (mp_limb_t *) mpfr_l2b_22_1__tab } },
2372 { { 23, 1, 3, (mp_limb_t *) mpfr_l2b_23_0__tab },
2373 { 77, 1, -2, (mp_limb_t *) mpfr_l2b_23_1__tab } },
2374 { { 23, 1, 3, (mp_limb_t *) mpfr_l2b_24_0__tab },
2375 { 77, 1, -2, (mp_limb_t *) mpfr_l2b_24_1__tab } },
2376 { { 23, 1, 3, (mp_limb_t *) mpfr_l2b_25_0__tab },
2377 { 77, 1, -2, (mp_limb_t *) mpfr_l2b_25_1__tab } },
2378 { { 23, 1, 3, (mp_limb_t *) mpfr_l2b_26_0__tab },
2379 { 77, 1, -2, (mp_limb_t *) mpfr_l2b_26_1__tab } },
2380 { { 23, 1, 3, (mp_limb_t *) mpfr_l2b_27_0__tab },
2381 { 77, 1, -2, (mp_limb_t *) mpfr_l2b_27_1__tab } },
2382 { { 23, 1, 3, (mp_limb_t *) mpfr_l2b_28_0__tab },
2383 { 77, 1, -2, (mp_limb_t *) mpfr_l2b_28_1__tab } },
2384 { { 23, 1, 3, (mp_limb_t *) mpfr_l2b_29_0__tab },
2385 { 77, 1, -2, (mp_limb_t *) mpfr_l2b_29_1__tab } },
2386 { { 23, 1, 3, (mp_limb_t *) mpfr_l2b_30_0__tab },
2387 { 77, 1, -2, (mp_limb_t *) mpfr_l2b_30_1__tab } },
2388 { { 23, 1, 3, (mp_limb_t *) mpfr_l2b_31_0__tab },
2389 { 77, 1, -2, (mp_limb_t *) mpfr_l2b_31_1__tab } },
2390 { { 23, 1, 3, (mp_limb_t *) mpfr_l2b_32_0__tab },
2391 { 77, 1, -2, (mp_limb_t *) mpfr_l2b_32_1__tab } },
2392 { { 23, 1, 3, (mp_limb_t *) mpfr_l2b_33_0__tab },
2393 { 77, 1, -2, (mp_limb_t *) mpfr_l2b_33_1__tab } },
2394 { { 23, 1, 3, (mp_limb_t *) mpfr_l2b_34_0__tab },
2395 { 77, 1, -2, (mp_limb_t *) mpfr_l2b_34_1__tab } },
2396 { { 23, 1, 3, (mp_limb_t *) mpfr_l2b_35_0__tab },
2397 { 77, 1, -2, (mp_limb_t *) mpfr_l2b_35_1__tab } },
2398 { { 23, 1, 3, (mp_limb_t *) mpfr_l2b_36_0__tab },
2399 { 77, 1, -2, (mp_limb_t *) mpfr_l2b_36_1__tab } },
2400 { { 23, 1, 3, (mp_limb_t *) mpfr_l2b_37_0__tab },
2401 { 77, 1, -2, (mp_limb_t *) mpfr_l2b_37_1__tab } },
2402 { { 23, 1, 3, (mp_limb_t *) mpfr_l2b_38_0__tab },
2403 { 77, 1, -2, (mp_limb_t *) mpfr_l2b_38_1__tab } },
2404 { { 23, 1, 3, (mp_limb_t *) mpfr_l2b_39_0__tab },
2405 { 77, 1, -2, (mp_limb_t *) mpfr_l2b_39_1__tab } },
2406 { { 23, 1, 3, (mp_limb_t *) mpfr_l2b_40_0__tab },
2407 { 77, 1, -2, (mp_limb_t *) mpfr_l2b_40_1__tab } },
2408 { { 23, 1, 3, (mp_limb_t *) mpfr_l2b_41_0__tab },
2409 { 77, 1, -2, (mp_limb_t *) mpfr_l2b_41_1__tab } },
2410 { { 23, 1, 3, (mp_limb_t *) mpfr_l2b_42_0__tab },
2411 { 77, 1, -2, (mp_limb_t *) mpfr_l2b_42_1__tab } },
2412 { { 23, 1, 3, (mp_limb_t *) mpfr_l2b_43_0__tab },
2413 { 77, 1, -2, (mp_limb_t *) mpfr_l2b_43_1__tab } },
2414 { { 23, 1, 3, (mp_limb_t *) mpfr_l2b_44_0__tab },
2415 { 77, 1, -2, (mp_limb_t *) mpfr_l2b_44_1__tab } },
2416 { { 23, 1, 3, (mp_limb_t *) mpfr_l2b_45_0__tab },
2417 { 77, 1, -2, (mp_limb_t *) mpfr_l2b_45_1__tab } },
2418 { { 23, 1, 3, (mp_limb_t *) mpfr_l2b_46_0__tab },
2419 { 77, 1, -2, (mp_limb_t *) mpfr_l2b_46_1__tab } },
2420 { { 23, 1, 3, (mp_limb_t *) mpfr_l2b_47_0__tab },
2421 { 77, 1, -2, (mp_limb_t *) mpfr_l2b_47_1__tab } },
2422 { { 23, 1, 3, (mp_limb_t *) mpfr_l2b_48_0__tab },
2423 { 77, 1, -2, (mp_limb_t *) mpfr_l2b_48_1__tab } },
2424 { { 23, 1, 3, (mp_limb_t *) mpfr_l2b_49_0__tab },
2425 { 77, 1, -2, (mp_limb_t *) mpfr_l2b_49_1__tab } },
2426 { { 23, 1, 3, (mp_limb_t *) mpfr_l2b_50_0__tab },
2427 { 77, 1, -2, (mp_limb_t *) mpfr_l2b_50_1__tab } },
2428 { { 23, 1, 3, (mp_limb_t *) mpfr_l2b_51_0__tab },
2429 { 77, 1, -2, (mp_limb_t *) mpfr_l2b_51_1__tab } },
2430 { { 23, 1, 3, (mp_limb_t *) mpfr_l2b_52_0__tab },
2431 { 77, 1, -2, (mp_limb_t *) mpfr_l2b_52_1__tab } },
2432 { { 23, 1, 3, (mp_limb_t *) mpfr_l2b_53_0__tab },
2433 { 77, 1, -2, (mp_limb_t *) mpfr_l2b_53_1__tab } },
2434 { { 23, 1, 3, (mp_limb_t *) mpfr_l2b_54_0__tab },
2435 { 77, 1, -2, (mp_limb_t *) mpfr_l2b_54_1__tab } },
2436 { { 23, 1, 3, (mp_limb_t *) mpfr_l2b_55_0__tab },
2437 { 77, 1, -2, (mp_limb_t *) mpfr_l2b_55_1__tab } },
2438 { { 23, 1, 3, (mp_limb_t *) mpfr_l2b_56_0__tab },
2439 { 77, 1, -2, (mp_limb_t *) mpfr_l2b_56_1__tab } },
2440 { { 23, 1, 3, (mp_limb_t *) mpfr_l2b_57_0__tab },
2441 { 77, 1, -2, (mp_limb_t *) mpfr_l2b_57_1__tab } },
2442 { { 23, 1, 3, (mp_limb_t *) mpfr_l2b_58_0__tab },
2443 { 77, 1, -2, (mp_limb_t *) mpfr_l2b_58_1__tab } },
2444 { { 23, 1, 3, (mp_limb_t *) mpfr_l2b_59_0__tab },
2445 { 77, 1, -2, (mp_limb_t *) mpfr_l2b_59_1__tab } },
2446 { { 23, 1, 3, (mp_limb_t *) mpfr_l2b_60_0__tab },
2447 { 77, 1, -2, (mp_limb_t *) mpfr_l2b_60_1__tab } },
2448 { { 23, 1, 3, (mp_limb_t *) mpfr_l2b_61_0__tab },
2449 { 77, 1, -2, (mp_limb_t *) mpfr_l2b_61_1__tab } },
2450 { { 23, 1, 3, (mp_limb_t *) mpfr_l2b_62_0__tab },
2451 { 77, 1, -2, (mp_limb_t *) mpfr_l2b_62_1__tab } } };
2452
2453 /***************************************************************************/
2454
2455 /* returns ceil(e * log2(b)^((-1)^i)), or ... + 1.
2456 For i=0, uses a 23-bit upper approximation to log(beta)/log(2).
2457 For i=1, uses a 77-bit upper approximation to log(2)/log(beta).
2458 Note: this function should be called only in the extended exponent range.
2459 */
2460 mpfr_exp_t
mpfr_ceil_mul(mpfr_exp_t e,int beta,int i)2461 mpfr_ceil_mul (mpfr_exp_t e, int beta, int i)
2462 {
2463 mpfr_srcptr p;
2464 mpfr_t t;
2465 mpfr_exp_t r;
2466 mp_limb_t tmpmant[MPFR_EXP_LIMB_SIZE];
2467
2468 p = &__gmpfr_l2b[beta-2][i];
2469 MPFR_TMP_INIT1(tmpmant, t, sizeof (mpfr_exp_t) * CHAR_BIT - 1);
2470 mpfr_set_exp_t (t, e, MPFR_RNDU);
2471 mpfr_mul (t, t, p, MPFR_RNDU);
2472 r = mpfr_get_exp_t (t, MPFR_RNDU);
2473 return r;
2474 }
2475
2476 /* take at least 1 + ceil(p*log(2)/log(b)) digits, where p is the
2477 number of bits of the mantissa, to ensure back conversion from
2478 the output gives the same floating-point.
2479
2480 Warning: if b = 2^k, this may be too large. The worst case is when
2481 the first base-b digit contains only one bit, so we take
2482 1 + ceil((p-1)/k) instead.
2483 */
2484 size_t
mpfr_get_str_ndigits(int b,mpfr_prec_t p)2485 mpfr_get_str_ndigits (int b, mpfr_prec_t p)
2486 {
2487 size_t ret;
2488 MPFR_SAVE_EXPO_DECL (expo);
2489
2490 MPFR_ASSERTN (2 <= b && b <= 62);
2491
2492 /* deal first with power of two bases, since even for those, mpfr_ceil_mul
2493 might return a value too large by 1 */
2494 if (IS_POW2(b)) /* 1 + ceil((p-1)/k) = 2 + floor((p-2)/k) */
2495 {
2496 int k;
2497
2498 count_leading_zeros (k, (mp_limb_t) b);
2499 k = GMP_NUMB_BITS - k - 1; /* now b = 2^k */
2500 return 1 + (p + k - 2) / k;
2501 }
2502
2503 MPFR_SAVE_EXPO_MARK (expo);
2504
2505 /* the value returned by mpfr_ceil_mul is guaranteed to be
2506 1 + ceil(p*log(2)/log(b)) for p < 186564318007 (it returns one more
2507 for p=186564318007 and b=7 or 49) */
2508 MPFR_STAT_STATIC_ASSERT (MPFR_PREC_BITS >= 64 || MPFR_PREC_BITS <= 32);
2509 if (
2510 #if MPFR_PREC_BITS >= 64
2511 /* 64-bit numbers are supported by the C implementation, so that we can
2512 use the large constant below. */
2513 MPFR_LIKELY (p < 186564318007)
2514 #else
2515 /* Since MPFR_PREC_BITS <= 32, the above condition is always satisfied,
2516 so that we do not need any test on p. */
2517 1
2518 #endif
2519 )
2520 ret = mpfr_ceil_mul (IS_POW2(b) ? p - 1 : p, b, 1);
2521 else
2522 {
2523 /* p is large and b is not a power of two. The code below works
2524 for any value of p and b, as long as b is not a power of two.
2525 Indeed, in such a case, p*log(2)/log(b) cannot be exactly an
2526 integer, and thus Ziv's loop will terminate. */
2527 mpfr_prec_t w = 77; /* mpfr_ceil_mul used a 77-bit upper approximation
2528 to log(2)/log(b) */
2529
2530 ret = 0;
2531 while (ret == 0)
2532 {
2533 mpfr_t d, u;
2534
2535 w = 2 * w;
2536 mpfr_init2 (d, w); /* lower approximation */
2537 mpfr_init2 (u, w); /* upper approximation */
2538 mpfr_set_ui (d, b, MPFR_RNDU);
2539 mpfr_set_ui (u, b, MPFR_RNDD);
2540 mpfr_log2 (d, d, MPFR_RNDU);
2541 mpfr_log2 (u, u, MPFR_RNDD);
2542 /* The code below requires that the precision p fit in
2543 an unsigned long, which we currently guarantee (see
2544 _MPFR_PREC_FORMAT). */
2545 MPFR_STAT_STATIC_ASSERT (MPFR_PREC_MAX <= ULONG_MAX);
2546 /* u <= log(b)/log(2) <= d (***) */
2547 mpfr_ui_div (d, p, d, MPFR_RNDD);
2548 mpfr_ui_div (u, p, u, MPFR_RNDU);
2549 /* d <= p*log(2)/log(b) <= u */
2550 mpfr_ceil (d, d);
2551 mpfr_ceil (u, u);
2552 if (mpfr_equal_p (d, u))
2553 {
2554 ret = mpfr_get_ui (d, MPFR_RNDU);
2555 MPFR_ASSERTD (ret != 0);
2556 }
2557 mpfr_clear (d);
2558 mpfr_clear (u);
2559 }
2560 }
2561
2562 MPFR_SAVE_EXPO_FREE (expo);
2563 return 1 + ret;
2564 }
2565
2566 /* prints the mantissa of x in the string s, and writes the corresponding
2567 exponent in e.
2568 x is rounded with direction rnd, m is the number of digits of the mantissa,
2569 |b| is the given base (2 <= b <= 62 or -36 <= b <= -2).
2570 This follows GMP's mpf_get_str specification.
2571
2572 Return value:
2573 if s=NULL, allocates a string to store the mantissa, with
2574 m characters, plus a final '\0', plus a possible minus sign
2575 (thus m+1 or m+2 characters).
2576
2577 Important: when you call this function with s=NULL, don't forget to free
2578 the memory space allocated, with mpfr_free_str.
2579 */
2580 char *
mpfr_get_str(char * s,mpfr_exp_t * e,int b,size_t m,mpfr_srcptr x,mpfr_rnd_t rnd)2581 mpfr_get_str (char *s, mpfr_exp_t *e, int b, size_t m, mpfr_srcptr x,
2582 mpfr_rnd_t rnd)
2583 {
2584 const char *num_to_text;
2585 int exact; /* exact result */
2586 mpfr_exp_t exp, g;
2587 mpfr_exp_t prec; /* precision of the computation */
2588 long err;
2589 mp_limb_t *a;
2590 mpfr_exp_t exp_a;
2591 mp_limb_t *result;
2592 mp_limb_t *xp;
2593 mp_limb_t *reste;
2594 size_t nx, nx1;
2595 size_t n, i;
2596 char *s0;
2597 int neg;
2598 int ret; /* return value of mpfr_get_str_aux */
2599 int b0 = b; /* initial base argument, might be negative */
2600 MPFR_ZIV_DECL (loop);
2601 MPFR_SAVE_EXPO_DECL (expo);
2602 MPFR_TMP_DECL (marker);
2603
2604 /* if exact = 1 then err is undefined */
2605 /* otherwise err is such that |x*b^(m-g)-a*2^exp_a| < 2^(err+exp_a) */
2606
2607 MPFR_LOG_FUNC
2608 (("b=%d m=%zu x[%Pd]=%.*Rg rnd=%d",
2609 b, m, mpfr_get_prec (x), mpfr_log_prec, x, rnd),
2610 ("flags=%lx", (unsigned long) __gmpfr_flags));
2611
2612 /* Is the base argument valid? Valid values are -36 to -2 and 2 to 62. */
2613 if (b < -36 || (-2 < b && b < 2) || 62 < b)
2614 return NULL;
2615
2616 num_to_text = (2 <= b && b <= 36) ? num_to_text36 : num_to_text62;
2617
2618 b = (b > 0) ? b : -b;
2619
2620 /* now b is positive */
2621
2622 /* map RNDF to RNDN, to avoid problems with specification of mpfr_can_round
2623 or mpfr_can_round_raw */
2624 if (rnd == MPFR_RNDF)
2625 rnd = MPFR_RNDN;
2626
2627 if (MPFR_UNLIKELY (MPFR_IS_NAN (x)))
2628 {
2629 if (s == NULL)
2630 s = (char *) mpfr_allocate_func (6);
2631 strcpy (s, "@NaN@");
2632 MPFR_LOG_MSG (("%s\n", s));
2633 __gmpfr_flags |= MPFR_FLAGS_NAN;
2634 return s;
2635 }
2636
2637 neg = MPFR_IS_NEG (x); /* 0 if positive, 1 if negative */
2638
2639 if (MPFR_UNLIKELY (MPFR_IS_INF (x)))
2640 {
2641 if (s == NULL)
2642 s = (char *) mpfr_allocate_func (neg + 6);
2643 strcpy (s, (neg) ? "-@Inf@" : "@Inf@");
2644 MPFR_LOG_MSG (("%s\n", s));
2645 return s;
2646 }
2647
2648 MPFR_SAVE_EXPO_MARK (expo); /* needed for mpfr_ceil_mul (at least) */
2649
2650 if (m == 0)
2651 m = mpfr_get_str_ndigits (b, MPFR_PREC(x));
2652
2653 MPFR_LOG_MSG (("m=%zu\n", m));
2654
2655 /* The code below works for m=1, both for power-of-two and non-power-of-two
2656 bases; this is important for the internal use of mpfr_get_str. */
2657
2658 /* x is a floating-point number */
2659
2660 if (s == NULL)
2661 s = (char *) mpfr_allocate_func (neg + m + 1);
2662 s0 = s;
2663 if (neg)
2664 *s++ = '-';
2665
2666 if (MPFR_IS_ZERO (x))
2667 {
2668 memset (s, '0', m);
2669 s[m] = '\0';
2670 *e = 0; /* a bit like frexp() in ISO C99 */
2671 MPFR_SAVE_EXPO_FREE (expo);
2672 return s0; /* strlen(s0) = neg + m */
2673 }
2674
2675 xp = MPFR_MANT (x);
2676
2677 if (IS_POW2 (b))
2678 {
2679 int pow2;
2680 mpfr_exp_t f, r;
2681 mp_limb_t *x1;
2682 mp_size_t nb;
2683 int inexp;
2684
2685 count_leading_zeros (pow2, (mp_limb_t) b);
2686 pow2 = GMP_NUMB_BITS - pow2 - 1; /* b = 2^pow2 */
2687
2688 /* set MPFR_EXP(x) = f*pow2 + r, 1 <= r <= pow2 */
2689 f = (MPFR_GET_EXP (x) - 1) / pow2;
2690 r = MPFR_GET_EXP (x) - f * pow2;
2691 if (r <= 0)
2692 {
2693 f --;
2694 r += pow2;
2695 }
2696
2697 /* the first digit will contain only r bits */
2698 prec = (m - 1) * pow2 + r; /* total number of bits */
2699 /* if m=1 then 1 <= prec <= pow2, and since prec=1 is now valid in MPFR,
2700 the power-of-two code also works for m=1 */
2701 n = MPFR_PREC2LIMBS (prec);
2702
2703 MPFR_TMP_MARK (marker);
2704 x1 = MPFR_TMP_LIMBS_ALLOC (n + 1);
2705 nb = n * GMP_NUMB_BITS - prec;
2706 /* round xp to the precision prec, and put it into x1
2707 put the carry into x1[n] */
2708 if ((x1[n] = mpfr_round_raw (x1, xp, MPFR_PREC(x),
2709 MPFR_IS_STRICTNEG(x),
2710 prec, rnd, &inexp)))
2711 {
2712 /* overflow when rounding x: x1 = 2^prec */
2713 if (r == pow2) /* prec = m * pow2,
2714 2^prec will need (m+1) digits in base 2^pow2 */
2715 {
2716 /* divide x1 by 2^pow2, and increase the exponent */
2717 mpn_rshift (x1, x1, n + 1, pow2);
2718 f ++;
2719 }
2720 else /* 2^prec needs still m digits, but x1 may need n+1 limbs */
2721 n ++;
2722 }
2723
2724 /* it remains to shift x1 by nb limbs to the right, since mpn_get_str
2725 expects a right-normalized number */
2726 if (nb != 0)
2727 {
2728 mpn_rshift (x1, x1, n, nb);
2729 /* the most significant word may be zero */
2730 if (x1[n - 1] == 0)
2731 n --;
2732 }
2733
2734 mpn_get_str ((unsigned char *) s, b, x1, n);
2735 for (i = 0; i < m; i++)
2736 s[i] = num_to_text[(int) s[i]];
2737 s[m] = 0;
2738
2739 /* the exponent of s is f + 1 */
2740 *e = f + 1;
2741
2742 MPFR_LOG_MSG (("e=%" MPFR_EXP_FSPEC "d\n", (mpfr_eexp_t) *e));
2743
2744 MPFR_TMP_FREE (marker);
2745 MPFR_SAVE_EXPO_FREE (expo);
2746 return s0;
2747 }
2748
2749 /* if x < 0, reduce to x > 0 */
2750 if (neg)
2751 rnd = MPFR_INVERT_RND (rnd);
2752
2753 g = mpfr_ceil_mul (MPFR_GET_EXP (x) - 1, b, 1);
2754 exact = 1;
2755 /* prec is the radix-2 precision necessary to get m digits in radix b */
2756 prec = mpfr_ceil_mul (m, b, 0) + 1;
2757 exp = ((mpfr_exp_t) m < g) ? g - (mpfr_exp_t) m : (mpfr_exp_t) m - g;
2758 prec += MPFR_INT_CEIL_LOG2 (prec); /* number of guard bits */
2759 if (exp != 0) /* add maximal exponentiation error */
2760 prec += 3 * (mpfr_exp_t) MPFR_INT_CEIL_LOG2 (exp);
2761
2762 MPFR_ZIV_INIT (loop, prec);
2763 for (;;)
2764 {
2765 MPFR_TMP_MARK (marker);
2766
2767 exact = 1;
2768
2769 /* number of limbs */
2770 n = MPFR_PREC2LIMBS (prec);
2771
2772 /* a will contain the approximation of the mantissa */
2773 a = MPFR_TMP_LIMBS_ALLOC (n);
2774
2775 nx = MPFR_LIMB_SIZE (x);
2776
2777 if ((mpfr_exp_t) m == g) /* final exponent is 0, no multiplication or
2778 division to perform */
2779 {
2780 if (nx > n)
2781 exact = mpn_scan1 (xp, 0) >= (nx - n) * GMP_NUMB_BITS;
2782 err = !exact;
2783 MPN_COPY2 (a, n, xp, nx);
2784 exp_a = MPFR_GET_EXP (x) - n * GMP_NUMB_BITS;
2785 }
2786 else if ((mpfr_exp_t) m > g) /* we have to multiply x by b^exp */
2787 {
2788 mp_limb_t *x1;
2789
2790 /* a2*2^exp_a = b^e */
2791 err = mpfr_mpn_exp (a, &exp_a, b, exp, n);
2792 /* here, the error on a is at most 2^err ulps */
2793 exact = (err == -1);
2794
2795 /* x = x1*2^(n*GMP_NUMB_BITS) */
2796 x1 = (nx >= n) ? xp + nx - n : xp;
2797 nx1 = (nx >= n) ? n : nx; /* nx1 = min(n, nx) */
2798
2799 /* test if exact */
2800 if (nx > n)
2801 exact = (exact &&
2802 ((mpn_scan1 (xp, 0) >= (nx - n) * GMP_NUMB_BITS)));
2803
2804 /* we loose one more bit in the multiplication,
2805 except when err=0 where we loose two bits */
2806 err = (err <= 0) ? 2 : err + 1;
2807
2808 /* result = a * x */
2809 result = MPFR_TMP_LIMBS_ALLOC (n + nx1);
2810 mpn_mul (result, a, n, x1, nx1);
2811 exp_a += MPFR_GET_EXP (x);
2812 if (mpn_scan1 (result, 0) < (nx1 * GMP_NUMB_BITS))
2813 exact = 0;
2814
2815 /* normalize a and truncate */
2816 if ((result[n + nx1 - 1] & MPFR_LIMB_HIGHBIT) == 0)
2817 {
2818 mpn_lshift (a, result + nx1, n, 1);
2819 a[0] |= result[nx1 - 1] >> (GMP_NUMB_BITS - 1);
2820 exp_a --;
2821 }
2822 else
2823 MPN_COPY (a, result + nx1, n);
2824 }
2825 else /* m < g: divide by b^exp */
2826 {
2827 mp_limb_t *x1;
2828
2829 /* a2*2^exp_a = b^e */
2830 err = mpfr_mpn_exp (a, &exp_a, b, exp, n);
2831 exact = (err == -1);
2832
2833 /* allocate memory for x1, result and reste */
2834 result = MPFR_TMP_LIMBS_ALLOC (n + 1);
2835 reste = MPFR_TMP_LIMBS_ALLOC (n);
2836
2837 if (2 * n <= nx)
2838 {
2839 x1 = xp + nx - 2 * n;
2840 /* we ignored the low nx - 2 * n limbs from x */
2841 if (exact && mpn_scan1 (xp, 0) < (nx - 2 * n) * GMP_NUMB_BITS)
2842 exact = 0;
2843 }
2844 else
2845 {
2846 /* copy the nx most significant limbs of x into those of x1 */
2847 x1 = MPFR_TMP_LIMBS_ALLOC (2 * n);
2848 MPN_ZERO (x1, 2 * n - nx);
2849 MPN_COPY (x1 + 2 * n - nx, xp, nx);
2850 }
2851
2852 /* result = x / a */
2853 mpn_tdiv_qr (result, reste, 0, x1, 2 * n, a, n);
2854 exp_a = MPFR_GET_EXP (x) - exp_a - 2 * n * GMP_NUMB_BITS;
2855
2856 /* test if division was exact */
2857 if (exact)
2858 exact = mpn_popcount (reste, n) == 0;
2859
2860 /* normalize the result and copy into a */
2861 if (result[n] == 1)
2862 {
2863 mpn_rshift (a, result, n, 1);
2864 a[n - 1] |= MPFR_LIMB_HIGHBIT;;
2865 exp_a ++;
2866 }
2867 else
2868 MPN_COPY (a, result, n);
2869
2870 err = (err == -1) ? 2 : err + 2;
2871 }
2872
2873 /* check if rounding is possible */
2874 if (exact)
2875 err = -1;
2876
2877 ret = mpfr_get_str_aux (s, e, a, n, exp_a, err, b0, m, rnd);
2878
2879 MPFR_TMP_FREE (marker);
2880
2881 if (ret == MPFR_ROUND_FAILED)
2882 {
2883 /* too large error: increment the working precision */
2884 MPFR_ZIV_NEXT (loop, prec);
2885 }
2886 else if (ret == - MPFR_ROUND_FAILED)
2887 {
2888 /* too many digits in mantissa: exp = |m-g| */
2889 if ((mpfr_exp_t) m > g) /* exp = m - g, multiply by b^exp */
2890 {
2891 g ++;
2892 exp --;
2893 }
2894 else /* exp = g - m, divide by b^exp */
2895 {
2896 g ++;
2897 exp ++;
2898 }
2899 }
2900 else
2901 {
2902 if (ret != 0)
2903 MPFR_SAVE_EXPO_UPDATE_FLAGS (expo, MPFR_FLAGS_INEXACT);
2904 break;
2905 }
2906 }
2907 MPFR_ZIV_FREE (loop);
2908
2909 *e += g;
2910
2911 MPFR_LOG_MSG (("e=%" MPFR_EXP_FSPEC "d\n", (mpfr_eexp_t) *e));
2912
2913 MPFR_SAVE_EXPO_FREE (expo);
2914 return s0;
2915 }
2916
mpfr_free_str(char * str)2917 void mpfr_free_str (char *str)
2918 {
2919 mpfr_free_func (str, strlen (str) + 1);
2920 }
2921