xref: /haiku/src/system/libroot/posix/glibc/stdlib/fpioconst.c (revision bc3955fea5b07e2e94a27fc05e4bb58fe6f0319b)
1 /* Table of MP integer constants 10^(2^i), used for floating point <-> decimal.
2    Copyright (C) 1995, 1996, 1997, 1998, 1999 Free Software Foundation, Inc.
3    This file is part of the GNU C Library.
4 
5    The GNU C Library is free software; you can redistribute it and/or
6    modify it under the terms of the GNU Lesser General Public
7    License as published by the Free Software Foundation; either
8    version 2.1 of the License, or (at your option) any later version.
9 
10    The GNU C Library is distributed in the hope that it will be useful,
11    but WITHOUT ANY WARRANTY; without even the implied warranty of
12    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
13    Lesser General Public License for more details.
14 
15    You should have received a copy of the GNU Lesser General Public
16    License along with the GNU C Library; if not, write to the Free
17    Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
18    02111-1307 USA.  */
19 
20 #include "fpioconst.h"
21 #include <gmp-mparam.h>		/* This defines BITS_PER_MP_LIMB.  */
22 
23 /* First page	: 32-bit limbs
24    Second page	: 64-bit limbs
25    Last page	: table of pointers
26  */
27 
28 #if BITS_PER_MP_LIMB == 32
29 
30 /* Table with constants of 10^(2^i), i=0..12 for 32-bit limbs.	*/
31 
32 const mp_limb_t __tens[] =
33 {
34 #define TENS_P0_IDX	0
35 #define TENS_P0_SIZE	3
36   [TENS_P0_IDX] = 0x00000000, 0x00000000, 0x0000000a,
37 
38 #define TENS_P1_IDX	(TENS_P0_IDX + TENS_P0_SIZE)
39 #define TENS_P1_SIZE	3
40   [TENS_P1_IDX] = 0x00000000, 0x00000000, 0x00000064,
41 
42 #define TENS_P2_IDX	(TENS_P1_IDX + TENS_P1_SIZE)
43 #define TENS_P2_SIZE	3
44   [TENS_P2_IDX] = 0x00000000, 0x00000000, 0x00002710,
45 
46 #define TENS_P3_IDX	(TENS_P2_IDX + TENS_P2_SIZE)
47 #define TENS_P3_SIZE	3
48   [TENS_P3_IDX] = 0x00000000, 0x00000000, 0x05f5e100,
49 
50 #define TENS_P4_IDX	(TENS_P3_IDX + TENS_P3_SIZE)
51 #define TENS_P4_SIZE	4
52   [TENS_P4_IDX] = 0x00000000, 0x00000000, 0x6fc10000, 0x002386f2,
53 
54 #define TENS_P5_IDX	(TENS_P4_IDX + TENS_P4_SIZE)
55 #define TENS_P5_SIZE	6
56   [TENS_P5_IDX] = 0x00000000, 0x00000000, 0x00000000, 0x85acef81, 0x2d6d415b,
57   0x000004ee,
58 
59 #define TENS_P6_IDX	(TENS_P5_IDX + TENS_P5_SIZE)
60 #define TENS_P6_SIZE	9
61   [TENS_P6_IDX] = 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0xbf6a1f01,
62   0x6e38ed64, 0xdaa797ed, 0xe93ff9f4, 0x00184f03,
63 
64 #define TENS_P7_IDX	(TENS_P6_IDX + TENS_P6_SIZE)
65 #define TENS_P7_SIZE	16
66   [TENS_P7_IDX] = 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
67   0x00000000, 0x2e953e01, 0x03df9909, 0x0f1538fd, 0x2374e42f, 0xd3cff5ec,
68   0xc404dc08, 0xbccdb0da, 0xa6337f19, 0xe91f2603, 0x0000024e,
69 
70 #define TENS_P8_IDX	(TENS_P7_IDX + TENS_P7_SIZE)
71 #define TENS_P8_SIZE	29
72   [TENS_P8_IDX] = 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
73   0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x982e7c01,
74   0xbed3875b, 0xd8d99f72, 0x12152f87, 0x6bde50c6, 0xcf4a6e70, 0xd595d80f,
75   0x26b2716e, 0xadc666b0, 0x1d153624, 0x3c42d35a, 0x63ff540e, 0xcc5573c0,
76   0x65f9ef17, 0x55bc28f2, 0x80dcc7f7, 0xf46eeddc, 0x5fdcefce, 0x000553f7,
77 
78 #ifndef __NO_LONG_DOUBLE_MATH
79 # define TENS_P9_IDX	(TENS_P8_IDX + TENS_P8_SIZE)
80 # define TENS_P9_SIZE	56
81   [TENS_P9_IDX] = 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
82   0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
83   0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
84   0x00000000, 0xfc6cf801, 0x77f27267, 0x8f9546dc, 0x5d96976f, 0xb83a8a97,
85   0xc31e1ad9, 0x46c40513, 0x94e65747, 0xc88976c1, 0x4475b579, 0x28f8733b,
86   0xaa1da1bf, 0x703ed321, 0x1e25cfea, 0xb21a2f22, 0xbc51fb2e, 0x96e14f5d,
87   0xbfa3edac, 0x329c57ae, 0xe7fc7153, 0xc3fc0695, 0x85a91924, 0xf95f635e,
88   0xb2908ee0, 0x93abade4, 0x1366732a, 0x9449775c, 0x69be5b0e, 0x7343afac,
89   0xb099bc81, 0x45a71d46, 0xa2699748, 0x8cb07303, 0x8a0b1f13, 0x8cab8a97,
90   0xc1d238d9, 0x633415d4, 0x0000001c,
91 
92 # define TENS_P10_IDX	(TENS_P9_IDX + TENS_P9_SIZE)
93 # define TENS_P10_SIZE	109
94   [TENS_P10_IDX] = 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
95   0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
96   0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
97   0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
98   0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
99   0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x2919f001,
100   0xf55b2b72, 0x6e7c215b, 0x1ec29f86, 0x991c4e87, 0x15c51a88, 0x140ac535,
101   0x4c7d1e1a, 0xcc2cd819, 0x0ed1440e, 0x896634ee, 0x7de16cfb, 0x1e43f61f,
102   0x9fce837d, 0x231d2b9c, 0x233e55c7, 0x65dc60d7, 0xf451218b, 0x1c5cd134,
103   0xc9635986, 0x922bbb9f, 0xa7e89431, 0x9f9f2a07, 0x62be695a, 0x8e1042c4,
104   0x045b7a74, 0x1abe1de3, 0x8ad822a5, 0xba34c411, 0xd814b505, 0xbf3fdeb3,
105   0x8fc51a16, 0xb1b896bc, 0xf56deeec, 0x31fb6bfd, 0xb6f4654b, 0x101a3616,
106   0x6b7595fb, 0xdc1a47fe, 0x80d98089, 0x80bda5a5, 0x9a202882, 0x31eb0f66,
107   0xfc8f1f90, 0x976a3310, 0xe26a7b7e, 0xdf68368a, 0x3ce3a0b8, 0x8e4262ce,
108   0x75a351a2, 0x6cb0b6c9, 0x44597583, 0x31b5653f, 0xc356e38a, 0x35faaba6,
109   0x0190fba0, 0x9fc4ed52, 0x88bc491b, 0x1640114a, 0x005b8041, 0xf4f3235e,
110   0x1e8d4649, 0x36a8de06, 0x73c55349, 0xa7e6bd2a, 0xc1a6970c, 0x47187094,
111   0xd2db49ef, 0x926c3f5b, 0xae6209d4, 0x2d433949, 0x34f4a3c6, 0xd4305d94,
112   0xd9d61a05, 0x00000325,
113 
114 # define TENS_P11_IDX	(TENS_P10_IDX + TENS_P10_SIZE)
115 # define TENS_P11_SIZE	215
116   [TENS_P11_IDX] = 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
117   0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
118   0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
119   0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
120   0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
121   0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
122   0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
123   0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
124   0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
125   0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
126   0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
127   0x00000000, 0x1333e001, 0xe3096865, 0xb27d4d3f, 0x49e28dcf, 0xec2e4721,
128   0xee87e354, 0xb6067584, 0x368b8abb, 0xa5e5a191, 0x2ed56d55, 0xfd827773,
129   0xea50d142, 0x51b78db2, 0x98342c9e, 0xc850dabc, 0x866ed6f1, 0x19342c12,
130   0x92794987, 0xd2f869c2, 0x66912e4a, 0x71c7fd8f, 0x57a7842d, 0x235552eb,
131   0xfb7fedcc, 0xf3861ce0, 0x38209ce1, 0x9713b449, 0x34c10134, 0x8c6c54de,
132   0xa7a8289c, 0x2dbb6643, 0xe3cb64f3, 0x8074ff01, 0xe3892ee9, 0x10c17f94,
133   0xa8f16f92, 0xa8281ed6, 0x967abbb3, 0x5a151440, 0x9952fbed, 0x13b41e44,
134   0xafe609c3, 0xa2bca416, 0xf111821f, 0xfb1264b4, 0x91bac974, 0xd6c7d6ab,
135   0x8e48ff35, 0x4419bd43, 0xc4a65665, 0x685e5510, 0x33554c36, 0xab498697,
136   0x0dbd21fe, 0x3cfe491d, 0x982da466, 0xcbea4ca7, 0x9e110c7b, 0x79c56b8a,
137   0x5fc5a047, 0x84d80e2e, 0x1aa9f444, 0x730f203c, 0x6a57b1ab, 0xd752f7a6,
138   0x87a7dc62, 0x944545ff, 0x40660460, 0x77c1a42f, 0xc9ac375d, 0xe866d7ef,
139   0x744695f0, 0x81428c85, 0xa1fc6b96, 0xd7917c7b, 0x7bf03c19, 0x5b33eb41,
140   0x5715f791, 0x8f6cae5f, 0xdb0708fd, 0xb125ac8e, 0x785ce6b7, 0x56c6815b,
141   0x6f46eadb, 0x4eeebeee, 0x195355d8, 0xa244de3c, 0x9d7389c0, 0x53761abd,
142   0xcf99d019, 0xde9ec24b, 0x0d76ce39, 0x70beb181, 0x2e55ecee, 0xd5f86079,
143   0xf56d9d4b, 0xfb8886fb, 0x13ef5a83, 0x408f43c5, 0x3f3389a4, 0xfad37943,
144   0x58ccf45c, 0xf82df846, 0x415c7f3e, 0x2915e818, 0x8b3d5cf4, 0x6a445f27,
145   0xf8dbb57a, 0xca8f0070, 0x8ad803ec, 0xb2e87c34, 0x038f9245, 0xbedd8a6c,
146   0xc7c9dee0, 0x0eac7d56, 0x2ad3fa14, 0xe0de0840, 0xf775677c, 0xf1bd0ad5,
147   0x92be221e, 0x87fa1fb9, 0xce9d04a4, 0xd2c36fa9, 0x3f6f7024, 0xb028af62,
148   0x907855ee, 0xd83e49d6, 0x4efac5dc, 0xe7151aab, 0x77cd8c6b, 0x0a753b7d,
149   0x0af908b4, 0x8c983623, 0xe50f3027, 0x94222771, 0x1d08e2d6, 0xf7e928e6,
150   0xf2ee5ca6, 0x1b61b93c, 0x11eb962b, 0x9648b21c, 0xce2bcba1, 0x34f77154,
151   0x7bbebe30, 0xe526a319, 0x8ce329ac, 0xde4a74d2, 0xb5dc53d5, 0x0009e8b3,
152 
153 # define TENS_P12_IDX	(TENS_P11_IDX + TENS_P11_SIZE)
154 # define TENS_P12_SIZE	428
155   [TENS_P12_IDX] = 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
156   0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
157   0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
158   0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
159   0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
160   0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
161   0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
162   0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
163   0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
164   0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
165   0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
166   0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
167   0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
168   0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
169   0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
170   0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
171   0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
172   0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
173   0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
174   0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
175   0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
176   0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x2a67c001,
177   0xd4724e8d, 0x8efe7ae7, 0xf89a1e90, 0xef084117, 0x54e05154, 0x13b1bb51,
178   0x506be829, 0xfb29b172, 0xe599574e, 0xf0da6146, 0x806c0ed3, 0xb86ae5be,
179   0x45155e93, 0xc0591cc2, 0x7e1e7c34, 0x7c4823da, 0x1d1f4cce, 0x9b8ba1e8,
180   0xd6bfdf75, 0xe341be10, 0xc2dfae78, 0x016b67b2, 0x0f237f1a, 0x3dbeabcd,
181   0xaf6a2574, 0xcab3e6d7, 0x142e0e80, 0x61959127, 0x2c234811, 0x87009701,
182   0xcb4bf982, 0xf8169c84, 0x88052f8c, 0x68dde6d4, 0xbc131761, 0xff0b0905,
183   0x54ab9c41, 0x7613b224, 0x1a1c304e, 0x3bfe167b, 0x441c2d47, 0x4f6cea9c,
184   0x78f06181, 0xeb659fb8, 0x30c7ae41, 0x947e0d0e, 0xa1ebcad7, 0xd97d9556,
185   0x2130504d, 0x1a8309cb, 0xf2acd507, 0x3f8ec72a, 0xfd82373a, 0x95a842bc,
186   0x280f4d32, 0xf3618ac0, 0x811a4f04, 0x6dc3a5b4, 0xd3967a1b, 0x15b8c898,
187   0xdcfe388f, 0x454eb2a0, 0x8738b909, 0x10c4e996, 0x2bd9cc11, 0x3297cd0c,
188   0x655fec30, 0xae0725b1, 0xf4090ee8, 0x037d19ee, 0x398c6fed, 0x3b9af26b,
189   0xc994a450, 0xb5341743, 0x75a697b2, 0xac50b9c1, 0x3ccb5b92, 0xffe06205,
190   0xa8329761, 0xdfea5242, 0xeb83cadb, 0xe79dadf7, 0x3c20ee69, 0x1e0a6817,
191   0x7021b97a, 0x743074fa, 0x176ca776, 0x77fb8af6, 0xeca19beb, 0x92baf1de,
192   0xaf63b712, 0xde35c88b, 0xa4eb8f8c, 0xe137d5e9, 0x40b464a0, 0x87d1cde8,
193   0x42923bbd, 0xcd8f62ff, 0x2e2690f3, 0x095edc16, 0x59c89f1b, 0x1fa8fd5d,
194   0x5138753d, 0x390a2b29, 0x80152f18, 0x2dd8d925, 0xf984d83e, 0x7a872e74,
195   0xc19e1faf, 0xed4d542d, 0xecf9b5d0, 0x9462ea75, 0xc53c0adf, 0x0caea134,
196   0x37a2d439, 0xc8fa2e8a, 0x2181327e, 0x6e7bb827, 0x2d240820, 0x50be10e0,
197   0x5893d4b8, 0xab312bb9, 0x1f2b2322, 0x440b3f25, 0xbf627ede, 0x72dac789,
198   0xb608b895, 0x78787e2a, 0x86deb3f0, 0x6fee7aab, 0xbb9373f4, 0x27ecf57b,
199   0xf7d8b57e, 0xfca26a9f, 0x3d04e8d2, 0xc9df13cb, 0x3172826a, 0xcd9e8d7c,
200   0xa8fcd8e0, 0xb2c39497, 0x307641d9, 0x1cc939c1, 0x2608c4cf, 0xb6d1c7bf,
201   0x3d326a7e, 0xeeaf19e6, 0x8e13e25f, 0xee63302b, 0x2dfe6d97, 0x25971d58,
202   0xe41d3cc4, 0x0a80627c, 0xab8db59a, 0x9eea37c8, 0xe90afb77, 0x90ca19cf,
203   0x9ee3352c, 0x3613c850, 0xfe78d682, 0x788f6e50, 0x5b060904, 0xb71bd1a4,
204   0x3fecb534, 0xb32c450c, 0x20c33857, 0xa6e9cfda, 0x0239f4ce, 0x48497187,
205   0xa19adb95, 0xb492ed8a, 0x95aca6a8, 0x4dcd6cd9, 0xcf1b2350, 0xfbe8b12a,
206   0x1a67778c, 0x38eb3acc, 0xc32da383, 0xfb126ab1, 0xa03f40a8, 0xed5bf546,
207   0xe9ce4724, 0x4c4a74fd, 0x73a130d8, 0xd9960e2d, 0xa2ebd6c1, 0x94ab6feb,
208   0x6f233b7c, 0x49126080, 0x8e7b9a73, 0x4b8c9091, 0xd298f999, 0x35e836b5,
209   0xa96ddeff, 0x96119b31, 0x6b0dd9bc, 0xc6cc3f8d, 0x282566fb, 0x72b882e7,
210   0xd6769f3b, 0xa674343d, 0x00fc509b, 0xdcbf7789, 0xd6266a3f, 0xae9641fd,
211   0x4e89541b, 0x11953407, 0x53400d03, 0x8e0dd75a, 0xe5b53345, 0x108f19ad,
212   0x108b89bc, 0x41a4c954, 0xe03b2b63, 0x437b3d7f, 0x97aced8e, 0xcbd66670,
213   0x2c5508c2, 0x650ebc69, 0x5c4f2ef0, 0x904ff6bf, 0x9985a2df, 0x9faddd9e,
214   0x5ed8d239, 0x25585832, 0xe3e51cb9, 0x0ff4f1d4, 0x56c02d9a, 0x8c4ef804,
215   0xc1a08a13, 0x13fd01c8, 0xe6d27671, 0xa7c234f4, 0x9d0176cc, 0xd0d73df2,
216   0x4d8bfa89, 0x544f10cd, 0x2b17e0b2, 0xb70a5c7d, 0xfd86fe49, 0xdf373f41,
217   0x214495bb, 0x84e857fd, 0x00d313d5, 0x0496fcbe, 0xa4ba4744, 0xe8cac982,
218   0xaec29e6e, 0x87ec7038, 0x7000a519, 0xaeee333b, 0xff66e42c, 0x8afd6b25,
219   0x03b4f63b, 0xbd7991dc, 0x5ab8d9c7, 0x2ed4684e, 0x48741a6c, 0xaf06940d,
220   0x2fdc6349, 0xb03d7ecd, 0xe974996f, 0xac7867f9, 0x52ec8721, 0xbcdd9d4a,
221   0x8edd2d00, 0x3557de06, 0x41c759f8, 0x3956d4b9, 0xa75409f2, 0x123cd8a1,
222   0xb6100fab, 0x3e7b21e2, 0x2e8d623b, 0x92959da2, 0xbca35f77, 0x200c03a5,
223   0x35fcb457, 0x1bb6c6e4, 0xf74eb928, 0x3d5d0b54, 0x87cc1d21, 0x4964046f,
224   0x18ae4240, 0xd868b275, 0x8bd2b496, 0x1c5563f4, 0xc234d8f5, 0xf868e970,
225   0xf9151fff, 0xae7be4a2, 0x271133ee, 0xbb0fd922, 0x25254932, 0xa60a9fc0,
226   0x104bcd64, 0x30290145, 0x00000062
227 #endif	/* !__NO_LONG_DOUBLE_MATH */
228 };
229 
230 #elif BITS_PER_MP_LIMB == 64
231 
232 /* Table with constants of 10^(2^i), i=0..12 for 64-bit limbs.	*/
233 
234 const mp_limb_t __tens[] =
235 {
236 #define TENS_P0_IDX	0
237 #define TENS_P0_SIZE	2
238   [TENS_P0_IDX] = 0x0000000000000000, 0x000000000000000a,
239 
240 #define TENS_P1_IDX	(TENS_P0_IDX + TENS_P0_SIZE)
241 #define TENS_P1_SIZE	2
242   [TENS_P1_IDX] = 0x0000000000000000, 0x0000000000000064,
243 
244 #define TENS_P2_IDX	(TENS_P1_IDX + TENS_P1_SIZE)
245 #define TENS_P2_SIZE	2
246   [TENS_P2_IDX] = 0x0000000000000000, 0x0000000000002710,
247 
248 #define TENS_P3_IDX	(TENS_P2_IDX + TENS_P2_SIZE)
249 #define TENS_P3_SIZE	2
250   [TENS_P3_IDX] = 0x0000000000000000, 0x0000000005f5e100,
251 
252 #define TENS_P4_IDX	(TENS_P3_IDX + TENS_P3_SIZE)
253 #define TENS_P4_SIZE	2
254   [TENS_P4_IDX] = 0x0000000000000000, 0x002386f26fc10000,
255 
256 #define TENS_P5_IDX	(TENS_P4_IDX + TENS_P4_SIZE)
257 #define TENS_P5_SIZE	3
258   [TENS_P5_IDX] = 0x0000000000000000, 0x85acef8100000000, 0x000004ee2d6d415b,
259 
260 #define TENS_P6_IDX	(TENS_P5_IDX + TENS_P5_SIZE)
261 #define TENS_P6_SIZE	5
262   [TENS_P6_IDX] = 0x0000000000000000, 0x0000000000000000, 0x6e38ed64bf6a1f01,
263   0xe93ff9f4daa797ed, 0x0000000000184f03,
264 
265 #define TENS_P7_IDX	(TENS_P6_IDX + TENS_P6_SIZE)
266 #define TENS_P7_SIZE	8
267   [TENS_P7_IDX] = 0x0000000000000000, 0x0000000000000000, 0x0000000000000000,
268   0x03df99092e953e01, 0x2374e42f0f1538fd, 0xc404dc08d3cff5ec,
269   0xa6337f19bccdb0da, 0x0000024ee91f2603,
270 
271 #define TENS_P8_IDX	(TENS_P7_IDX + TENS_P7_SIZE)
272 #define TENS_P8_SIZE	15
273   [TENS_P8_IDX] = 0x0000000000000000, 0x0000000000000000, 0x0000000000000000,
274   0x0000000000000000, 0x0000000000000000, 0xbed3875b982e7c01,
275   0x12152f87d8d99f72, 0xcf4a6e706bde50c6, 0x26b2716ed595d80f,
276   0x1d153624adc666b0, 0x63ff540e3c42d35a, 0x65f9ef17cc5573c0,
277   0x80dcc7f755bc28f2, 0x5fdcefcef46eeddc, 0x00000000000553f7,
278 #ifndef __NO_LONG_DOUBLE_MATH
279 # define TENS_P9_IDX	(TENS_P8_IDX + TENS_P8_SIZE)
280 # define TENS_P9_SIZE	28
281   [TENS_P9_IDX] = 0x0000000000000000, 0x0000000000000000, 0x0000000000000000,
282   0x0000000000000000, 0x0000000000000000, 0x0000000000000000,
283   0x0000000000000000, 0x0000000000000000, 0x0000000000000000,
284   0x77f27267fc6cf801, 0x5d96976f8f9546dc, 0xc31e1ad9b83a8a97,
285   0x94e6574746c40513, 0x4475b579c88976c1, 0xaa1da1bf28f8733b,
286   0x1e25cfea703ed321, 0xbc51fb2eb21a2f22, 0xbfa3edac96e14f5d,
287   0xe7fc7153329c57ae, 0x85a91924c3fc0695, 0xb2908ee0f95f635e,
288   0x1366732a93abade4, 0x69be5b0e9449775c, 0xb099bc817343afac,
289   0xa269974845a71d46, 0x8a0b1f138cb07303, 0xc1d238d98cab8a97,
290   0x0000001c633415d4,
291 
292 # define TENS_P10_IDX	(TENS_P9_IDX + TENS_P9_SIZE)
293 # define TENS_P10_SIZE	55
294   [TENS_P10_IDX] = 0x0000000000000000, 0x0000000000000000, 0x0000000000000000,
295   0x0000000000000000, 0x0000000000000000, 0x0000000000000000,
296   0x0000000000000000, 0x0000000000000000, 0x0000000000000000,
297   0x0000000000000000, 0x0000000000000000, 0x0000000000000000,
298   0x0000000000000000, 0x0000000000000000, 0x0000000000000000,
299   0x0000000000000000, 0x0000000000000000, 0xf55b2b722919f001,
300   0x1ec29f866e7c215b, 0x15c51a88991c4e87, 0x4c7d1e1a140ac535,
301   0x0ed1440ecc2cd819, 0x7de16cfb896634ee, 0x9fce837d1e43f61f,
302   0x233e55c7231d2b9c, 0xf451218b65dc60d7, 0xc96359861c5cd134,
303   0xa7e89431922bbb9f, 0x62be695a9f9f2a07, 0x045b7a748e1042c4,
304   0x8ad822a51abe1de3, 0xd814b505ba34c411, 0x8fc51a16bf3fdeb3,
305   0xf56deeecb1b896bc, 0xb6f4654b31fb6bfd, 0x6b7595fb101a3616,
306   0x80d98089dc1a47fe, 0x9a20288280bda5a5, 0xfc8f1f9031eb0f66,
307   0xe26a7b7e976a3310, 0x3ce3a0b8df68368a, 0x75a351a28e4262ce,
308   0x445975836cb0b6c9, 0xc356e38a31b5653f, 0x0190fba035faaba6,
309   0x88bc491b9fc4ed52, 0x005b80411640114a, 0x1e8d4649f4f3235e,
310   0x73c5534936a8de06, 0xc1a6970ca7e6bd2a, 0xd2db49ef47187094,
311   0xae6209d4926c3f5b, 0x34f4a3c62d433949, 0xd9d61a05d4305d94,
312   0x0000000000000325,
313 
314 # define TENS_P11_IDX	(TENS_P10_IDX + TENS_P10_SIZE)
315 # define TENS_P11_SIZE	108
316   [TENS_P11_IDX] = 0x0000000000000000, 0x0000000000000000, 0x0000000000000000,
317   0x0000000000000000, 0x0000000000000000, 0x0000000000000000,
318   0x0000000000000000, 0x0000000000000000, 0x0000000000000000,
319   0x0000000000000000, 0x0000000000000000, 0x0000000000000000,
320   0x0000000000000000, 0x0000000000000000, 0x0000000000000000,
321   0x0000000000000000, 0x0000000000000000, 0x0000000000000000,
322   0x0000000000000000, 0x0000000000000000, 0x0000000000000000,
323   0x0000000000000000, 0x0000000000000000, 0x0000000000000000,
324   0x0000000000000000, 0x0000000000000000, 0x0000000000000000,
325   0x0000000000000000, 0x0000000000000000, 0x0000000000000000,
326   0x0000000000000000, 0x0000000000000000, 0x0000000000000000,
327   0xe30968651333e001, 0x49e28dcfb27d4d3f, 0xee87e354ec2e4721,
328   0x368b8abbb6067584, 0x2ed56d55a5e5a191, 0xea50d142fd827773,
329   0x98342c9e51b78db2, 0x866ed6f1c850dabc, 0x9279498719342c12,
330   0x66912e4ad2f869c2, 0x57a7842d71c7fd8f, 0xfb7fedcc235552eb,
331   0x38209ce1f3861ce0, 0x34c101349713b449, 0xa7a8289c8c6c54de,
332   0xe3cb64f32dbb6643, 0xe3892ee98074ff01, 0xa8f16f9210c17f94,
333   0x967abbb3a8281ed6, 0x9952fbed5a151440, 0xafe609c313b41e44,
334   0xf111821fa2bca416, 0x91bac974fb1264b4, 0x8e48ff35d6c7d6ab,
335   0xc4a656654419bd43, 0x33554c36685e5510, 0x0dbd21feab498697,
336   0x982da4663cfe491d, 0x9e110c7bcbea4ca7, 0x5fc5a04779c56b8a,
337   0x1aa9f44484d80e2e, 0x6a57b1ab730f203c, 0x87a7dc62d752f7a6,
338   0x40660460944545ff, 0xc9ac375d77c1a42f, 0x744695f0e866d7ef,
339   0xa1fc6b9681428c85, 0x7bf03c19d7917c7b, 0x5715f7915b33eb41,
340   0xdb0708fd8f6cae5f, 0x785ce6b7b125ac8e, 0x6f46eadb56c6815b,
341   0x195355d84eeebeee, 0x9d7389c0a244de3c, 0xcf99d01953761abd,
342   0x0d76ce39de9ec24b, 0x2e55ecee70beb181, 0xf56d9d4bd5f86079,
343   0x13ef5a83fb8886fb, 0x3f3389a4408f43c5, 0x58ccf45cfad37943,
344   0x415c7f3ef82df846, 0x8b3d5cf42915e818, 0xf8dbb57a6a445f27,
345   0x8ad803ecca8f0070, 0x038f9245b2e87c34, 0xc7c9dee0bedd8a6c,
346   0x2ad3fa140eac7d56, 0xf775677ce0de0840, 0x92be221ef1bd0ad5,
347   0xce9d04a487fa1fb9, 0x3f6f7024d2c36fa9, 0x907855eeb028af62,
348   0x4efac5dcd83e49d6, 0x77cd8c6be7151aab, 0x0af908b40a753b7d,
349   0xe50f30278c983623, 0x1d08e2d694222771, 0xf2ee5ca6f7e928e6,
350   0x11eb962b1b61b93c, 0xce2bcba19648b21c, 0x7bbebe3034f77154,
351   0x8ce329ace526a319, 0xb5dc53d5de4a74d2, 0x000000000009e8b3,
352 
353 # define TENS_P12_IDX	(TENS_P11_IDX + TENS_P11_SIZE)
354 # define TENS_P12_SIZE	214
355   [TENS_P12_IDX] = 0x0000000000000000, 0x0000000000000000, 0x0000000000000000,
356   0x0000000000000000, 0x0000000000000000, 0x0000000000000000,
357   0x0000000000000000, 0x0000000000000000, 0x0000000000000000,
358   0x0000000000000000, 0x0000000000000000, 0x0000000000000000,
359   0x0000000000000000, 0x0000000000000000, 0x0000000000000000,
360   0x0000000000000000, 0x0000000000000000, 0x0000000000000000,
361   0x0000000000000000, 0x0000000000000000, 0x0000000000000000,
362   0x0000000000000000, 0x0000000000000000, 0x0000000000000000,
363   0x0000000000000000, 0x0000000000000000, 0x0000000000000000,
364   0x0000000000000000, 0x0000000000000000, 0x0000000000000000,
365   0x0000000000000000, 0x0000000000000000, 0x0000000000000000,
366   0x0000000000000000, 0x0000000000000000, 0x0000000000000000,
367   0x0000000000000000, 0x0000000000000000, 0x0000000000000000,
368   0x0000000000000000, 0x0000000000000000, 0x0000000000000000,
369   0x0000000000000000, 0x0000000000000000, 0x0000000000000000,
370   0x0000000000000000, 0x0000000000000000, 0x0000000000000000,
371   0x0000000000000000, 0x0000000000000000, 0x0000000000000000,
372   0x0000000000000000, 0x0000000000000000, 0x0000000000000000,
373   0x0000000000000000, 0x0000000000000000, 0x0000000000000000,
374   0x0000000000000000, 0x0000000000000000, 0x0000000000000000,
375   0x0000000000000000, 0x0000000000000000, 0x0000000000000000,
376   0x0000000000000000, 0x0000000000000000, 0xd4724e8d2a67c001,
377   0xf89a1e908efe7ae7, 0x54e05154ef084117, 0x506be82913b1bb51,
378   0xe599574efb29b172, 0x806c0ed3f0da6146, 0x45155e93b86ae5be,
379   0x7e1e7c34c0591cc2, 0x1d1f4cce7c4823da, 0xd6bfdf759b8ba1e8,
380   0xc2dfae78e341be10, 0x0f237f1a016b67b2, 0xaf6a25743dbeabcd,
381   0x142e0e80cab3e6d7, 0x2c23481161959127, 0xcb4bf98287009701,
382   0x88052f8cf8169c84, 0xbc13176168dde6d4, 0x54ab9c41ff0b0905,
383   0x1a1c304e7613b224, 0x441c2d473bfe167b, 0x78f061814f6cea9c,
384   0x30c7ae41eb659fb8, 0xa1ebcad7947e0d0e, 0x2130504dd97d9556,
385   0xf2acd5071a8309cb, 0xfd82373a3f8ec72a, 0x280f4d3295a842bc,
386   0x811a4f04f3618ac0, 0xd3967a1b6dc3a5b4, 0xdcfe388f15b8c898,
387   0x8738b909454eb2a0, 0x2bd9cc1110c4e996, 0x655fec303297cd0c,
388   0xf4090ee8ae0725b1, 0x398c6fed037d19ee, 0xc994a4503b9af26b,
389   0x75a697b2b5341743, 0x3ccb5b92ac50b9c1, 0xa8329761ffe06205,
390   0xeb83cadbdfea5242, 0x3c20ee69e79dadf7, 0x7021b97a1e0a6817,
391   0x176ca776743074fa, 0xeca19beb77fb8af6, 0xaf63b71292baf1de,
392   0xa4eb8f8cde35c88b, 0x40b464a0e137d5e9, 0x42923bbd87d1cde8,
393   0x2e2690f3cd8f62ff, 0x59c89f1b095edc16, 0x5138753d1fa8fd5d,
394   0x80152f18390a2b29, 0xf984d83e2dd8d925, 0xc19e1faf7a872e74,
395   0xecf9b5d0ed4d542d, 0xc53c0adf9462ea75, 0x37a2d4390caea134,
396   0x2181327ec8fa2e8a, 0x2d2408206e7bb827, 0x5893d4b850be10e0,
397   0x1f2b2322ab312bb9, 0xbf627ede440b3f25, 0xb608b89572dac789,
398   0x86deb3f078787e2a, 0xbb9373f46fee7aab, 0xf7d8b57e27ecf57b,
399   0x3d04e8d2fca26a9f, 0x3172826ac9df13cb, 0xa8fcd8e0cd9e8d7c,
400   0x307641d9b2c39497, 0x2608c4cf1cc939c1, 0x3d326a7eb6d1c7bf,
401   0x8e13e25feeaf19e6, 0x2dfe6d97ee63302b, 0xe41d3cc425971d58,
402   0xab8db59a0a80627c, 0xe90afb779eea37c8, 0x9ee3352c90ca19cf,
403   0xfe78d6823613c850, 0x5b060904788f6e50, 0x3fecb534b71bd1a4,
404   0x20c33857b32c450c, 0x0239f4cea6e9cfda, 0xa19adb9548497187,
405   0x95aca6a8b492ed8a, 0xcf1b23504dcd6cd9, 0x1a67778cfbe8b12a,
406   0xc32da38338eb3acc, 0xa03f40a8fb126ab1, 0xe9ce4724ed5bf546,
407   0x73a130d84c4a74fd, 0xa2ebd6c1d9960e2d, 0x6f233b7c94ab6feb,
408   0x8e7b9a7349126080, 0xd298f9994b8c9091, 0xa96ddeff35e836b5,
409   0x6b0dd9bc96119b31, 0x282566fbc6cc3f8d, 0xd6769f3b72b882e7,
410   0x00fc509ba674343d, 0xd6266a3fdcbf7789, 0x4e89541bae9641fd,
411   0x53400d0311953407, 0xe5b533458e0dd75a, 0x108b89bc108f19ad,
412   0xe03b2b6341a4c954, 0x97aced8e437b3d7f, 0x2c5508c2cbd66670,
413   0x5c4f2ef0650ebc69, 0x9985a2df904ff6bf, 0x5ed8d2399faddd9e,
414   0xe3e51cb925585832, 0x56c02d9a0ff4f1d4, 0xc1a08a138c4ef804,
415   0xe6d2767113fd01c8, 0x9d0176cca7c234f4, 0x4d8bfa89d0d73df2,
416   0x2b17e0b2544f10cd, 0xfd86fe49b70a5c7d, 0x214495bbdf373f41,
417   0x00d313d584e857fd, 0xa4ba47440496fcbe, 0xaec29e6ee8cac982,
418   0x7000a51987ec7038, 0xff66e42caeee333b, 0x03b4f63b8afd6b25,
419   0x5ab8d9c7bd7991dc, 0x48741a6c2ed4684e, 0x2fdc6349af06940d,
420   0xe974996fb03d7ecd, 0x52ec8721ac7867f9, 0x8edd2d00bcdd9d4a,
421   0x41c759f83557de06, 0xa75409f23956d4b9, 0xb6100fab123cd8a1,
422   0x2e8d623b3e7b21e2, 0xbca35f7792959da2, 0x35fcb457200c03a5,
423   0xf74eb9281bb6c6e4, 0x87cc1d213d5d0b54, 0x18ae42404964046f,
424   0x8bd2b496d868b275, 0xc234d8f51c5563f4, 0xf9151ffff868e970,
425   0x271133eeae7be4a2, 0x25254932bb0fd922, 0x104bcd64a60a9fc0,
426   0x0000006230290145
427 #endif
428 };
429 
430 #else
431 # error "mp_limb_t size " BITS_PER_MP_LIMB "not accounted for"
432 #endif
433 
434 /* Each of array variable above defines one mpn integer which is a power of 10.
435    This table points to those variables, indexed by the exponent.  */
436 
437 const struct mp_power _fpioconst_pow10[LDBL_MAX_10_EXP_LOG + 1] =
438 {
439   { TENS_P0_IDX, TENS_P0_SIZE,		4,	     },
440   { TENS_P1_IDX, TENS_P1_SIZE,		7,	   4 },
441   { TENS_P2_IDX, TENS_P2_SIZE,		14,	  10 },
442   { TENS_P3_IDX, TENS_P3_SIZE,		27,	  24 },
443   { TENS_P4_IDX, TENS_P4_SIZE,		54,	  50 },
444   { TENS_P5_IDX, TENS_P5_SIZE,		107,	 103 },
445   { TENS_P6_IDX, TENS_P6_SIZE,		213,	 210 },
446   { TENS_P7_IDX, TENS_P7_SIZE,		426,	 422 },
447   { TENS_P8_IDX, TENS_P8_SIZE,  	851,	 848 },
448 #ifndef __NO_LONG_DOUBLE_MATH
449   { TENS_P9_IDX, TENS_P9_SIZE,	 	1701,	1698 },
450   { TENS_P10_IDX, TENS_P10_SIZE,	3402,	3399 },
451   { TENS_P11_IDX, TENS_P11_SIZE,	6804,	6800 },
452   { TENS_P12_IDX, TENS_P12_SIZE, 	13607, 13604 }
453 #endif
454 };
455 
456 #if LAST_POW10 > _LAST_POW10
457 # error "Need to expand 10^(2^i) table for i up to" LAST_POW10
458 #endif
459