]> git.ipfire.org Git - thirdparty/sqlite.git/commitdiff
Avoid the big power-of-ten lookup table. fp-perf
authordrh <>
Sun, 15 Feb 2026 18:41:29 +0000 (18:41 +0000)
committerdrh <>
Sun, 15 Feb 2026 18:41:29 +0000 (18:41 +0000)
FossilOrigin-Name: 245ac7d9ec61e14fcef13a731e290fc5e8979efef6f4345f875eab9b882b0713

manifest
manifest.uuid
src/util.c

index b6b573f2ecac13ce4a21bd51ded980fd0d41be9d..62d504e47c363f07901f7d3bdd8c4ec981f81a59 100644 (file)
--- a/manifest
+++ b/manifest
@@ -1,5 +1,5 @@
-C Fix\sto\s[9d3a12d3926d55ef]\sto\sforce\sthe\sstatic\sconst\sstring\sliteral\sto\nhave\stwo-byte\salignment.\s\sNecessary\sto\sget\sthat\spatch\sto\swork\sin\sMac-ARM.
-D 2026-02-14T22:04:53.811
+C Avoid\sthe\sbig\spower-of-ten\slookup\stable.
+D 2026-02-15T18:41:29.104
 F .fossil-settings/binary-glob 61195414528fb3ea9693577e1980230d78a1f8b0a54c78cf1b9b24d0a409ed6a x
 F .fossil-settings/empty-dirs dbb81e8fc0401ac46a1491ab34a7f2c7c0452f2f06b54ebb845d024ca8283ef1
 F .fossil-settings/ignore-glob 35175cdfcf539b2318cb04a9901442804be81cd677d8b889fcc9149c21f239ea
@@ -803,7 +803,7 @@ F src/trigger.c cb894db98083c68c4a17c72566ed39434aa91286db20d2891279ee49e6bfec0c
 F src/update.c 3e5e7ff66fa19ebe4d1b113d480639a24cc1175adbefabbd1a948a07f28e37cf
 F src/upsert.c 215328c3f91623c520ec8672c44323553f12caeb4f01b1090ebdca99fdf7b4f1
 F src/utf.c 7267c3fb9e2467020507601af3354c2446c61f444387e094c779dccd5ca62165
-F src/util.c 2b95816e47e3e789c3a803a8591678c082c24e78146175e9c1b9039c61869ec0
+F src/util.c 0cc410d538fe13a2cda90a8d0087c82cf4c1ab0d5055b8e3a595f28266f190c7
 F src/vacuum.c d3d35d8ae893d419ade5fa196d761a83bddcbb62137a1a157ae751ef38b26e82
 F src/vdbe.c fa28a8f740f3d94c4e6b6d42ba90c220472683486268e753017512a70ef715f5
 F src/vdbe.h 966d0677a540b7ea6549b7c4e1312fc0d830fce3a235a58c801f2cc31cf5ecf9
@@ -2194,8 +2194,8 @@ F tool/warnings-clang.sh bbf6a1e685e534c92ec2bfba5b1745f34fb6f0bc2a362850723a9ee
 F tool/warnings.sh d924598cf2f55a4ecbc2aeb055c10bd5f48114793e7ba25f9585435da29e7e98
 F tool/win/sqlite.vsix deb315d026cc8400325c5863eef847784a219a2f
 F tool/winmain.c 00c8fb88e365c9017db14c73d3c78af62194d9644feaf60e220ab0f411f3604c
-P 4bf08110662c4b8db9ee90ce34271890a62a469166ea292f7f782b84236531d4
-R e9a61f8d803b1efd3bc1e0ac0477000a
+P a80c847169f307a4d2e524b6732ea557bf7f312f1a319d6c6c2e81adb0907596
+R 3eb7e8d20bd192b2f6690ce98ebbba28
 U drh
-Z 60f49f9dc3f68ee820a036cf7efdaecb
+Z 4720cdecbf1fe28948310be768602949
 # Remove this line to create a well-formed Fossil manifest.
index ad4d726634618087232678a320565283443b9df0..fc8d52e1ce73e43d56ee64a8525177778a738a9d 100644 (file)
@@ -1 +1 @@
-a80c847169f307a4d2e524b6732ea557bf7f312f1a319d6c6c2e81adb0907596
+245ac7d9ec61e14fcef13a731e290fc5e8979efef6f4345f875eab9b882b0713
index 8ae247a32800d707bda3d19940d900ed64433a83..9522c14c0c5b95049f3d590276238fe51416fe52 100644 (file)
@@ -457,725 +457,6 @@ u8 sqlite3StrIHash(const char *z){
   }
   return h;
 }
