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  /* Generated by MPFR's tuneup.c, 2018-02-22, gcc 7.3.0 */
      23  /* tomate.loria.fr Intel(R) Core(TM) i5-4590 CPU @ 3.30GHz with GMP 6.1.2,
      24     where GMP defines -mtune=haswell */
      25  
      26  #define MPFR_MULHIGH_TAB  \
      27   -1,0,-1,0,0,0,0,0,0,0,0,0,0,0,0,0, \
      28   0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, \
      29   0,0,0,0,0,0,0,0,0,24,26,28,28,28,28,28, \
      30   30,30,32,32,30,32,30,34,36,36,38,36,38,38,44,44, \
      31   44,44,44,44,44,48,44,44,48,44,48,52,52,48,56,56, \
      32   56,56,56,56,56,56,56,56,60,56,60,64,64,64,60,64, \
      33   64,68,64,64,64,64,72,68,68,72,63,72,64,64,68,64, \
      34   81,72,72,84,81,81,86,81,81,81,87,87,81,87,87,84, \
      35   80,84,87,90,87,86,93,87,92,93,93,96,96,93,96,93, \
      36   96,93,104,104,105,105,105,105,104,105,105,108,105,108,104,108, \
      37   104,108,111,104,117,108,114,116,116,116,117,114,116,129,117,114, \
      38   128,129,129,132,132,134,132,117,141,141,132,140,141,132,138,141, \
      39   141,141,141,144,140,141,138,141,144,144,141,144,141,141,140,141, \
      40   141,141,140,141,141,141,144,165,144,165,165,164,163,165,164,164, \
      41   164,168,165,168,164,164,164,165,165,164,165,168,168,165,164,165, \
      42   164,164,164,176,165,177,164,165,168,168,165,165,168,168,168,174, \
      43   177,176,177,177,177,189,188,189,177,180,177,180,189,187,188,188, \
      44   189,189,189,189,189,188,189,192,220,192,220,220,219,220,220,219, \
      45   220,219,220,220,220,219,220,220,219,220,220,219,220,219,220,220, \
      46   220,220,220,219,220,220,220,224,219,224,220,234,234,236,236,236, \
      47   236,235,235,240,235,236,236,236,236,236,235,236,236,251,235,236, \
      48   236,252,252,252,252,252,252,252,236,251,251,256,252,252,252,252, \
      49   250,251,252,252,251,252,251,252,284,252,264,280,251,252,252,284, \
      50   252,284,284,284,284,284,284,283,284,284,284,284,284,283,284,284, \
      51   283,284,284,282,284,284,283,306,306,306,306,306,306,330,330,330, \
      52   330,330,330,330,330,330,330,329,330,329,330,329,330,330,330,330, \
      53   330,330,330,330,330,330,330,330,330,330,330,330,330,330,330,330, \
      54   330,330,330,330,329,330,354,330,330,330,330,330,354,354,354,353, \
      55   354,354,354,353,354,330,354,354,330,354,354,330,330,354,330,378, \
      56   330,378,378,330,330,330,378,354,378,378,354,378,378,354,378,377, \
      57   378,378,377,378,354,354,354,354,354,354,354,378,354,354,378,378, \
      58   378,378,378,378,378,378,378,378,378,378,378,378,378,378,378,440, \
      59   440,439,439,378,440,440,440,440,440,440,440,439,440,439,440,440, \
      60   439,440,440,440,440,440,440,440,440,440,440,440,440,439,440,439, \
      61   439,440,439,440,440,440,440,440,440,440,440,440,440,440,440,440, \
      62   440,440,440,440,440,440,439,440,440,440,440,440,440,440,439,440, \
      63   440,440,440,472,472,439,440,472,471,472,440,439,440,440,440,472, \
      64   472,440,472,472,471,472,472,472,472,472,472,472,472,472,472,472, \
      65   504,472,471,504,504,504,472,504,472,472,470,472,472,472,472,472, \
      66   504,472,472,504,504,504,503,504,504,504,504,503,504,504,503,504, \
      67   504,504,504,504,504,503,504,504,504,504,504,503,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,503,503,504,504,504,504,536,536,536, \
      70   568,504,568,568,567,568,568,568,567,568,568,567,568,568,568,568, \
      71   566,568,568,568,567,568,568,568,567,568,568,568,568,568,568,568, \
      72   568,568,568,568,568,568,568,568,567,568,568,568,568,568,568,568, \
      73   568,568,568,568,568,567,568,567,568,568,566,568,568,568,568,568, \
      74   640,568,640,639,640,640,568,568,640,640,640,640,640,640,640,640, \
      75   639,640,640,640,640,640,640,640,639,640,640,639,640,640,640,640, \
      76   640,639,640,640,640,640,640,640,640,640,640,638,640,640,640,640, \
      77   640,640,640,640,640,640,640,640,640,640,640,640,664,664,664,639, \
      78   639,640,664,640,640,639,640,639,640,640,640,639,640,640,640,640, \
      79   640,640,640,639,640,688,688,640,640,688,688,640,687,688,664,663, \
      80   640,664,688,688,688,688,663,664,736,663,664,664,663,664,712,664, \
      81   664,664,688,664,712,712,736,640,688,736,736,736,736,736,736,736, \
      82   688,736,736,736,736,736,736,736,735,736,736,736,736,736,736,736, \
      83   736,736,736,736,736,736,736,736,735,735,736,736,736,735,736,736, \
      84   735,736,736,736,735,736,736,735,735,736,735,736,736,736,735,736, \
      85   736,736,736,736,736,736,735,736,735,736,736,736,736,736,736,736, \
      86   736,736,735,736,736,736,736,736,736,736,736,736,736,736,735,736, \
      87   736,736,736,735,736,736,736,735,736,736,760,736,734,736,736,736, \
      88   832,736,784,760,830,760,832,760,736,832,832,832,736,832,832,832, \
      89   832,832,832,831,832,832,831,831,832,831,831,832,832,831,832,831, \
      90   832,832,832,832,832,831,736,831,832,832,832,832,832,831,831,832 \
      91  
      92  #define MPFR_SQRHIGH_TAB  \
      93   -1,-1,-1,-1,-1,-1,-1,-1,-1,7,8,7,8,8,9,9, \
      94   10,10,12,12,12,12,13,13,14,15,15,16,17,17,18,19, \
      95   19,19,19,20,21,22,22,23,23,23,23,23,24,24,26,25, \
      96   26,27,28,27,29,29,31,29,31,30,33,32,33,33,33,33, \
      97   40,38,40,40,40,44,42,40,42,44,44,46,44,42,48,48, \
      98   48,48,50,52,50,50,48,50,50,52,52,56,54,56,58,55, \
      99   56,58,58,61,60,61,62,64,64,56,66,68,60,62,58,72, \
     100   72,76,76,76,76,72,80,80,80,72,76,76,76,76,76,80, \
     101   88,80,76,76,80,76,76,80,88,76,79,84,84,88,84,88, \
     102   85,88,92,92,84,92,92,90,91,92,96,92,94,92,94,100, \
     103   96,92,92,94,85,100,92,96,88,100,96,96,100,91,94,92, \
     104   100,94,95,96,98,96,101,100,100,117,100,100,112,100,104,108, \
     105   106,108,111,117,117,117,126,123,120,120,120,117,126,126,123,129, \
     106   128,128,128,128,126,131,128,129,132,129,132,135,129,137,136,135, \
     107   138,135,132,141,136,144,140,144,141,138,150,147,147,147,142,138, \
     108   146,138,147,144,144,150,152,144,147,147,147,162,156,164,165,162, \
     109   158,152,162,156,161,162,168,156,168,170,168,171,167,170,171,168, \
     110   174,175,174,171,159,164,170,170,150,183,176,176,168,168,177,180, \
     111   176,170,160,174,176,171,177,171,176,176,177,183,176,174,177,174, \
     112   174,177,176,183,176,177,180,177,180,175,176,183,195,180,194,182, \
     113   183,189,192,192,189,177,183,189,195,192,189,201,195,195,186,195, \
     114   201,201,201,200,200,198,225,219,224,225,204,213,213,225,213,222, \
     115   222,219,227,221,222,212,231,222,228,225,224,224,228,227,228,240, \
     116   225,219,225,228,228,224,224,227,237,227,228,228,225,225,225,228, \
     117   228,237,231,237,231,236,249,237,249,243,240,240,237,249,249,243, \
     118   249,237,261,260,261,261,249,260,249,248,261,249,261,261,261,261, \
     119   261,261,260,261,264,272,273,273,236,237,273,261,273,237,273,261, \
     120   273,273,273,273,264,240,273,261,273,261,273,273,273,273,261,248, \
     121   249,267,273,273,261,261,261,261,261,264,273,264,261,273,270,272, \
     122   273,272,273,276,273,272,273,267,273,273,272,276,285,285,285,285, \
     123   276,276,285,285,283,288,285,296,296,285,285,273,285,294,297,273, \
     124   297,297,296,273,309,297,273,285,297,296,285,308,309,272,285,297, \
     125   297,276,309,297,297,321,297,296,297,295,285,297,297,297,297,295, \
     126   297,297,309,297,309,309,297,296,321,295,307,321,321,312,348,309, \
     127   348,348,309,348,309,347,348,348,324,321,321,363,319,347,364,356, \
     128   363,348,333,363,361,348,348,364,364,347,348,362,364,364,380,346, \
     129   364,348,347,347,364,348,364,362,364,363,362,364,364,364,363,364, \
     130   364,371,364,364,364,363,364,364,363,380,363,377,372,380,380,364, \
     131   364,379,371,379,380,364,380,380,379,380,379,380,364,384,363,364, \
     132   395,396,395,396,380,395,380,378,396,396,378,396,387,396,396,395, \
     133   379,410,396,395,396,395,396,395,411,426,412,412,396,425,396,426, \
     134   412,409,410,411,410,450,425,426,394,450,462,419,426,410,431,426, \
     135   425,426,432,438,432,450,432,426,432,450,438,449,450,450,456,450, \
     136   432,456,456,450,450,461,462,456,474,450,462,450,450,450,474,474, \
     137   450,474,474,474,474,474,473,474,474,474,462,474,474,474,474,474, \
     138   546,474,474,474,474,474,474,474,486,498,498,498,498,474,497,497, \
     139   498,498,498,474,498,522,521,522,522,498,522,522,521,520,521,522, \
     140   522,521,522,522,522,522,522,522,522,522,522,522,522,522,522,522, \
     141   522,522,522,522,522,545,546,546,546,546,546,545,546,544,522,546, \
     142   546,546,567,568,520,567,522,545,567,546,568,545,568,568,568,546, \
     143   568,545,546,545,546,546,546,568,568,568,568,567,568,568,568,567, \
     144   568,568,568,568,568,568,584,568,567,568,600,568,568,599,600,600, \
     145   568,600,600,600,600,600,600,567,600,600,568,600,599,600,600,600, \
     146   600,600,600,600,600,600,600,600,600,600,600,600,600,600,632,600, \
     147   600,600,632,632,616,632,600,600,600,631,600,632,600,616,600,632, \
     148   632,600,600,632,632,600,632,600,632,600,600,600,600,600,600,599, \
     149   600,599,600,600,600,599,600,631,600,600,600,600,600,600,600,632, \
     150   599,640,600,600,600,632,632,600,600,632,632,631,632,632,632,630, \
     151   632,632,632,631,640,696,632,632,632,632,630,631,632,631,648,695, \
     152   632,695,696,695,632,631,632,647,648,648,648,696,695,696,696,712, \
     153   695,664,695,696,695,695,696,695,696,696,696,696,664,695,696,728, \
     154   712,727,728,727,696,728,664,663,696,664,664,728,728,664,696,696, \
     155   696,696,696,696,696,695,696,696,696,695,696,696,695,695,696,696, \
     156   695,696,695,695,695,696,696,696,696,728,726,728,728,728,727,728 \
     157  
     158  #define MPFR_DIVHIGH_TAB  \
     159   0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /*0-15*/ \
     160   0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /*16-31*/ \
     161   0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /*32-47*/ \
     162   0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /*48-63*/ \
     163   0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /*64-79*/ \
     164   0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /*80-95*/ \
     165   0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /*96-111*/ \
     166   0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /*112-127*/ \
     167   68,68,0,0,75,69,0,0,71,78,72,73,74,72,78,74, /*128-143*/ \
     168   77,84,78,79,78,84,84,77,80,79,80,82,80,80,88,84, /*144-159*/ \
     169   84,84,83,93,84,91,86,92,90,88,92,90,90,94,96,95, /*160-175*/ \
     170   94,94,96,96,96,96,98,94,100,98,100,96,97,104,106,100, /*176-191*/ \
     171   98,98,102,106,102,106,106,112,109,103,112,112,110,104,112,111, /*192-207*/ \
     172   109,112,110,118,110,128,112,116,126,112,128,132,128,128,128,128, /*208-223*/ \
     173   124,127,128,122,129,128,125,126,127,125,128,127,128,125,136,128, /*224-239*/ \
     174   128,128,136,128,136,128,144,132,130,144,135,132,132,136,136,134, /*240-255*/ \
     175   142,144,144,134,144,137,136,150,135,143,136,146,140,144,144,142, /*256-271*/ \
     176   144,144,144,143,144,149,162,144,144,162,144,144,156,144,167,146, /*272-287*/ \
     177   148,150,162,150,155,150,150,158,154,156,162,168,164,160,168,162, /*288-303*/ \
     178   156,168,160,164,160,160,158,158,160,159,160,168,166,166,180,164, /*304-319*/ \
     179   168,168,184,180,165,174,174,174,172,179,174,174,190,185,186,180, /*320-335*/ \
     180   182,184,185,185,186,186,186,192,192,184,187,200,188,184,184,180, /*336-351*/ \
     181   196,180,184,186,186,198,192,189,185,186,192,184,191,186,196,186, /*352-367*/ \
     182   189,192,190,216,196,189,195,200,192,197,192,192,192,206,204,196, /*368-383*/ \
     183   200,214,210,207,216,198,216,210,198,216,214,216,216,208,216,216, /*384-399*/ \
     184   208,216,222,224,228,216,216,216,208,216,216,232,228,214,212,218, /*400-415*/ \
     185   216,216,218,220,214,216,221,228,220,224,218,224,220,216,224,232, /*416-431*/ \
     186   232,220,228,228,264,233,232,228,228,233,232,256,252,228,228,256, /*432-447*/ \
     187   232,264,232,264,256,254,256,232,264,255,252,257,258,264,268,276, /*448-463*/ \
     188   254,251,264,268,264,248,256,268,254,264,256,256,252,255,258,256, /*464-479*/ \
     189   256,257,264,252,264,256,268,272,256,267,256,276,272,287,272,264, /*480-495*/ \
     190   256,257,272,276,268,264,264,264,270,272,288,268,269,280,288,288, /*496-511*/ \
     191   280,284,282,288,276,288,279,288,288,281,286,288,280,272,272,280, /*512-527*/ \
     192   288,288,294,281,276,288,288,288,288,288,280,288,288,287,288,288, /*528-543*/ \
     193   284,288,288,287,288,291,288,288,288,288,324,324,287,288,287,312, /*544-559*/ \
     194   288,288,288,305,324,292,309,288,312,328,288,311,336,327,330,300, /*560-575*/ \
     195   318,330,312,336,327,321,324,336,330,324,335,327,335,336,336,336, /*576-591*/ \
     196   336,324,352,335,360,329,344,329,318,329,336,328,336,336,324,335, /*592-607*/ \
     197   323,336,336,336,336,328,336,325,360,324,336,328,316,335,336,332, /*608-623*/ \
     198   324,360,334,323,328,360,360,384,328,360,330,336,336,336,368,328, /*624-639*/ \
     199   335,371,336,335,372,372,335,336,372,336,336,348,330,356,360,370, /*640-655*/ \
     200   336,336,384,336,340,368,336,384,346,360,348,372,348,366,376,368, /*656-671*/ \
     201   340,347,368,360,384,384,372,348,384,376,368,360,384,344,369,384, /*672-687*/ \
     202   372,360,384,360,366,372,368,352,392,360,377,384,383,368,384,384, /*688-703*/ \
     203   384,384,372,369,384,383,384,376,382,364,376,384,378,376,384,384, /*704-719*/ \
     204   376,382,372,375,384,383,372,384,408,378,384,384,384,384,416,432, /*720-735*/ \
     205   384,384,432,419,384,424,384,440,417,440,392,380,408,376,424,378, /*736-751*/ \
     206   432,384,440,392,444,400,440,440,384,384,440,384,448,384,448,432, /*752-767*/ \
     207   448,432,432,432,416,440,440,400,440,440,438,432,432,432,448,440, /*768-783*/ \
     208   444,444,440,436,440,444,420,436,432,432,440,456,420,443,420,420, /*784-799*/ \
     209   456,432,431,432,424,432,464,440,432,466,432,448,456,463,460,448, /*800-815*/ \
     210   440,420,448,448,444,431,440,440,416,440,433,439,440,456,440,456, /*816-831*/ \
     211   434,454,432,432,431,440,440,440,464,428,428,436,440,440,432,440, /*832-847*/ \
     212   432,436,436,439,436,440,432,440,438,445,456,440,456,448,456,440, /*848-863*/ \
     213   456,464,464,440,456,448,451,440,447,512,440,440,446,446,448,456, /*864-879*/ \
     214   448,456,452,460,453,455,456,456,448,455,463,464,480,464,463,464, /*880-895*/ \
     215   480,452,480,528,466,468,456,457,480,467,464,468,504,504,460,467, /*896-911*/ \
     216   480,512,464,484,466,468,512,472,504,504,504,504,504,528,478,479, /*912-927*/ \
     217   504,480,504,520,504,520,504,504,512,512,472,512,512,528,512,512, /*928-943*/ \
     218   528,512,502,528,504,536,536,520,528,528,552,536,512,511,528,512, /*944-959*/ \
     219   536,560,512,512,488,528,512,536,552,528,512,576,560,560,576,576, /*960-975*/ \
     220   504,560,512,560,560,511,512,552,528,512,512,512,568,576,512,512, /*976-991*/ \
     221   512,528,528,568,528,512,504,576,576,528,512,576,544,504,576,512, /*992-1007*/ \
     222   512,536,528,560,528,540,536,576,568,536,544,536,536,576,527,544 /*1008-1023*/ \
     223  
     224  #define MPFR_MUL_THRESHOLD 12 /* limbs */
     225  #define MPFR_SQR_THRESHOLD 19 /* limbs */
     226  #define MPFR_DIV_THRESHOLD 3 /* limbs */
     227  #define MPFR_EXP_2_THRESHOLD 894 /* bits */
     228  #define MPFR_EXP_THRESHOLD 6522 /* bits */
     229  #define MPFR_SINCOS_THRESHOLD 23540 /* bits */
     230  #define MPFR_AI_THRESHOLD1 -14260 /* threshold for negative input of mpfr_ai */
     231  #define MPFR_AI_THRESHOLD2 1680
     232  #define MPFR_AI_THRESHOLD3 24368
     233  /* Tuneup completed successfully, took 342 seconds */