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