1  /* Various Thresholds of MPFR, not exported.  -*- mode: C -*-
       2  
       3  Copyright 2005-2023 Free Software Foundation, Inc.
       4  
       5  This file is part of the GNU MPFR Library.
       6  
       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 3 of the License, or (at your
      10  option) any later version.
      11  
      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.
      16  
      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.LESSER.  If not, see
      19  https://www.gnu.org/licenses/ or write to the Free Software Foundation, Inc.,
      20  51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. */
      21  
      22  /* mparam tuned for coverage test */
      23  
      24  #define MPFR_MULHIGH_TAB  \
      25   -1,0,-1,-1,-1,-1,-1,-1,0,0,0,0,8,9,10,11, \
      26   10,11,12,13,0,13,14,13,14,15,16,17,16,16,18,19, \
      27   19,19,20,19,28,28,28,28,28,28,28,28,28,28,28,30, \
      28   32,32,32,32,34,34,36,34,36,36,36,36,36,40,38,38, \
      29   40,38,40,40,56,56,56,56,56,56,56,56,56,56,56,56, \
      30   56,56,56,56,56,56,56,56,60,56,60,64,64,64,56,56, \
      31   56,64,64,56,60,64,60,64,64,64,64,68,68,64,68,84, \
      32   84,86,84,84,87,84,87,84,87,84,84,84,84,84,84,84, \
      33   87,87,86,87,87,87,92,93,92,93,93,93,93,99,96,93, \
      34   99,99,99,99,99,98,99,99,102,99,105,104,105,105,108,108, \
      35   110,108,108,111,114,114,116,117,117, \
      36   117,117,117,124,124,124,124, \
      37   124,124,124,132,132,132,132,124,132,\
      38   132,132,132,132,132,132,132, \
      39   140,140,140,140,123,140,124,124,124,\
      40   124,132,128,132,132,132,132, \
      41   132,132,132,132,132,132,140,140,132,140,140,140,140,140,148,147, \
      42   140,148,148,147,148,148,148,156,148,156,156,156,156,156,156,155, \
      43   156,160,156,156,164,164,164,156,164,164,164,164,164,164,164,164, \
      44   164,217,220,220,220,220,220,220,220,220,220,220,220,220,220,220, \
      45   220,220,220,220,220,220,220,220,220,220,224,220,220,220,220,220, \
      46   220,220,220,220,220,220,220,220,220,224,220,220,220,224,220,220, \
      47   220,220,220,224,224,224,224,236,220,236,235,236,235,235,234,236, \
      48   236,235,236,236,235,236,236,236,236,236,236,252,236,251,236,251, \
      49   252,252,252,252,236,235,252,252,252,252,252,251,268,252,252,252, \
      50   268,251,268,268,252,252,268,268,268,268,267,268,268,268,267,268, \
      51   268,252,268,268,268,267,268,268,268,252,268,252,252,252,251,268, \
      52   252,268,252,268,268,268,268,268,267,268,268,268,268,268,268,268, \
      53   268,268,268,268,268,268,332,332,330,268,332,332,332,332,330,331, \
      54   332,332,332,332,344,331,344,344,344,344,344,332,342,332,344,332, \
      55   332,332,344,332,344,344,342,344,344,342,344,344,344,344,344,342, \
      56   344,344,344,344,344,344,344,368,344,342,344,344,368,344,344,344, \
      57   344,344,344,344,344,344,344,344,344,344,344,344,344,344,344,344, \
      58   344,344,368,344,344,368,344,363,368,367,368,368,368,368,368,366, \
      59   366,368,368,368,368,368,368,368,368,368,368,368,368,368,380,368, \
      60   368,368,368,368,368,392,392,392,392,392,392,392,392,392,392,392, \
      61   392,392,392,392,392,392,392,392,392,392,392,392,392,392,392,392, \
      62   392,391,392,392,392,392,392,416,392,416,416,416,416,412,416,392, \
      63   416,416,416,416,416,416,416,416,416,416,416,428,416,416,416,428, \
      64   416,440,416,480,480,480,480,480,480,480,504,503,504,504,504,504, \
      65   504,504,504,503,504,504,504,504,504,504,504,504,504,503,504,504, \
      66   480,504,504,504,504,504,504,480,504,488,504,504,504,504,504,504, \
      67   504,504,504,504,504,504,504,504,504,504,504,504,504,504,504,504, \
      68   504,504,504,504,504,504,504,504,504,504,504,504,504,504,504,504, \
      69   504,504,504,504,504,504,504,504,504,536,536,536,536,536,536,536, \
      70   536,536,536,536,535,536,536,536,536,536,536,536,536,535,536,536, \
      71   536,536,536,535,536,535,536,536,536,536,536,536,536,536,536,536, \
      72   536,568,536,536,536,536,536,536,568,536,535,536,536,536,536,536, \
      73   536,536,536,568,568,568,568,568,568,568,568,568,568,568,568,568, \
      74   568,568,568,568,568,568,568,568,568,664,664,664,664,664,664,664, \
      75   664,663,664,664,664,664,664,664,664,664,664,663,664,664,664,663, \
      76   664,663,664,664,664,664,664,664,664,663,664,664,664,663,664,664, \
      77   664,664,664,664,664,664,664,664,664,664,664,664,664,664,664,664, \
      78   664,664,664,663,664,664,664,664,664,664,664,663,664,664,664,664, \
      79   664,688,664,664,688,688,664,664,688,664,664,664,664,664,664,664, \
      80   664,680,688,688,688,688,688,688,688,688,688,688,688,688,688,688, \
      81   688,688,712,712,688,688,688,712,712,711,712,712,736,728,736,728, \
      82   728,728,736,728,736,736,736,736,728,736,736,736,728,736,736,736, \
      83   735,736,736,736,736,736,736,736,736,736,736,736,736,728,736,736, \
      84   728,736,736,736,736,735,736,736,735,736,736,736,736,735,736,736, \
      85   736,728,736,736,736,736,736,736,736,736,736,736,736,736,736,784, \
      86   736,784,783,736,784,735,784,735,784,735,736,736,736,736,736,736, \
      87   736,736,784,735,736,784,736,784,784,736,736,736,736,784,784,784, \
      88   784,784,784,783,784,784,784,736,784,784,784,784,784,784,784,784, \
      89   784,784,784,784,783,784,784,784,784,784,784,784,784,784,784,784, \
      90   784,784,784,784,784,784,784,784,784,784,784,784,784,784,784,783, \
      91   736,784,784,784,784,784,783,784,784,831,784,832,832,832,832,832 \
      92  
      93  #define MPFR_SQRHIGH_TAB  \
      94   -1,0,0,0,-1,-1,-1,-1,-1,7,7,7,8,9,10,11, \
      95   11,11,11,11,12,13,13,15,15,15,15,15,17,17,19,19, \
      96   19,19,19,19,20,20,23,21,23,23,24,23,27,25,26,27, \
      97   26,27,27,34,34,34,34,34,34,34,34,34,34,38,34,38, \
      98   38,38,38,40,40,42,42,44,42,42,46,42,42,46,46,42, \
      99   42,42,44,44,46,46,46,46,46,46,50,50,50,50,50,50, \
     100   54,54,54,56,54,56,58,58,68,68,68,68,68,68,68,68, \
     101   68,68,68,72,68,68,68,68,68,68,72,72,76,76,76,76, \
     102   76,76,76,76,84,84,84,84,76,84,84,84,84,84,88,92, \
     103   84,84,92,92,84,76,92,88,80,80,80,80,84,84,84,84, \
     104   84,88,84,84,84,92,92,92,92,88,92,96,92,96,92,96, \
     105   92,96,100,104,100,100,96,100,100,100,108,104,117,104,117,108, \
     106   117,117,117,123,122,122,120,117,122,117,122,123,122,123,122,123, \
     107   126,123,126,129,126,129,135,123,132,135,132,135,134,135,134,135, \
     108   138,129,132,123,144,144,134,135,140,129,146,135,132,147,146,147, \
     109   146,135,138,147,138,135,140,141,144,147,146,147,146,147,150,152, \
     110   152,153,152,153,156,153,138,135,140,141,138,144,146,147,147,147, \
     111   147,146,146,146,150,150,150,147,147,159,156,159,158,156,153,159, \
     112   159,159,159,158,201,201,201,201,170,201,170,201,171,201,168,201, \
     113   200,201,201,201,201,200,201,201,200,201,201,201,201,200,201,201, \
     114   201,201,201,201,201,201,201,201,201,201,201,201,201,201,201,201, \
     115   201,201,201,201,201,201,201,201,201,213,201,212,213,225,213,225, \
     116   225,225,225,225,225,225,225,225,225,224,225,225,225,225,224,225, \
     117   225,225,225,225,225,225,225,225,225,225,225,225,237,225,237,225, \
     118   249,249,249,249,249,249,249,249,249,249,248,249,249,249,261,249, \
     119   261,249,261,261,261,249,249,261,260,261,248,261,261,273,248,249, \
     120   249,261,261,249,249,273,249,248,249,249,249,273,261,273,273,249, \
     121   273,249,273,272,273,273,261,273,273,273,273,273,273,261,273,273, \
     122   273,273,273,276,285,273,273,273,273,273,273,273,273,261,285,285, \
     123   285,285,273,261,261,285,273,297,285,273,273,273,272,273,273,273, \
     124   273,273,273,273,273,273,273,276,273,273,273,273,285,273,273,285, \
     125   351,351,351,351,351,351,297,351,351,366,351,351,351,297,366,366, \
     126   351,351,351,351,366,363,351,362,364,366,366,366,364,351,351,351, \
     127   351,351,366,366,351,366,366,366,366,366,363,366,360,363,366,366, \
     128   366,363,366,366,366,366,366,366,366,351,366,366,351,351,351,384, \
     129   366,366,366,366,366,384,366,366,363,364,366,363,366,366,366,363, \
     130   366,366,366,366,366,366,366,366,366,365,366,366,366,384,366,366, \
     131   384,366,384,366,366,366,384,366,366,366,366,366,366,384,366,402, \
     132   393,384,366,402,402,402,384,402,402,402,384,401,402,402,351,402, \
     133   351,351,402,402,402,351,402,402,366,363,365,366,366,363,366,366, \
     134   365,360,366,366,366,351,366,363,365,363,366,366,366,366,363,365, \
     135   366,366,366,366,366,366,366,366,366,366,366,363,366,366,366,363, \
     136   365,366,402,402,366,402,384,384,381,402,384,384,384,384,384,384, \
     137   402,384,387,384,402,401,402,391,402,393,399,402,402,402,401,399, \
     138   401,402,402,402,402,402,402,402,402,402,402,402,402,402,399,402, \
     139   401,402,402,402,402,402,402,402,402,438,402,438,438,437,402,437, \
     140   438,437,438,438,438,441,438,438,438,438,438,438,438,438,437,438, \
     141   438,438,456,435,437,437,438,438,438,435,438,437,438,456,456,438, \
     142   455,456,456,456,474,456,474,456,456,474,456,456,512,456,512,512, \
     143   512,512,512,512,512,512,512,474,512,512,512,512,512,512,512,512, \
     144   512,512,512,512,512,512,512,512,512,512,512,512,512,512,512,512, \
     145   512,512,512,512,512,512,512,536,512,512,536,522,512,536,536,512, \
     146   512,512,512,536,536,524,536,531,536,536,536,536,536,536,536,536, \
     147   535,512,536,534,512,536,512,536,536,535,536,536,535,534,534,536, \
     148   536,536,536,535,536,535,534,536,536,536,536,536,536,534,536,536, \
     149   536,536,536,536,536,560,560,535,536,560,536,535,584,536,536,572, \
     150   583,584,584,584,536,572,560,584,584,584,584,584,583,584,584,584, \
     151   584,583,584,570,584,584,572,584,584,584,584,584,584,583,584,584, \
     152   584,584,584,560,584,584,584,584,584,584,584,584,584,584,584,584, \
     153   584,584,584,584,584,632,696,632,584,582,696,696,696,696,584,696, \
     154   694,696,695,696,695,696,694,695,695,696,696,696,695,696,696,695, \
     155   696,696,695,696,696,696,696,696,695,695,696,695,696,695,696,695, \
     156   696,695,696,695,696,695,696,695,696,696,696,696,696,695,696,696, \
     157   695,696,696,696,696,696,696,696,696,696,696,696,696,696,696,696 \
     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,0,0,0,0,0,0,0,0,0,0,41,0, /*64-79*/ \
     165   0,0,0,0,0,0,0,0,0,0,0,0,0,56,56,56, /*80-95*/ \
     166   56,56,60,58,59,56,59,59,56,59,60,58,56,64,60,60, /*96-111*/ \
     167   63,64,64,60,63,60,64,64,64,66,67,66,68,66,72,66, /*112-127*/ \
     168   67,67,71,68,68,71,71,70,76,74,74,76,76,72,75,80, /*128-143*/ \
     169   76,76,76,76,78,76,79,77,80,78,79,80,82,80,83,83, /*144-159*/ \
     170   83,85,86,91,85,88,87,85,87,90,112,91,112,89,112,112, /*160-175*/ \
     171   112,112,112,112,112,112,112,112,112,112,112,112,112,112,112,112, /*176-191*/ \
     172   112,112,118,112,112,112,112,112,112,112,120,120,112,112,112,120, /*192-207*/ \
     173   112,112,112,112,112,120,112,119,112,112,114,112,124,120,120,116, /*208-223*/ \
     174   120,118,123,128,124,120,120,123,120,128,128,120,128,134,128,127, /*224-239*/ \
     175   126,128,136,134,136,128,126,127,136,128,134,136,136,128,136,132, /*240-255*/ \
     176   136,136,134,132,136,136,135,136,136,134,136,136,136,140,144,142, /*256-271*/ \
     177   143,144,144,143,144,143,150,144,144,143,144,144,156,144,152,151, /*272-287*/ \
     178   166,149,152,152,156,152,168,160,152,168,168,168,152,160,168,168, /*288-303*/ \
     179   168,172,166,168,168,180,166,166,165,165,168,168,168,164,174,167, /*304-319*/ \
     180   168,166,174,168,168,168,174,176,180,172,174,182,180,172,184,178, /*320-335*/ \
     181   184,183,184,186,182,182,183,185,174,224,176,224,224,224,196,191, /*336-351*/ \
     182   192,224,224,224,224,224,224,224,224,224,224,224,224,224,224,224, /*352-367*/ \
     183   224,224,224,224,224,224,224,224,224,224,228,224,224,224,233,224, /*368-383*/ \
     184   224,224,224,240,224,232,224,224,224,224,224,224,224,224,224,224, /*384-399*/ \
     185   224,224,224,224,228,224,224,224,224,224,224,224,224,225,224,224, /*400-415*/ \
     186   224,224,224,224,224,224,224,224,233,232,224,240,224,240,224,223, /*416-431*/ \
     187   224,224,224,224,224,232,224,232,228,233,224,224,228,240,230,240, /*432-447*/ \
     188   240,240,242,239,240,247,240,239,248,240,239,242,256,232,256,254, /*448-463*/ \
     189   256,256,256,256,256,256,256,256,256,240,264,256,264,264,256,263, /*464-479*/ \
     190   272,272,256,248,254,272,256,256,254,256,256,255,254,272,272,256, /*480-495*/ \
     191   256,272,264,256,255,271,272,264,256,272,272,272,272,256,272,272, /*496-511*/ \
     192   278,280,272,272,280,287,280,280,287,280,270,272,272,264,272,272, /*512-527*/ \
     193   271,269,270,280,272,272,271,272,272,270,272,272,272,272,288,273, /*528-543*/ \
     194   278,276,288,286,280,288,287,285,280,286,288,280,280,288,288,296, /*544-559*/ \
     195   288,288,288,289,288,288,287,287,288,296,288,288,296,302,312,294, /*560-575*/ \
     196   310,304,303,304,304,312,303,320,304,300,312,296,305,310,304,304, /*576-591*/ \
     197   304,302,303,312,302,304,304,304,302,336,304,304,328,311,312,328, /*592-607*/ \
     198   310,312,316,336,336,320,312,320,336,320,319,336,336,328,328,325, /*608-623*/ \
     199   320,328,328,336,320,336,320,324,336,348,320,336,343,320,336,336, /*624-639*/ \
     200   336,334,335,344,341,328,342,336,328,335,336,336,336,336,335,336, /*640-655*/ \
     201   336,343,336,344,336,336,348,360,344,359,344,360,360,360,344,348, /*656-671*/ \
     202   344,347,348,360,348,360,360,360,360,367,368,368,448,360,448,372, /*672-687*/ \
     203   360,360,448,368,448,448,448,448,448,448,448,448,448,448,448,448, /*688-703*/ \
     204   448,448,448,448,448,448,448,448,448,448,448,448,448,448,448,448, /*704-719*/ \
     205   448,448,448,448,448,448,448,448,448,448,448,448,448,448,448,448, /*720-735*/ \
     206   448,448,448,448,448,448,448,448,448,448,448,448,448,448,448,448, /*736-751*/ \
     207   448,448,448,448,448,448,448,448,448,448,448,448,448,448,448,448, /*752-767*/ \
     208   448,448,448,448,448,448,448,448,448,448,448,448,448,467,448,468, /*768-783*/ \
     209   448,468,448,466,448,464,468,448,464,464,448,448,448,448,464,448, /*784-799*/ \
     210   480,448,448,448,448,448,448,448,448,448,448,448,448,448,448,448, /*800-815*/ \
     211   448,448,448,448,448,448,448,448,448,448,480,448,448,448,447,448, /*816-831*/ \
     212   448,448,448,464,448,448,448,448,448,448,448,448,448,447,448,448, /*832-847*/ \
     213   448,448,448,448,447,448,448,448,448,456,448,448,448,456,448,448, /*848-863*/ \
     214   448,448,448,448,448,448,448,448,448,448,464,464,448,467,448,448, /*864-879*/ \
     215   448,448,448,464,448,447,468,464,448,464,464,448,448,468,472,472, /*880-895*/ \
     216   466,462,464,469,468,464,463,480,472,479,496,480,472,512,472,479, /*896-911*/ \
     217   512,464,495,512,496,495,480,496,488,472,492,512,512,480,512,479, /*912-927*/ \
     218   512,480,504,480,480,496,512,480,472,480,512,496,480,512,536,496, /*928-943*/ \
     219   512,512,512,512,496,512,512,515,496,480,512,496,512,480,510,543, /*944-959*/ \
     220   512,496,512,496,528,528,496,512,512,528,527,496,512,508,512,528, /*960-975*/ \
     221   512,512,512,512,512,512,512,512,528,528,512,512,512,512,528,528, /*976-991*/ \
     222   512,528,526,527,528,511,508,511,512,512,528,527,528,528,510,512, /*992-1007*/ \
     223   528,544,544,536,536,520,511,536,536,543,512,528,544,512,542,543 /*1008-1023*/ \
     224  
     225