380    constexpr int kCachedPowersMinDecExp = -300;
 
  381    constexpr int kCachedPowersDecStep = 8;
 
  383    static constexpr std::array<cached_power, 79> kCachedPowers =
 
  386            { 0xAB70FE17C79AC6CA, -1060, -300 },
 
  387            { 0xFF77B1FCBEBCDC4F, -1034, -292 },
 
  388            { 0xBE5691EF416BD60C, -1007, -284 },
 
  389            { 0x8DD01FAD907FFC3C,  -980, -276 },
 
  390            { 0xD3515C2831559A83,  -954, -268 },
 
  391            { 0x9D71AC8FADA6C9B5,  -927, -260 },
 
  392            { 0xEA9C227723EE8BCB,  -901, -252 },
 
  393            { 0xAECC49914078536D,  -874, -244 },
 
  394            { 0x823C12795DB6CE57,  -847, -236 },
 
  395            { 0xC21094364DFB5637,  -821, -228 },
 
  396            { 0x9096EA6F3848984F,  -794, -220 },
 
  397            { 0xD77485CB25823AC7,  -768, -212 },
 
  398            { 0xA086CFCD97BF97F4,  -741, -204 },
 
  399            { 0xEF340A98172AACE5,  -715, -196 },
 
  400            { 0xB23867FB2A35B28E,  -688, -188 },
 
  401            { 0x84C8D4DFD2C63F3B,  -661, -180 },
 
  402            { 0xC5DD44271AD3CDBA,  -635, -172 },
 
  403            { 0x936B9FCEBB25C996,  -608, -164 },
 
  404            { 0xDBAC6C247D62A584,  -582, -156 },
 
  405            { 0xA3AB66580D5FDAF6,  -555, -148 },
 
  406            { 0xF3E2F893DEC3F126,  -529, -140 },
 
  407            { 0xB5B5ADA8AAFF80B8,  -502, -132 },
 
  408            { 0x87625F056C7C4A8B,  -475, -124 },
 
  409            { 0xC9BCFF6034C13053,  -449, -116 },
 
  410            { 0x964E858C91BA2655,  -422, -108 },
 
  411            { 0xDFF9772470297EBD,  -396, -100 },
 
  412            { 0xA6DFBD9FB8E5B88F,  -369,  -92 },
 
  413            { 0xF8A95FCF88747D94,  -343,  -84 },
 
  414            { 0xB94470938FA89BCF,  -316,  -76 },
 
  415            { 0x8A08F0F8BF0F156B,  -289,  -68 },
 
  416            { 0xCDB02555653131B6,  -263,  -60 },
 
  417            { 0x993FE2C6D07B7FAC,  -236,  -52 },
 
  418            { 0xE45C10C42A2B3B06,  -210,  -44 },
 
  419            { 0xAA242499697392D3,  -183,  -36 },
 
  420            { 0xFD87B5F28300CA0E,  -157,  -28 },
 
  421            { 0xBCE5086492111AEB,  -130,  -20 },
 
  422            { 0x8CBCCC096F5088CC,  -103,  -12 },
 
  423            { 0xD1B71758E219652C,   -77,   -4 },
 
  424            { 0x9C40000000000000,   -50,    4 },
 
  425            { 0xE8D4A51000000000,   -24,   12 },
 
  426            { 0xAD78EBC5AC620000,     3,   20 },
 
  427            { 0x813F3978F8940984,    30,   28 },
 
  428            { 0xC097CE7BC90715B3,    56,   36 },
 
  429            { 0x8F7E32CE7BEA5C70,    83,   44 },
 
  430            { 0xD5D238A4ABE98068,   109,   52 },
 
  431            { 0x9F4F2726179A2245,   136,   60 },
 
  432            { 0xED63A231D4C4FB27,   162,   68 },
 
  433            { 0xB0DE65388CC8ADA8,   189,   76 },
 
  434            { 0x83C7088E1AAB65DB,   216,   84 },
 
  435            { 0xC45D1DF942711D9A,   242,   92 },
 
  436            { 0x924D692CA61BE758,   269,  100 },
 
  437            { 0xDA01EE641A708DEA,   295,  108 },
 
  438            { 0xA26DA3999AEF774A,   322,  116 },
 
  439            { 0xF209787BB47D6B85,   348,  124 },
 
  440            { 0xB454E4A179DD1877,   375,  132 },
 
  441            { 0x865B86925B9BC5C2,   402,  140 },
 
  442            { 0xC83553C5C8965D3D,   428,  148 },
 
  443            { 0x952AB45CFA97A0B3,   455,  156 },
 
  444            { 0xDE469FBD99A05FE3,   481,  164 },
 
  445            { 0xA59BC234DB398C25,   508,  172 },
 
  446            { 0xF6C69A72A3989F5C,   534,  180 },
 
  447            { 0xB7DCBF5354E9BECE,   561,  188 },
 
  448            { 0x88FCF317F22241E2,   588,  196 },
 
  449            { 0xCC20CE9BD35C78A5,   614,  204 },
 
  450            { 0x98165AF37B2153DF,   641,  212 },
 
  451            { 0xE2A0B5DC971F303A,   667,  220 },
 
  452            { 0xA8D9D1535CE3B396,   694,  228 },
 
  453            { 0xFB9B7CD9A4A7443C,   720,  236 },
 
  454            { 0xBB764C4CA7A44410,   747,  244 },
 
  455            { 0x8BAB8EEFB6409C1A,   774,  252 },
 
  456            { 0xD01FEF10A657842C,   800,  260 },
 
  457            { 0x9B10A4E5E9913129,   827,  268 },
 
  458            { 0xE7109BFBA19C0C9D,   853,  276 },
 
  459            { 0xAC2820D9623BF429,   880,  284 },
 
  460            { 0x80444B5E7AA7CF85,   907,  292 },
 
  461            { 0xBF21E44003ACDD2D,   933,  300 },
 
  462            { 0x8E679C2F5E44FF8F,   960,  308 },
 
  463            { 0xD433179D9C8CB841,   986,  316 },
 
  464            { 0x9E19DB92B4E31BA9,  1013,  324 },
 
  474    const int f = 
kAlpha - e - 1;
 
  475    const int k = (f * 78913) / (1 << 18) + 
static_cast<int>(f > 0);
 
  477    const int index = (-kCachedPowersMinDecExp + k + (kCachedPowersDecStep - 1)) / kCachedPowersDecStep;