-/*
-** The following array holds (approximate) powers-of-ten between
-** 1.0e-348 and 1.0e+347.  Each value is an unsigned 64-bit integer,
-** shifted so that its most significant bit is 1.
-**
-** For the power-of-ten whose value is pow(10,p), the value
-** is shifted left or right in order to multiply it by
-** pow(2,63-pow10to2(p)).  Hence, another way to think of the
-** entries in this table is:
-**
-**    for p from -348 to +347:
-**      int( pow(10,p)*pow(2,63-pow10to2(p)) )
-**
-** The int(x) function means the integer part of value x.  See
-** the definition of pow10to2() below for more details about that
-** function.  There is an assert() in the utility program that
-** generates this table that verifies the invariant described above.
-*/
-static const u64 sqlite3PowerOfTen[] = {
-  0xfa8fd5a0081c0288LLU, /*   0: 1.0e-348 << 1220 */
-  0x9c99e58405118195LLU, /*   1: 1.0e-347 << 1216 */
-  0xc3c05ee50655e1faLLU, /*   2: 1.0e-346 << 1213 */
-  0xf4b0769e47eb5a78LLU, /*   3: 1.0e-345 << 1210 */
-  0x98ee4a22ecf3188bLLU, /*   4: 1.0e-344 << 1206 */
-  0xbf29dcaba82fdeaeLLU, /*   5: 1.0e-343 << 1203 */
-  0xeef453d6923bd65aLLU, /*   6: 1.0e-342 << 1200 */
-  0x9558b4661b6565f8LLU, /*   7: 1.0e-341 << 1196 */
-  0xbaaee17fa23ebf76LLU, /*   8: 1.0e-340 << 1193 */
-  0xe95a99df8ace6f53LLU, /*   9: 1.0e-339 << 1190 */
-  0x91d8a02bb6c10594LLU, /*  10: 1.0e-338 << 1186 */
-  0xb64ec836a47146f9LLU, /*  11: 1.0e-337 << 1183 */
-  0xe3e27a444d8d98b7LLU, /*  12: 1.0e-336 << 1180 */
-  0x8e6d8c6ab0787f72LLU, /*  13: 1.0e-335 << 1176 */
-  0xb208ef855c969f4fLLU, /*  14: 1.0e-334 << 1173 */
-  0xde8b2b66b3bc4723LLU, /*  15: 1.0e-333 << 1170 */
-  0x8b16fb203055ac76LLU, /*  16: 1.0e-332 << 1166 */
-  0xaddcb9e83c6b1793LLU, /*  17: 1.0e-331 << 1163 */
-  0xd953e8624b85dd78LLU, /*  18: 1.0e-330 << 1160 */
-  0x87d4713d6f33aa6bLLU, /*  19: 1.0e-329 << 1156 */
-  0xa9c98d8ccb009506LLU, /*  20: 1.0e-328 << 1153 */
-  0xd43bf0effdc0ba48LLU, /*  21: 1.0e-327 << 1150 */
-  0x84a57695fe98746dLLU, /*  22: 1.0e-326 << 1146 */
-  0xa5ced43b7e3e9188LLU, /*  23: 1.0e-325 << 1143 */
-  0xcf42894a5dce35eaLLU, /*  24: 1.0e-324 << 1140 */
-  0x818995ce7aa0e1b2LLU, /*  25: 1.0e-323 << 1136 */
-  0xa1ebfb4219491a1fLLU, /*  26: 1.0e-322 << 1133 */
-  0xca66fa129f9b60a6LLU, /*  27: 1.0e-321 << 1130 */
-  0xfd00b897478238d0LLU, /*  28: 1.0e-320 << 1127 */
-  0x9e20735e8cb16382LLU, /*  29: 1.0e-319 << 1123 */
-  0xc5a890362fddbc62LLU, /*  30: 1.0e-318 << 1120 */
-  0xf712b443bbd52b7bLLU, /*  31: 1.0e-317 << 1117 */
-  0x9a6bb0aa55653b2dLLU, /*  32: 1.0e-316 << 1113 */
-  0xc1069cd4eabe89f8LLU, /*  33: 1.0e-315 << 1110 */
-  0xf148440a256e2c76LLU, /*  34: 1.0e-314 << 1107 */
-  0x96cd2a865764dbcaLLU, /*  35: 1.0e-313 << 1103 */
-  0xbc807527ed3e12bcLLU, /*  36: 1.0e-312 << 1100 */
-  0xeba09271e88d976bLLU, /*  37: 1.0e-311 << 1097 */
-  0x93445b8731587ea3LLU, /*  38: 1.0e-310 << 1093 */
-  0xb8157268fdae9e4cLLU, /*  39: 1.0e-309 << 1090 */
-  0xe61acf033d1a45dfLLU, /*  40: 1.0e-308 << 1087 */
-  0x8fd0c16206306babLLU, /*  41: 1.0e-307 << 1083 */
-  0xb3c4f1ba87bc8696LLU, /*  42: 1.0e-306 << 1080 */
-  0xe0b62e2929aba83cLLU, /*  43: 1.0e-305 << 1077 */
-  0x8c71dcd9ba0b4925LLU, /*  44: 1.0e-304 << 1073 */
-  0xaf8e5410288e1b6fLLU, /*  45: 1.0e-303 << 1070 */
-  0xdb71e91432b1a24aLLU, /*  46: 1.0e-302 << 1067 */
-  0x892731ac9faf056eLLU, /*  47: 1.0e-301 << 1063 */
-  0xab70fe17c79ac6caLLU, /*  48: 1.0e-300 << 1060 */
-  0xd64d3d9db981787dLLU, /*  49: 1.0e-299 << 1057 */
-  0x85f0468293f0eb4eLLU, /*  50: 1.0e-298 << 1053 */
-  0xa76c582338ed2621LLU, /*  51: 1.0e-297 << 1050 */
-  0xd1476e2c07286faaLLU, /*  52: 1.0e-296 << 1047 */
-  0x82cca4db847945caLLU, /*  53: 1.0e-295 << 1043 */
-  0xa37fce126597973cLLU, /*  54: 1.0e-294 << 1040 */
-  0xcc5fc196fefd7d0cLLU, /*  55: 1.0e-293 << 1037 */
-  0xff77b1fcbebcdc4fLLU, /*  56: 1.0e-292 << 1034 */
-  0x9faacf3df73609b1LLU, /*  57: 1.0e-291 << 1030 */
-  0xc795830d75038c1dLLU, /*  58: 1.0e-290 << 1027 */
-  0xf97ae3d0d2446f25LLU, /*  59: 1.0e-289 << 1024 */
-  0x9becce62836ac577LLU, /*  60: 1.0e-288 << 1020 */
-  0xc2e801fb244576d5LLU, /*  61: 1.0e-287 << 1017 */
-  0xf3a20279ed56d48aLLU, /*  62: 1.0e-286 << 1014 */
-  0x9845418c345644d6LLU, /*  63: 1.0e-285 << 1010 */
-  0xbe5691ef416bd60cLLU, /*  64: 1.0e-284 << 1007 */
-  0xedec366b11c6cb8fLLU, /*  65: 1.0e-283 << 1004 */
-  0x94b3a202eb1c3f39LLU, /*  66: 1.0e-282 << 1000 */
-  0xb9e08a83a5e34f07LLU, /*  67: 1.0e-281 << 997 */
-  0xe858ad248f5c22c9LLU, /*  68: 1.0e-280 << 994 */
-  0x91376c36d99995beLLU, /*  69: 1.0e-279 << 990 */
-  0xb58547448ffffb2dLLU, /*  70: 1.0e-278 << 987 */
-  0xe2e69915b3fff9f9LLU, /*  71: 1.0e-277 << 984 */
-  0x8dd01fad907ffc3bLLU, /*  72: 1.0e-276 << 980 */
-  0xb1442798f49ffb4aLLU, /*  73: 1.0e-275 << 977 */
-  0xdd95317f31c7fa1dLLU, /*  74: 1.0e-274 << 974 */
-  0x8a7d3eef7f1cfc52LLU, /*  75: 1.0e-273 << 970 */
-  0xad1c8eab5ee43b66LLU, /*  76: 1.0e-272 << 967 */
-  0xd863b256369d4a40LLU, /*  77: 1.0e-271 << 964 */
-  0x873e4f75e2224e68LLU, /*  78: 1.0e-270 << 960 */
-  0xa90de3535aaae202LLU, /*  79: 1.0e-269 << 957 */
-  0xd3515c2831559a83LLU, /*  80: 1.0e-268 << 954 */
-  0x8412d9991ed58091LLU, /*  81: 1.0e-267 << 950 */
-  0xa5178fff668ae0b6LLU, /*  82: 1.0e-266 << 947 */
-  0xce5d73ff402d98e3LLU, /*  83: 1.0e-265 << 944 */
-  0x80fa687f881c7f8eLLU, /*  84: 1.0e-264 << 940 */
-  0xa139029f6a239f72LLU, /*  85: 1.0e-263 << 937 */
-  0xc987434744ac874eLLU, /*  86: 1.0e-262 << 934 */
-  0xfbe9141915d7a922LLU, /*  87: 1.0e-261 << 931 */
-  0x9d71ac8fada6c9b5LLU, /*  88: 1.0e-260 << 927 */
-  0xc4ce17b399107c22LLU, /*  89: 1.0e-259 << 924 */
-  0xf6019da07f549b2bLLU, /*  90: 1.0e-258 << 921 */
-  0x99c102844f94e0fbLLU, /*  91: 1.0e-257 << 917 */
-  0xc0314325637a1939LLU, /*  92: 1.0e-256 << 914 */
-  0xf03d93eebc589f88LLU, /*  93: 1.0e-255 << 911 */
-  0x96267c7535b763b5LLU, /*  94: 1.0e-254 << 907 */
-  0xbbb01b9283253ca2LLU, /*  95: 1.0e-253 << 904 */
-  0xea9c227723ee8bcbLLU, /*  96: 1.0e-252 << 901 */
-  0x92a1958a7675175fLLU, /*  97: 1.0e-251 << 897 */
-  0xb749faed14125d36LLU, /*  98: 1.0e-250 << 894 */
-  0xe51c79a85916f484LLU, /*  99: 1.0e-249 << 891 */
-  0x8f31cc0937ae58d2LLU, /* 100: 1.0e-248 << 887 */
-  0xb2fe3f0b8599ef07LLU, /* 101: 1.0e-247 << 884 */
-  0xdfbdcece67006ac9LLU, /* 102: 1.0e-246 << 881 */
-  0x8bd6a141006042bdLLU, /* 103: 1.0e-245 << 877 */
-  0xaecc49914078536dLLU, /* 104: 1.0e-244 << 874 */
-  0xda7f5bf590966848LLU, /* 105: 1.0e-243 << 871 */
-  0x888f99797a5e012dLLU, /* 106: 1.0e-242 << 867 */
-  0xaab37fd7d8f58178LLU, /* 107: 1.0e-241 << 864 */
-  0xd5605fcdcf32e1d6LLU, /* 108: 1.0e-240 << 861 */
-  0x855c3be0a17fcd26LLU, /* 109: 1.0e-239 << 857 */
-  0xa6b34ad8c9dfc06fLLU, /* 110: 1.0e-238 << 854 */
-  0xd0601d8efc57b08bLLU, /* 111: 1.0e-237 << 851 */
-  0x823c12795db6ce57LLU, /* 112: 1.0e-236 << 847 */
-  0xa2cb1717b52481edLLU, /* 113: 1.0e-235 << 844 */
-  0xcb7ddcdda26da268LLU, /* 114: 1.0e-234 << 841 */
-  0xfe5d54150b090b02LLU, /* 115: 1.0e-233 << 838 */
-  0x9efa548d26e5a6e1LLU, /* 116: 1.0e-232 << 834 */
-  0xc6b8e9b0709f109aLLU, /* 117: 1.0e-231 << 831 */
-  0xf867241c8cc6d4c0LLU, /* 118: 1.0e-230 << 828 */
-  0x9b407691d7fc44f8LLU, /* 119: 1.0e-229 << 824 */
-  0xc21094364dfb5636LLU, /* 120: 1.0e-228 << 821 */
-  0xf294b943e17a2bc4LLU, /* 121: 1.0e-227 << 818 */
-  0x979cf3ca6cec5b5aLLU, /* 122: 1.0e-226 << 814 */
-  0xbd8430bd08277231LLU, /* 123: 1.0e-225 << 811 */
-  0xece53cec4a314ebdLLU, /* 124: 1.0e-224 << 808 */
-  0x940f4613ae5ed136LLU, /* 125: 1.0e-223 << 804 */
-  0xb913179899f68584LLU, /* 126: 1.0e-222 << 801 */
-  0xe757dd7ec07426e5LLU, /* 127: 1.0e-221 << 798 */
-  0x9096ea6f3848984fLLU, /* 128: 1.0e-220 << 794 */
-  0xb4bca50b065abe63LLU, /* 129: 1.0e-219 << 791 */
-  0xe1ebce4dc7f16dfbLLU, /* 130: 1.0e-218 << 788 */
-  0x8d3360f09cf6e4bdLLU, /* 131: 1.0e-217 << 784 */
-  0xb080392cc4349decLLU, /* 132: 1.0e-216 << 781 */
-  0xdca04777f541c567LLU, /* 133: 1.0e-215 << 778 */
-  0x89e42caaf9491b60LLU, /* 134: 1.0e-214 << 774 */
-  0xac5d37d5b79b6239LLU, /* 135: 1.0e-213 << 771 */
-  0xd77485cb25823ac7LLU, /* 136: 1.0e-212 << 768 */
-  0x86a8d39ef77164bcLLU, /* 137: 1.0e-211 << 764 */
-  0xa8530886b54dbdebLLU, /* 138: 1.0e-210 << 761 */
-  0xd267caa862a12d66LLU, /* 139: 1.0e-209 << 758 */
-  0x8380dea93da4bc60LLU, /* 140: 1.0e-208 << 754 */
-  0xa46116538d0deb78LLU, /* 141: 1.0e-207 << 751 */
-  0xcd795be870516656LLU, /* 142: 1.0e-206 << 748 */
-  0x806bd9714632dff6LLU, /* 143: 1.0e-205 << 744 */
-  0xa086cfcd97bf97f3LLU, /* 144: 1.0e-204 << 741 */
-  0xc8a883c0fdaf7df0LLU, /* 145: 1.0e-203 << 738 */
-  0xfad2a4b13d1b5d6cLLU, /* 146: 1.0e-202 << 735 */
-  0x9cc3a6eec6311a63LLU, /* 147: 1.0e-201 << 731 */
-  0xc3f490aa77bd60fcLLU, /* 148: 1.0e-200 << 728 */
-  0xf4f1b4d515acb93bLLU, /* 149: 1.0e-199 << 725 */
-  0x991711052d8bf3c5LLU, /* 150: 1.0e-198 << 721 */
-  0xbf5cd54678eef0b6LLU, /* 151: 1.0e-197 << 718 */
-  0xef340a98172aace4LLU, /* 152: 1.0e-196 << 715 */
-  0x9580869f0e7aac0eLLU, /* 153: 1.0e-195 << 711 */
-  0xbae0a846d2195712LLU, /* 154: 1.0e-194 << 708 */
-  0xe998d258869facd7LLU, /* 155: 1.0e-193 << 705 */
-  0x91ff83775423cc06LLU, /* 156: 1.0e-192 << 701 */
-  0xb67f6455292cbf08LLU, /* 157: 1.0e-191 << 698 */
-  0xe41f3d6a7377eecaLLU, /* 158: 1.0e-190 << 695 */
-  0x8e938662882af53eLLU, /* 159: 1.0e-189 << 691 */
-  0xb23867fb2a35b28dLLU, /* 160: 1.0e-188 << 688 */
-  0xdec681f9f4c31f31LLU, /* 161: 1.0e-187 << 685 */
-  0x8b3c113c38f9f37eLLU, /* 162: 1.0e-186 << 681 */
-  0xae0b158b4738705eLLU, /* 163: 1.0e-185 << 678 */
-  0xd98ddaee19068c76LLU, /* 164: 1.0e-184 << 675 */
-  0x87f8a8d4cfa417c9LLU, /* 165: 1.0e-183 << 671 */
-  0xa9f6d30a038d1dbcLLU, /* 166: 1.0e-182 << 668 */
-  0xd47487cc8470652bLLU, /* 167: 1.0e-181 << 665 */
-  0x84c8d4dfd2c63f3bLLU, /* 168: 1.0e-180 << 661 */
-  0xa5fb0a17c777cf09LLU, /* 169: 1.0e-179 << 658 */
-  0xcf79cc9db955c2ccLLU, /* 170: 1.0e-178 << 655 */
-  0x81ac1fe293d599bfLLU, /* 171: 1.0e-177 << 651 */
-  0xa21727db38cb002fLLU, /* 172: 1.0e-176 << 648 */
-  0xca9cf1d206fdc03bLLU, /* 173: 1.0e-175 << 645 */
-  0xfd442e4688bd304aLLU, /* 174: 1.0e-174 << 642 */
-  0x9e4a9cec15763e2eLLU, /* 175: 1.0e-173 << 638 */
-  0xc5dd44271ad3cdbaLLU, /* 176: 1.0e-172 << 635 */
-  0xf7549530e188c128LLU, /* 177: 1.0e-171 << 632 */
-  0x9a94dd3e8cf578b9LLU, /* 178: 1.0e-170 << 628 */
-  0xc13a148e3032d6e7LLU, /* 179: 1.0e-169 << 625 */
-  0xf18899b1bc3f8ca1LLU, /* 180: 1.0e-168 << 622 */
-  0x96f5600f15a7b7e5LLU, /* 181: 1.0e-167 << 618 */
-  0xbcb2b812db11a5deLLU, /* 182: 1.0e-166 << 615 */
-  0xebdf661791d60f56LLU, /* 183: 1.0e-165 << 612 */
-  0x936b9fcebb25c995LLU, /* 184: 1.0e-164 << 608 */
-  0xb84687c269ef3bfbLLU, /* 185: 1.0e-163 << 605 */
-  0xe65829b3046b0afaLLU, /* 186: 1.0e-162 << 602 */
-  0x8ff71a0fe2c2e6dcLLU, /* 187: 1.0e-161 << 598 */
-  0xb3f4e093db73a093LLU, /* 188: 1.0e-160 << 595 */
-  0xe0f218b8d25088b8LLU, /* 189: 1.0e-159 << 592 */
-  0x8c974f7383725573LLU, /* 190: 1.0e-158 << 588 */
-  0xafbd2350644eeacfLLU, /* 191: 1.0e-157 << 585 */
-  0xdbac6c247d62a583LLU, /* 192: 1.0e-156 << 582 */
-  0x894bc396ce5da772LLU, /* 193: 1.0e-155 << 578 */
-  0xab9eb47c81f5114fLLU, /* 194: 1.0e-154 << 575 */
-  0xd686619ba27255a2LLU, /* 195: 1.0e-153 << 572 */
-  0x8613fd0145877585LLU, /* 196: 1.0e-152 << 568 */
-  0xa798fc4196e952e7LLU, /* 197: 1.0e-151 << 565 */
-  0xd17f3b51fca3a7a0LLU, /* 198: 1.0e-150 << 562 */
-  0x82ef85133de648c4LLU, /* 199: 1.0e-149 << 558 */
-  0xa3ab66580d5fdaf5LLU, /* 200: 1.0e-148 << 555 */
-  0xcc963fee10b7d1b3LLU, /* 201: 1.0e-147 << 552 */
-  0xffbbcfe994e5c61fLLU, /* 202: 1.0e-146 << 549 */
-  0x9fd561f1fd0f9bd3LLU, /* 203: 1.0e-145 << 545 */
-  0xc7caba6e7c5382c8LLU, /* 204: 1.0e-144 << 542 */
-  0xf9bd690a1b68637bLLU, /* 205: 1.0e-143 << 539 */
-  0x9c1661a651213e2dLLU, /* 206: 1.0e-142 << 535 */
-  0xc31bfa0fe5698db8LLU, /* 207: 1.0e-141 << 532 */
-  0xf3e2f893dec3f126LLU, /* 208: 1.0e-140 << 529 */
-  0x986ddb5c6b3a76b7LLU, /* 209: 1.0e-139 << 525 */
-  0xbe89523386091465LLU, /* 210: 1.0e-138 << 522 */
-  0xee2ba6c0678b597fLLU, /* 211: 1.0e-137 << 519 */
-  0x94db483840b717efLLU, /* 212: 1.0e-136 << 515 */
-  0xba121a4650e4ddebLLU, /* 213: 1.0e-135 << 512 */
-  0xe896a0d7e51e1566LLU, /* 214: 1.0e-134 << 509 */
-  0x915e2486ef32cd60LLU, /* 215: 1.0e-133 << 505 */
-  0xb5b5ada8aaff80b8LLU, /* 216: 1.0e-132 << 502 */
-  0xe3231912d5bf60e6LLU, /* 217: 1.0e-131 << 499 */
-  0x8df5efabc5979c8fLLU, /* 218: 1.0e-130 << 495 */
-  0xb1736b96b6fd83b3LLU, /* 219: 1.0e-129 << 492 */
-  0xddd0467c64bce4a0LLU, /* 220: 1.0e-128 << 489 */
-  0x8aa22c0dbef60ee4LLU, /* 221: 1.0e-127 << 485 */
-  0xad4ab7112eb3929dLLU, /* 222: 1.0e-126 << 482 */
-  0xd89d64d57a607744LLU, /* 223: 1.0e-125 << 479 */
-  0x87625f056c7c4a8bLLU, /* 224: 1.0e-124 << 475 */
-  0xa93af6c6c79b5d2dLLU, /* 225: 1.0e-123 << 472 */
-  0xd389b47879823479LLU, /* 226: 1.0e-122 << 469 */
-  0x843610cb4bf160cbLLU, /* 227: 1.0e-121 << 465 */
-  0xa54394fe1eedb8feLLU, /* 228: 1.0e-120 << 462 */
-  0xce947a3da6a9273eLLU, /* 229: 1.0e-119 << 459 */
-  0x811ccc668829b887LLU, /* 230: 1.0e-118 << 455 */
-  0xa163ff802a3426a8LLU, /* 231: 1.0e-117 << 452 */
-  0xc9bcff6034c13052LLU, /* 232: 1.0e-116 << 449 */
-  0xfc2c3f3841f17c67LLU, /* 233: 1.0e-115 << 446 */
-  0x9d9ba7832936edc0LLU, /* 234: 1.0e-114 << 442 */
-  0xc5029163f384a931LLU, /* 235: 1.0e-113 << 439 */
-  0xf64335bcf065d37dLLU, /* 236: 1.0e-112 << 436 */
-  0x99ea0196163fa42eLLU, /* 237: 1.0e-111 << 432 */
-  0xc06481fb9bcf8d39LLU, /* 238: 1.0e-110 << 429 */
-  0xf07da27a82c37088LLU, /* 239: 1.0e-109 << 426 */
-  0x964e858c91ba2655LLU, /* 240: 1.0e-108 << 422 */
-  0xbbe226efb628afeaLLU, /* 241: 1.0e-107 << 419 */
-  0xeadab0aba3b2dbe5LLU, /* 242: 1.0e-106 << 416 */
-  0x92c8ae6b464fc96fLLU, /* 243: 1.0e-105 << 412 */
-  0xb77ada0617e3bbcbLLU, /* 244: 1.0e-104 << 409 */
-  0xe55990879ddcaabdLLU, /* 245: 1.0e-103 << 406 */
-  0x8f57fa54c2a9eab6LLU, /* 246: 1.0e-102 << 402 */
-  0xb32df8e9f3546564LLU, /* 247: 1.0e-101 << 399 */
-  0xdff9772470297ebdLLU, /* 248: 1.0e-100 << 396 */
-  0x8bfbea76c619ef36LLU, /* 249: 1.0e-99 << 392 */
-  0xaefae51477a06b03LLU, /* 250: 1.0e-98 << 389 */
-  0xdab99e59958885c4LLU, /* 251: 1.0e-97 << 386 */
-  0x88b402f7fd75539bLLU, /* 252: 1.0e-96 << 382 */
-  0xaae103b5fcd2a881LLU, /* 253: 1.0e-95 << 379 */
-  0xd59944a37c0752a2LLU, /* 254: 1.0e-94 << 376 */
-  0x857fcae62d8493a5LLU, /* 255: 1.0e-93 << 372 */
-  0xa6dfbd9fb8e5b88eLLU, /* 256: 1.0e-92 << 369 */
-  0xd097ad07a71f26b2LLU, /* 257: 1.0e-91 << 366 */
-  0x825ecc24c873782fLLU, /* 258: 1.0e-90 << 362 */
-  0xa2f67f2dfa90563bLLU, /* 259: 1.0e-89 << 359 */
-  0xcbb41ef979346bcaLLU, /* 260: 1.0e-88 << 356 */
-  0xfea126b7d78186bcLLU, /* 261: 1.0e-87 << 353 */
-  0x9f24b832e6b0f436LLU, /* 262: 1.0e-86 << 349 */
-  0xc6ede63fa05d3143LLU, /* 263: 1.0e-85 << 346 */
-  0xf8a95fcf88747d94LLU, /* 264: 1.0e-84 << 343 */
-  0x9b69dbe1b548ce7cLLU, /* 265: 1.0e-83 << 339 */
-  0xc24452da229b021bLLU, /* 266: 1.0e-82 << 336 */
-  0xf2d56790ab41c2a2LLU, /* 267: 1.0e-81 << 333 */
-  0x97c560ba6b0919a5LLU, /* 268: 1.0e-80 << 329 */
-  0xbdb6b8e905cb600fLLU, /* 269: 1.0e-79 << 326 */
-  0xed246723473e3813LLU, /* 270: 1.0e-78 << 323 */
-  0x9436c0760c86e30bLLU, /* 271: 1.0e-77 << 319 */
-  0xb94470938fa89bceLLU, /* 272: 1.0e-76 << 316 */
-  0xe7958cb87392c2c2LLU, /* 273: 1.0e-75 << 313 */
-  0x90bd77f3483bb9b9LLU, /* 274: 1.0e-74 << 309 */
-  0xb4ecd5f01a4aa828LLU, /* 275: 1.0e-73 << 306 */
-  0xe2280b6c20dd5232LLU, /* 276: 1.0e-72 << 303 */
-  0x8d590723948a535fLLU, /* 277: 1.0e-71 << 299 */
-  0xb0af48ec79ace837LLU, /* 278: 1.0e-70 << 296 */
-  0xdcdb1b2798182244LLU, /* 279: 1.0e-69 << 293 */
-  0x8a08f0f8bf0f156bLLU, /* 280: 1.0e-68 << 289 */
-  0xac8b2d36eed2dac5LLU, /* 281: 1.0e-67 << 286 */
-  0xd7adf884aa879177LLU, /* 282: 1.0e-66 << 283 */
-  0x86ccbb52ea94baeaLLU, /* 283: 1.0e-65 << 279 */
-  0xa87fea27a539e9a5LLU, /* 284: 1.0e-64 << 276 */
-  0xd29fe4b18e88640eLLU, /* 285: 1.0e-63 << 273 */
-  0x83a3eeeef9153e89LLU, /* 286: 1.0e-62 << 269 */
-  0xa48ceaaab75a8e2bLLU, /* 287: 1.0e-61 << 266 */
-  0xcdb02555653131b6LLU, /* 288: 1.0e-60 << 263 */
-  0x808e17555f3ebf11LLU, /* 289: 1.0e-59 << 259 */
-  0xa0b19d2ab70e6ed6LLU, /* 290: 1.0e-58 << 256 */
-  0xc8de047564d20a8bLLU, /* 291: 1.0e-57 << 253 */
-  0xfb158592be068d2eLLU, /* 292: 1.0e-56 << 250 */
-  0x9ced737bb6c4183dLLU, /* 293: 1.0e-55 << 246 */
-  0xc428d05aa4751e4cLLU, /* 294: 1.0e-54 << 243 */
-  0xf53304714d9265dfLLU, /* 295: 1.0e-53 << 240 */
-  0x993fe2c6d07b7fabLLU, /* 296: 1.0e-52 << 236 */
-  0xbf8fdb78849a5f96LLU, /* 297: 1.0e-51 << 233 */
-  0xef73d256a5c0f77cLLU, /* 298: 1.0e-50 << 230 */
-  0x95a8637627989aadLLU, /* 299: 1.0e-49 << 226 */
-  0xbb127c53b17ec159LLU, /* 300: 1.0e-48 << 223 */
-  0xe9d71b689dde71afLLU, /* 301: 1.0e-47 << 220 */
-  0x9226712162ab070dLLU, /* 302: 1.0e-46 << 216 */
-  0xb6b00d69bb55c8d1LLU, /* 303: 1.0e-45 << 213 */
-  0xe45c10c42a2b3b05LLU, /* 304: 1.0e-44 << 210 */
-  0x8eb98a7a9a5b04e3LLU, /* 305: 1.0e-43 << 206 */
-  0xb267ed1940f1c61cLLU, /* 306: 1.0e-42 << 203 */
-  0xdf01e85f912e37a3LLU, /* 307: 1.0e-41 << 200 */
-  0x8b61313bbabce2c6LLU, /* 308: 1.0e-40 << 196 */
-  0xae397d8aa96c1b77LLU, /* 309: 1.0e-39 << 193 */
-  0xd9c7dced53c72255LLU, /* 310: 1.0e-38 << 190 */
-  0x881cea14545c7575LLU, /* 311: 1.0e-37 << 186 */
-  0xaa242499697392d2LLU, /* 312: 1.0e-36 << 183 */
-  0xd4ad2dbfc3d07787LLU, /* 313: 1.0e-35 << 180 */
-  0x84ec3c97da624ab4LLU, /* 314: 1.0e-34 << 176 */
-  0xa6274bbdd0fadd61LLU, /* 315: 1.0e-33 << 173 */
-  0xcfb11ead453994baLLU, /* 316: 1.0e-32 << 170 */
-  0x81ceb32c4b43fcf4LLU, /* 317: 1.0e-31 << 166 */
-  0xa2425ff75e14fc31LLU, /* 318: 1.0e-30 << 163 */
-  0xcad2f7f5359a3b3eLLU, /* 319: 1.0e-29 << 160 */
-  0xfd87b5f28300ca0dLLU, /* 320: 1.0e-28 << 157 */
-  0x9e74d1b791e07e48LLU, /* 321: 1.0e-27 << 153 */
-  0xc612062576589ddaLLU, /* 322: 1.0e-26 << 150 */
-  0xf79687aed3eec551LLU, /* 323: 1.0e-25 << 147 */
-  0x9abe14cd44753b52LLU, /* 324: 1.0e-24 << 143 */
-  0xc16d9a0095928a27LLU, /* 325: 1.0e-23 << 140 */
-  0xf1c90080baf72cb1LLU, /* 326: 1.0e-22 << 137 */
-  0x971da05074da7beeLLU, /* 327: 1.0e-21 << 133 */
-  0xbce5086492111aeaLLU, /* 328: 1.0e-20 << 130 */
-  0xec1e4a7db69561a5LLU, /* 329: 1.0e-19 << 127 */
-  0x9392ee8e921d5d07LLU, /* 330: 1.0e-18 << 123 */
-  0xb877aa3236a4b449LLU, /* 331: 1.0e-17 << 120 */
-  0xe69594bec44de15bLLU, /* 332: 1.0e-16 << 117 */
-  0x901d7cf73ab0acd9LLU, /* 333: 1.0e-15 << 113 */
-  0xb424dc35095cd80fLLU, /* 334: 1.0e-14 << 110 */
-  0xe12e13424bb40e13LLU, /* 335: 1.0e-13 << 107 */
-  0x8cbccc096f5088cbLLU, /* 336: 1.0e-12 << 103 */
-  0xafebff0bcb24aafeLLU, /* 337: 1.0e-11 << 100 */
-  0xdbe6fecebdedd5beLLU, /* 338: 1.0e-10 << 97 */
-  0x89705f4136b4a597LLU, /* 339: 1.0e-9 << 93 */
-  0xabcc77118461cefcLLU, /* 340: 1.0e-8 << 90 */
-  0xd6bf94d5e57a42bcLLU, /* 341: 1.0e-7 << 87 */
-  0x8637bd05af6c69b5LLU, /* 342: 1.0e-6 << 83 */
-  0xa7c5ac471b478423LLU, /* 343: 1.0e-5 << 80 */
-  0xd1b71758e219652bLLU, /* 344: 1.0e-4 << 77 */
-  0x83126e978d4fdf3bLLU, /* 345: 1.0e-3 << 73 */
-  0xa3d70a3d70a3d70aLLU, /* 346: 1.0e-2 << 70 */
-  0xccccccccccccccccLLU, /* 347: 1.0e-1 << 67 */
-  0x8000000000000000LLU, /* 348: 1.0e+0 << 63 */
-  0xa000000000000000LLU, /* 349: 1.0e+1 << 60 */
-  0xc800000000000000LLU, /* 350: 1.0e+2 << 57 */
-  0xfa00000000000000LLU, /* 351: 1.0e+3 << 54 */
-  0x9c40000000000000LLU, /* 352: 1.0e+4 << 50 */
-  0xc350000000000000LLU, /* 353: 1.0e+5 << 47 */
-  0xf424000000000000LLU, /* 354: 1.0e+6 << 44 */
-  0x9896800000000000LLU, /* 355: 1.0e+7 << 40 */
-  0xbebc200000000000LLU, /* 356: 1.0e+8 << 37 */
-  0xee6b280000000000LLU, /* 357: 1.0e+9 << 34 */
-  0x9502f90000000000LLU, /* 358: 1.0e+10 << 30 */
-  0xba43b74000000000LLU, /* 359: 1.0e+11 << 27 */
-  0xe8d4a51000000000LLU, /* 360: 1.0e+12 << 24 */
-  0x9184e72a00000000LLU, /* 361: 1.0e+13 << 20 */
-  0xb5e620f480000000LLU, /* 362: 1.0e+14 << 17 */
-  0xe35fa931a0000000LLU, /* 363: 1.0e+15 << 14 */
-  0x8e1bc9bf04000000LLU, /* 364: 1.0e+16 << 10 */
-  0xb1a2bc2ec5000000LLU, /* 365: 1.0e+17 << 7 */
-  0xde0b6b3a76400000LLU, /* 366: 1.0e+18 << 4 */
-  0x8ac7230489e80000LLU, /* 367: 1.0e+19 >> 0 */
-  0xad78ebc5ac620000LLU, /* 368: 1.0e+20 >> 3 */
-  0xd8d726b7177a8000LLU, /* 369: 1.0e+21 >> 6 */
-  0x878678326eac9000LLU, /* 370: 1.0e+22 >> 10 */
-  0xa968163f0a57b400LLU, /* 371: 1.0e+23 >> 13 */
-  0xd3c21bcecceda100LLU, /* 372: 1.0e+24 >> 16 */
-  0x84595161401484a0LLU, /* 373: 1.0e+25 >> 20 */
-  0xa56fa5b99019a5c8LLU, /* 374: 1.0e+26 >> 23 */
-  0xcecb8f27f4200f3aLLU, /* 375: 1.0e+27 >> 26 */
-  0x813f3978f8940984LLU, /* 376: 1.0e+28 >> 30 */
-  0xa18f07d736b90be5LLU, /* 377: 1.0e+29 >> 33 */
-  0xc9f2c9cd04674edeLLU, /* 378: 1.0e+30 >> 36 */
-  0xfc6f7c4045812296LLU, /* 379: 1.0e+31 >> 39 */
-  0x9dc5ada82b70b59dLLU, /* 380: 1.0e+32 >> 43 */
-  0xc5371912364ce305LLU, /* 381: 1.0e+33 >> 46 */
-  0xf684df56c3e01bc6LLU, /* 382: 1.0e+34 >> 49 */
-  0x9a130b963a6c115cLLU, /* 383: 1.0e+35 >> 53 */
-  0xc097ce7bc90715b3LLU, /* 384: 1.0e+36 >> 56 */
-  0xf0bdc21abb48db20LLU, /* 385: 1.0e+37 >> 59 */
-  0x96769950b50d88f4LLU, /* 386: 1.0e+38 >> 63 */
-  0xbc143fa4e250eb31LLU, /* 387: 1.0e+39 >> 66 */
-  0xeb194f8e1ae525fdLLU, /* 388: 1.0e+40 >> 69 */
-  0x92efd1b8d0cf37beLLU, /* 389: 1.0e+41 >> 73 */
-  0xb7abc627050305adLLU, /* 390: 1.0e+42 >> 76 */
-  0xe596b7b0c643c719LLU, /* 391: 1.0e+43 >> 79 */
-  0x8f7e32ce7bea5c6fLLU, /* 392: 1.0e+44 >> 83 */
-  0xb35dbf821ae4f38bLLU, /* 393: 1.0e+45 >> 86 */
-  0xe0352f62a19e306eLLU, /* 394: 1.0e+46 >> 89 */
-  0x8c213d9da502de45LLU, /* 395: 1.0e+47 >> 93 */
-  0xaf298d050e4395d6LLU, /* 396: 1.0e+48 >> 96 */
-  0xdaf3f04651d47b4cLLU, /* 397: 1.0e+49 >> 99 */
-  0x88d8762bf324cd0fLLU, /* 398: 1.0e+50 >> 103 */
-  0xab0e93b6efee0053LLU, /* 399: 1.0e+51 >> 106 */
-  0xd5d238a4abe98068LLU, /* 400: 1.0e+52 >> 109 */
-  0x85a36366eb71f041LLU, /* 401: 1.0e+53 >> 113 */
-  0xa70c3c40a64e6c51LLU, /* 402: 1.0e+54 >> 116 */
-  0xd0cf4b50cfe20765LLU, /* 403: 1.0e+55 >> 119 */
-  0x82818f1281ed449fLLU, /* 404: 1.0e+56 >> 123 */
-  0xa321f2d7226895c7LLU, /* 405: 1.0e+57 >> 126 */
-  0xcbea6f8ceb02bb39LLU, /* 406: 1.0e+58 >> 129 */
-  0xfee50b7025c36a08LLU, /* 407: 1.0e+59 >> 132 */
-  0x9f4f2726179a2245LLU, /* 408: 1.0e+60 >> 136 */
-  0xc722f0ef9d80aad6LLU, /* 409: 1.0e+61 >> 139 */
-  0xf8ebad2b84e0d58bLLU, /* 410: 1.0e+62 >> 142 */
-  0x9b934c3b330c8577LLU, /* 411: 1.0e+63 >> 146 */
-  0xc2781f49ffcfa6d5LLU, /* 412: 1.0e+64 >> 149 */
-  0xf316271c7fc3908aLLU, /* 413: 1.0e+65 >> 152 */
-  0x97edd871cfda3a56LLU, /* 414: 1.0e+66 >> 156 */
-  0xbde94e8e43d0c8ecLLU, /* 415: 1.0e+67 >> 159 */
-  0xed63a231d4c4fb27LLU, /* 416: 1.0e+68 >> 162 */
-  0x945e455f24fb1cf8LLU, /* 417: 1.0e+69 >> 166 */
-  0xb975d6b6ee39e436LLU, /* 418: 1.0e+70 >> 169 */
-  0xe7d34c64a9c85d44LLU, /* 419: 1.0e+71 >> 172 */
-  0x90e40fbeea1d3a4aLLU, /* 420: 1.0e+72 >> 176 */
-  0xb51d13aea4a488ddLLU, /* 421: 1.0e+73 >> 179 */
-  0xe264589a4dcdab14LLU, /* 422: 1.0e+74 >> 182 */
-  0x8d7eb76070a08aecLLU, /* 423: 1.0e+75 >> 186 */
-  0xb0de65388cc8ada8LLU, /* 424: 1.0e+76 >> 189 */
-  0xdd15fe86affad912LLU, /* 425: 1.0e+77 >> 192 */
-  0x8a2dbf142dfcc7abLLU, /* 426: 1.0e+78 >> 196 */
-  0xacb92ed9397bf996LLU, /* 427: 1.0e+79 >> 199 */
-  0xd7e77a8f87daf7fbLLU, /* 428: 1.0e+80 >> 202 */
-  0x86f0ac99b4e8dafdLLU, /* 429: 1.0e+81 >> 206 */
-  0xa8acd7c0222311bcLLU, /* 430: 1.0e+82 >> 209 */
-  0xd2d80db02aabd62bLLU, /* 431: 1.0e+83 >> 212 */
-  0x83c7088e1aab65dbLLU, /* 432: 1.0e+84 >> 216 */
-  0xa4b8cab1a1563f52LLU, /* 433: 1.0e+85 >> 219 */
-  0xcde6fd5e09abcf26LLU, /* 434: 1.0e+86 >> 222 */
-  0x80b05e5ac60b6178LLU, /* 435: 1.0e+87 >> 226 */
-  0xa0dc75f1778e39d6LLU, /* 436: 1.0e+88 >> 229 */
-  0xc913936dd571c84cLLU, /* 437: 1.0e+89 >> 232 */
-  0xfb5878494ace3a5fLLU, /* 438: 1.0e+90 >> 235 */
-  0x9d174b2dcec0e47bLLU, /* 439: 1.0e+91 >> 239 */
-  0xc45d1df942711d9aLLU, /* 440: 1.0e+92 >> 242 */
-  0xf5746577930d6500LLU, /* 441: 1.0e+93 >> 245 */
-  0x9968bf6abbe85f20LLU, /* 442: 1.0e+94 >> 249 */
-  0xbfc2ef456ae276e8LLU, /* 443: 1.0e+95 >> 252 */
-  0xefb3ab16c59b14a2LLU, /* 444: 1.0e+96 >> 255 */
-  0x95d04aee3b80ece5LLU, /* 445: 1.0e+97 >> 259 */
-  0xbb445da9ca61281fLLU, /* 446: 1.0e+98 >> 262 */
-  0xea1575143cf97226LLU, /* 447: 1.0e+99 >> 265 */
-  0x924d692ca61be758LLU, /* 448: 1.0e+100 >> 269 */
-  0xb6e0c377cfa2e12eLLU, /* 449: 1.0e+101 >> 272 */
-  0xe498f455c38b997aLLU, /* 450: 1.0e+102 >> 275 */
-  0x8edf98b59a373fecLLU, /* 451: 1.0e+103 >> 279 */
-  0xb2977ee300c50fe7LLU, /* 452: 1.0e+104 >> 282 */
-  0xdf3d5e9bc0f653e1LLU, /* 453: 1.0e+105 >> 285 */
-  0x8b865b215899f46cLLU, /* 454: 1.0e+106 >> 289 */
-  0xae67f1e9aec07187LLU, /* 455: 1.0e+107 >> 292 */
-  0xda01ee641a708de9LLU, /* 456: 1.0e+108 >> 295 */
-  0x884134fe908658b2LLU, /* 457: 1.0e+109 >> 299 */
-  0xaa51823e34a7eedeLLU, /* 458: 1.0e+110 >> 302 */
-  0xd4e5e2cdc1d1ea96LLU, /* 459: 1.0e+111 >> 305 */
-  0x850fadc09923329eLLU, /* 460: 1.0e+112 >> 309 */
-  0xa6539930bf6bff45LLU, /* 461: 1.0e+113 >> 312 */
-  0xcfe87f7cef46ff16LLU, /* 462: 1.0e+114 >> 315 */
-  0x81f14fae158c5f6eLLU, /* 463: 1.0e+115 >> 319 */
-  0xa26da3999aef7749LLU, /* 464: 1.0e+116 >> 322 */
-  0xcb090c8001ab551cLLU, /* 465: 1.0e+117 >> 325 */
-  0xfdcb4fa002162a63LLU, /* 466: 1.0e+118 >> 328 */
-  0x9e9f11c4014dda7eLLU, /* 467: 1.0e+119 >> 332 */
-  0xc646d63501a1511dLLU, /* 468: 1.0e+120 >> 335 */
-  0xf7d88bc24209a565LLU, /* 469: 1.0e+121 >> 338 */
-  0x9ae757596946075fLLU, /* 470: 1.0e+122 >> 342 */
-  0xc1a12d2fc3978937LLU, /* 471: 1.0e+123 >> 345 */
-  0xf209787bb47d6b84LLU, /* 472: 1.0e+124 >> 348 */
-  0x9745eb4d50ce6332LLU, /* 473: 1.0e+125 >> 352 */
-  0xbd176620a501fbffLLU, /* 474: 1.0e+126 >> 355 */
-  0xec5d3fa8ce427affLLU, /* 475: 1.0e+127 >> 358 */
-  0x93ba47c980e98cdfLLU, /* 476: 1.0e+128 >> 362 */
-  0xb8a8d9bbe123f017LLU, /* 477: 1.0e+129 >> 365 */
-  0xe6d3102ad96cec1dLLU, /* 478: 1.0e+130 >> 368 */
-  0x9043ea1ac7e41392LLU, /* 479: 1.0e+131 >> 372 */
-  0xb454e4a179dd1877LLU, /* 480: 1.0e+132 >> 375 */
-  0xe16a1dc9d8545e94LLU, /* 481: 1.0e+133 >> 378 */
-  0x8ce2529e2734bb1dLLU, /* 482: 1.0e+134 >> 382 */
-  0xb01ae745b101e9e4LLU, /* 483: 1.0e+135 >> 385 */
-  0xdc21a1171d42645dLLU, /* 484: 1.0e+136 >> 388 */
-  0x899504ae72497ebaLLU, /* 485: 1.0e+137 >> 392 */
-  0xabfa45da0edbde69LLU, /* 486: 1.0e+138 >> 395 */
-  0xd6f8d7509292d603LLU, /* 487: 1.0e+139 >> 398 */
-  0x865b86925b9bc5c2LLU, /* 488: 1.0e+140 >> 402 */
-  0xa7f26836f282b732LLU, /* 489: 1.0e+141 >> 405 */
-  0xd1ef0244af2364ffLLU, /* 490: 1.0e+142 >> 408 */
-  0x8335616aed761f1fLLU, /* 491: 1.0e+143 >> 412 */
-  0xa402b9c5a8d3a6e7LLU, /* 492: 1.0e+144 >> 415 */
-  0xcd036837130890a1LLU, /* 493: 1.0e+145 >> 418 */
-  0x802221226be55a64LLU, /* 494: 1.0e+146 >> 422 */
-  0xa02aa96b06deb0fdLLU, /* 495: 1.0e+147 >> 425 */
-  0xc83553c5c8965d3dLLU, /* 496: 1.0e+148 >> 428 */
-  0xfa42a8b73abbf48cLLU, /* 497: 1.0e+149 >> 431 */
-  0x9c69a97284b578d7LLU, /* 498: 1.0e+150 >> 435 */
-  0xc38413cf25e2d70dLLU, /* 499: 1.0e+151 >> 438 */
-  0xf46518c2ef5b8cd1LLU, /* 500: 1.0e+152 >> 441 */
-  0x98bf2f79d5993802LLU, /* 501: 1.0e+153 >> 445 */
-  0xbeeefb584aff8603LLU, /* 502: 1.0e+154 >> 448 */
-  0xeeaaba2e5dbf6784LLU, /* 503: 1.0e+155 >> 451 */
-  0x952ab45cfa97a0b2LLU, /* 504: 1.0e+156 >> 455 */
-  0xba756174393d88dfLLU, /* 505: 1.0e+157 >> 458 */
-  0xe912b9d1478ceb17LLU, /* 506: 1.0e+158 >> 461 */
-  0x91abb422ccb812eeLLU, /* 507: 1.0e+159 >> 465 */
-  0xb616a12b7fe617aaLLU, /* 508: 1.0e+160 >> 468 */
-  0xe39c49765fdf9d94LLU, /* 509: 1.0e+161 >> 471 */
-  0x8e41ade9fbebc27dLLU, /* 510: 1.0e+162 >> 475 */
-  0xb1d219647ae6b31cLLU, /* 511: 1.0e+163 >> 478 */
-  0xde469fbd99a05fe3LLU, /* 512: 1.0e+164 >> 481 */
-  0x8aec23d680043beeLLU, /* 513: 1.0e+165 >> 485 */
-  0xada72ccc20054ae9LLU, /* 514: 1.0e+166 >> 488 */
-  0xd910f7ff28069da4LLU, /* 515: 1.0e+167 >> 491 */
-  0x87aa9aff79042286LLU, /* 516: 1.0e+168 >> 495 */
-  0xa99541bf57452b28LLU, /* 517: 1.0e+169 >> 498 */
-  0xd3fa922f2d1675f2LLU, /* 518: 1.0e+170 >> 501 */
-  0x847c9b5d7c2e09b7LLU, /* 519: 1.0e+171 >> 505 */
-  0xa59bc234db398c25LLU, /* 520: 1.0e+172 >> 508 */
-  0xcf02b2c21207ef2eLLU, /* 521: 1.0e+173 >> 511 */
-  0x8161afb94b44f57dLLU, /* 522: 1.0e+174 >> 515 */
-  0xa1ba1ba79e1632dcLLU, /* 523: 1.0e+175 >> 518 */
-  0xca28a291859bbf93LLU, /* 524: 1.0e+176 >> 521 */
-  0xfcb2cb35e702af78LLU, /* 525: 1.0e+177 >> 524 */
-  0x9defbf01b061adabLLU, /* 526: 1.0e+178 >> 528 */
-  0xc56baec21c7a1916LLU, /* 527: 1.0e+179 >> 531 */
-  0xf6c69a72a3989f5bLLU, /* 528: 1.0e+180 >> 534 */
-  0x9a3c2087a63f6399LLU, /* 529: 1.0e+181 >> 538 */
-  0xc0cb28a98fcf3c7fLLU, /* 530: 1.0e+182 >> 541 */
-  0xf0fdf2d3f3c30b9fLLU, /* 531: 1.0e+183 >> 544 */
-  0x969eb7c47859e743LLU, /* 532: 1.0e+184 >> 548 */
-  0xbc4665b596706114LLU, /* 533: 1.0e+185 >> 551 */
-  0xeb57ff22fc0c7959LLU, /* 534: 1.0e+186 >> 554 */
-  0x9316ff75dd87cbd8LLU, /* 535: 1.0e+187 >> 558 */
-  0xb7dcbf5354e9beceLLU, /* 536: 1.0e+188 >> 561 */
-  0xe5d3ef282a242e81LLU, /* 537: 1.0e+189 >> 564 */
-  0x8fa475791a569d10LLU, /* 538: 1.0e+190 >> 568 */
-  0xb38d92d760ec4455LLU, /* 539: 1.0e+191 >> 571 */
-  0xe070f78d3927556aLLU, /* 540: 1.0e+192 >> 574 */
-  0x8c469ab843b89562LLU, /* 541: 1.0e+193 >> 578 */
-  0xaf58416654a6babbLLU, /* 542: 1.0e+194 >> 581 */
-  0xdb2e51bfe9d0696aLLU, /* 543: 1.0e+195 >> 584 */
-  0x88fcf317f22241e2LLU, /* 544: 1.0e+196 >> 588 */
-  0xab3c2fddeeaad25aLLU, /* 545: 1.0e+197 >> 591 */
-  0xd60b3bd56a5586f1LLU, /* 546: 1.0e+198 >> 594 */
-  0x85c7056562757456LLU, /* 547: 1.0e+199 >> 598 */
-  0xa738c6bebb12d16cLLU, /* 548: 1.0e+200 >> 601 */
-  0xd106f86e69d785c7LLU, /* 549: 1.0e+201 >> 604 */
-  0x82a45b450226b39cLLU, /* 550: 1.0e+202 >> 608 */
-  0xa34d721642b06084LLU, /* 551: 1.0e+203 >> 611 */
-  0xcc20ce9bd35c78a5LLU, /* 552: 1.0e+204 >> 614 */
-  0xff290242c83396ceLLU, /* 553: 1.0e+205 >> 617 */
-  0x9f79a169bd203e41LLU, /* 554: 1.0e+206 >> 621 */
-  0xc75809c42c684dd1LLU, /* 555: 1.0e+207 >> 624 */
-  0xf92e0c3537826145LLU, /* 556: 1.0e+208 >> 627 */
-  0x9bbcc7a142b17ccbLLU, /* 557: 1.0e+209 >> 631 */
-  0xc2abf989935ddbfeLLU, /* 558: 1.0e+210 >> 634 */
-  0xf356f7ebf83552feLLU, /* 559: 1.0e+211 >> 637 */
-  0x98165af37b2153deLLU, /* 560: 1.0e+212 >> 641 */
-  0xbe1bf1b059e9a8d6LLU, /* 561: 1.0e+213 >> 644 */
-  0xeda2ee1c7064130cLLU, /* 562: 1.0e+214 >> 647 */
-  0x9485d4d1c63e8be7LLU, /* 563: 1.0e+215 >> 651 */
-  0xb9a74a0637ce2ee1LLU, /* 564: 1.0e+216 >> 654 */
-  0xe8111c87c5c1ba99LLU, /* 565: 1.0e+217 >> 657 */
-  0x910ab1d4db9914a0LLU, /* 566: 1.0e+218 >> 661 */
-  0xb54d5e4a127f59c8LLU, /* 567: 1.0e+219 >> 664 */
-  0xe2a0b5dc971f303aLLU, /* 568: 1.0e+220 >> 667 */
-  0x8da471a9de737e24LLU, /* 569: 1.0e+221 >> 671 */
-  0xb10d8e1456105dadLLU, /* 570: 1.0e+222 >> 674 */
-  0xdd50f1996b947518LLU, /* 571: 1.0e+223 >> 677 */
-  0x8a5296ffe33cc92fLLU, /* 572: 1.0e+224 >> 681 */
-  0xace73cbfdc0bfb7bLLU, /* 573: 1.0e+225 >> 684 */
-  0xd8210befd30efa5aLLU, /* 574: 1.0e+226 >> 687 */
-  0x8714a775e3e95c78LLU, /* 575: 1.0e+227 >> 691 */
-  0xa8d9d1535ce3b396LLU, /* 576: 1.0e+228 >> 694 */
-  0xd31045a8341ca07cLLU, /* 577: 1.0e+229 >> 697 */
-  0x83ea2b892091e44dLLU, /* 578: 1.0e+230 >> 701 */
-  0xa4e4b66b68b65d60LLU, /* 579: 1.0e+231 >> 704 */
-  0xce1de40642e3f4b9LLU, /* 580: 1.0e+232 >> 707 */
-  0x80d2ae83e9ce78f3LLU, /* 581: 1.0e+233 >> 711 */
-  0xa1075a24e4421730LLU, /* 582: 1.0e+234 >> 714 */
-  0xc94930ae1d529cfcLLU, /* 583: 1.0e+235 >> 717 */
-  0xfb9b7cd9a4a7443cLLU, /* 584: 1.0e+236 >> 720 */
-  0x9d412e0806e88aa5LLU, /* 585: 1.0e+237 >> 724 */
-  0xc491798a08a2ad4eLLU, /* 586: 1.0e+238 >> 727 */
-  0xf5b5d7ec8acb58a2LLU, /* 587: 1.0e+239 >> 730 */
-  0x9991a6f3d6bf1765LLU, /* 588: 1.0e+240 >> 734 */
-  0xbff610b0cc6edd3fLLU, /* 589: 1.0e+241 >> 737 */
-  0xeff394dcff8a948eLLU, /* 590: 1.0e+242 >> 740 */
-  0x95f83d0a1fb69cd9LLU, /* 591: 1.0e+243 >> 744 */
-  0xbb764c4ca7a4440fLLU, /* 592: 1.0e+244 >> 747 */
-  0xea53df5fd18d5513LLU, /* 593: 1.0e+245 >> 750 */
-  0x92746b9be2f8552cLLU, /* 594: 1.0e+246 >> 754 */
-  0xb7118682dbb66a77LLU, /* 595: 1.0e+247 >> 757 */
-  0xe4d5e82392a40515LLU, /* 596: 1.0e+248 >> 760 */
-  0x8f05b1163ba6832dLLU, /* 597: 1.0e+249 >> 764 */
-  0xb2c71d5bca9023f8LLU, /* 598: 1.0e+250 >> 767 */
-  0xdf78e4b2bd342cf6LLU, /* 599: 1.0e+251 >> 770 */
-  0x8bab8eefb6409c1aLLU, /* 600: 1.0e+252 >> 774 */
-  0xae9672aba3d0c320LLU, /* 601: 1.0e+253 >> 777 */
-  0xda3c0f568cc4f3e8LLU, /* 602: 1.0e+254 >> 780 */
-  0x8865899617fb1871LLU, /* 603: 1.0e+255 >> 784 */
-  0xaa7eebfb9df9de8dLLU, /* 604: 1.0e+256 >> 787 */
-  0xd51ea6fa85785631LLU, /* 605: 1.0e+257 >> 790 */
-  0x8533285c936b35deLLU, /* 606: 1.0e+258 >> 794 */
-  0xa67ff273b8460356LLU, /* 607: 1.0e+259 >> 797 */
-  0xd01fef10a657842cLLU, /* 608: 1.0e+260 >> 800 */
-  0x8213f56a67f6b29bLLU, /* 609: 1.0e+261 >> 804 */
-  0xa298f2c501f45f42LLU, /* 610: 1.0e+262 >> 807 */
-  0xcb3f2f7642717713LLU, /* 611: 1.0e+263 >> 810 */
-  0xfe0efb53d30dd4d7LLU, /* 612: 1.0e+264 >> 813 */
-  0x9ec95d1463e8a506LLU, /* 613: 1.0e+265 >> 817 */
-  0xc67bb4597ce2ce48LLU, /* 614: 1.0e+266 >> 820 */
-  0xf81aa16fdc1b81daLLU, /* 615: 1.0e+267 >> 823 */
-  0x9b10a4e5e9913128LLU, /* 616: 1.0e+268 >> 827 */
-  0xc1d4ce1f63f57d72LLU, /* 617: 1.0e+269 >> 830 */
-  0xf24a01a73cf2dccfLLU, /* 618: 1.0e+270 >> 833 */
-  0x976e41088617ca01LLU, /* 619: 1.0e+271 >> 837 */
-  0xbd49d14aa79dbc82LLU, /* 620: 1.0e+272 >> 840 */
-  0xec9c459d51852ba2LLU, /* 621: 1.0e+273 >> 843 */
-  0x93e1ab8252f33b45LLU, /* 622: 1.0e+274 >> 847 */
-  0xb8da1662e7b00a17LLU, /* 623: 1.0e+275 >> 850 */
-  0xe7109bfba19c0c9dLLU, /* 624: 1.0e+276 >> 853 */
-  0x906a617d450187e2LLU, /* 625: 1.0e+277 >> 857 */
-  0xb484f9dc9641e9daLLU, /* 626: 1.0e+278 >> 860 */
-  0xe1a63853bbd26451LLU, /* 627: 1.0e+279 >> 863 */
-  0x8d07e33455637eb2LLU, /* 628: 1.0e+280 >> 867 */
-  0xb049dc016abc5e5fLLU, /* 629: 1.0e+281 >> 870 */
-  0xdc5c5301c56b75f7LLU, /* 630: 1.0e+282 >> 873 */
-  0x89b9b3e11b6329baLLU, /* 631: 1.0e+283 >> 877 */
-  0xac2820d9623bf429LLU, /* 632: 1.0e+284 >> 880 */
-  0xd732290fbacaf133LLU, /* 633: 1.0e+285 >> 883 */
-  0x867f59a9d4bed6c0LLU, /* 634: 1.0e+286 >> 887 */
-  0xa81f301449ee8c70LLU, /* 635: 1.0e+287 >> 890 */
-  0xd226fc195c6a2f8cLLU, /* 636: 1.0e+288 >> 893 */
-  0x83585d8fd9c25db7LLU, /* 637: 1.0e+289 >> 897 */
-  0xa42e74f3d032f525LLU, /* 638: 1.0e+290 >> 900 */
-  0xcd3a1230c43fb26fLLU, /* 639: 1.0e+291 >> 903 */
-  0x80444b5e7aa7cf85LLU, /* 640: 1.0e+292 >> 907 */
-  0xa0555e361951c366LLU, /* 641: 1.0e+293 >> 910 */
-  0xc86ab5c39fa63440LLU, /* 642: 1.0e+294 >> 913 */
-  0xfa856334878fc150LLU, /* 643: 1.0e+295 >> 916 */
-  0x9c935e00d4b9d8d2LLU, /* 644: 1.0e+296 >> 920 */
-  0xc3b8358109e84f07LLU, /* 645: 1.0e+297 >> 923 */
-  0xf4a642e14c6262c8LLU, /* 646: 1.0e+298 >> 926 */
-  0x98e7e9cccfbd7dbdLLU, /* 647: 1.0e+299 >> 930 */
-  0xbf21e44003acdd2cLLU, /* 648: 1.0e+300 >> 933 */
-  0xeeea5d5004981478LLU, /* 649: 1.0e+301 >> 936 */
-  0x95527a5202df0ccbLLU, /* 650: 1.0e+302 >> 940 */
-  0xbaa718e68396cffdLLU, /* 651: 1.0e+303 >> 943 */
-  0xe950df20247c83fdLLU, /* 652: 1.0e+304 >> 946 */
-  0x91d28b7416cdd27eLLU, /* 653: 1.0e+305 >> 950 */
-  0xb6472e511c81471dLLU, /* 654: 1.0e+306 >> 953 */
-  0xe3d8f9e563a198e5LLU, /* 655: 1.0e+307 >> 956 */
-  0x8e679c2f5e44ff8fLLU, /* 656: 1.0e+308 >> 960 */
-  0xb201833b35d63f73LLU, /* 657: 1.0e+309 >> 963 */
-  0xde81e40a034bcf4fLLU, /* 658: 1.0e+310 >> 966 */
-  0x8b112e86420f6191LLU, /* 659: 1.0e+311 >> 970 */
-  0xadd57a27d29339f6LLU, /* 660: 1.0e+312 >> 973 */
-  0xd94ad8b1c7380874LLU, /* 661: 1.0e+313 >> 976 */
-  0x87cec76f1c830548LLU, /* 662: 1.0e+314 >> 980 */
-  0xa9c2794ae3a3c69aLLU, /* 663: 1.0e+315 >> 983 */
-  0xd433179d9c8cb841LLU, /* 664: 1.0e+316 >> 986 */
-  0x849feec281d7f328LLU, /* 665: 1.0e+317 >> 990 */
-  0xa5c7ea73224deff3LLU, /* 666: 1.0e+318 >> 993 */
-  0xcf39e50feae16befLLU, /* 667: 1.0e+319 >> 996 */
-  0x81842f29f2cce375LLU, /* 668: 1.0e+320 >> 1000 */
-  0xa1e53af46f801c53LLU, /* 669: 1.0e+321 >> 1003 */
-  0xca5e89b18b602368LLU, /* 670: 1.0e+322 >> 1006 */
-  0xfcf62c1dee382c42LLU, /* 671: 1.0e+323 >> 1009 */
-  0x9e19db92b4e31ba9LLU, /* 672: 1.0e+324 >> 1013 */
-  0xc5a05277621be293LLU, /* 673: 1.0e+325 >> 1016 */
-  0xf70867153aa2db38LLU, /* 674: 1.0e+326 >> 1019 */
-  0x9a65406d44a5c903LLU, /* 675: 1.0e+327 >> 1023 */
-  0xc0fe908895cf3b44LLU, /* 676: 1.0e+328 >> 1026 */
-  0xf13e34aabb430a15LLU, /* 677: 1.0e+329 >> 1029 */
-  0x96c6e0eab509e64dLLU, /* 678: 1.0e+330 >> 1033 */
-  0xbc789925624c5fe0LLU, /* 679: 1.0e+331 >> 1036 */
-  0xeb96bf6ebadf77d8LLU, /* 680: 1.0e+332 >> 1039 */
-  0x933e37a534cbaae7LLU, /* 681: 1.0e+333 >> 1043 */
-  0xb80dc58e81fe95a1LLU, /* 682: 1.0e+334 >> 1046 */
-  0xe61136f2227e3b09LLU, /* 683: 1.0e+335 >> 1049 */
-  0x8fcac257558ee4e6LLU, /* 684: 1.0e+336 >> 1053 */
-  0xb3bd72ed2af29e1fLLU, /* 685: 1.0e+337 >> 1056 */
-  0xe0accfa875af45a7LLU, /* 686: 1.0e+338 >> 1059 */
-  0x8c6c01c9498d8b88LLU, /* 687: 1.0e+339 >> 1063 */
-  0xaf87023b9bf0ee6aLLU, /* 688: 1.0e+340 >> 1066 */
-  0xdb68c2ca82ed2a05LLU, /* 689: 1.0e+341 >> 1069 */
-  0x892179be91d43a43LLU, /* 690: 1.0e+342 >> 1073 */
-  0xab69d82e364948d4LLU, /* 691: 1.0e+343 >> 1076 */
-  0xd6444e39c3db9b09LLU, /* 692: 1.0e+344 >> 1079 */
-  0x85eab0e41a6940e5LLU, /* 693: 1.0e+345 >> 1083 */
-  0xa7655d1d2103911fLLU, /* 694: 1.0e+346 >> 1086 */
-  0xd13eb46469447567LLU, /* 695: 1.0e+347 >> 1089 */
-};
-#define POWERSOF10_FIRST (-348)
-#define POWERSOF10_LAST  (+347)
-#define POWERSOF10_COUNT (696)
 
 /*
 ** Two inputs are multiplied to get a 128-bit result.  Return
@@ -1201,6 +482,123 @@ static u64 sqlite3Multiply128(u64 a, u64 b){
 #endif
 }
 
+/*
+** Return a u64 with the N-th bit set.
+*/
+#define U64_BIT(N)  (((u64)1)<<(N))
+
+/*
+** Range of powers of 10 that we need to deal with when converting
+** IEEE754 doubles to and from decimal.
+*/
+#define POWERSOF10_FIRST (-348)
+#define POWERSOF10_LAST  (+347)
+
+/*
+** For any p between -348 and +347, return the integer part of
+**
+**    pow(10,p) * pow(2,63-pow10to2(p))
+**
+** Or, in other words, for any p in range, return the most significant
+** 64 bits of pow(10,p).  The pow(10,p) value is shifted left or right,
+** as appropriate so the most significant 64 bits fit exactly into a
+** 64-bit unsigned integer.
+**
+** Algorithm:
+**
+** (1) For p between 0 and 26, return the value directly from the aBase[]
+**     lookup table.
+**
+** (2) For p outside the range 0 to 26, use aScale[] for the initial value
+**     then refine that result (if necessary) by a single multiplication
+**     against aBase[].
+*/
+static u64 powerOfTen(int p){
+  static const u64 aBase[] = {
+    0x8000000000000000LLU, /*  0: 1.0e+0 << 63 */
+    0xa000000000000000LLU, /*  1: 1.0e+1 << 60 */
+    0xc800000000000000LLU, /*  2: 1.0e+2 << 57 */
+    0xfa00000000000000LLU, /*  3: 1.0e+3 << 54 */
+    0x9c40000000000000LLU, /*  4: 1.0e+4 << 50 */
+    0xc350000000000000LLU, /*  5: 1.0e+5 << 47 */
+    0xf424000000000000LLU, /*  6: 1.0e+6 << 44 */
+    0x9896800000000000LLU, /*  7: 1.0e+7 << 40 */
+    0xbebc200000000000LLU, /*  8: 1.0e+8 << 37 */
+    0xee6b280000000000LLU, /*  9: 1.0e+9 << 34 */
+    0x9502f90000000000LLU, /* 10: 1.0e+10 << 30 */
+    0xba43b74000000000LLU, /* 11: 1.0e+11 << 27 */
+    0xe8d4a51000000000LLU, /* 12: 1.0e+12 << 24 */
+    0x9184e72a00000000LLU, /* 13: 1.0e+13 << 20 */
+    0xb5e620f480000000LLU, /* 14: 1.0e+14 << 17 */
+    0xe35fa931a0000000LLU, /* 15: 1.0e+15 << 14 */
+    0x8e1bc9bf04000000LLU, /* 16: 1.0e+16 << 10 */
+    0xb1a2bc2ec5000000LLU, /* 17: 1.0e+17 << 7 */
+    0xde0b6b3a76400000LLU, /* 18: 1.0e+18 << 4 */
+    0x8ac7230489e80000LLU, /* 19: 1.0e+19 >> 0 */
+    0xad78ebc5ac620000LLU, /* 20: 1.0e+20 >> 3 */
+    0xd8d726b7177a8000LLU, /* 21: 1.0e+21 >> 6 */
+    0x878678326eac9000LLU, /* 22: 1.0e+22 >> 10 */
+    0xa968163f0a57b400LLU, /* 23: 1.0e+23 >> 13 */
+    0xd3c21bcecceda100LLU, /* 24: 1.0e+24 >> 16 */
+    0x84595161401484a0LLU, /* 25: 1.0e+25 >> 20 */
+    0xa56fa5b99019a5c8LLU, /* 26: 1.0e+26 >> 23 */
+  };
+  static const u64 aScale[] = {
+    0x8049a4ac0c5811aeLLU, /*  0: 1.0e-351 << 1229 */
+    0xcf42894a5dce35eaLLU, /*  1: 1.0e-324 << 1140 */
+    0xa76c582338ed2621LLU, /*  2: 1.0e-297 << 1050 */
+    0x873e4f75e2224e68LLU, /*  3: 1.0e-270 << 960 */
+    0xda7f5bf590966848LLU, /*  4: 1.0e-243 << 871 */
+    0xb080392cc4349decLLU, /*  5: 1.0e-216 << 781 */
+    0x8e938662882af53eLLU, /*  6: 1.0e-189 << 691 */
+    0xe65829b3046b0afaLLU, /*  7: 1.0e-162 << 602 */
+    0xba121a4650e4ddebLLU, /*  8: 1.0e-135 << 512 */
+    0x964e858c91ba2655LLU, /*  9: 1.0e-108 << 422 */
+    0xf2d56790ab41c2a2LLU, /* 10: 1.0e-81 << 333 */
+    0xc428d05aa4751e4cLLU, /* 11: 1.0e-54 << 243 */
+    0x9e74d1b791e07e48LLU, /* 12: 1.0e-27 << 153 */
+    0x8000000000000000LLU, /* 13: 1.0e+0 << 63 */
+    0xcecb8f27f4200f3aLLU, /* 14: 1.0e+27 >> 26 */
+    0xa70c3c40a64e6c51LLU, /* 15: 1.0e+54 >> 116 */
+    0x86f0ac99b4e8dafdLLU, /* 16: 1.0e+81 >> 206 */
+    0xda01ee641a708de9LLU, /* 17: 1.0e+108 >> 295 */
+    0xb01ae745b101e9e4LLU, /* 18: 1.0e+135 >> 385 */
+    0x8e41ade9fbebc27dLLU, /* 19: 1.0e+162 >> 475 */
+    0xe5d3ef282a242e81LLU, /* 20: 1.0e+189 >> 564 */
+    0xb9a74a0637ce2ee1LLU, /* 21: 1.0e+216 >> 654 */
+    0x95f83d0a1fb69cd9LLU, /* 22: 1.0e+243 >> 744 */
+    0xf24a01a73cf2dccfLLU, /* 23: 1.0e+270 >> 833 */
+    0xc3b8358109e84f07LLU, /* 24: 1.0e+297 >> 923 */
+    0x9e19db92b4e31ba9LLU, /* 25: 1.0e+324 >> 1013 */
+  };
+  int g, n;
+  u64 x, y;
+
+  assert( p>=POWERSOF10_FIRST && p<=POWERSOF10_LAST );
+  if( p<0 ){
+    g = p/27;
+    n = p%27;
+    if( n ){
+      g--;
+      n += 27;
+    }
+  }else if( p<27 ){
+    return aBase[p];
+  }else{
+    g = p/27;
+    n = p%27;
+  }
+  y = aScale[g+13];
+  if( n==0 ){
+    return y;
+  }
+  x = sqlite3Multiply128(aBase[n],y);
+  if( (U64_BIT(63) & x)==0 ){
+    x <<= 1;
+  }
+  return x;
+}
+
 /*
 ** pow10to2(x) computes floor(log2(pow(10,x))).
 ** pow2to10(y) computes floor(log10(pow(2,y))).
@@ -1222,11 +620,6 @@ static u64 sqlite3Multiply128(u64 a, u64 b){
 static int pwr10to2(int p){ return (p*108853) >> 15; }
 static int pwr2to10(int p){ return (p*78913) >> 18; }
 
-/*
-** Return a u64 with the N-th bit set.
-*/
-#define U64_BIT(N)  (((u64)1)<<(N))
-
 /*
 ** Count leading zeros for a 64-bit unsigned integer.
 */
