Subversion Repositories Kolibri OS

Rev

Blame | Last modification | View Log | RSS feed

  1. /* Copyright (C) 2007-2015 Free Software Foundation, Inc.
  2.  
  3. This file is part of GCC.
  4.  
  5. GCC is free software; you can redistribute it and/or modify it under
  6. the terms of the GNU General Public License as published by the Free
  7. Software Foundation; either version 3, or (at your option) any later
  8. version.
  9.  
  10. GCC is distributed in the hope that it will be useful, but WITHOUT ANY
  11. WARRANTY; without even the implied warranty of MERCHANTABILITY or
  12. FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
  13. for more details.
  14.  
  15. Under Section 7 of GPL version 3, you are granted additional
  16. permissions described in the GCC Runtime Library Exception, version
  17. 3.1, as published by the Free Software Foundation.
  18.  
  19. You should have received a copy of the GNU General Public License and
  20. a copy of the GCC Runtime Library Exception along with this program;
  21. see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
  22. <http://www.gnu.org/licenses/>.  */
  23.  
  24. #include "bid_internal.h"
  25.  
  26. UINT64 round_const_table[][19] = {
  27.   {     // RN
  28.    0ull,        // 0 extra digits
  29.    5ull,        // 1 extra digits
  30.    50ull,       // 2 extra digits
  31.    500ull,      // 3 extra digits
  32.    5000ull,     // 4 extra digits
  33.    50000ull,    // 5 extra digits
  34.    500000ull,   // 6 extra digits
  35.    5000000ull,  // 7 extra digits
  36.    50000000ull, // 8 extra digits
  37.    500000000ull,        // 9 extra digits
  38.    5000000000ull,       // 10 extra digits
  39.    50000000000ull,      // 11 extra digits
  40.    500000000000ull,     // 12 extra digits
  41.    5000000000000ull,    // 13 extra digits
  42.    50000000000000ull,   // 14 extra digits
  43.    500000000000000ull,  // 15 extra digits
  44.    5000000000000000ull, // 16 extra digits
  45.    50000000000000000ull,        // 17 extra digits
  46.    500000000000000000ull        // 18 extra digits
  47.    }
  48.   ,
  49.   {     // RD
  50.    0ull,        // 0 extra digits
  51.    0ull,        // 1 extra digits
  52.    0ull,        // 2 extra digits
  53.    00ull,       // 3 extra digits
  54.    000ull,      // 4 extra digits
  55.    0000ull,     // 5 extra digits
  56.    00000ull,    // 6 extra digits
  57.    000000ull,   // 7 extra digits
  58.    0000000ull,  // 8 extra digits
  59.    00000000ull, // 9 extra digits
  60.    000000000ull,        // 10 extra digits
  61.    0000000000ull,       // 11 extra digits
  62.    00000000000ull,      // 12 extra digits
  63.    000000000000ull,     // 13 extra digits
  64.    0000000000000ull,    // 14 extra digits
  65.    00000000000000ull,   // 15 extra digits
  66.    000000000000000ull,  // 16 extra digits
  67.    0000000000000000ull, // 17 extra digits
  68.    00000000000000000ull // 18 extra digits
  69.    }
  70.   ,
  71.   {     // round to Inf
  72.    0ull,        // 0 extra digits
  73.    9ull,        // 1 extra digits
  74.    99ull,       // 2 extra digits
  75.    999ull,      // 3 extra digits
  76.    9999ull,     // 4 extra digits
  77.    99999ull,    // 5 extra digits
  78.    999999ull,   // 6 extra digits
  79.    9999999ull,  // 7 extra digits
  80.    99999999ull, // 8 extra digits
  81.    999999999ull,        // 9 extra digits
  82.    9999999999ull,       // 10 extra digits
  83.    99999999999ull,      // 11 extra digits
  84.    999999999999ull,     // 12 extra digits
  85.    9999999999999ull,    // 13 extra digits
  86.    99999999999999ull,   // 14 extra digits
  87.    999999999999999ull,  // 15 extra digits
  88.    9999999999999999ull, // 16 extra digits
  89.    99999999999999999ull,        // 17 extra digits
  90.    999999999999999999ull        // 18 extra digits
  91.    }
  92.   ,
  93.   {     // RZ
  94.    0ull,        // 0 extra digits
  95.    0ull,        // 1 extra digits
  96.    0ull,        // 2 extra digits
  97.    00ull,       // 3 extra digits
  98.    000ull,      // 4 extra digits
  99.    0000ull,     // 5 extra digits
  100.    00000ull,    // 6 extra digits
  101.    000000ull,   // 7 extra digits
  102.    0000000ull,  // 8 extra digits
  103.    00000000ull, // 9 extra digits
  104.    000000000ull,        // 10 extra digits
  105.    0000000000ull,       // 11 extra digits
  106.    00000000000ull,      // 12 extra digits
  107.    000000000000ull,     // 13 extra digits
  108.    0000000000000ull,    // 14 extra digits
  109.    00000000000000ull,   // 15 extra digits
  110.    000000000000000ull,  // 16 extra digits
  111.    0000000000000000ull, // 17 extra digits
  112.    00000000000000000ull // 18 extra digits
  113.    }
  114.   ,
  115.   {     // round ties away from 0
  116.    0ull,        // 0 extra digits
  117.    5ull,        // 1 extra digits
  118.    50ull,       // 2 extra digits
  119.    500ull,      // 3 extra digits
  120.    5000ull,     // 4 extra digits
  121.    50000ull,    // 5 extra digits
  122.    500000ull,   // 6 extra digits
  123.    5000000ull,  // 7 extra digits
  124.    50000000ull, // 8 extra digits
  125.    500000000ull,        // 9 extra digits
  126.    5000000000ull,       // 10 extra digits
  127.    50000000000ull,      // 11 extra digits
  128.    500000000000ull,     // 12 extra digits
  129.    5000000000000ull,    // 13 extra digits
  130.    50000000000000ull,   // 14 extra digits
  131.    500000000000000ull,  // 15 extra digits
  132.    5000000000000000ull, // 16 extra digits
  133.    50000000000000000ull,        // 17 extra digits
  134.    500000000000000000ull        // 18 extra digits
  135.    }
  136.   ,
  137. };
  138.  
  139. UINT128 round_const_table_128[][36] = {
  140.   {     //RN
  141.    {{0ull, 0ull}
  142.     }
  143.    ,    // 0 extra digits
  144.    {{5ull, 0ull}
  145.     }
  146.    ,    // 1 extra digits
  147.    {{50ull, 0ull}
  148.     }
  149.    ,    // 2 extra digits
  150.    {{500ull, 0ull}
  151.     }
  152.    ,    // 3 extra digits
  153.    {{5000ull, 0ull}
  154.     }
  155.    ,    // 4 extra digits
  156.    {{50000ull, 0ull}
  157.     }
  158.    ,    // 5 extra digits
  159.    {{500000ull, 0ull}
  160.     }
  161.    ,    // 6 extra digits
  162.    {{5000000ull, 0ull}
  163.     }
  164.    ,    // 7 extra digits
  165.    {{50000000ull, 0ull}
  166.     }
  167.    ,    // 8 extra digits
  168.    {{500000000ull, 0ull}
  169.     }
  170.    ,    // 9 extra digits
  171.    {{5000000000ull, 0ull}
  172.     }
  173.    ,    // 10 extra digits
  174.    {{50000000000ull, 0ull}
  175.     }
  176.    ,    // 11 extra digits
  177.    {{500000000000ull, 0ull}
  178.     }
  179.    ,    // 12 extra digits
  180.    {{5000000000000ull, 0ull}
  181.     }
  182.    ,    // 13 extra digits
  183.    {{50000000000000ull, 0ull}
  184.     }
  185.    ,    // 14 extra digits
  186.    {{500000000000000ull, 0ull}
  187.     }
  188.    ,    // 15 extra digits
  189.    {{5000000000000000ull, 0ull}
  190.     }
  191.    ,    // 16 extra digits
  192.    {{50000000000000000ull, 0ull}
  193.     }
  194.    ,    // 17 extra digits
  195.    {{500000000000000000ull, 0ull}
  196.     }
  197.    ,    // 18 extra digits
  198.    {{5000000000000000000ull, 0ull}
  199.     }
  200.    ,    // 19 extra digits
  201.    {{0xb5e3af16b1880000ull, 2ull}
  202.     }
  203.    ,    //20
  204.    {{0x1ae4d6e2ef500000ull, 27ull}
  205.     }
  206.    ,    //21
  207.    {{0xcf064dd59200000ull, 271ull}
  208.     }
  209.    ,    //22
  210.    {{0x8163f0a57b400000ull, 2710ull}
  211.     }
  212.    ,    //23
  213.    {{0xde76676d0800000ull, 27105ull}
  214.     }
  215.    ,    //24
  216.    {{0x8b0a00a425000000ull, 0x422caull}
  217.     }
  218.    ,    //25
  219.    {{0x6e64066972000000ull, 0x295be9ull}
  220.     }
  221.    ,    //26
  222.    {{0x4fe8401e74000000ull, 0x19d971eull}
  223.     }
  224.    ,    //27
  225.    {{0x1f12813088000000ull, 0x1027e72full}
  226.     }
  227.    ,    //28
  228.    {{0x36b90be550000000ull, 0xa18f07d7ull}
  229.     }
  230.    ,    //29
  231.    {{0x233a76f520000000ull, 0x64f964e68ull}
  232.     }
  233.    ,    //30
  234.    {{0x6048a59340000000ull, 0x3f1bdf1011ull}
  235.     }
  236.    ,    //31
  237.    {{0xc2d677c080000000ull, 0x27716b6a0adull}
  238.     }
  239.    ,    //32
  240.    {{0x9c60ad8500000000ull, 0x18a6e32246c9ull}
  241.     }
  242.    ,    //33
  243.    {{0x1bc6c73200000000ull, 0xf684df56c3e0ull}
  244.     }
  245.    ,    //34
  246.    {{0x15c3c7f400000000ull, 0x9a130b963a6c1ull}
  247.     }
  248.    ,    //35
  249.    }
  250.   ,
  251.   {     //RD
  252.    {{0ull, 0ull}
  253.     }
  254.    ,    // 0 extra digits
  255.    {{0ull, 0ull}
  256.     }
  257.    ,    // 1 extra digits
  258.    {{0ull, 0ull}
  259.     }
  260.    ,    // 2 extra digits
  261.    {{00ull, 0ull}
  262.     }
  263.    ,    // 3 extra digits
  264.    {{000ull, 0ull}
  265.     }
  266.    ,    // 4 extra digits
  267.    {{0000ull, 0ull}
  268.     }
  269.    ,    // 5 extra digits
  270.    {{00000ull, 0ull}
  271.     }
  272.    ,    // 6 extra digits
  273.    {{000000ull, 0ull}
  274.     }
  275.    ,    // 7 extra digits
  276.    {{0000000ull, 0ull}
  277.     }
  278.    ,    // 8 extra digits
  279.    {{00000000ull, 0ull}
  280.     }
  281.    ,    // 9 extra digits
  282.    {{000000000ull, 0ull}
  283.     }
  284.    ,    // 10 extra digits
  285.    {{0000000000ull, 0ull}
  286.     }
  287.    ,    // 11 extra digits
  288.    {{00000000000ull, 0ull}
  289.     }
  290.    ,    // 12 extra digits
  291.    {{000000000000ull, 0ull}
  292.     }
  293.    ,    // 13 extra digits
  294.    {{0000000000000ull, 0ull}
  295.     }
  296.    ,    // 14 extra digits
  297.    {{00000000000000ull, 0ull}
  298.     }
  299.    ,    // 15 extra digits
  300.    {{000000000000000ull, 0ull}
  301.     }
  302.    ,    // 16 extra digits
  303.    {{0000000000000000ull, 0ull}
  304.     }
  305.    ,    // 17 extra digits
  306.    {{00000000000000000ull, 0ull}
  307.     }
  308.    ,    // 18 extra digits
  309.    {{000000000000000000ull, 0ull}
  310.     }
  311.    ,    // 19 extra digits
  312.    {{0ull, 0ull}
  313.     }
  314.    ,    //20
  315.    {{0ull, 0ull}
  316.     }
  317.    ,    //21
  318.    {{0ull, 0ull}
  319.     }
  320.    ,    //22
  321.    {{0ull, 0ull}
  322.     }
  323.    ,    //23
  324.    {{0ull, 0ull}
  325.     }
  326.    ,    //24
  327.    {{0ull, 0ull}
  328.     }
  329.    ,    //25
  330.    {{0ull, 0ull}
  331.     }
  332.    ,    //26
  333.    {{0ull, 0ull}
  334.     }
  335.    ,    //27
  336.    {{0ull, 0ull}
  337.     }
  338.    ,    //28
  339.    {{0ull, 0ull}
  340.     }
  341.    ,    //29
  342.    {{0ull, 0ull}
  343.     }
  344.    ,    //30
  345.    {{0ull, 0ull}
  346.     }
  347.    ,    //31
  348.    {{0ull, 0ull}
  349.     }
  350.    ,    //32
  351.    {{0ull, 0ull}
  352.     }
  353.    ,    //33
  354.    {{0ull, 0ull}
  355.     }
  356.    ,    //34
  357.    {{0ull, 0ull}
  358.     }
  359.    ,    //35
  360.    }
  361.   ,
  362.   {     //RU
  363.    {{0ull, 0ull}
  364.     }
  365.    ,    // 0 extra digits
  366.    {{9ull, 0ull}
  367.     }
  368.    ,    // 1 extra digits
  369.    {{99ull, 0ull}
  370.     }
  371.    ,    // 2 extra digits
  372.    {{999ull, 0ull}
  373.     }
  374.    ,    // 3 extra digits
  375.    {{9999ull, 0ull}
  376.     }
  377.    ,    // 4 extra digits
  378.    {{99999ull, 0ull}
  379.     }
  380.    ,    // 5 extra digits
  381.    {{999999ull, 0ull}
  382.     }
  383.    ,    // 6 extra digits
  384.    {{9999999ull, 0ull}
  385.     }
  386.    ,    // 7 extra digits
  387.    {{99999999ull, 0ull}
  388.     }
  389.    ,    // 8 extra digits
  390.    {{999999999ull, 0ull}
  391.     }
  392.    ,    // 9 extra digits
  393.    {{9999999999ull, 0ull}
  394.     }
  395.    ,    // 10 extra digits
  396.    {{99999999999ull, 0ull}
  397.     }
  398.    ,    // 11 extra digits
  399.    {{999999999999ull, 0ull}
  400.     }
  401.    ,    // 12 extra digits
  402.    {{9999999999999ull, 0ull}
  403.     }
  404.    ,    // 13 extra digits
  405.    {{99999999999999ull, 0ull}
  406.     }
  407.    ,    // 14 extra digits
  408.    {{999999999999999ull, 0ull}
  409.     }
  410.    ,    // 15 extra digits
  411.    {{9999999999999999ull, 0ull}
  412.     }
  413.    ,    // 16 extra digits
  414.    {{99999999999999999ull, 0ull}
  415.     }
  416.    ,    // 17 extra digits
  417.    {{999999999999999999ull, 0ull}
  418.     }
  419.    ,    // 18 extra digits
  420.    {{9999999999999999999ull, 0ull}
  421.     }
  422.    ,    // 19 extra digits
  423.    {{0x6BC75E2D630FFFFFull, 0x5ull}
  424.     }
  425.    ,    //20
  426.    {{0x35C9ADC5DE9FFFFFull, 0x36ull}
  427.     }
  428.    ,    //21
  429.    {{0x19E0C9BAB23FFFFFull, 0x21eull}
  430.     }
  431.    ,    //22
  432.    {{0x2C7E14AF67FFFFFull, 0x152dull}
  433.     }
  434.    ,    //23
  435.    {{0x1BCECCEDA0FFFFFFull, 0xd3c2ull}
  436.     }
  437.    ,    //24
  438.    {{0x1614014849FFFFFFull, 0x84595ull}
  439.     }
  440.    ,    //25
  441.    {{0xDCC80CD2E3FFFFFFull, 0x52b7d2ull}
  442.     }
  443.    ,    //26
  444.    {{0x9FD0803CE7FFFFFFull, 0x33B2E3Cull}
  445.     }
  446.    ,    //27
  447.    {{0x3E2502610FFFFFFFull, 0x204FCE5Eull}
  448.     }
  449.    ,    //28
  450.    {{0x6D7217CA9FFFFFFFull, 0x1431E0FAEull}
  451.     }
  452.    ,    //29
  453.    {{0x4674EDEA3FFFFFFFull, 0xC9F2C9CD0ull}
  454.     }
  455.    ,    //30
  456.    {{0xC0914B267FFFFFFFull, 0x7E37BE2022ull}
  457.     }
  458.    ,    //31
  459.    {{0x85ACEF80FFFFFFFFull, 0x4EE2D6D415Bull}
  460.     }
  461.    ,    //32
  462.    {{0x38c15b09ffffffffull, 0x314dc6448d93ull}
  463.     }
  464.    ,    //33
  465.    {{0x378d8e63ffffffffull, 0x1ed09bead87c0ull}
  466.     }
  467.    ,    //34
  468.    {{0x2b878fe7ffffffffull, 0x13426172c74d82ull}
  469.     }
  470.    ,    //35
  471.    }
  472.   ,
  473.   {     //RZ
  474.    {{0ull, 0ull}
  475.     }
  476.    ,    // 0 extra digits
  477.    {{0ull, 0ull}
  478.     }
  479.    ,    // 1 extra digits
  480.    {{0ull, 0ull}
  481.     }
  482.    ,    // 2 extra digits
  483.    {{00ull, 0ull}
  484.     }
  485.    ,    // 3 extra digits
  486.    {{000ull, 0ull}
  487.     }
  488.    ,    // 4 extra digits
  489.    {{0000ull, 0ull}
  490.     }
  491.    ,    // 5 extra digits
  492.    {{00000ull, 0ull}
  493.     }
  494.    ,    // 6 extra digits
  495.    {{000000ull, 0ull}
  496.     }
  497.    ,    // 7 extra digits
  498.    {{0000000ull, 0ull}
  499.     }
  500.    ,    // 8 extra digits
  501.    {{00000000ull, 0ull}
  502.     }
  503.    ,    // 9 extra digits
  504.    {{000000000ull, 0ull}
  505.     }
  506.    ,    // 10 extra digits
  507.    {{0000000000ull, 0ull}
  508.     }
  509.    ,    // 11 extra digits
  510.    {{00000000000ull, 0ull}
  511.     }
  512.    ,    // 12 extra digits
  513.    {{000000000000ull, 0ull}
  514.     }
  515.    ,    // 13 extra digits
  516.    {{0000000000000ull, 0ull}
  517.     }
  518.    ,    // 14 extra digits
  519.    {{00000000000000ull, 0ull}
  520.     }
  521.    ,    // 15 extra digits
  522.    {{000000000000000ull, 0ull}
  523.     }
  524.    ,    // 16 extra digits
  525.    {{0000000000000000ull, 0ull}
  526.     }
  527.    ,    // 17 extra digits
  528.    {{00000000000000000ull, 0ull}
  529.     }
  530.    ,    // 18 extra digits
  531.    {{000000000000000000ull, 0ull}
  532.     }
  533.    ,    // 19 extra digits
  534.    {{0ull, 0ull}
  535.     }
  536.    ,    //20
  537.    {{0ull, 0ull}
  538.     }
  539.    ,    //21
  540.    {{0ull, 0ull}
  541.     }
  542.    ,    //22
  543.    {{0ull, 0ull}
  544.     }
  545.    ,    //23
  546.    {{0ull, 0ull}
  547.     }
  548.    ,    //24
  549.    {{0ull, 0ull}
  550.     }
  551.    ,    //25
  552.    {{0ull, 0ull}
  553.     }
  554.    ,    //26
  555.    {{0ull, 0ull}
  556.     }
  557.    ,    //27
  558.    {{0ull, 0ull}
  559.     }
  560.    ,    //28
  561.    {{0ull, 0ull}
  562.     }
  563.    ,    //29
  564.    {{0ull, 0ull}
  565.     }
  566.    ,    //30
  567.    {{0ull, 0ull}
  568.     }
  569.    ,    //31
  570.    {{0ull, 0ull}
  571.     }
  572.    ,    //32
  573.    {{0ull, 0ull}
  574.     }
  575.    ,    //33
  576.    {{0ull, 0ull}
  577.     }
  578.    ,    //34
  579.    {{0ull, 0ull}
  580.     }
  581.    ,    //35
  582.    }
  583.   ,
  584.   {     //RN, ties away
  585.    {{0ull, 0ull}
  586.     }
  587.    ,    // 0 extra digits
  588.    {{5ull, 0ull}
  589.     }
  590.    ,    // 1 extra digits
  591.    {{50ull, 0ull}
  592.     }
  593.    ,    // 2 extra digits
  594.    {{500ull, 0ull}
  595.     }
  596.    ,    // 3 extra digits
  597.    {{5000ull, 0ull}
  598.     }
  599.    ,    // 4 extra digits
  600.    {{50000ull, 0ull}
  601.     }
  602.    ,    // 5 extra digits
  603.    {{500000ull, 0ull}
  604.     }
  605.    ,    // 6 extra digits
  606.    {{5000000ull, 0ull}
  607.     }
  608.    ,    // 7 extra digits
  609.    {{50000000ull, 0ull}
  610.     }
  611.    ,    // 8 extra digits
  612.    {{500000000ull, 0ull}
  613.     }
  614.    ,    // 9 extra digits
  615.    {{5000000000ull, 0ull}
  616.     }
  617.    ,    // 10 extra digits
  618.    {{50000000000ull, 0ull}
  619.     }
  620.    ,    // 11 extra digits
  621.    {{500000000000ull, 0ull}
  622.     }
  623.    ,    // 12 extra digits
  624.    {{5000000000000ull, 0ull}
  625.     }
  626.    ,    // 13 extra digits
  627.    {{50000000000000ull, 0ull}
  628.     }
  629.    ,    // 14 extra digits
  630.    {{500000000000000ull, 0ull}
  631.     }
  632.    ,    // 15 extra digits
  633.    {{5000000000000000ull, 0ull}
  634.     }
  635.    ,    // 16 extra digits
  636.    {{50000000000000000ull, 0ull}
  637.     }
  638.    ,    // 17 extra digits
  639.    {{500000000000000000ull, 0ull}
  640.     }
  641.    ,    // 18 extra digits
  642.    {{5000000000000000000ull, 0ull}
  643.     }
  644.    ,    // 19 extra digits
  645.    {{0xb5e3af16b1880000ull, 2ull}
  646.     }
  647.    ,    //20
  648.    {{0x1ae4d6e2ef500000ull, 27ull}
  649.     }
  650.    ,    //21
  651.    {{0xcf064dd59200000ull, 271ull}
  652.     }
  653.    ,    //22
  654.    {{0x8163f0a57b400000ull, 2710ull}
  655.     }
  656.    ,    //23
  657.    {{0xde76676d0800000ull, 27105ull}
  658.     }
  659.    ,    //24
  660.    {{0x8b0a00a425000000ull, 0x422caull}
  661.     }
  662.    ,    //25
  663.    {{0x6e64066972000000ull, 0x295be9ull}
  664.     }
  665.    ,    //26
  666.    {{0x4fe8401e74000000ull, 0x19d971eull}
  667.     }
  668.    ,    //27
  669.    {{0x1f12813088000000ull, 0x1027e72full}
  670.     }
  671.    ,    //28
  672.    {{0x36b90be550000000ull, 0xa18f07d7ull}
  673.     }
  674.    ,    //29
  675.    {{0x233a76f520000000ull, 0x64f964e68ull}
  676.     }
  677.    ,    //30
  678.    {{0x6048a59340000000ull, 0x3f1bdf1011ull}
  679.     }
  680.    ,    //31
  681.    {{0xc2d677c080000000ull, 0x27716b6a0adull}
  682.     }
  683.    ,    //32
  684.    {{0x9c60ad8500000000ull, 0x18a6e32246c9ull}
  685.     }
  686.    ,    //33
  687.    {{0x1bc6c73200000000ull, 0xf684df56c3e0ull}
  688.     }
  689.    ,    //34
  690.    {{0x15c3c7f400000000ull, 0x9a130b963a6c1ull}
  691.     }
  692.    ,    //35
  693.    }
  694. };
  695.  
  696.  
  697. UINT128 reciprocals10_128[] = {
  698.   {{0ull, 0ull}
  699.    }
  700.   ,     // 0 extra digits
  701.   {{0x3333333333333334ull, 0x3333333333333333ull}
  702.    }
  703.   ,     // 1 extra digit
  704.   {{0x51eb851eb851eb86ull, 0x051eb851eb851eb8ull}
  705.    }
  706.   ,     // 2 extra digits
  707.   {{0x3b645a1cac083127ull, 0x0083126e978d4fdfull}
  708.    }
  709.   ,     // 3 extra digits
  710.   {{0x4af4f0d844d013aaULL, 0x00346dc5d6388659ULL}
  711.    }
  712.   ,     //  10^(-4) * 2^131
  713.   {{0x08c3f3e0370cdc88ULL, 0x0029f16b11c6d1e1ULL}
  714.    }
  715.   ,     //  10^(-5) * 2^134
  716.   {{0x6d698fe69270b06dULL, 0x00218def416bdb1aULL}
  717.    }
  718.   ,     //  10^(-6) * 2^137
  719.   {{0xaf0f4ca41d811a47ULL, 0x0035afe535795e90ULL}
  720.    }
  721.   ,     //  10^(-7) * 2^141
  722.   {{0xbf3f70834acdaea0ULL, 0x002af31dc4611873ULL}
  723.    }
  724.   ,     //  10^(-8) * 2^144
  725.   {{0x65cc5a02a23e254dULL, 0x00225c17d04dad29ULL}
  726.    }
  727.   ,     //  10^(-9) * 2^147
  728.   {{0x6fad5cd10396a214ULL, 0x0036f9bfb3af7b75ULL}
  729.    }
  730.   ,     // 10^(-10) * 2^151
  731.   {{0xbfbde3da69454e76ULL, 0x002bfaffc2f2c92aULL}
  732.    }
  733.   ,     // 10^(-11) * 2^154
  734.   {{0x32fe4fe1edd10b92ULL, 0x00232f33025bd422ULL}
  735.    }
  736.   ,     // 10^(-12) * 2^157
  737.   {{0x84ca19697c81ac1cULL, 0x00384b84d092ed03ULL}
  738.    }
  739.   ,     // 10^(-13) * 2^161
  740.   {{0x03d4e1213067bce4ULL, 0x002d09370d425736ULL}
  741.    }
  742.   ,     // 10^(-14) * 2^164
  743.   {{0x3643e74dc052fd83ULL, 0x0024075f3dceac2bULL}
  744.    }
  745.   ,     // 10^(-15) * 2^167
  746.   {{0x56d30baf9a1e626bULL, 0x0039a5652fb11378ULL}
  747.    }
  748.   ,     // 10^(-16) * 2^171
  749.   {{0x12426fbfae7eb522ULL, 0x002e1dea8c8da92dULL}
  750.    }
  751.   ,     // 10^(-17) * 2^174
  752.   {{0x41cebfcc8b9890e8ULL, 0x0024e4bba3a48757ULL}
  753.    }
  754.   ,     // 10^(-18) * 2^177
  755.   {{0x694acc7a78f41b0dULL, 0x003b07929f6da558ULL}
  756.    }
  757.   ,     // 10^(-19) * 2^181
  758.   {{0xbaa23d2ec729af3eULL, 0x002f394219248446ULL}
  759.    }
  760.   ,     // 10^(-20) * 2^184
  761.   {{0xfbb4fdbf05baf298ULL, 0x0025c768141d369eULL}
  762.    }
  763.   ,     // 10^(-21) * 2^187
  764.   {{0x2c54c931a2c4b759ULL, 0x003c7240202ebdcbULL}
  765.    }
  766.   ,     // 10^(-22) * 2^191
  767.   {{0x89dd6dc14f03c5e1ULL, 0x00305b66802564a2ULL}
  768.    }
  769.   ,     // 10^(-23) * 2^194
  770.   {{0xd4b1249aa59c9e4eULL, 0x0026af8533511d4eULL}
  771.    }
  772.   ,     // 10^(-24) * 2^197
  773.   {{0x544ea0f76f60fd49ULL, 0x003de5a1ebb4fbb1ULL}
  774.    }
  775.   ,     // 10^(-25) * 2^201
  776.   {{0x76a54d92bf80caa1ULL, 0x00318481895d9627ULL}
  777.    }
  778.   ,     // 10^(-26) * 2^204
  779.   {{0x921dd7a89933d54eULL, 0x00279d346de4781fULL}
  780.    }
  781.   ,     // 10^(-27) * 2^207
  782.   {{0x8362f2a75b862215ULL, 0x003f61ed7ca0c032ULL}
  783.    }
  784.   ,     // 10^(-28) * 2^211
  785.   {{0xcf825bb91604e811ULL, 0x0032b4bdfd4d668eULL}
  786.    }
  787.   ,     // 10^(-29) * 2^214
  788.   {{0x0c684960de6a5341ULL, 0x00289097fdd7853fULL}
  789.    }
  790.   ,     // 10^(-30) * 2^217
  791.   {{0x3d203ab3e521dc34ULL, 0x002073accb12d0ffULL}
  792.    }
  793.   ,     // 10^(-31) * 2^220
  794.   {{0x2e99f7863b696053ULL, 0x0033ec47ab514e65ULL}
  795.    }
  796.   ,     // 10^(-32) * 2^224
  797.   {{0x587b2c6b62bab376ULL, 0x002989d2ef743eb7ULL}
  798.    }
  799.   ,     // 10^(-33) * 2^227
  800.   {{0xad2f56bc4efbc2c5ULL, 0x00213b0f25f69892ULL}
  801.    }
  802.   ,     // 10^(-34) * 2^230
  803.   {{0x0f2abc9d8c9689d1ull, 0x01a95a5b7f87a0efull}
  804.    }
  805.   ,     // 35 extra digits
  806. };
  807.  
  808.  
  809. int recip_scale[] = {
  810.   129 - 128,    // 1
  811.   129 - 128,    // 1/10
  812.   129 - 128,    // 1/10^2
  813.   129 - 128,    // 1/10^3
  814.   3,    // 131 - 128
  815.   6,    // 134 - 128
  816.   9,    // 137 - 128
  817.   13,   // 141 - 128
  818.   16,   // 144 - 128
  819.   19,   // 147 - 128
  820.   23,   // 151 - 128
  821.   26,   // 154 - 128
  822.   29,   // 157 - 128
  823.   33,   // 161 - 128
  824.   36,   // 164 - 128
  825.   39,   // 167 - 128
  826.   43,   // 171 - 128
  827.   46,   // 174 - 128
  828.   49,   // 177 - 128
  829.   53,   // 181 - 128
  830.   56,   // 184 - 128
  831.   59,   // 187 - 128
  832.   63,   // 191 - 128
  833.  
  834.   66,   // 194 - 128
  835.   69,   // 197 - 128
  836.   73,   // 201 - 128
  837.   76,   // 204 - 128
  838.   79,   // 207 - 128
  839.   83,   // 211 - 128
  840.   86,   // 214 - 128
  841.   89,   // 217 - 128
  842.   92,   // 220 - 128
  843.   96,   // 224 - 128
  844.   99,   // 227 - 128
  845.   102,  // 230 - 128
  846.   109,  // 237 - 128, 1/10^35
  847. };
  848.  
  849.  
  850. // tables used in computation
  851. int estimate_decimal_digits[129] = {
  852.   1,    //2^0 =1     < 10^0
  853.   1,    //2^1 =2     < 10^1
  854.   1,    //2^2 =4     < 10^1
  855.   1,    //2^3 =8     < 10^1
  856.   2,    //2^4 =16    < 10^2
  857.   2,    //2^5 =32    < 10^2
  858.   2,    //2^6 =64    < 10^2
  859.   3,    //2^7 =128   < 10^3
  860.   3,    //2^8 =256   < 10^3
  861.   3,    //2^9 =512   < 10^3
  862.   4,    //2^10=1024  < 10^4
  863.   4,    //2^11=2048  < 10^4
  864.   4,    //2^12=4096  < 10^4
  865.   4,    //2^13=8192  < 10^4
  866.   5,    //2^14=16384 < 10^5
  867.   5,    //2^15=32768 < 10^5
  868.  
  869.   5,    //2^16=65536     < 10^5
  870.   6,    //2^17=131072    < 10^6
  871.   6,    //2^18=262144    < 10^6
  872.   6,    //2^19=524288    < 10^6
  873.   7,    //2^20=1048576   < 10^7
  874.   7,    //2^21=2097152   < 10^7
  875.   7,    //2^22=4194304   < 10^7
  876.   7,    //2^23=8388608   < 10^7
  877.   8,    //2^24=16777216  < 10^8
  878.   8,    //2^25=33554432  < 10^8
  879.   8,    //2^26=67108864  < 10^8
  880.   9,    //2^27=134217728 < 10^9
  881.   9,    //2^28=268435456 < 10^9
  882.   9,    //2^29=536870912 < 10^9
  883.   10,   //2^30=1073741824< 10^10
  884.   10,   //2^31=2147483648< 10^10
  885.  
  886.   10,   //2^32=4294967296     < 10^10
  887.   10,   //2^33=8589934592     < 10^10
  888.   11,   //2^34=17179869184    < 10^11
  889.   11,   //2^35=34359738368    < 10^11
  890.   11,   //2^36=68719476736    < 10^11
  891.   12,   //2^37=137438953472   < 10^12
  892.   12,   //2^38=274877906944   < 10^12
  893.   12,   //2^39=549755813888   < 10^12
  894.   13,   //2^40=1099511627776  < 10^13
  895.   13,   //2^41=2199023255552  < 10^13
  896.   13,   //2^42=4398046511104  < 10^13
  897.   13,   //2^43=8796093022208  < 10^13
  898.   14,   //2^44=17592186044416 < 10^14
  899.   14,   //2^45=35184372088832 < 10^14
  900.   14,   //2^46=70368744177664 < 10^14
  901.   15,   //2^47=140737488355328< 10^15
  902.  
  903.   15,   //2^48=281474976710656    < 10^15
  904.   15,   //2^49=562949953421312    < 10^15
  905.   16,   //2^50=1125899906842624   < 10^16
  906.   16,   //2^51=2251799813685248   < 10^16
  907.   16,   //2^52=4503599627370496   < 10^16
  908.   16,   //2^53=9007199254740992   < 10^16
  909.   17,   //2^54=18014398509481984  < 10^17
  910.   17,   //2^55=36028797018963968  < 10^17
  911.   17,   //2^56=72057594037927936  < 10^17
  912.   18,   //2^57=144115188075855872 < 10^18
  913.   18,   //2^58=288230376151711744 < 10^18
  914.   18,   //2^59=576460752303423488 < 10^18
  915.   19,   //2^60=1152921504606846976< 10^19
  916.   19,   //2^61=2305843009213693952< 10^19
  917.   19,   //2^62=4611686018427387904< 10^19
  918.   19,   //2^63=9223372036854775808< 10^19
  919.  
  920.   20,   //2^64=18446744073709551616
  921.   20,   //2^65=36893488147419103232
  922.   20,   //2^66=73786976294838206464
  923.   21,   //2^67=147573952589676412928
  924.   21,   //2^68=295147905179352825856
  925.   21,   //2^69=590295810358705651712
  926.   22,   //2^70=1180591620717411303424
  927.   22,   //2^71=2361183241434822606848
  928.   22,   //2^72=4722366482869645213696
  929.   22,   //2^73=9444732965739290427392
  930.   23,   //2^74=18889465931478580854784
  931.   23,   //2^75=37778931862957161709568
  932.   23,   //2^76=75557863725914323419136
  933.   24,   //2^77=151115727451828646838272
  934.   24,   //2^78=302231454903657293676544
  935.   24,   //2^79=604462909807314587353088
  936.  
  937.   25,   //2^80=1208925819614629174706176
  938.   25,   //2^81=2417851639229258349412352
  939.   25,   //2^82=4835703278458516698824704
  940.   25,   //2^83=9671406556917033397649408
  941.   26,   //2^84=19342813113834066795298816
  942.   26,   //2^85=38685626227668133590597632
  943.   26,   //2^86=77371252455336267181195264
  944.   27,   //2^87=154742504910672534362390528
  945.   27,   //2^88=309485009821345068724781056
  946.   27,   //2^89=618970019642690137449562112
  947.   28,   //2^90=1237940039285380274899124224
  948.   28,   //2^91=2475880078570760549798248448
  949.   28,   //2^92=4951760157141521099596496896
  950.   28,   //2^93=9903520314283042199192993792
  951.   29,   //2^94=19807040628566084398385987584
  952.   29,   //2^95=39614081257132168796771975168
  953.   29,   //2^96=79228162514264337593543950336
  954.  
  955.   30,   //2^97=158456325028528675187087900672
  956.   30,   //2^98=316912650057057350374175801344
  957.   30,   //2^99=633825300114114700748351602688
  958.   31,   //2^100=1267650600228229401496703205376
  959.   31,   //2^101=2535301200456458802993406410752
  960.   31,   //2^102=5070602400912917605986812821504
  961.   32,   //2^103=10141204801825835211973625643008
  962.   32,   //2^104=20282409603651670423947251286016
  963.   32,   //2^105=40564819207303340847894502572032
  964.   32,   //2^106=81129638414606681695789005144064
  965.   33,   //2^107=162259276829213363391578010288128
  966.   33,   // 2^108
  967.   33,   // 2^109
  968.   34,   // 2^110
  969.   34,   // 2^111
  970.   34,   // 2^112
  971.   35,   // 2^113
  972.   35,   // 2^114
  973.   35,   // 2^115
  974.   35,   // 2^116
  975.   36,   // 2^117
  976.   36,   // 2^118
  977.   36,   // 2^119
  978.   37,   // 2^120
  979.   37,   // 2^121
  980.   37,   // 2^122
  981.   38,   // 2^123
  982.   38,   // 2^124
  983.   38,   // 2^125
  984.   38,   // 2^126
  985.   39,   // 2^127
  986.   39    // 2^128
  987. };
  988.  
  989.  
  990. UINT128 power10_table_128[] = {
  991.   {{0x0000000000000001ull, 0x0000000000000000ull}},     // 10^0
  992.   {{0x000000000000000aull, 0x0000000000000000ull}},     // 10^1
  993.   {{0x0000000000000064ull, 0x0000000000000000ull}},     // 10^2
  994.   {{0x00000000000003e8ull, 0x0000000000000000ull}},     // 10^3
  995.   {{0x0000000000002710ull, 0x0000000000000000ull}},     // 10^4
  996.   {{0x00000000000186a0ull, 0x0000000000000000ull}},     // 10^5
  997.   {{0x00000000000f4240ull, 0x0000000000000000ull}},     // 10^6
  998.   {{0x0000000000989680ull, 0x0000000000000000ull}},     // 10^7
  999.   {{0x0000000005f5e100ull, 0x0000000000000000ull}},     // 10^8
  1000.   {{0x000000003b9aca00ull, 0x0000000000000000ull}},     // 10^9
  1001.   {{0x00000002540be400ull, 0x0000000000000000ull}},     // 10^10
  1002.   {{0x000000174876e800ull, 0x0000000000000000ull}},     // 10^11
  1003.   {{0x000000e8d4a51000ull, 0x0000000000000000ull}},     // 10^12
  1004.   {{0x000009184e72a000ull, 0x0000000000000000ull}},     // 10^13
  1005.   {{0x00005af3107a4000ull, 0x0000000000000000ull}},     // 10^14
  1006.   {{0x00038d7ea4c68000ull, 0x0000000000000000ull}},     // 10^15
  1007.   {{0x002386f26fc10000ull, 0x0000000000000000ull}},     // 10^16
  1008.   {{0x016345785d8a0000ull, 0x0000000000000000ull}},     // 10^17
  1009.   {{0x0de0b6b3a7640000ull, 0x0000000000000000ull}},     // 10^18
  1010.   {{0x8ac7230489e80000ull, 0x0000000000000000ull}},     // 10^19
  1011.   {{0x6bc75e2d63100000ull, 0x0000000000000005ull}},     // 10^20
  1012.   {{0x35c9adc5dea00000ull, 0x0000000000000036ull}},     // 10^21
  1013.   {{0x19e0c9bab2400000ull, 0x000000000000021eull}},     // 10^22
  1014.   {{0x02c7e14af6800000ull, 0x000000000000152dull}},     // 10^23
  1015.   {{0x1bcecceda1000000ull, 0x000000000000d3c2ull}},     // 10^24
  1016.   {{0x161401484a000000ull, 0x0000000000084595ull}},     // 10^25
  1017.   {{0xdcc80cd2e4000000ull, 0x000000000052b7d2ull}},     // 10^26
  1018.   {{0x9fd0803ce8000000ull, 0x00000000033b2e3cull}},     // 10^27
  1019.   {{0x3e25026110000000ull, 0x00000000204fce5eull}},     // 10^28
  1020.   {{0x6d7217caa0000000ull, 0x00000001431e0faeull}},     // 10^29
  1021.   {{0x4674edea40000000ull, 0x0000000c9f2c9cd0ull}},     // 10^30
  1022.   {{0xc0914b2680000000ull, 0x0000007e37be2022ull}},     // 10^31
  1023.   {{0x85acef8100000000ull, 0x000004ee2d6d415bull}},     // 10^32
  1024.   {{0x38c15b0a00000000ull, 0x0000314dc6448d93ull}},     // 10^33
  1025.   {{0x378d8e6400000000ull, 0x0001ed09bead87c0ull}},     // 10^34
  1026.   {{0x2b878fe800000000ull, 0x0013426172c74d82ull}},     // 10^35
  1027.   {{0xb34b9f1000000000ull, 0x00c097ce7bc90715ull}},     // 10^36
  1028.   {{0x00f436a000000000ull, 0x0785ee10d5da46d9ull}},     // 10^37
  1029.   {{0x098a224000000000ull, 0x4b3b4ca85a86c47aull}},     // 10^38
  1030. };
  1031.  
  1032.  
  1033. int estimate_bin_expon[] = {
  1034.   0,    // 10^0
  1035.   3,    // 10^1
  1036.   6,    // 10^2
  1037.   9,    // 10^3
  1038.   13,   // 10^4
  1039.   16,   // 10^5
  1040.   19,   // 10^6
  1041.   23,   // 10^7
  1042.   26,   // 10^8
  1043.   29,   // 10^9
  1044.   33,   // 10^10
  1045.   36,   // 10^11
  1046.   39,   // 10^12
  1047.   43,   // 10^13
  1048.   46,   // 10^14
  1049.   49,   // 10^15
  1050.   53    // 10^16
  1051. };
  1052.  
  1053.  
  1054. UINT64 power10_index_binexp[] = {
  1055.   0x000000000000000aull,
  1056.   0x000000000000000aull,
  1057.   0x000000000000000aull,
  1058.   0x000000000000000aull,
  1059.   0x0000000000000064ull,
  1060.   0x0000000000000064ull,
  1061.   0x0000000000000064ull,
  1062.   0x00000000000003e8ull,
  1063.   0x00000000000003e8ull,
  1064.   0x00000000000003e8ull,
  1065.   0x0000000000002710ull,
  1066.   0x0000000000002710ull,
  1067.   0x0000000000002710ull,
  1068.   0x0000000000002710ull,
  1069.   0x00000000000186a0ull,
  1070.   0x00000000000186a0ull,
  1071.   0x00000000000186a0ull,
  1072.   0x00000000000f4240ull,
  1073.   0x00000000000f4240ull,
  1074.   0x00000000000f4240ull,
  1075.   0x0000000000989680ull,
  1076.   0x0000000000989680ull,
  1077.   0x0000000000989680ull,
  1078.   0x0000000000989680ull,
  1079.   0x0000000005f5e100ull,
  1080.   0x0000000005f5e100ull,
  1081.   0x0000000005f5e100ull,
  1082.   0x000000003b9aca00ull,
  1083.   0x000000003b9aca00ull,
  1084.   0x000000003b9aca00ull,
  1085.   0x00000002540be400ull,
  1086.   0x00000002540be400ull,
  1087.   0x00000002540be400ull,
  1088.   0x00000002540be400ull,
  1089.   0x000000174876e800ull,
  1090.   0x000000174876e800ull,
  1091.   0x000000174876e800ull,
  1092.   0x000000e8d4a51000ull,
  1093.   0x000000e8d4a51000ull,
  1094.   0x000000e8d4a51000ull,
  1095.   0x000009184e72a000ull,
  1096.   0x000009184e72a000ull,
  1097.   0x000009184e72a000ull,
  1098.   0x000009184e72a000ull,
  1099.   0x00005af3107a4000ull,
  1100.   0x00005af3107a4000ull,
  1101.   0x00005af3107a4000ull,
  1102.   0x00038d7ea4c68000ull,
  1103.   0x00038d7ea4c68000ull,
  1104.   0x00038d7ea4c68000ull,
  1105.   0x002386f26fc10000ull,
  1106.   0x002386f26fc10000ull,
  1107.   0x002386f26fc10000ull,
  1108.   0x002386f26fc10000ull,
  1109.   0x016345785d8a0000ull,
  1110.   0x016345785d8a0000ull,
  1111.   0x016345785d8a0000ull,
  1112.   0x0de0b6b3a7640000ull,
  1113.   0x0de0b6b3a7640000ull,
  1114.   0x0de0b6b3a7640000ull,
  1115.   0x8ac7230489e80000ull,
  1116.   0x8ac7230489e80000ull,
  1117.   0x8ac7230489e80000ull,
  1118.   0x8ac7230489e80000ull
  1119. };
  1120.  
  1121.  
  1122. int short_recip_scale[] = {
  1123.   1,
  1124.   65 - 64,
  1125.   69 - 64,
  1126.   71 - 64,
  1127.   75 - 64,
  1128.   78 - 64,
  1129.   81 - 64,
  1130.   85 - 64,
  1131.   88 - 64,
  1132.   91 - 64,
  1133.   95 - 64,
  1134.   98 - 64,
  1135.   101 - 64,
  1136.   105 - 64,
  1137.   108 - 64,
  1138.   111 - 64,
  1139.   115 - 64,     //114 - 64
  1140.   118 - 64
  1141. };
  1142.  
  1143.  
  1144. UINT64 reciprocals10_64[] = {
  1145.   1ull, // dummy value for 0 extra digits
  1146.   0x3333333333333334ull,        // 1 extra digit
  1147.   0x51eb851eb851eb86ull,
  1148.   0x20c49ba5e353f7cfull,
  1149.   0x346dc5d63886594bull,
  1150.   0x29f16b11c6d1e109ull,
  1151.   0x218def416bdb1a6eull,
  1152.   0x35afe535795e90b0ull,
  1153.   0x2af31dc4611873c0ull,
  1154.   0x225c17d04dad2966ull,
  1155.   0x36f9bfb3af7b7570ull,
  1156.   0x2bfaffc2f2c92ac0ull,
  1157.   0x232f33025bd42233ull,
  1158.   0x384b84d092ed0385ull,
  1159.   0x2d09370d42573604ull,
  1160.   0x24075f3dceac2b37ull,
  1161.   0x39a5652fb1137857ull,
  1162.   0x2e1dea8c8da92d13ull
  1163. };
  1164.  
  1165.  
  1166.  
  1167. UINT128 power10_index_binexp_128[] = {
  1168.   {{0x000000000000000aull, 0x0000000000000000ull}},
  1169.   {{0x000000000000000aull, 0x0000000000000000ull}},
  1170.   {{0x000000000000000aull, 0x0000000000000000ull}},
  1171.   {{0x000000000000000aull, 0x0000000000000000ull}},
  1172.   {{0x0000000000000064ull, 0x0000000000000000ull}},
  1173.   {{0x0000000000000064ull, 0x0000000000000000ull}},
  1174.   {{0x0000000000000064ull, 0x0000000000000000ull}},
  1175.   {{0x00000000000003e8ull, 0x0000000000000000ull}},
  1176.   {{0x00000000000003e8ull, 0x0000000000000000ull}},
  1177.   {{0x00000000000003e8ull, 0x0000000000000000ull}},
  1178.   {{0x0000000000002710ull, 0x0000000000000000ull}},
  1179.   {{0x0000000000002710ull, 0x0000000000000000ull}},
  1180.   {{0x0000000000002710ull, 0x0000000000000000ull}},
  1181.   {{0x0000000000002710ull, 0x0000000000000000ull}},
  1182.   {{0x00000000000186a0ull, 0x0000000000000000ull}},
  1183.   {{0x00000000000186a0ull, 0x0000000000000000ull}},
  1184.   {{0x00000000000186a0ull, 0x0000000000000000ull}},
  1185.   {{0x00000000000f4240ull, 0x0000000000000000ull}},
  1186.   {{0x00000000000f4240ull, 0x0000000000000000ull}},
  1187.   {{0x00000000000f4240ull, 0x0000000000000000ull}},
  1188.   {{0x0000000000989680ull, 0x0000000000000000ull}},
  1189.   {{0x0000000000989680ull, 0x0000000000000000ull}},
  1190.   {{0x0000000000989680ull, 0x0000000000000000ull}},
  1191.   {{0x0000000000989680ull, 0x0000000000000000ull}},
  1192.   {{0x0000000005f5e100ull, 0x0000000000000000ull}},
  1193.   {{0x0000000005f5e100ull, 0x0000000000000000ull}},
  1194.   {{0x0000000005f5e100ull, 0x0000000000000000ull}},
  1195.   {{0x000000003b9aca00ull, 0x0000000000000000ull}},
  1196.   {{0x000000003b9aca00ull, 0x0000000000000000ull}},
  1197.   {{0x000000003b9aca00ull, 0x0000000000000000ull}},
  1198.   {{0x00000002540be400ull, 0x0000000000000000ull}},
  1199.   {{0x00000002540be400ull, 0x0000000000000000ull}},
  1200.   {{0x00000002540be400ull, 0x0000000000000000ull}},
  1201.   {{0x00000002540be400ull, 0x0000000000000000ull}},
  1202.   {{0x000000174876e800ull, 0x0000000000000000ull}},
  1203.   {{0x000000174876e800ull, 0x0000000000000000ull}},
  1204.   {{0x000000174876e800ull, 0x0000000000000000ull}},
  1205.   {{0x000000e8d4a51000ull, 0x0000000000000000ull}},
  1206.   {{0x000000e8d4a51000ull, 0x0000000000000000ull}},
  1207.   {{0x000000e8d4a51000ull, 0x0000000000000000ull}},
  1208.   {{0x000009184e72a000ull, 0x0000000000000000ull}},
  1209.   {{0x000009184e72a000ull, 0x0000000000000000ull}},
  1210.   {{0x000009184e72a000ull, 0x0000000000000000ull}},
  1211.   {{0x000009184e72a000ull, 0x0000000000000000ull}},
  1212.   {{0x00005af3107a4000ull, 0x0000000000000000ull}},
  1213.   {{0x00005af3107a4000ull, 0x0000000000000000ull}},
  1214.   {{0x00005af3107a4000ull, 0x0000000000000000ull}},
  1215.   {{0x00038d7ea4c68000ull, 0x0000000000000000ull}},
  1216.   {{0x00038d7ea4c68000ull, 0x0000000000000000ull}},
  1217.   {{0x00038d7ea4c68000ull, 0x0000000000000000ull}},
  1218.   {{0x002386f26fc10000ull, 0x0000000000000000ull}},
  1219.   {{0x002386f26fc10000ull, 0x0000000000000000ull}},
  1220.   {{0x002386f26fc10000ull, 0x0000000000000000ull}},
  1221.   {{0x002386f26fc10000ull, 0x0000000000000000ull}},
  1222.   {{0x016345785d8a0000ull, 0x0000000000000000ull}},
  1223.   {{0x016345785d8a0000ull, 0x0000000000000000ull}},
  1224.   {{0x016345785d8a0000ull, 0x0000000000000000ull}},
  1225.   {{0x0de0b6b3a7640000ull, 0x0000000000000000ull}},
  1226.   {{0x0de0b6b3a7640000ull, 0x0000000000000000ull}},
  1227.   {{0x0de0b6b3a7640000ull, 0x0000000000000000ull}},
  1228.   {{0x8ac7230489e80000ull, 0x0000000000000000ull}},
  1229.   {{0x8ac7230489e80000ull, 0x0000000000000000ull}},
  1230.   {{0x8ac7230489e80000ull, 0x0000000000000000ull}},
  1231.   {{0x8ac7230489e80000ull, 0x0000000000000000ull}},
  1232.   {{0x6bc75e2d63100000ull, 0x0000000000000005ull}},     // 10^20
  1233.   {{0x6bc75e2d63100000ull, 0x0000000000000005ull}},     // 10^20
  1234.   {{0x6bc75e2d63100000ull, 0x0000000000000005ull}},     // 10^20
  1235.   {{0x35c9adc5dea00000ull, 0x0000000000000036ull}},     // 10^21
  1236.   {{0x35c9adc5dea00000ull, 0x0000000000000036ull}},     // 10^21
  1237.   {{0x35c9adc5dea00000ull, 0x0000000000000036ull}},     // 10^21
  1238.   {{0x19e0c9bab2400000ull, 0x000000000000021eull}},     // 10^22
  1239.   {{0x19e0c9bab2400000ull, 0x000000000000021eull}},     // 10^22
  1240.   {{0x19e0c9bab2400000ull, 0x000000000000021eull}},     // 10^22
  1241.   {{0x19e0c9bab2400000ull, 0x000000000000021eull}},     // 10^22
  1242.   {{0x02c7e14af6800000ull, 0x000000000000152dull}},     // 10^23
  1243.   {{0x02c7e14af6800000ull, 0x000000000000152dull}},     // 10^23
  1244.   {{0x02c7e14af6800000ull, 0x000000000000152dull}},     // 10^23
  1245.   {{0x1bcecceda1000000ull, 0x000000000000d3c2ull}},     // 10^24
  1246.   {{0x1bcecceda1000000ull, 0x000000000000d3c2ull}},     // 10^24
  1247.   {{0x1bcecceda1000000ull, 0x000000000000d3c2ull}},     // 10^24
  1248.   {{0x161401484a000000ull, 0x0000000000084595ull}},     // 10^25
  1249.   {{0x161401484a000000ull, 0x0000000000084595ull}},     // 10^25
  1250.   {{0x161401484a000000ull, 0x0000000000084595ull}},     // 10^25
  1251.   {{0x161401484a000000ull, 0x0000000000084595ull}},     // 10^25
  1252.   {{0xdcc80cd2e4000000ull, 0x000000000052b7d2ull}},     // 10^26
  1253.   {{0xdcc80cd2e4000000ull, 0x000000000052b7d2ull}},     // 10^26
  1254.   {{0xdcc80cd2e4000000ull, 0x000000000052b7d2ull}},     // 10^26
  1255.   {{0x9fd0803ce8000000ull, 0x00000000033b2e3cull}},     // 10^27
  1256.   {{0x9fd0803ce8000000ull, 0x00000000033b2e3cull}},     // 10^27
  1257.   {{0x9fd0803ce8000000ull, 0x00000000033b2e3cull}},     // 10^27
  1258.   {{0x3e25026110000000ull, 0x00000000204fce5eull}},     // 10^28
  1259.   {{0x3e25026110000000ull, 0x00000000204fce5eull}},     // 10^28
  1260.   {{0x3e25026110000000ull, 0x00000000204fce5eull}},     // 10^28
  1261.   {{0x3e25026110000000ull, 0x00000000204fce5eull}},     // 10^28
  1262.   {{0x6d7217caa0000000ull, 0x00000001431e0faeull}},     // 10^29
  1263.   {{0x6d7217caa0000000ull, 0x00000001431e0faeull}},     // 10^29
  1264.   {{0x6d7217caa0000000ull, 0x00000001431e0faeull}},     // 10^29
  1265.   {{0x4674edea40000000ull, 0x0000000c9f2c9cd0ull}},     // 10^30
  1266.   {{0x4674edea40000000ull, 0x0000000c9f2c9cd0ull}},     // 10^30
  1267.   {{0x4674edea40000000ull, 0x0000000c9f2c9cd0ull}},     // 10^30
  1268.   {{0xc0914b2680000000ull, 0x0000007e37be2022ull}},     // 10^31
  1269.   {{0xc0914b2680000000ull, 0x0000007e37be2022ull}},     // 10^31
  1270.   {{0xc0914b2680000000ull, 0x0000007e37be2022ull}},     // 10^31
  1271.   {{0x85acef8100000000ull, 0x000004ee2d6d415bull}},     // 10^32
  1272.   {{0x85acef8100000000ull, 0x000004ee2d6d415bull}},     // 10^32
  1273.   {{0x85acef8100000000ull, 0x000004ee2d6d415bull}},     // 10^32
  1274.   {{0x85acef8100000000ull, 0x000004ee2d6d415bull}},     // 10^32
  1275.   {{0x38c15b0a00000000ull, 0x0000314dc6448d93ull}},     // 10^33
  1276.   {{0x38c15b0a00000000ull, 0x0000314dc6448d93ull}},     // 10^33
  1277.   {{0x38c15b0a00000000ull, 0x0000314dc6448d93ull}},     // 10^33, entry 112
  1278.   {{0x378d8e6400000000ull, 0x0001ed09bead87c0ull}},     // 10^34
  1279.   {{0x378d8e6400000000ull, 0x0001ed09bead87c0ull}},     // 10^34
  1280.   {{0x378d8e6400000000ull, 0x0001ed09bead87c0ull}},     // 10^34
  1281.   {{0x2b878fe800000000ull, 0x0013426172c74d82ull}},     // 10^35
  1282.   {{0x2b878fe800000000ull, 0x0013426172c74d82ull}},     // 10^35
  1283.   {{0x2b878fe800000000ull, 0x0013426172c74d82ull}},     // 10^35
  1284.   {{0x2b878fe800000000ull, 0x0013426172c74d82ull}},     // 10^35
  1285.   {{0xb34b9f1000000000ull, 0x00c097ce7bc90715ull}},     // 10^36
  1286.   {{0x00f436a000000000ull, 0x0785ee10d5da46d9ull}},     // 10^37
  1287.   {{0x00f436a000000000ull, 0x0785ee10d5da46d9ull}},     // 10^37
  1288.   {{0x00f436a000000000ull, 0x0785ee10d5da46d9ull}},     // 10^37
  1289.   {{0x098a224000000000ull, 0x4b3b4ca85a86c47aull}},     // 10^38
  1290.   {{0x098a224000000000ull, 0x4b3b4ca85a86c47aull}},     // 10^38
  1291.   {{0x098a224000000000ull, 0x4b3b4ca85a86c47aull}},     // 10^38
  1292.   {{0x098a224000000000ull, 0x4b3b4ca85a86c47aull}},     // 10^38
  1293. };
  1294.