1/* Various Thresholds of MPFR, not exported.  -*- mode: C -*-
2
3Copyright 2005-2023 Free Software Foundation, Inc.
4
5This file is part of the GNU MPFR Library.
6
7The GNU MPFR Library is free software; you can redistribute it and/or modify
8it under the terms of the GNU Lesser General Public License as published by
9the Free Software Foundation; either version 3 of the License, or (at your
10option) any later version.
11
12The GNU MPFR Library is distributed in the hope that it will be useful, but
13WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
14or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU Lesser General Public
15License for more details.
16
17You should have received a copy of the GNU Lesser General Public License
18along with the GNU MPFR Library; see the file COPYING.LESSER.  If not, see
19https://www.gnu.org/licenses/ or write to the Free Software Foundation, Inc.,
2051 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. */
21
22/* Generated by MPFR's tuneup.c, 2018-02-22, gcc 7.3.0 */
23/* gcc202.fsffrance.org (UltraSparc T5 (Niagara5)) with gmp snapshot
24   gmp-6.1.99-20180221 (gmp-6.1.2 is broken on this machine),
25   which defines -m64 -mptr64 -mcpu=niagara4 -Wa,-Av9d */
26
27#define MPFR_MULHIGH_TAB  \
28 -1,0,0,0,0,0,-1,0,0,0,-1,0,0,0,-1,0, \
29 0,0,0,14,14,15,16,15,18,18,16,18,18,19,20,22, \
30 22,23,22,23,26,27,26,27,26,27,27,27,27,26,26,27, \
31 27,29,30,27,32,33,34,35,36,37,38,38,40,40,40,44, \
32 44,44,46,46,44,44,46,46,44,44,46,46,44,53,52,54, \
33 52,53,54,54,52,54,54,54,52,53,54,54,54,54,58,54, \
34 58,58,58,64,72,72,70,72,72,72,72,72,76,76,72,76, \
35 76,76,76,76,76,76,76,72,88,88,76,88,88,88,88,88, \
36 88,92,92,92,88,92,88,88,88,92,92,92,88,92,92,96, \
37 104,108,104,108,92,108,104,104,104,108,108,108,108,108,108,108, \
38 108,108,104,108,108,108,108,108,108,106,106,108,108,108,108,108, \
39 108,108,108,116,108,108,108,108,116,108,116,108,108,116,108,108, \
40 116,108,108,108,116,112,116,116,116,136,144,144,136,148,136,144, \
41 136,143,144,152,148,148,144,144,152,152,144,144,148,148,152,144, \
42 151,152,144,144,152,144,152,144,150,152,152,152,172,152,148,176, \
43 176,176,176,176,176,176,176,176,176,176,176,184,184,184,184,184, \
44 184,184,184,176,184,176,176,176,184,184,184,184,184,184,184,184, \
45 184,183,184,184,184,184,184,184,184,184,184,213,184,184,216,213, \
46 213,184,213,219,213,207,213,213,213,212,213,213,213,216,216,216, \
47 225,219,219,225,213,225,216,225,225,225,228,225,225,213,213,237, \
48 237,225,225,237,237,261,261,237,237,261,261,259,261,261,225,261, \
49 261,261,261,225,261,255,260,261,261,261,261,261,261,264,264,264, \
50 261,273,264,273,273,273,273,273,273,273,272,273,273,273,273,273, \
51 273,273,273,273,272,273,273,273,273,273,273,273,273,261,273,273, \
52 273,273,273,273,273,264,264,264,271,273,273,267,273,273,273,273, \
53 273,272,273,273,273,272,273,273,273,273,273,273,273,272,273,273, \
54 273,276,273,273,272,273,273,273,273,273,273,273,273,273,273,273, \
55 273,273,273,273,273,273,318,273,318,273,318,318,318,273,273,273, \
56 318,318,318,318,318,318,318,318,318,318,318,318,318,317,318,318, \
57 318,318,317,318,318,318,317,318,318,318,318,318,318,318,318,318, \
58 342,342,318,342,318,342,342,342,342,318,318,342,342,342,342,342, \
59 342,342,342,342,342,342,342,342,342,342,342,342,342,342,424,424, \
60 424,424,424,424,424,424,424,424,424,400,408,408,424,408,400,424, \
61 424,424,400,423,424,424,424,424,424,424,424,424,424,424,424,423, \
62 424,424,423,424,424,424,424,424,424,424,424,424,424,424,424,424, \
63 424,424,424,424,424,424,424,423,423,424,424,424,423,424,424,424, \
64 423,424,424,424,424,424,424,424,424,424,424,424,424,424,424,424, \
65 424,424,424,424,424,424,424,424,424,424,424,456,424,424,456,456, \
66 456,456,456,456,456,456,456,456,456,456,456,456,456,456,456,456, \
67 456,456,456,456,456,456,456,456,456,456,456,456,456,456,456,456, \
68 456,455,456,456,455,456,456,456,456,456,456,455,456,455,456,456, \
69 456,488,487,488,488,488,488,488,488,488,488,487,488,488,488,488, \
70 456,456,488,488,488,488,488,552,552,456,552,552,552,560,552,568, \
71 552,560,560,552,551,560,560,568,559,560,560,568,559,568,560,583, \
72 567,567,551,584,600,568,568,599,600,600,600,567,568,584,600,584, \
73 600,568,583,584,560,568,600,568,583,600,600,584,568,584,583,584, \
74 584,584,584,584,584,584,584,584,600,600,600,600,583,584,599,584, \
75 600,600,600,600,600,600,584,600,597,598,599,600,600,598,600,599, \
76 600,598,599,600,600,600,600,584,600,599,600,599,600,599,615,600, \
77 616,600,600,616,600,599,600,599,600,600,600,599,600,616,648,648, \
78 632,648,648,648,648,648,680,656,680,680,680,680,680,680,680,680, \
79 696,696,680,680,696,696,696,696,696,679,696,695,696,680,696,696, \
80 696,678,696,696,696,696,696,680,680,680,688,688,680,680,680,712, \
81 696,696,695,696,696,696,696,696,696,728,720,728,696,728,696,696, \
82 727,728,727,728,712,728,728,696,696,696,728,720,728,728,727,728, \
83 728,728,727,728,728,728,727,728,728,728,728,727,728,728,728,728, \
84 728,728,727,727,728,728,728,728,728,728,728,727,728,728,728,728, \
85 728,728,728,728,728,728,728,728,728,728,728,728,728,727,728,727, \
86 728,728,728,728,726,727,728,728,728,727,728,728,726,727,728,728, \
87 728,728,728,728,728,727,728,726,727,728,728,728,728,727,728,728, \
88 727,712,728,728,720,726,727,728,728,728,728,728,728,727,727,824, \
89 824,728,727,728,728,727,728,728,728,727,728,824,728,824,824,824, \
90 824,856,808,856,824,824,824,824,824,856,855,856,855,856,856,856, \
91 856,856,856,856,855,856,856,856,855,856,855,856,856,856,856,856 \
92
93#define MPFR_SQRHIGH_TAB  \
94 -1,0,0,0,0,0,-1,0,0,0,-1,7,8,8,10,10, \
95 10,10,11,11,12,12,14,14,14,14,16,16,16,16,18,18, \
96 18,18,20,20,20,20,22,22,22,24,24,26,26,24,26,26, \
97 26,26,28,28,28,30,30,29,30,31,32,31,32,32,34,34, \
98 34,34,36,36,36,36,38,38,38,38,40,39,40,40,42,42, \
99 44,42,44,44,46,44,46,46,46,46,48,48,48,50,54,49, \
100 52,50,52,52,54,54,58,56,58,56,58,58,56,58,58,60, \
101 58,58,59,60,60,60,62,72,62,62,66,64,64,66,70,72, \
102 72,72,72,72,72,72,70,72,72,72,72,76,72,76,76,76, \
103 76,76,76,76,80,76,78,80,80,80,80,80,80,84,84,84, \
104 84,84,88,84,84,84,88,88,88,88,88,88,88,88,92,92, \
105 92,92,92,92,92,92,96,100,96,96,96,96,96,96,100,100, \
106 100,100,104,104,104,104,104,104,104,104,104,112,120,104,112,119, \
107 108,119,124,108,108,108,120,112,112,112,132,112,124,112,124,119, \
108 120,119,118,119,117,117,119,117,124,120,130,120,120,120,126,125, \
109 124,128,125,124,129,131,126,126,128,136,130,128,131,136,130,130, \
110 131,131,137,131,136,134,137,136,137,136,138,142,136,138,137,137, \
111 141,138,140,142,144,142,143,142,148,142,144,144,147,154,154,146, \
112 147,149,149,154,160,148,156,160,154,153,152,153,152,154,155,155, \
113 160,154,155,155,156,168,159,161,166,166,160,160,160,162,162,161, \
114 162,166,166,172,173,166,167,166,172,166,167,167,178,174,178,172, \
115 174,171,172,172,173,174,178,174,179,180,178,179,184,177,179,178, \
116 178,180,182,180,180,185,190,184,184,184,190,213,184,213,190,213, \
117 186,213,213,213,213,213,190,213,213,213,213,213,213,213,213,213, \
118 213,213,213,213,216,213,213,213,225,213,213,213,225,225,225,213, \
119 213,225,213,213,213,225,225,225,237,237,237,237,225,237,225,225, \
120 225,237,237,237,237,237,228,225,237,237,237,237,237,237,237,237, \
121 237,237,237,237,237,249,240,225,225,225,225,225,228,225,237,237, \
122 234,237,237,237,237,237,237,237,237,237,240,233,237,245,237,237, \
123 237,237,237,249,242,249,249,243,244,249,249,249,249,261,249,261, \
124 249,248,256,249,249,259,249,261,249,249,249,249,249,252,252,255, \
125 261,257,261,257,257,261,261,261,261,261,261,261,261,261,261,261, \
126 261,261,261,261,261,261,273,273,269,273,268,273,273,273,273,273, \
127 273,273,273,273,273,273,273,273,273,273,273,273,273,273,273,273, \
128 278,285,285,285,285,285,285,285,285,285,285,285,285,285,288,288, \
129 285,285,285,285,285,285,297,297,297,297,296,297,297,297,297,297, \
130 297,297,297,292,297,293,295,296,297,297,297,297,297,297,303,297, \
131 321,306,300,300,304,302,303,305,308,309,307,309,309,309,307,309, \
132 309,309,309,321,309,321,319,319,321,321,319,321,321,321,321,321, \
133 321,321,321,316,321,321,321,320,321,321,321,320,321,321,321,321, \
134 329,333,333,328,333,333,333,332,333,333,333,333,333,333,333,333, \
135 333,333,342,333,333,333,333,333,342,342,342,354,342,342,342,342, \
136 342,341,342,342,342,342,342,342,342,342,348,354,354,348,348,426, \
137 354,354,426,354,426,353,354,354,353,354,354,354,354,354,354,354, \
138 354,354,450,365,365,450,449,366,365,366,366,366,450,425,426,450, \
139 426,426,426,425,366,426,426,426,426,424,450,426,426,426,426,426, \
140 425,426,450,424,425,426,426,450,449,450,450,449,450,450,450,449, \
141 450,449,449,450,449,450,449,450,449,450,450,450,448,450,426,449, \
142 425,450,426,450,425,426,426,426,426,426,426,426,425,426,426,426, \
143 426,426,426,426,425,426,450,448,449,450,450,449,450,450,450,450, \
144 450,450,450,450,450,450,450,450,450,450,450,450,450,450,450,450, \
145 450,449,450,450,450,450,449,450,448,449,450,450,449,448,450,450, \
146 448,450,450,450,450,450,449,450,450,448,448,450,450,448,449,450, \
147 450,449,450,449,450,450,450,449,450,450,450,449,450,450,450,450, \
148 450,450,450,450,450,450,450,450,450,450,450,450,449,450,450,450, \
149 450,450,450,450,450,450,450,450,449,450,450,450,450,450,450,450, \
150 488,450,488,488,488,487,488,488,568,568,560,560,599,600,567,568, \
151 568,600,568,568,568,568,568,568,568,568,568,568,567,568,567,568, \
152 568,568,567,568,568,567,568,568,568,568,568,568,567,568,599,567, \
153 600,568,599,600,568,600,600,600,568,600,600,600,599,599,600,600, \
154 600,599,568,600,600,600,600,600,599,600,600,600,568,568,600,598, \
155 600,600,568,600,600,600,600,599,600,599,600,598,600,599,600,600, \
156 600,599,600,599,600,600,600,600,600,600,600,600,600,599,600,600, \
157 600,598,600,600,632,599,632,631,632,632,631,632,631,632,632,632 \
158
159#define MPFR_DIVHIGH_TAB  \
160 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /*0-15*/ \
161 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /*16-31*/ \
162 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /*32-47*/ \
163 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /*48-63*/ \
164 0,0,0,0,37,0,37,37,44,41,43,44,44,45,45,44, /*64-79*/ \
165 44,45,45,45,45,51,51,52,51,53,52,49,49,52,50,50, /*80-95*/ \
166 51,50,51,52,53,52,53,56,58,54,57,59,59,66,64,66, /*96-111*/ \
167 64,75,74,68,72,72,72,72,72,72,74,72,72,68,72,67, /*112-127*/ \
168 75,72,80,88,72,88,88,88,86,88,88,72,88,88,88,88, /*128-143*/ \
169 88,84,88,88,88,88,88,88,84,90,88,88,88,84,88,87, /*144-159*/ \
170 88,91,92,91,88,89,91,88,90,88,92,101,90,100,98,104, /*160-175*/ \
171 104,104,102,104,104,104,104,106,104,104,104,104,104,104,100,100, /*176-191*/ \
172 106,108,107,105,102,106,108,104,104,108,104,104,116,104,120,107, /*192-207*/ \
173 112,116,112,114,114,116,116,116,116,116,128,136,116,144,116,128, /*208-223*/ \
174 124,132,128,136,132,136,144,148,136,144,144,144,152,144,144,144, /*224-239*/ \
175 148,148,144,148,144,144,144,144,144,148,160,132,135,136,136,136, /*240-255*/ \
176 144,136,144,176,144,144,148,148,152,152,152,144,148,152,176,148, /*256-271*/ \
177 176,144,144,140,150,176,152,176,176,176,148,144,148,144,176,152, /*272-287*/ \
178 176,169,176,176,176,176,176,180,180,176,175,176,176,176,176,176, /*288-303*/ \
179 180,176,175,176,182,176,176,176,175,176,176,175,176,176,180,176, /*304-319*/ \
180 180,183,184,176,176,176,176,176,176,175,176,176,176,176,176,176, /*320-335*/ \
181 176,182,200,180,176,176,186,180,180,176,180,200,184,180,184,188, /*336-351*/ \
182 180,180,200,208,204,180,192,212,196,208,216,184,208,208,208,213, /*352-367*/ \
183 208,208,208,207,208,215,208,208,212,208,212,215,208,212,210,208, /*368-383*/ \
184 208,208,210,207,208,208,216,207,208,208,207,208,208,208,208,216, /*384-399*/ \
185 215,215,215,215,214,216,216,208,208,216,216,232,232,214,224,216, /*400-415*/ \
186 230,216,232,224,231,216,232,224,232,232,232,232,232,230,232,232, /*416-431*/ \
187 232,240,232,231,232,232,240,228,231,232,232,232,232,232,231,256, /*432-447*/ \
188 232,264,232,232,232,272,256,232,256,264,232,272,272,288,272,288, /*448-463*/ \
189 288,280,272,272,288,271,256,296,288,288,288,288,296,288,296,288, /*464-479*/ \
190 296,296,288,304,296,296,288,303,288,304,296,288,288,288,296,296, /*480-495*/ \
191 296,304,296,264,300,288,288,303,288,296,304,304,296,288,288,304, /*496-511*/ \
192 288,300,288,296,296,296,336,352,352,296,288,288,304,288,288,296, /*512-527*/ \
193 303,272,296,287,352,288,296,352,352,352,304,288,352,296,352,352, /*528-543*/ \
194 352,304,288,360,288,288,352,296,352,352,296,352,288,288,296,296, /*544-559*/ \
195 288,288,288,304,296,304,304,352,368,304,304,352,352,296,312,320, /*560-575*/ \
196 304,304,336,351,360,352,304,352,304,352,351,352,352,352,351,352, /*576-591*/ \
197 352,352,352,352,352,350,352,352,352,352,368,352,360,360,352,352, /*592-607*/ \
198 352,352,351,352,352,352,352,352,360,352,352,352,352,367,352,352, /*608-623*/ \
199 352,352,368,352,356,368,360,352,352,360,352,368,368,352,368,368, /*624-639*/ \
200 360,352,368,360,352,352,352,350,368,352,352,368,352,352,352,364, /*640-655*/ \
201 359,352,351,352,360,352,352,352,352,352,352,352,352,352,359,351, /*656-671*/ \
202 352,352,368,352,352,352,352,352,352,350,352,352,352,349,351,352, /*672-687*/ \
203 352,352,360,360,352,360,360,368,352,364,368,352,360,368,362,368, /*688-703*/ \
204 360,360,366,367,360,360,360,359,367,368,368,367,368,368,361,367, /*704-719*/ \
205 368,368,367,368,368,368,365,368,367,368,367,367,368,368,416,432, /*720-735*/ \
206 373,432,432,399,424,424,432,432,414,432,414,424,432,414,424,416, /*736-751*/ \
207 400,424,424,424,424,424,423,426,424,432,422,423,424,416,426,432, /*752-767*/ \
208 424,426,430,432,424,424,426,414,424,432,414,432,416,416,416,417, /*768-783*/ \
209 414,414,416,416,416,414,416,432,426,432,432,415,432,414,432,424, /*784-799*/ \
210 432,424,418,414,424,424,425,414,425,416,412,414,416,424,422,430, /*800-815*/ \
211 432,424,424,430,432,432,424,430,416,423,416,424,432,425,432,426, /*816-831*/ \
212 432,426,432,432,432,424,428,432,431,431,432,432,432,448,432,426, /*832-847*/ \
213 448,432,432,432,456,456,462,462,448,464,448,462,432,464,461,456, /*848-863*/ \
214 456,464,462,462,456,461,462,462,462,462,463,464,462,462,460,464, /*864-879*/ \
215 528,456,464,462,460,461,462,460,464,464,464,528,544,544,464,528, /*880-895*/ \
216 528,462,528,528,512,544,544,528,528,544,544,544,544,528,542,544, /*896-911*/ \
217 544,544,544,544,544,528,512,544,512,542,545,528,544,542,528,544, /*912-927*/ \
218 544,544,543,528,544,541,542,542,528,544,544,543,545,544,544,544, /*928-943*/ \
219 544,545,542,544,544,546,542,544,544,544,544,546,542,544,544,544, /*944-959*/ \
220 542,544,544,543,544,543,542,544,576,544,544,544,576,576,544,543, /*960-975*/ \
221 544,543,544,544,544,544,576,544,545,576,576,541,592,544,544,576, /*976-991*/ \
222 576,575,576,544,543,544,576,527,576,528,608,576,544,608,544,544, /*992-1007*/ \
223 542,544,544,544,544,539,608,608,543,542,544,608,543,544,528,544 /*1008-1023*/ \
224
225#define MPFR_MUL_THRESHOLD 13 /* limbs */
226#define MPFR_SQR_THRESHOLD 13 /* limbs */
227#define MPFR_DIV_THRESHOLD 4 /* limbs */
228#define MPFR_EXP_2_THRESHOLD 1712 /* bits */
229#define MPFR_EXP_THRESHOLD 3213 /* bits */
230#define MPFR_SINCOS_THRESHOLD 21539 /* bits */
231#define MPFR_AI_THRESHOLD1 -6778 /* threshold for negative input of mpfr_ai */
232#define MPFR_AI_THRESHOLD2 549
233#define MPFR_AI_THRESHOLD3 8223
234/* Tuneup completed successfully, took 686 seconds */
235