@@ -1254,11 +647,10 @@ static int countLeadingZeros(u64 m){
 ** m should be left-shifted, and e decremented, to maximize the value of m.
 */
 static void sqlite3Fp2Convert10(u64 m, int e, int n, u64 *pD, int *pP){
-  int p, idx;
+  int p;
   u64 h, out;
   p = n - 1 - pwr2to10(e+63);
-  idx = p - POWERSOF10_FIRST;
-  h = sqlite3Multiply128(m, sqlite3PowerOfTen[idx]);
+  h = sqlite3Multiply128(m, powerOfTen(p));
   assert( -(e + pwr10to2(p) + 3) >=0 );
   assert( -(e + pwr10to2(p) + 3) <64 );
   out = h >> -(e + pwr10to2(p) + 3);
@@ -1275,7 +667,6 @@ static double sqlite3Fp10Convert2(u64 d, int p){
   int e1;
   int e2;
   int lp;
-  int idx;
   u64 h;
   double r;
   assert( (d & U64_BIT(63))==0 );
@@ -1294,8 +685,7 @@ static double sqlite3Fp10Convert2(u64 d, int p){
     e1 = 1074;
   }
   e2 = e1 - (64-b);
-  idx = p - POWERSOF10_FIRST;
-  h = sqlite3Multiply128(d<<(64-b), sqlite3PowerOfTen[idx]);
+  h = sqlite3Multiply128(d<<(64-b), powerOfTen(p));
   assert( -(e2 + lp + 3) >=0 );
   assert( -(e2 + lp + 3) <64 );
   out = (h >> -(e2 + lp + 3)) | 1;