1 /* Various Thresholds of MPFR, not exported.
3 Copyright 2005, 2006, 2007, 2008, 2009 Free Software Foundation, Inc.
5 This file is part of the GNU MPFR Library.
7 The GNU MPFR Library is free software; you can redistribute it and/or modify
8 it under the terms of the GNU Lesser General Public License as published by
9 the Free Software Foundation; either version 2.1 of the License, or (at your
10 option) any later version.
12 The GNU MPFR Library is distributed in the hope that it will be useful, but
13 WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
14 or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
15 License for more details.
17 You should have received a copy of the GNU Lesser General Public License
18 along with the GNU MPFR Library; see the file COPYING.LIB. If not, write to
19 the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
20 MA 02110-1301, USA. */
22 #ifndef __MPFR_IMPL_H__
23 # error "MPFR Internal not included"
26 /* note: the different macros used here are those defined by gcc,
27 for example with gcc -dM -E -xc /dev/null */
29 /*****************************
30 * Threshold for Pentium 4 *
31 *****************************/
32 #if defined (__pentium4)
34 #define MPFR_MULHIGH_TAB \
35 -1,0,-1,0,-1,0,0,-1,0,-1,0,0,0,0,0,0, \
36 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, \
37 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, \
38 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, \
39 40,0,0,48,0,0,0,0,0,0,0,0,0,0,48,44, \
40 56,0,56,0,46,0,0,56,56,68,52,54,56,56,54,60, \
41 56,56,72,60,64,60,80,71,60,88,79,62,60,64,80,72, \
42 95,60,78,80,80,65,80,64,96,80,96,80,66,88,96,66, \
43 68,68,96,88,95,95,96,94,94,86,96,94,96,95,96,95, \
44 96,96,95,96,95,92,96,92,96,112,111,112,111,112,112,111, \
45 108,111,128,112,110,112,112,104,112,112,111,112,111,143,126,112, \
46 128,112,128,144,127,127,128,112,128,128,120,124,126,120,110,128, \
47 120,128,143,126,128,128,126,128,135,128,128,128,111,112,134,127, \
48 134,127,128,111,112,125,126,167,134,185,125,126,127,165,125,128, \
49 128,125,144,127,166,129,130,168,144,167,168,126,127,128,129,167, \
50 168,167,168,143,166,165,164,167,166,167,168,163,191,184,166,167, \
51 168,165,166,166,167,168,166,166,167,168,166,167,168,189,188,189, \
52 190,164,192,203,167,168,190,175,192,188,190,187,188,192,167,191, \
53 188,189,190,191,239,192,168,186,187,188,189,190,191,192,168,165, \
54 233,189,166,239,192,167,191,191,190,191,191,189,186,191,188,166, \
55 282,191,192,167,190,191,188,191,190,189,192,191,192,188,189,188, \
56 240,190,191,192,185,189,189,186,235,192,188,238,191,191,240,232, \
57 189,187,191,189,287,287,189,191,191,281,284,192,283,283,190,285, \
58 286,287,288,288,284,285,287,282,285,284,201,239,283,281,282,192, \
59 284,285,286,287,288,288,240,282,239,284,285,286,287,288,288,284, \
60 334,286,335,284,284,334,287,284,285,283,288,281,325,287,280,335, \
61 334,335,336,285,286,288,335,331,331,333,334,335,335,336,334,379, \
62 335,336,334,287,336,280,329,283,282,334,286,334,335,335,336,281, \
63 285,286,334,286,286,334,334,287,334,335,336,336,330,335,332,329, \
64 334,287,334,334,332,335,332,331,334,332,332,335,336,332,334,334, \
65 334,336,336,336,331,328,330,334,333,334,334,334,334,335,336,336, \
66 333,334,329,334,334,332,331,335,333,333,335,336,336,329,332,333, \
67 334,335,336,335,334,332,376,334,335,336,380,335,333,334,379,331, \
68 335,332,383,376,336,336,379,334,383,335,336,384,376,376,379,378, \
69 334,335,378,378,334,380,384,331,376,376,376,377,380,377,381,377, \
70 376,376,380,336,379,380,384,379,377,384,377,378,376,376,381,378, \
71 377,384,379,378,384,334,379,384,381,378,381,377,378,379,380,381, \
72 378,383,380,381,376,383,384,372,376,377,378,379,377,381,379,378, \
73 381,378,383,384,378,376,377,381,376,383,383,379,380,381,382,376, \
74 384,376,376,336,381,503,380,376,376,377,378,377,380,376,377,379, \
75 384,376,378,500,380,384,383,502,380,381,382,379,502,496,496,381, \
76 382,499,497,500,501,496,382,498,498,496,381,496,499,497,379,500, \
77 497,498,498,500,498,502,496,495,502,496,497,498,499,500,498,502, \
78 503,496,493,498,495,496,496,499,497,504,488,496,498,503,498,496, \
79 502,495,496,496,501,496,496,497,498,503,500,501,497,497,498,499, \
80 496,497,502,499,500,494,497,503,501,502,496,497,498,499,568,496, \
81 496,496,496,576,498,499,502,496,502,570,496,497,504,499,568,502, \
82 496,497,570,500,500,575,504,500,576,570,569,502,573,568,569,502, \
83 572,568,569,570,504,576,575,503,502,503,568,569,568,501,570,573, \
84 502,570,576,573,568,575,576,500,568,502,570,575,569,569,569,568, \
85 572,570,568,572,568,504,569,573,571,570,568,572,572,573,570,568, \
86 568,568,568,563,570,571,568,563,568,569,568,570,568,569,568,575, \
87 576,569,568,568,570,570,570,571,568,569,562,575,570,571,569,569, \
88 568,569,570,569,570,573,568,564,571,568,568,568,569,570,572,572, \
89 568,574,575,576,567,569,569,570,570,572,573,570,575,576,570,568, \
90 568,573,568,573,576,575,568,568,569,568,572,569,568,568,568,569, \
91 564,569,576,567,568,562,568,571,572,570,576,568,569,570,568,572, \
92 563,574,568,570,568,568,570,570,571,569,568,569,570,570,572,563, \
93 842,570,568,572,569,574,569,575,576,501,568,503,568,568,568,819, \
94 568,568,574,563,568,563,562,564,564,569,574,568,568,568,570,572, \
95 569,568,568,575,576,894,568,839,525,576,568,568,569,573,568,568, \
96 560,791,793,719,945,563,564,719,562,568,568,570,570,562,568,569, \
97 720,564,573,561,560,575,568,563,568,565,568,568,856,570,570,719, \
98 816,573,566,575,568,569,568,855,572,573,568,860,857,568,856,867 \
100 #define MPFR_MUL_THRESHOLD 17
101 #define MPFR_EXP_2_THRESHOLD 691
102 #define MPFR_EXP_THRESHOLD 23744
104 /****************************
105 * Threshold for Core 2 *
106 ****************************/
107 #elif defined (HAVE_HOST_CORE2) && !defined (__i386) /* 64-bit Core 2 */
109 #define MPFR_MULHIGH_TAB \
110 -1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,0, \
111 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, \
112 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, \
113 0,0,0,0,0,0,0,0,0,0,32,32,34,34,0,32, \
114 0,0,0,34,0,0,0,0,0,0,0,0,0,0,0,0, \
115 0,0,0,64,63,63,64,64,63,63,64,64,63,63,64,64, \
116 63,63,64,64,63,63,64,64,63,67,64,64,63,63,64,64, \
117 67,63,64,68,67,63,64,64,65,67,64,64,63,67,68,72, \
118 68,68,69,72,67,76,68,68,84,84,88,79,80,80,105,105, \
119 88,88,86,80,105,105,88,88,104,92,105,105,109,106,110,110, \
120 105,105,109,103,110,110,105,105,109,106,110,107,105,105,106,109, \
121 110,110,105,105,127,109,110,110,126,117,115,124,128,122,129,105, \
122 129,105,122,126,127,135,132,132,105,105,110,110,111,107,108,108, \
123 105,105,110,110,111,111,116,120,189,189,186,122,183,187,188,188, \
124 185,185,186,186,183,183,188,188,189,185,186,186,183,183,188,184, \
125 185,189,182,182,183,187,188,188,189,189,186,186,191,187,188,188, \
126 189,189,200,200,186,201,187,187,188,188,189,189,200,185,186,201, \
127 182,187,188,188,189,189,185,185,186,186,187,187,188,188,189,189, \
128 185,185,201,201,187,187,188,188,189,189,195,200,201,186,187,187, \
129 188,188,189,189,200,200,196,196,192,187,198,198,199,189,190,190, \
130 191,203,192,192,199,199,188,212,201,201,202,202,191,185,186,186, \
131 187,199,200,200,225,201,196,196,203,197,198,198,199,199,224,200, \
132 201,225,196,232,257,191,192,258,259,259,260,248,261,261,256,256, \
133 257,257,204,204,259,259,260,260,261,261,256,256,257,263,228,240, \
134 256,270,257,257,272,258,224,273,225,267,240,240,311,311,249,284, \
135 285,257,258,258,315,315,239,253,310,261,311,311,312,312,271,313, \
136 314,258,308,308,260,260,310,310,311,311,312,312,327,313,314,314, \
137 315,315,309,309,310,310,311,311,312,312,327,327,328,328,329,315, \
138 329,321,330,322,347,315,348,348,317,285,310,310,311,311,312,312, \
139 329,321,330,330,347,315,316,316,317,317,310,310,311,311,312,312, \
140 313,313,322,322,323,315,324,332,381,317,382,382,311,327,328,384, \
141 329,329,330,378,315,323,324,348,325,325,382,382,311,383,384,312, \
142 347,347,330,348,367,322,323,359,324,324,325,325,326,326,327,372, \
143 355,400,329,365,366,366,367,358,359,368,378,378,361,361,380,371, \
144 372,381,373,355,356,383,384,384,376,376,377,395,396,387,325,325, \
145 326,326,327,390,310,310,311,311,312,312,313,394,395,386,414,387, \
146 319,419,330,330,331,381,382,382,343,393,334,364,395,405,396,326, \
147 417,327,338,338,339,329,400,350,401,371,402,362,353,373,374,384, \
148 355,355,346,346,347,347,558,558,329,369,370,370,561,561,562,562, \
149 563,393,564,554,555,555,546,556,377,377,558,548,559,549,390,560, \
150 552,552,553,553,554,554,555,544,545,556,546,546,558,547,548,548, \
151 549,549,550,550,562,551,552,552,553,553,554,554,555,555,556,556, \
152 557,557,558,558,548,559,549,560,550,550,562,562,552,563,564,564, \
153 576,554,544,555,545,545,546,546,558,558,548,559,549,571,550,561, \
154 545,545,558,558,559,571,560,560,561,549,550,550,563,563,552,552, \
155 553,553,554,554,555,555,556,556,557,557,558,558,559,559,560,560, \
156 561,561,562,562,563,563,564,564,553,553,554,554,555,555,556,556, \
157 557,557,558,558,559,559,560,560,561,561,562,562,563,563,564,564, \
158 567,554,555,555,569,595,557,544,545,545,598,546,560,547,600,561, \
159 562,562,563,550,551,551,552,552,592,553,554,554,555,542,595,569, \
160 544,544,545,558,559,559,560,560,561,561,562,562,563,563,564,564, \
161 552,552,553,553,554,554,555,555,569,569,570,570,558,558,559,572, \
162 557,557,558,558,559,559,560,560,561,561,562,562,563,563,564,564, \
163 593,565,594,580,567,595,554,596,597,583,584,584,585,599,600,600, \
164 559,559,560,560,561,561,562,562,563,563,564,564,593,593,594,594, \
165 595,595,596,596,597,597,584,584,585,599,600,600,587,601,602,588, \
166 599,599,600,585,571,586,587,587,588,588,589,604,605,605,591,591, \
167 592,592,593,608,609,609,580,595,596,596,597,597,598,598,599,599, \
168 600,600,601,601,602,602,603,558,634,589,590,635,576,576,667,562, \
169 563,608,594,594,580,580,671,596,597,597,598,583,584,599,585,585, \
170 593,593,594,594,595,595,596,596,677,597,598,598,599,599,600,600, \
171 601,601,602,602,603,603,636,636,669,605,670,590,591,671,672,592, \
172 705,705,706,706,563,707,708,708,693,597,710,598,599,631,584,584, \
173 713,585,586,586,715,603,780,588,589,589,590,590,591,671,736,608 \
175 #define MPFR_SQRHIGH_TAB \
176 -1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0,8, \
177 9,9,10,10,11,11,12,12,13,13,14,14,15,15,16,16, \
178 17,17,18,18,19,19,20,20,21,21,22,22,23,23,24,24, \
179 25,25,26,26,27,27,28,28,29,29,30,30,31,32,32,32, \
180 33,33,34,34,35,35,36,36,37,37,38,38,39,39,40,40, \
181 41,41,42,42,43,43,44,44,45,45,46,46,47,47,48,48, \
182 49,49,54,50,51,51,54,52,53,53,56,54,55,55,66,56, \
183 57,57,58,58,59,59,60,60,61,61,62,62,63,63,64,66, \
184 65,65,72,66,73,73,71,68,72,84,76,76,80,80,81,84, \
185 79,85,80,80,84,84,88,88,92,92,96,96,88,88,95,92, \
186 96,84,100,88,92,104,105,108,103,100,110,107,108,108,88,88, \
187 116,116,90,90,91,94,92,92,93,93,94,94,95,95,96,96, \
188 97,97,98,98,99,99,100,100,101,101,102,102,103,103,104,104, \
189 105,113,106,106,107,107,108,108,109,109,110,114,115,111,112,112, \
190 113,113,114,114,115,115,116,116,117,117,138,138,135,131,128,128, \
191 141,141,130,134,131,135,140,140,153,137,138,138,155,147,144,140, \
192 154,159,140,140,161,146,147,147,138,158,159,159,165,155,171,161, \
193 157,162,168,168,169,159,160,165,166,171,167,157,168,168,174,159, \
194 165,160,161,171,177,167,168,183,189,159,165,170,171,186,177,182, \
195 178,168,164,159,160,195,181,156,192,177,183,173,174,174,170,165, \
196 191,161,168,162,163,163,188,182,195,165,166,166,167,185,168,168, \
197 169,169,170,194,195,171,172,214,185,173,192,186,175,187,182,236, \
198 225,225,244,178,191,185,186,192,181,193,194,248,249,189,196,238, \
199 239,215,264,222,187,235,224,188,261,237,190,268,191,191,192,216, \
200 228,193,271,215,216,223,224,224,225,225,233,233,220,213,228,235, \
201 236,236,237,237,273,238,246,225,240,261,276,269,235,249,264,243, \
202 272,272,259,259,260,260,296,233,276,276,270,284,264,264,272,237, \
203 259,273,246,246,282,240,248,269,270,249,264,264,272,272,273,280, \
204 225,273,274,282,227,283,284,228,261,285,270,286,287,295,232,232, \
205 297,233,234,234,307,235,236,236,237,285,286,278,287,287,240,312, \
206 249,297,242,242,243,259,260,260,261,245,246,246,247,247,248,248, \
207 249,249,250,250,251,251,252,276,253,333,254,254,255,255,272,256, \
208 257,257,258,258,259,259,260,260,261,261,262,262,263,263,264,273, \
209 265,265,266,284,285,285,268,268,269,269,270,279,271,271,272,272, \
210 273,273,283,274,275,275,276,276,277,277,278,278,279,279,280,280, \
211 281,281,282,282,283,283,284,284,285,321,286,286,287,287,288,288, \
212 289,319,330,320,321,291,292,292,333,333,294,294,295,295,296,296, \
213 297,297,308,338,309,299,320,300,321,321,302,312,323,323,324,314, \
214 325,315,326,316,317,317,318,328,309,309,330,340,311,321,332,332, \
215 333,323,324,324,335,335,336,336,337,347,348,338,349,339,350,330, \
216 332,332,333,333,323,345,335,346,336,391,348,392,393,338,350,361, \
217 362,362,363,363,419,353,365,376,366,399,411,400,412,379,380,380, \
218 414,414,382,382,383,383,384,384,396,385,397,419,398,420,399,399, \
219 411,433,434,401,402,402,414,403,415,393,416,405,417,406,407,407, \
220 413,401,402,402,415,415,416,404,405,417,406,418,419,407,408,420, \
221 409,433,422,398,399,411,412,436,437,473,438,474,427,427,440,428, \
222 429,417,490,418,419,455,456,456,433,469,470,470,471,435,436,472, \
223 473,473,474,474,463,463,464,488,453,465,454,466,479,467,480,456, \
224 476,476,477,464,478,491,479,479,467,467,468,455,456,482,483,483, \
225 471,471,472,472,499,499,500,474,501,501,463,489,477,490,504,491, \
226 479,492,493,480,429,481,482,469,470,522,510,471,472,472,473,486, \
227 487,487,488,501,489,528,477,503,543,504,505,531,545,506,520,520, \
228 473,543,474,544,517,545,546,546,561,533,534,534,535,549,550,522, \
229 481,481,482,482,483,525,498,526,527,499,500,486,487,487,474,558, \
230 489,489,490,490,491,561,562,562,563,577,564,508,495,579,580,510, \
231 581,581,582,582,499,555,528,528,557,501,530,516,517,489,490,490, \
232 524,509,510,495,526,526,527,512,528,528,529,499,485,485,501,471, \
233 472,472,473,578,474,579,580,490,476,581,582,582,508,598,599,554, \
234 540,510,526,526,497,557,558,558,559,574,560,575,576,501,517,517, \
235 518,503,579,504,580,565,581,566,522,582,523,583,479,524,480,480, \
236 481,545,546,530,531,563,564,500,501,581,566,566,567,519,552,552, \
237 553,553,490,554,539,555,492,556,557,509,526,574,575,495,496,496, \
238 497,561,706,562,707,707,708,708,501,549,534,534,535,551,552,712, \
239 713,521,570,570,571,715,508,588,717,541,558,510,543,735,576,528 \
241 #define MPFR_MUL_THRESHOLD 5 /* limbs */
242 #define MPFR_EXP_2_THRESHOLD 844 /* bits */
243 #define MPFR_EXP_THRESHOLD 9130 /* bits */
245 #elif defined (HAVE_HOST_CORE2) && defined (__i386) /* 32-bit Core 2,
246 for example a 64-bit machine with gmp/mpfr compiled with ABI=32 */
248 /* Generated by MPFR's tuneup.c, 2007-12-21, gcc 4.1 */
250 #define MPFR_MULHIGH_TAB \
251 -1,-1,-1,-1,0,0,0,0,0,0,0,0,0,0,0,0, \
252 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, \
253 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28, \
254 30,28,30,28,28,32,30,30,30,32,32,34,32,32,32,32, \
255 33,35,44,40,35,41,40,42,41,47,48,48,47,51,56,48, \
256 47,55,48,56,51,55,56,60,55,55,56,56,55,55,56,64, \
257 63,59,60,64,59,59,64,64,63,63,60,68,63,67,60,64, \
258 67,67,64,68,63,81,64,64,81,81,64,80,81,81,92,86, \
259 86,80,81,81,79,91,86,92,93,84,85,85,86,86,87,87, \
260 91,88,89,98,99,96,91,91,92,92,93,93,94,91,92,92, \
261 99,99,103,97,98,98,96,93,121,115,104,116,93,99,121,127, \
262 128,110,129,117,121,127,128,128,129,126,124,127,122,128,123,129, \
263 129,129,134,138,139,139,140,140,129,141,122,138,139,139,128,128, \
264 129,165,162,138,139,139,164,164,165,153,138,162,139,139,164,140, \
265 165,165,150,146,139,163,164,164,141,177,158,162,151,151,160,156, \
266 165,153,162,158,163,163,164,164,165,153,174,174,163,163,164,164, \
267 164,164,165,165,176,176,172,177,168,163,189,189,165,165,176,176, \
268 177,177,188,188,189,189,175,180,176,176,177,177,188,183,184,189, \
269 180,180,191,201,192,177,188,188,189,199,200,200,201,201,212,212, \
270 213,188,189,189,200,200,201,201,177,212,188,213,189,189,200,195, \
271 239,239,240,240,199,199,212,212,213,201,232,196,215,197,240,240, \
272 247,211,200,236,237,213,256,256,239,257,240,240,247,247,254,248, \
273 237,255,256,238,257,257,240,240,253,247,272,272,237,237,256,256, \
274 275,257,258,276,265,271,272,254,255,267,274,256,257,257,258,276, \
275 256,249,257,285,258,258,266,294,267,267,275,275,276,276,291,270, \
276 257,257,258,293,273,294,274,267,261,261,276,276,270,277,278,271, \
277 293,293,294,294,267,267,268,275,276,276,284,284,292,271,272,293, \
278 294,273,274,274,275,289,276,276,291,291,285,285,293,293,294,294, \
279 321,305,290,290,291,275,276,348,285,293,294,310,311,303,312,288, \
280 289,329,330,306,347,291,292,348,381,381,294,294,327,343,384,384, \
281 345,337,306,346,347,307,308,340,341,381,366,366,343,383,384,384, \
282 345,329,330,330,347,339,380,380,357,381,366,358,359,375,376,376, \
283 383,383,366,366,340,367,368,359,360,360,361,379,362,362,417,381, \
284 364,382,383,383,384,384,412,376,413,359,360,378,361,379,380,416, \
285 417,381,382,418,419,365,384,384,412,412,413,377,378,378,379,379, \
286 380,380,381,363,418,382,383,383,384,384,385,376,377,413,414,378, \
287 379,379,380,380,381,381,382,382,383,363,364,414,415,365,366,366, \
288 417,377,378,418,379,419,420,420,491,441,492,492,403,383,384,384, \
289 415,415,386,416,417,417,418,418,419,419,420,490,491,491,492,492, \
290 423,483,414,414,415,525,416,486,497,417,418,418,419,489,490,490, \
291 486,420,487,421,488,455,456,423,424,490,491,491,492,492,471,471, \
292 483,417,418,528,419,419,420,420,465,487,488,488,489,456,490,490, \
293 491,491,492,492,526,493,527,494,484,528,419,452,453,486,487,454, \
294 455,488,489,467,468,490,491,480,492,492,482,482,483,527,528,506, \
295 521,485,522,498,487,487,488,524,525,489,490,490,491,491,492,528, \
296 481,505,506,494,495,495,496,520,497,497,486,498,487,487,488,524, \
297 489,489,490,526,527,491,492,492,529,529,506,518,519,483,496,484, \
298 485,569,510,522,523,487,488,488,489,489,490,490,491,491,492,492, \
299 528,528,490,490,491,491,492,492,506,506,507,507,521,521,535,522, \
300 523,523,524,563,564,525,526,526,527,527,528,528,529,542,543,556, \
301 570,557,571,558,533,533,534,560,535,522,523,536,537,563,564,525, \
302 526,526,527,527,528,528,542,594,595,543,557,557,597,532,559,559, \
303 557,557,558,558,559,531,546,560,561,547,548,562,563,563,564,564, \
304 565,565,566,566,567,553,582,568,569,583,584,584,585,557,558,600, \
305 559,573,560,588,533,561,590,562,563,563,564,564,593,579,594,566, \
306 567,581,582,568,569,569,598,584,571,585,600,600,629,559,560,560, \
307 599,599,600,600,601,586,587,602,603,603,634,604,605,635,636,636, \
308 562,637,638,563,564,564,565,565,566,611,612,552,628,568,569,584, \
309 585,600,631,616,617,632,633,633,634,634,635,635,636,606,592,712, \
310 713,638,639,564,595,715,716,716,717,597,583,568,569,704,600,585, \
311 625,593,594,770,771,595,596,708,597,597,598,694,695,599,600,712, \
312 633,633,714,634,715,715,716,636,717,717,686,750,751,751,752,768, \
313 753,753,754,770,771,771,756,708,709,709,710,742,743,711,712,760, \
314 761,713,714,714,715,715,716,716,765,717,718,750,751,751,768,736 \
316 #define MPFR_SQRHIGH_TAB \
317 -1,0,-1,-1,0,0,0,0,0,0,0,0,-1,-1,0,8, \
318 9,9,10,10,11,12,12,13,13,13,14,14,15,15,16,16, \
319 17,17,18,18,19,19,20,20,21,21,22,22,23,23,24,24, \
320 25,25,26,26,27,27,28,28,29,29,30,30,31,31,32,32, \
321 33,33,34,34,35,35,36,36,37,37,38,42,39,39,40,40, \
322 41,41,42,42,43,43,44,44,45,45,46,46,47,47,48,48, \
323 49,49,50,50,51,51,52,52,53,53,54,54,55,55,56,56, \
324 57,57,58,58,59,59,60,60,61,61,62,62,63,63,64,64, \
325 65,74,66,66,67,67,68,68,69,78,70,70,74,71,72,72, \
326 73,73,74,74,75,75,76,76,77,77,78,78,79,79,80,80, \
327 81,84,82,82,83,83,84,84,85,85,92,92,87,87,88,88, \
328 89,89,90,96,91,91,92,92,93,96,100,100,95,95,96,96, \
329 97,97,98,98,99,99,100,100,101,101,114,102,103,103,104,104, \
330 105,105,114,106,107,123,108,108,117,109,110,110,111,111,112,112, \
331 113,113,114,114,115,115,116,116,117,117,118,118,119,119,120,132, \
332 141,121,122,122,123,135,140,144,141,125,126,126,127,127,128,128, \
333 129,129,130,135,131,131,132,132,133,158,134,134,135,135,136,136, \
334 137,137,138,138,169,139,140,140,141,141,142,142,143,143,144,144, \
335 145,145,146,171,177,147,153,148,149,159,150,150,151,171,177,177, \
336 153,153,154,159,180,165,156,156,157,177,183,168,159,159,170,165, \
337 161,161,162,162,163,163,164,164,165,165,166,166,167,167,168,168, \
338 169,169,170,170,171,171,172,172,173,173,174,174,175,175,176,176, \
339 177,177,178,178,179,179,180,180,181,181,182,182,183,183,184,184, \
340 185,185,186,186,187,187,188,188,189,189,190,190,191,191,192,192, \
341 193,193,194,194,195,195,196,196,197,197,198,198,199,199,200,200, \
342 201,201,202,202,203,210,225,204,205,205,206,206,207,207,208,208, \
343 209,209,210,210,211,211,212,212,213,213,214,214,215,215,216,216, \
344 217,217,218,218,219,219,220,220,221,221,222,222,223,223,224,224, \
345 225,225,226,226,227,227,228,228,229,229,230,230,231,231,232,232, \
346 233,249,234,234,235,235,236,236,237,237,238,238,239,239,240,240, \
347 241,241,242,242,243,243,244,244,245,245,246,246,247,247,248,248, \
348 249,249,250,250,251,251,252,252,253,253,254,254,255,255,256,256, \
349 257,257,258,258,259,259,260,260,261,261,262,262,263,263,264,264, \
350 265,283,266,284,285,267,268,268,269,269,270,270,271,271,272,272, \
351 273,273,274,274,275,275,276,276,277,277,278,278,279,279,280,280, \
352 281,281,282,282,283,283,284,284,285,285,286,295,332,287,288,288, \
353 289,309,320,320,321,291,292,292,293,293,294,324,295,295,296,296, \
354 297,297,298,298,299,299,300,300,301,301,302,302,303,333,304,304, \
355 345,305,306,306,307,307,348,338,339,309,310,310,311,311,312,312, \
356 333,323,324,354,355,345,336,316,317,337,338,338,319,339,320,340, \
357 365,365,344,333,323,345,346,324,325,347,348,348,349,327,328,328, \
358 384,329,330,330,331,364,332,354,366,366,356,356,357,335,336,336, \
359 337,337,338,338,339,383,384,340,341,341,342,342,343,343,344,344, \
360 345,345,346,346,347,347,348,348,349,382,383,350,351,351,352,352, \
361 353,353,402,354,355,355,356,356,357,357,358,358,359,419,420,420, \
362 361,361,362,362,363,363,364,364,365,365,366,366,367,367,368,368, \
363 369,369,370,370,371,371,372,372,373,373,374,374,375,375,376,376, \
364 377,377,378,378,379,379,380,380,381,381,382,382,383,383,384,384, \
365 385,385,399,490,387,387,388,388,389,389,390,390,391,391,392,392, \
366 393,393,420,394,395,395,396,396,397,397,398,398,399,399,400,400, \
367 401,401,402,402,507,507,508,404,405,509,510,510,407,407,408,473, \
368 474,474,527,436,437,411,412,412,413,491,492,492,415,415,416,416, \
369 417,417,418,418,419,419,420,420,421,463,492,492,521,479,480,424, \
370 425,425,426,426,427,427,428,484,429,429,430,472,473,473,474,432, \
371 433,433,434,504,491,491,492,436,437,507,508,508,481,467,468,468, \
372 469,483,484,512,513,471,486,500,501,515,516,488,489,447,448,490, \
373 509,509,510,510,481,526,527,512,513,528,544,544,545,455,456,456, \
374 517,487,488,488,489,489,490,460,461,461,462,492,508,508,509,509, \
375 510,510,511,526,527,467,468,528,544,469,470,515,546,531,517,472, \
376 473,473,474,474,475,535,581,476,477,477,478,478,479,479,480,480, \
377 481,481,482,482,483,547,548,484,485,485,486,566,535,487,488,488, \
378 489,489,490,490,491,491,492,492,493,493,494,494,495,495,496,496, \
379 497,561,498,578,579,579,580,580,581,501,502,598,599,503,504,504, \
380 505,505,506,506,507,507,508,508,509,509,510,510,511,511,512,512 \
382 #define MPFR_MUL_THRESHOLD 11 /* limbs */
383 #define MPFR_EXP_2_THRESHOLD 441 /* bits */
384 #define MPFR_EXP_THRESHOLD 9145 /* bits */
385 /* Tuneup completed successfully, took 74 seconds */
387 /****************************
388 * Threshold for AMD 64 *
389 ****************************/
390 #elif defined (__amd64)
392 #define MPFR_MULHIGH_TAB \
393 -1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, \
394 14,13,0,10,0,0,0,0,0,0,0,0,0,0,0,0, \
395 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, \
396 0,0,0,0,0,0,0,0,0,0,0,32,0,0,32,0, \
397 0,0,36,0,0,36,0,0,37,0,0,38,0,39,40,0, \
398 41,42,0,42,44,43,44,46,45,46,52,64,48,64,64,52, \
399 63,64,63,64,64,63,64,64,63,64,63,64,64,63,64,63, \
400 64,68,64,68,64,68,76,68,72,68,72,68,72,68,72,80, \
401 72,70,75,80,76,84,76,80,76,80,76,84,80,84,80,92, \
402 84,88,80,88,86,80,84,82,92,84,92,88,96,88,92,90, \
403 88,92,93,88,92,127,128,128,128,128,127,127,127,126,127,128, \
404 126,127,128,127,128,126,128,126,127,128,127,127,128,127,128,127, \
405 126,127,128,128,128,128,127,136,127,128,127,128,135,127,128,135, \
406 127,128,135,136,144,135,127,127,135,136,127,128,126,127,128,126, \
407 127,128,135,136,128,132,136,128,127,136,140,135,136,134,136,136, \
408 135,136,134,135,142,148,143,144,133,152,142,152,144,148,160,142, \
409 136,152,150,160,160,148,152,160,159,152,156,159,160,151,160,164, \
410 152,158,175,158,158,157,158,160,160,168,160,165,164,167,164,167, \
411 160,176,166,176,165,160,167,192,183,184,176,179,176,168,175,176, \
412 182,200,175,192,200,183,183,184,192,191,183,184,183,199,200,192, \
413 183,180,200,182,189,180,187,200,208,257,191,190,257,200,254,208, \
414 255,254,254,255,255,254,255,256,253,252,255,253,255,254,256,258, \
415 252,253,254,255,253,254,255,254,263,254,254,255,256,254,254,255, \
416 255,254,257,253,253,254,264,254,256,255,256,255,260,254,255,255, \
417 253,254,255,256,254,254,263,263,254,254,255,255,255,264,255,256, \
418 255,264,255,258,263,264,263,262,262,276,256,263,258,276,275,272, \
419 264,259,275,272,259,288,281,255,256,275,287,258,284,262,255,262, \
420 254,255,265,288,254,287,299,257,288,255,257,263,254,257,324,267, \
421 258,259,264,261,262,256,276,286,262,262,263,274,261,276,276,275, \
422 274,275,276,282,384,275,276,276,383,288,380,382,382,379,379,382, \
423 383,384,382,380,379,383,379,379,383,380,384,381,381,383,379,379, \
424 379,379,383,384,382,383,382,382,381,384,379,383,380,381,383,384, \
425 381,382,381,379,383,383,379,379,381,379,382,384,384,380,381,383, \
426 379,384,380,384,382,379,382,383,380,381,381,383,382,382,384,379, \
427 382,377,382,382,379,379,379,382,380,381,382,380,380,379,380,379, \
428 380,383,380,383,382,380,381,379,380,382,379,382,382,383,384,384, \
429 382,380,384,382,383,382,379,379,390,407,401,380,381,382,383,384, \
430 398,408,383,383,400,384,395,386,381,384,408,407,382,383,384,395, \
431 430,406,383,402,384,383,432,404,383,383,383,431,398,408,403,406, \
432 394,396,396,389,431,407,431,430,383,384,404,428,400,443,404,403, \
433 401,453,430,404,431,431,407,396,426,400,431,429,407,444,432,456, \
434 431,408,407,408,427,431,408,403,431,454,428,431,419,456,407,431, \
435 456,437,417,428,425,455,453,430,452,454,454,432,430,455,432,430, \
436 452,451,430,452,455,430,428,479,430,432,439,448,449,476,456,431, \
437 478,431,446,450,449,455,472,478,479,357,382,358,375,360,361,364, \
438 369,369,367,365,379,370,369,371,386,368,366,374,378,369,376,375, \
439 374,369,379,378,390,380,392,372,381,375,384,396,385,379,376,387, \
440 378,391,385,392,393,381,380,380,381,387,382,384,405,385,384,406, \
441 402,387,388,386,394,399,401,405,396,407,390,397,396,395,409,409, \
442 397,440,396,403,414,411,406,396,411,397,407,405,417,420,416,421, \
443 404,403,405,402,415,422,412,428,410,425,413,408,421,417,409,408, \
444 414,436,425,415,424,411,415,413,426,413,422,427,415,415,416,451, \
445 429,417,423,418,424,429,420,432,421,422,449,422,423,423,433,425, \
446 425,425,427,427,443,446,429,449,435,438,434,439,453,442,443,444, \
447 455,439,437,435,437,441,447,446,457,444,453,438,452,462,446,445, \
448 449,471,446,451,463,451,471,458,464,449,452,453,457,458,473,460, \
449 450,464,469,458,465,458,457,458,453,483,456,463,470,517,474,467, \
450 458,458,466,540,490,504,477,493,478,524,490,520,463,491,477,509, \
451 519,502,490,507,517,521,504,525,527,524,537,536,543,551,565,645, \
452 600,564,568,571,682,586,601,573,663,495,708,762,765,767,763,767, \
453 757,660,767,775,763,785,759,764,764,757,757,763,778,767,758,763, \
454 761,758,767,762,763,764,788,767,757,765,767,758,757,773,760,760, \
455 759,761,758,765,758,763,760,763,759,763,761,757,760,766,791,760, \
456 763,782,760,761,760,763,764,764,764,766,764,759,757,758,763,763 \
458 #define MPFR_MUL_THRESHOLD 4
459 #define MPFR_EXP_2_THRESHOLD 524
460 #define MPFR_EXP_THRESHOLD 22876
462 /*****************************
463 * Threshold for Athlon *
464 *****************************/
465 #elif defined (__athlon)
467 #define MPFR_MULHIGH_TAB \
468 -1,0,-1,0,-1,0,-1,-1,0,-1,-1,0,0,0,0,10, \
469 0,12,13,14,15,16,0,0,0,0,0,19,0,0,0,0, \
470 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32, \
471 30,32,30,34,32,32,36,34,36,36,38,38,42,38,38,42, \
472 40,38,42,46,42,42,42,44,44,44,44,44,48,50,46,46, \
473 60,50,50,48,50,56,56,56,56,56,56,56,60,60,64,60, \
474 64,64,60,60,60,72,64,64,68,72,76,72,76,72,72,76, \
475 75,76,76,72,76,72,75,72,72,72,84,76,84,75,72,76, \
476 84,80,76,84,84,76,76,76,76,88,84,88,80,84,83,96, \
477 84,96,92,84,88,91,92,88,92,90,96,96,92,91,92,96, \
478 96,120,95,100,112,120,100,119,112,120,120,112,119,112,119,119, \
479 120,118,119,119,119,118,119,120,128,127,120,128,128,120,120,127, \
480 120,128,128,128,128,120,128,127,120,128,128,127,128,127,144,136, \
481 128,144,152,152,152,136,144,144,144,136,151,152,144,152,128,151, \
482 144,152,144,144,151,144,150,150,136,151,152,143,143,143,142,168, \
483 144,144,168,151,168,144,152,151,152,152,160,152,151,152,160,151, \
484 152,151,152,167,152,152,166,152,167,160,168,204,160,160,168,168, \
485 204,176,202,167,168,166,167,168,204,184,202,204,204,204,204,192, \
486 184,192,204,202,202,216,204,227,202,204,216,203,203,204,203,227, \
487 202,204,202,202,202,203,202,215,204,202,203,202,202,215,228,214, \
488 226,214,228,214,228,215,228,216,226,214,228,225,226,228,226,226, \
489 226,215,216,216,226,225,226,227,216,227,240,216,252,252,226,227, \
490 228,239,227,250,227,226,227,227,252,238,228,239,252,227,228,228, \
491 252,226,246,228,227,227,252,247,250,263,262,250,252,250,250,252, \
492 250,288,288,250,250,250,251,264,264,271,287,276,250,288,252,286, \
493 251,287,288,251,276,274,288,262,263,263,282,252,288,252,276,284, \
494 287,274,264,274,288,275,275,274,274,288,276,264,273,286,274,276, \
495 300,287,288,286,286,276,288,285,275,300,275,273,275,299,300,299, \
496 279,336,336,286,287,284,360,359,336,335,288,360,333,359,334,335, \
497 335,287,359,335,336,336,359,333,334,359,360,288,360,332,335,336, \
498 335,336,336,333,336,335,336,359,334,334,335,360,336,334,356,357, \
499 335,336,358,359,359,336,335,336,334,355,384,356,354,384,334,357, \
500 336,359,384,359,360,356,384,382,336,383,384,384,354,355,383,384, \
501 382,359,384,382,382,383,383,359,381,382,383,356,384,382,381,384, \
502 357,384,358,357,358,358,380,383,382,382,383,360,360,381,382,360, \
503 377,360,378,360,360,381,382,383,381,380,383,383,360,382,383,380, \
504 383,383,384,381,379,360,381,381,382,431,380,380,378,380,384,381, \
505 382,382,384,407,384,382,379,384,430,431,383,384,408,384,456,431, \
506 431,455,431,428,384,454,455,403,432,383,407,430,430,456,408,427, \
507 455,455,456,455,432,431,431,429,455,432,432,424,430,427,427,429, \
508 452,454,426,455,456,431,430,454,452,454,431,456,431,428,455,430, \
509 454,430,432,455,454,442,443,432,443,431,451,452,456,430,451,456, \
510 444,455,449,456,432,454,449,454,502,432,448,504,450,503,503,453, \
511 454,502,446,452,453,454,455,499,504,453,456,504,454,453,503,455, \
512 456,456,500,478,502,454,456,499,478,454,480,499,501,496,502,455, \
513 499,502,503,456,478,500,501,500,479,503,504,451,452,479,454,455, \
514 502,503,504,504,454,499,503,501,454,503,456,503,504,501,455,502, \
515 503,503,502,504,610,503,504,574,480,551,528,504,609,576,480,503, \
516 496,502,503,552,551,552,551,503,504,503,610,608,609,610,611,608, \
517 608,551,648,611,612,550,576,572,608,611,610,606,608,611,610,574, \
518 575,576,606,607,606,606,608,606,606,575,576,604,604,604,608,609, \
519 606,606,606,608,604,604,611,604,604,576,610,606,610,606,604,610, \
520 606,612,604,608,610,609,604,608,606,647,612,610,604,606,648,610, \
521 610,606,646,608,604,647,606,647,606,609,610,647,648,609,641,611, \
522 643,611,643,648,643,640,646,611,644,644,645,611,642,646,611,612, \
523 640,647,610,611,610,611,606,647,648,647,648,644,682,642,682,683, \
524 610,611,680,678,642,681,682,647,682,612,682,648,611,665,680,683, \
525 609,646,666,676,680,646,679,647,646,646,648,679,684,611,612,643, \
526 684,645,646,647,683,647,608,645,682,647,682,646,610,648,682,610, \
527 684,612,612,683,684,647,647,646,680,646,646,745,648,646,644,647, \
528 648,647,678,646,647,683,642,682,682,684,646,645,642,647,646,677, \
529 646,647,683,678,680,646,646,643,681,647,683,645,666,755,756,645, \
530 643,647,646,647,647,648,674,755,756,674,647,643,680,682,684,680, \
531 680,682,682,675,682,677,666,683,680,682,682,684,680,681,674,674 \
533 #define MPFR_MUL_THRESHOLD 19
534 #define MPFR_EXP_2_THRESHOLD 411
535 #define MPFR_EXP_THRESHOLD 45200
537 /*****************************
538 * Threshold for PentiumPro *
539 *****************************/
540 #elif defined (__i386)
542 #define MPFR_MULHIGH_TAB \
543 -1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, \
544 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, \
545 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, \
546 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, \
547 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, \
548 0,0,0,0,0,0,0,0,0,0,0,64,64,56,64,64, \
549 64,64,64,64,64,64,63,63,63,63,63,63,63,64,64,64, \
550 64,63,64,64,63,63,63,80,80,72,64,80,72,80,80,79, \
551 79,79,79,79,80,80,80,80,96,96,96,95,96,96,94,96, \
552 95,95,95,96,95,95,96,96,95,95,95,95,96,96,104,96, \
553 96,95,104,103,96,104,96,96,96,128,104,104,128,127,128,128, \
554 128,128,128,128,126,128,126,127,127,127,128,127,127,127,127,127, \
555 126,126,126,126,126,126,126,126,127,127,128,128,126,127,126,128, \
556 128,128,128,128,126,127,126,128,128,125,124,127,126,126,126,126, \
557 128,128,128,127,127,128,168,160,166,128,159,159,160,192,192,168, \
558 167,167,190,192,190,168,190,191,180,188,167,191,191,190,190,190, \
559 190,192,191,192,190,191,190,191,190,192,188,191,192,190,190,192, \
560 192,189,190,192,191,192,190,192,191,186,188,189,190,188,191,190, \
561 192,192,189,189,191,192,190,189,190,190,187,188,188,190,190,192, \
562 190,191,191,191,216,192,216,190,192,191,189,216,190,215,191,190, \
563 215,189,190,190,192,216,190,190,192,192,190,239,192,192,228,240, \
564 239,237,237,238,228,215,236,237,232,230,237,215,192,236,216,234, \
565 237,232,236,239,230,256,245,288,285,240,239,248,214,236,257,256, \
566 284,288,287,256,239,262,284,288,341,243,216,285,285,280,287,269, \
567 286,285,286,286,286,286,286,284,281,281,284,285,283,284,283,273, \
568 286,285,276,283,287,286,287,286,282,286,288,288,287,283,288,281, \
569 282,280,286,283,284,280,285,280,288,284,283,283,283,283,287,288, \
570 281,286,284,284,286,287,286,288,281,288,286,281,286,287,286,287, \
571 312,284,288,286,311,288,285,286,312,280,283,308,284,310,287,285, \
572 283,286,311,288,287,288,287,311,286,286,287,384,335,334,383,383, \
573 333,380,335,312,382,382,384,383,312,311,381,377,382,384,379,379, \
574 380,383,384,384,381,381,383,377,381,384,383,383,383,382,384,335, \
575 336,384,377,377,379,384,377,382,379,383,379,378,377,377,376,380, \
576 377,382,383,380,379,380,381,384,383,377,375,380,383,381,380,378, \
577 379,376,380,378,383,374,376,376,375,384,382,376,384,383,377,377, \
578 384,380,384,382,383,382,382,377,379,378,384,379,381,383,384,378, \
579 383,377,376,381,383,383,379,379,381,377,381,384,377,380,380,384, \
580 383,383,384,383,381,377,374,380,379,381,377,378,374,380,376,377, \
581 376,383,383,379,380,383,384,383,430,383,381,382,374,382,379,501, \
582 379,383,384,382,503,382,497,379,492,380,501,381,383,382,501,502, \
583 495,502,499,380,384,498,381,384,498,384,499,499,502,480,497,495, \
584 480,478,498,497,502,496,500,503,479,502,501,503,475,492,498,496, \
585 479,504,500,492,498,496,500,500,499,494,494,504,492,494,495,496, \
586 497,494,504,503,492,494,500,497,575,502,504,496,497,496,575,572, \
587 570,502,503,574,568,568,569,502,571,572,568,504,570,569,573,576, \
588 574,570,538,566,538,565,566,572,569,568,572,571,568,571,575,569, \
589 564,571,568,575,568,576,561,567,560,576,562,573,568,574,572,575, \
590 575,564,568,574,574,575,572,568,568,570,572,574,568,576,575,564, \
591 572,573,570,564,574,576,574,574,567,566,570,575,571,576,570,573, \
592 573,569,567,568,572,574,566,572,573,574,568,570,570,567,566,561, \
593 557,571,564,560,557,562,574,563,576,571,557,569,572,575,571,564, \
594 572,558,566,562,559,574,563,574,571,569,572,568,574,570,571,566, \
595 571,568,566,566,565,572,570,568,572,572,565,575,569,566,567,575, \
596 571,573,573,572,563,569,576,567,568,568,569,566,570,568,573,569, \
597 570,573,570,574,574,575,574,568,575,568,564,568,567,571,576,576, \
598 568,569,575,569,569,573,574,575,573,574,565,571,567,568,568,575, \
599 571,569,573,575,575,570,570,571,565,569,571,571,643,648,571,575, \
600 576,570,574,576,574,645,572,642,648,644,646,576,575,648,634,719, \
601 573,645,644,643,570,641,638,641,574,644,644,645,644,638,637,574, \
602 574,575,576,572,642,719,645,648,713,645,682,709,713,718,720,712, \
603 645,718,719,716,644,698,682,678,707,647,681,682,716,684,681,682, \
604 683,716,715,719,708,706,719,706,709,708,712,708,709,712,715,712, \
605 720,717,717,718,717,704,705,706,707,718,700,710,708,708,713,683, \
606 719,717,717,718,719,720,710,709,713,705,711,684,717,718,710,717 \
608 #define MPFR_MUL_THRESHOLD 11
609 #define MPFR_EXP_2_THRESHOLD 528
610 #define MPFR_EXP_THRESHOLD 47120
612 /*****************************
613 * Threshold for IA64 *
614 *****************************/
615 #elif defined (__ia64)
617 #define MPFR_MULHIGH_TAB \
618 -1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, \
619 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, \
620 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, \
621 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, \
622 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, \
623 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, \
624 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, \
625 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, \
626 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, \
627 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, \
628 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, \
629 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, \
630 0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,0, \
631 128,124,124,124,124,124,120,124,120,124,120,124,120,124,124,124, \
632 124,124,124,124,144,124,144,140,140,140,140,136,136,136,136,136, \
633 136,136,136,136,136,136,136,136,136,136,136,136,140,139,140,152, \
634 152,152,160,156,160,156,160,164,156,156,160,156,144,160,147,160, \
635 160,159,160,160,160,168,168,168,160,164,176,168,172,168,156,168, \
636 168,164,168,176,172,172,160,175,168,172,176,172,176,175,176,184, \
637 176,175,176,180,176,180,184,184,168,180,184,184,184,171,172,207, \
638 184,184,184,208,200,207,176,207,200,200,208,206,208,200,208,206, \
639 200,200,206,207,206,207,208,207,207,206,208,207,208,208,208,208, \
640 208,207,224,207,208,240,215,215,240,215,240,239,216,215,216,240, \
641 224,223,224,220,222,220,224,223,224,223,224,231,224,223,232,228, \
642 256,255,231,231,256,231,232,232,232,255,256,255,238,264,238,238, \
643 256,255,256,248,256,264,240,239,240,240,248,271,248,255,272,248, \
644 264,255,256,255,256,252,256,256,272,255,256,255,256,263,264,264, \
645 264,263,264,264,263,264,264,271,256,271,271,271,272,272,285,270, \
646 285,271,280,271,280,280,280,272,280,287,269,279,284,271,280,271, \
647 271,271,285,286,271,272,272,280,272,279,272,278,280,271,286,284, \
648 271,280,272,277,284,272,336,281,312,279,280,278,280,280,280,280, \
649 284,280,348,280,272,334,272,284,285,287,286,279,336,323,331,334, \
650 332,331,332,335,286,346,336,332,334,336,334,336,334,341,358,347, \
651 336,336,334,335,334,346,344,347,347,360,371,348,355,382,334,356, \
652 336,355,347,384,336,358,358,345,357,347,346,347,348,359,371,359, \
653 358,382,346,383,347,357,360,358,357,357,360,370,406,394,382,347, \
654 406,347,407,408,407,406,365,419,356,395,356,359,358,406,360,406, \
655 359,359,408,419,395,432,360,420,408,425,408,395,430,395,371,432, \
656 370,401,432,396,384,419,384,406,359,378,379,378,382,380,392,384, \
657 377,384,383,395,407,383,384,455,455,371,371,404,381,405,395,431, \
658 432,432,408,400,384,383,383,455,455,377,455,438,432,419,420,444, \
659 398,424,392,469,432,427,431,430,404,396,406,384,454,451,464,404, \
660 428,432,432,429,405,432,444,407,452,473,430,453,443,452,456,430, \
661 454,431,407,430,407,416,455,456,468,456,468,443,431,443,442,460, \
662 419,448,467,449,448,478,428,448,479,455,467,431,450,478,431,491, \
663 480,442,440,458,478,442,442,432,430,467,467,467,469,467,455,479, \
664 453,479,451,478,503,443,454,479,473,476,480,473,477,480,479,489, \
665 491,491,491,480,476,454,503,499,500,502,504,460,491,455,466,491, \
666 480,477,477,476,473,502,502,504,527,490,467,500,489,502,501,503, \
667 515,474,528,480,496,498,492,480,479,504,504,480,492,504,503,522, \
668 515,491,503,540,491,499,503,552,492,503,500,504,502,526,551,528, \
669 526,514,516,528,528,506,551,503,509,491,496,502,503,514,503,501, \
670 548,503,504,552,512,515,516,504,506,509,551,548,502,491,504,552, \
671 520,526,528,551,502,521,526,520,514,523,539,549,503,545,528,538, \
672 504,533,504,520,511,515,528,504,538,516,514,526,514,528,521,599, \
673 551,599,515,520,550,528,526,527,597,548,552,624,535,598,540,528, \
674 534,530,596,532,623,539,617,540,542,551,552,550,617,549,600,624, \
675 624,550,551,547,596,616,622,551,550,551,552,646,646,648,624,647, \
676 622,619,623,622,647,599,600,672,646,647,622,623,624,643,647,647, \
677 672,641,622,599,671,617,646,623,622,650,644,647,648,672,647,648, \
678 622,641,646,647,648,659,624,644,646,672,647,623,647,648,664,645, \
679 644,647,646,622,646,647,668,621,624,647,670,644,626,659,647,624, \
680 648,647,647,635,682,695,641,665,646,634,645,646,672,670,646,693, \
681 624,694,647,648,624,620,660,648,646,660,688,694,695,667,672,666 \
683 #define MPFR_MUL_THRESHOLD 10
684 #define MPFR_EXP_2_THRESHOLD 534
685 #define MPFR_EXP_THRESHOLD 20877
687 /* __mips64? __mips? */
690 /*******************************
691 * Default values of Threshold *
692 *******************************/
693 #ifndef MPFR_MULHIGH_TAB
694 # define MPFR_MULHIGH_TAB -1,-1,-1,-1,-1,-1,-1,-1,0,0,0,0,0,0,0,0,0
696 #ifndef MPFR_SQRHIGH_TAB
697 # define MPFR_SQRHIGH_TAB -1,-1,-1,-1,-1,-1,-1,-1,0,0,0,0,0,0,0,0,0
699 #ifndef MPFR_MUL_THRESHOLD
700 # define MPFR_MUL_THRESHOLD 40
702 #ifndef MPFR_EXP_2_THRESHOLD
703 # define MPFR_EXP_2_THRESHOLD 100
705 #ifndef MPFR_EXP_THRESHOLD
706 # define MPFR_EXP_THRESHOLD 25000