/* Various Thresholds of MPFR, not exported. -*- mode: C -*- Copyright 2005-2015 Free Software Foundation, Inc. This file is part of the GNU MPFR Library. The GNU MPFR Library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 3 of the License, or (at your option) any later version. The GNU MPFR Library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with the GNU MPFR Library; see the file COPYING.LESSER. If not, see http://www.gnu.org/licenses/ or write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. */ /* Generated by MPFR's tuneup.c, 2011-07-31, gcc 4.4.2 */ /* contributed by Jim Cloos with GMP 5.0.2 on a Pentium3-M, where __i386, __i686, __pentiumpro are defined */ #define MPFR_MULHIGH_TAB \ -1,0,-1,-1,-1,-1,-1,-1,-1,7,8,9,10,0,0,0, \ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, \ 0,0,0,0,0,0,0,0,0,0,28,30,30,30,30,32, \ 32,32,34,34,34,32,34,34,34,36,36,36,36,40,40,40, \ 42,44,48,48,48,48,48,48,48,48,48,52,52,52,52,52, \ 52,52,56,56,60,56,60,60,60,60,60,64,64,64,64,64, \ 64,64,64,64,64,64,68,64,64,68,68,68,68,72,72,81, \ 81,80,81,81,87,87,87,87,87,87,87,87,87,87,93,87, \ 93,93,93,93,93,93,93,93,99,99,93,93,93,92,93,99, \ 99,99,99,99,99,99,99,99,105,105,99,105,105,104,105,105, \ 105,105,111,117,117,117,117,117,117,117,117,117,117,117,117,117, \ 123,123,123,123,141,141,141,141,141,141,141,141,141,141,141,141, \ 141,141,141,141,141,141,141,141,141,153,153,153,153,153,153,153, \ 153,153,153,153,153,165,165,165,153,165,165,165,165,165,165,165, \ 165,165,165,165,165,177,177,165,177,177,177,177,165,177,177,177, \ 177,177,177,177,177,177,177,177,177,177,177,177,177,177,177,177, \ 177,177,189,204,189,204,204,204,204,204,204,189,204,189,204,204, \ 204,204,204,204,204,204,204,204,203,204,204,204,204,204,204,204, \ 220,204,220,220,220,220,220,220,220,220,220,220,220,220,220,220, \ 236,220,236,236,236,236,236,235,236,235,236,236,236,236,235,236, \ 236,236,236,236,236,236,236,236,236,252,252,252,252,252,252,252, \ 252,252,252,252,252,252,252,252,282,282,282,282,282,282,282,282, \ 282,282,282,282,282,282,282,282,282,282,282,282,282,282,282,282, \ 282,282,282,282,282,282,282,306,306,282,306,306,306,306,306,306, \ 306,306,306,306,306,306,306,306,306,306,306,306,306,306,306,306, \ 306,306,306,306,306,330,330,330,329,330,330,330,330,330,330,330, \ 330,330,330,330,330,330,330,330,330,330,330,330,330,330,354,354, \ 354,354,354,354,354,354,354,354,354,354,354,354,354,354,354,354, \ 354,354,354,354,354,354,354,354,354,378,378,378,378,378,378,378, \ 378,377,378,378,378,378,378,378,378,378,378,378,378,378,378,378, \ 408,408,408,408,408,408,408,408,408,408,408,408,408,408,408,408, \ 408,408,408,408,408,408,407,408,407,408,408,407,408,408,408,408, \ 408,408,439,408,440,440,439,440,440,440,440,439,440,440,439,440, \ 439,440,439,440,439,439,440,440,440,440,439,440,439,440,439,440, \ 440,440,439,439,440,440,472,440,472,439,440,439,440,440,440,472, \ 472,472,469,471,471,472,471,471,472,471,470,470,472,472,471,472, \ 472,504,504,463,471,455,438,501,462,497,501,503,459,471,451,467, \ 448,501,503,485,504,453,469,470,503,472,496,496,480,467,504,460, \ 504,488,488,532,535,497,480,470,504,497,504,492,497,498,536,468, \ 504,510,519,528,500,500,495,504,504,504,504,534,504,504,498,504, \ 504,511,504,504,504,503,504,563,504,511,504,504,504,504,504,504, \ 504,504,533,504,536,536,536,533,536,536,536,536,536,536,536,536, \ 536,536,536,536,536,536,536,536,536,536,536,536,536,536,566,536, \ 536,536,536,568,568,568,568,568,568,568,568,568,568,568,568,568, \ 568,568,568,568,568,568,568,568,568,568,568,568,568,568,592,592, \ 592,592,592,592,592,592,592,592,640,592,640,592,640,639,640,640, \ 640,640,640,639,640,639,640,640,640,639,640,640,640,640,640,640, \ 640,640,640,640,640,640,640,640,640,640,640,640,640,640,640,640, \ 639,640,639,639,688,688,688,639,640,639,640,640,640,687,688,688, \ 688,687,687,688,688,688,688,688,688,688,688,687,688,736,688,688, \ 688,687,636,688,688,688,688,688,688,688,688,688,688,688,688,688, \ 688,688,688,688,688,688,688,688,688,688,687,688,688,688,688,688, \ 688,688,688,688,688,688,688,688,688,688,688,688,736,736,736,736, \ 736,736,736,736,736,736,736,736,688,735,736,736,736,736,736,736, \ 736,736,736,736,736,736,736,736,736,736,736,735,736,735,736,736, \ 736,735,736,736,736,736,736,736,736,736,736,736,736,736,736,736, \ 736,736,736,736,736,736,736,735,736,736,736,736,736,736,736,736, \ 736,736,736,736,784,736,784,784,736,736,736,736,736,736,736,736, \ 736,736,736,736,736,736,736,736,736,736,736,736,736,736,736,736, \ 784,736,784,784,784,784,784,784,736,784,736,784,784,784,784,736, \ 784,783,784,784,784,784,784,784,784,784,784,784,784,784,784,784, \ 784,784,784,784,784,784,784,784,784,784,784,832,784,784,784,784, \ 832,784,832,831,832,831,832,832,832,832,832,784,784,784,784,784, \ 832,784,832,784,832,832,832,832,832,832,832,832,832,832,832,832 \ #define MPFR_SQRHIGH_TAB \ -1,0,0,-1,-1,-1,-1,5,6,6,7,7,8,8,9,9, \ 10,11,12,11,12,13,14,13,14,15,16,15,16,16,17,17, \ 18,19,19,19,20,20,21,22,23,22,23,24,25,24,25,26, \ 27,26,27,27,28,28,29,29,30,31,32,31,32,32,33,34, \ 35,34,35,36,36,38,38,38,39,40,40,40,41,41,41,41, \ 42,43,44,44,48,48,48,48,48,50,52,50,52,52,54,54, \ 56,56,58,54,54,54,56,56,56,56,58,58,60,60,62,64, \ 64,64,62,62,64,64,64,64,64,66,66,68,68,70,68,72, \ 70,72,74,72,74,72,72,72,74,74,76,72,72,72,74,74, \ 76,76,76,76,78,78,78,80,80,80,80,80,80,80,87,90, \ 87,90,90,93,93,90,90,90,90,93,93,93,90,96,96,93, \ 96,96,96,96,96,93,99,96,102,99,99,99,96,102,102,102, \ 108,102,105,105,105,108,111,111,108,111,111,111,111,111,111,117, \ 114,117,114,117,117,120,120,120,120,120,120,120,123,126,126,126, \ 126,129,129,129,129,129,132,132,132,135,135,135,141,141,141,141, \ 141,141,148,148,148,152,148,152,152,148,152,156,156,156,156,156, \ 160,135,141,152,141,141,141,141,141,141,141,141,141,141,141,141, \ 141,141,152,141,156,152,156,156,160,160,160,152,160,156,156,156, \ 160,160,156,168,160,168,164,164,168,160,168,176,172,168,168,172, \ 172,172,176,176,188,176,176,172,188,188,188,188,188,187,188,188, \ 188,188,188,188,196,188,196,196,196,196,196,204,204,204,204,204, \ 204,204,204,212,212,212,212,212,212,212,212,220,220,220,220,220, \ 220,220,220,219,220,220,220,228,220,228,220,220,228,228,220,220, \ 220,236,236,228,228,236,228,236,228,244,244,228,244,244,236,236, \ 258,236,258,258,258,258,258,258,258,264,258,264,264,264,264,264, \ 264,264,264,264,264,258,264,258,264,282,258,264,282,282,282,282, \ 282,264,264,282,282,276,264,264,282,294,282,282,282,282,282,282, \ 282,282,282,282,282,282,282,282,282,282,282,282,294,282,282,282, \ 282,282,282,306,282,282,306,306,282,306,306,306,306,318,306,318, \ 318,318,318,318,318,318,318,318,318,318,318,330,330,318,318,318, \ 330,318,318,330,330,318,318,318,318,318,318,330,342,330,330,330, \ 330,330,330,330,330,330,330,330,330,318,330,318,318,342,342,318, \ 342,318,318,342,318,330,330,330,330,330,318,330,330,318,330,318, \ 342,330,342,342,342,342,342,342,342,330,342,342,330,342,342,342, \ 342,354,342,342,342,342,342,342,342,354,342,342,354,354,354,342, \ 354,354,354,354,354,354,354,378,366,366,366,366,378,366,366,366, \ 378,408,366,378,378,378,378,378,378,378,378,378,378,424,424,424, \ 424,424,424,424,424,408,408,408,408,408,408,408,408,408,408,408, \ 408,408,424,424,408,424,408,424,424,408,408,424,424,424,424,424, \ 424,424,424,424,424,424,408,424,424,424,424,424,440,424,440,424, \ 424,440,424,424,424,424,440,440,440,440,424,424,440,440,424,424, \ 424,424,440,424,440,456,456,424,440,440,440,440,456,424,424,424, \ 440,440,456,440,472,456,440,440,472,440,456,440,440,440,456,440, \ 440,440,456,456,456,472,471,472,456,472,440,472,488,488,455,455, \ 456,456,488,456,472,488,504,472,456,504,488,488,456,472,472,471, \ 472,502,472,472,496,488,487,503,456,504,504,503,504,456,456,487, \ 488,488,504,488,487,504,503,503,504,504,503,503,503,504,502,503, \ 502,504,519,501,504,551,502,520,520,488,504,479,517,503,488,463, \ 472,456,504,503,487,519,552,534,485,480,486,502,499,552,504,534, \ 486,440,504,511,512,533,516,472,536,567,534,494,519,440,542,534, \ 528,592,468,536,516,485,472,583,550,509,537,471,493,533,526,446, \ 558,498,499,495,487,571,500,544,471,583,545,530,470,566,520,536, \ 558,463,504,544,534,494,520,542,522,520,552,520,514,483,434,607, \ 566,538,536,552,486,607,623,606,520,453,588,476,614,497,472,504, \ 504,566,552,504,504,504,504,504,504,504,504,504,504,552,520,504, \ 520,520,520,504,520,520,504,520,536,520,520,536,536,536,536,536, \ 536,536,536,586,536,536,520,555,504,565,520,552,536,552,552,552, \ 552,552,552,552,552,552,552,552,552,552,552,552,552,552,568,552, \ 568,552,568,568,568,568,559,560,568,552,552,568,568,552,568,584, \ 552,552,552,552,552,552,568,568,552,568,568,552,568,568,552,552, \ 584,568,568,568,568,568,568,568,568,568,552,568,584,584,568,552, \ 584,584,584,584,584,584,584,568,568,568,568,616,568,568,616,568, \ 600,584,600,600,600,632,616,600,584,616,616,632,632,584,632,616, \ 616,616,616,616,616,632,632,616,616,632,632,616,616,632,616,616 \ #define MPFR_DIVHIGH_TAB \ 0,1,2,3,4,5,6,7,8,7,10,9,10,11,12,13, \ 14,15,16,17,18,16,14,16,16,19,19,18,20,19,20,18, \ 24,19,20,23,24,21,21,23,27,24,28,29,28,28,28,28, \ 31,31,30,28,34,29,32,32,33,34,35,31,34,38,38,34, \ 35,36,38,38,38,40,41,43,39,42,43,42,42,43,44,43, \ 45,48,49,48,51,50,50,48,50,48,51,50,51,52,53,50, \ 55,51,53,54,56,59,56,59,58,55,57,59,59,63,64,63, \ 63,64,64,59,64,64,67,64,63,67,67,71,67,67,71,66, \ 75,75,75,75,73,75,73,75,75,75,73,75,84,73,74,73, \ 76,76,75,81,76,79,81,84,81,83,84,84,84,84,88,86, \ 83,88,96,94,96,96,96,96,96,96,96,95,96,96,96,104, \ 96,100,100,104,104,104,96,96,96,104,100,96,102,96,104,104, \ 102,104,100,104,112,104,104,112,112,112,104,112,120,112,112,112, \ 112,120,110,118,118,118,119,112,120,118,120,112,118,127,128,128, \ 128,128,128,128,128,128,128,128,128,128,128,128,128,136,128,136, \ 128,128,128,128,128,128,128,128,127,128,128,128,128,128,130,133, \ 134,136,136,135,136,136,150,136,136,138,148,140,136,143,148,150, \ 150,150,150,148,150,148,148,150,156,149,168,150,160,161,168,168, \ 168,168,168,162,168,162,167,168,168,168,168,168,162,174,168,168, \ 174,174,184,168,168,176,162,168,192,174,168,168,173,174,186,174, \ 174,168,192,174,168,174,168,168,186,192,192,180,174,176,192,192, \ 185,192,192,180,192,192,186,192,192,192,192,192,184,192,208,208, \ 208,208,190,192,190,192,192,191,186,192,192,208,192,192,192,192, \ 192,192,196,204,204,192,204,192,208,192,191,192,208,208,198,208, \ 205,220,197,218,222,208,216,199,207,220,206,224,214,204,208,219, \ 221,209,227,207,221,216,208,236,222,244,225,208,208,212,224,222, \ 229,230,225,221,222,256,227,240,221,224,240,216,240,231,224,263, \ 246,232,240,240,240,240,239,240,240,234,234,240,234,238,240,240, \ 240,240,256,256,240,256,240,240,240,234,256,240,240,256,234,256, \ 256,239,272,244,256,255,256,240,256,240,256,255,240,255,256,256, \ 256,254,254,256,244,256,256,256,256,256,256,256,256,253,272,255, \ 256,256,252,256,256,256,256,256,256,272,256,256,256,256,257,272, \ 272,272,272,272,264,270,272,288,272,280,282,282,280,280,270,282, \ 282,282,288,282,288,282,282,300,286,288,300,282,282,288,300,312, \ 300,298,306,300,304,304,304,300,300,300,316,306,300,288,306,311, \ 324,312,320,300,306,336,320,300,324,320,336,336,336,328,336,324, \ 336,336,328,336,322,328,336,336,336,336,312,336,336,336,336,336, \ 336,336,336,335,336,344,348,336,353,349,336,336,348,348,346,336, \ 352,320,336,336,336,336,352,336,336,336,336,336,336,336,336,336, \ 336,336,336,330,336,336,336,336,334,335,336,336,344,344,348,336, \ 348,336,352,336,336,348,336,348,336,348,352,351,348,336,336,336, \ 352,352,352,348,352,336,336,384,336,336,352,348,336,348,376,352, \ 352,372,384,352,384,352,352,352,348,384,348,349,384,351,384,353, \ 368,352,350,353,378,372,372,372,384,352,384,352,408,384,378,368, \ 383,384,408,356,371,368,372,371,384,376,384,408,384,407,372,384, \ 408,369,406,383,377,384,394,382,370,416,408,378,369,372,381,400, \ 378,408,376,402,417,408,376,384,382,384,384,408,384,384,384,408, \ 384,416,408,408,416,384,384,384,408,384,384,384,396,408,408,408, \ 408,408,408,406,408,408,416,416,408,408,408,408,408,416,408,416, \ 408,405,416,408,408,440,408,416,416,416,440,408,408,408,440,444, \ 408,440,440,408,415,419,440,440,444,443,436,436,440,447,448,440, \ 440,416,440,439,440,444,440,444,468,448,440,416,440,416,465,465, \ 468,436,468,440,472,439,440,468,472,448,465,468,464,439,440,480, \ 480,472,439,468,440,440,468,440,468,468,444,440,448,480,438,440, \ 504,439,440,467,480,468,448,465,466,440,468,464,440,472,448,468, \ 468,469,456,465,448,460,472,472,468,469,465,480,480,468,472,512, \ 468,464,465,469,480,468,504,466,468,480,480,480,468,512,504,469, \ 466,466,472,468,480,480,512,469,472,480,480,480,504,477,500,466, \ 504,468,480,512,504,512,504,480,480,511,512,510,492,511,503,513, \ 503,502,504,512,504,512,504,512,504,512,504,512,513,503,512,504, \ 513,504,512,512,510,501,513,503,512,513,498,504,512,510,502,512, \ 501,500,552,497,516,511,503,513,497,511,502,509,564,509,504,512, \ 503,504,512,504,504,500,512,512,512,511,512,504,557,504,564,564, \ 512,564,514,512,516,512,560,564,560,564,564,512,564,564,564,560 \ #define MPFR_MUL_THRESHOLD 15 /* limbs */ #define MPFR_SQR_THRESHOLD 14 /* limbs */ #define MPFR_DIV_THRESHOLD 27 /* limbs */ #define MPFR_EXP_2_THRESHOLD 562 /* bits */ #define MPFR_EXP_THRESHOLD 9671 /* bits */ #define MPFR_SINCOS_THRESHOLD 30620 /* bits */ #define MPFR_AI_THRESHOLD1 -28021 /* threshold for negative input of mpfr_ai */ #define MPFR_AI_THRESHOLD2 2991 #define MPFR_AI_THRESHOLD3 37474 /* Tuneup completed successfully, took 6469 seconds */