1 /* 2 * CDDL HEADER START 3 * 4 * The contents of this file are subject to the terms of the 5 * Common Development and Distribution License (the "License"). 6 * You may not use this file except in compliance with the License. 7 * 8 * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE 9 * or http://www.opensolaris.org/os/licensing. 10 * See the License for the specific language governing permissions 11 * and limitations under the License. 12 * 13 * When distributing Covered Code, include this CDDL HEADER in each 14 * file and include the License file at usr/src/OPENSOLARIS.LICENSE. 15 * If applicable, add the following below this CDDL HEADER, with the 16 * fields enclosed by brackets "[]" replaced with your own identifying 17 * information: Portions Copyright [yyyy] [name of copyright owner] 18 * 19 * CDDL HEADER END 20 */ 21 22 /* 23 * Copyright 2008 Sun Microsystems, Inc. All rights reserved. 24 * Use is subject to license terms. 25 */ 26 27 #pragma ident "%Z%%M% %I% %E% SMI" 28 29 #include "lint.h" 30 #include <sys/types.h> 31 32 /* table of 176 multiples of 2**1 */ 33 const unsigned short __tbl_2_small_digits [] = { 1, 34 /* 2**1 = */ 35 2 /* e 0 */, 36 /* 2**2 = */ 37 4 /* e 0 */, 38 /* 2**3 = */ 39 8 /* e 0 */, 40 /* 2**4 = */ 41 16 /* e 0 */, 42 /* 2**5 = */ 43 32 /* e 0 */, 44 /* 2**6 = */ 45 64 /* e 0 */, 46 /* 2**7 = */ 47 128 /* e 0 */, 48 /* 2**8 = */ 49 256 /* e 0 */, 50 /* 2**9 = */ 51 512 /* e 0 */, 52 /* 2**10 = */ 53 1024 /* e 0 */, 54 /* 2**11 = */ 55 2048 /* e 0 */, 56 /* 2**12 = */ 57 4096 /* e 0 */, 58 /* 2**13 = */ 59 8192 /* e 0 */, 60 /* 2**14 = */ 61 6384 /* e 0 */, 1 /* e 4 */, 62 /* 2**15 = */ 63 2768 /* e 0 */, 3 /* e 4 */, 64 /* 2**16 = */ 65 5536 /* e 0 */, 6 /* e 4 */, 66 /* 2**17 = */ 67 1072 /* e 0 */, 13 /* e 4 */, 68 /* 2**18 = */ 69 2144 /* e 0 */, 26 /* e 4 */, 70 /* 2**19 = */ 71 4288 /* e 0 */, 52 /* e 4 */, 72 /* 2**20 = */ 73 8576 /* e 0 */, 104 /* e 4 */, 74 /* 2**21 = */ 75 7152 /* e 0 */, 209 /* e 4 */, 76 /* 2**22 = */ 77 4304 /* e 0 */, 419 /* e 4 */, 78 /* 2**23 = */ 79 8608 /* e 0 */, 838 /* e 4 */, 80 /* 2**24 = */ 81 7216 /* e 0 */, 1677 /* e 4 */, 82 /* 2**25 = */ 83 4432 /* e 0 */, 3355 /* e 4 */, 84 /* 2**26 = */ 85 8864 /* e 0 */, 6710 /* e 4 */, 86 /* 2**27 = */ 87 7728 /* e 0 */, 3421 /* e 4 */, 1 /* e 8 */, 88 /* 2**28 = */ 89 5456 /* e 0 */, 6843 /* e 4 */, 2 /* e 8 */, 90 /* 2**29 = */ 91 912 /* e 0 */, 3687 /* e 4 */, 5 /* e 8 */, 92 /* 2**30 = */ 93 1824 /* e 0 */, 7374 /* e 4 */, 10 /* e 8 */, 94 /* 2**31 = */ 95 3648 /* e 0 */, 4748 /* e 4 */, 21 /* e 8 */, 96 /* 2**32 = */ 97 7296 /* e 0 */, 9496 /* e 4 */, 42 /* e 8 */, 98 /* 2**33 = */ 99 4592 /* e 0 */, 8993 /* e 4 */, 85 /* e 8 */, 100 /* 2**34 = */ 101 9184 /* e 0 */, 7986 /* e 4 */, 171 /* e 8 */, 102 /* 2**35 = */ 103 8368 /* e 0 */, 5973 /* e 4 */, 343 /* e 8 */, 104 /* 2**36 = */ 105 6736 /* e 0 */, 1947 /* e 4 */, 687 /* e 8 */, 106 /* 2**37 = */ 107 3472 /* e 0 */, 3895 /* e 4 */, 1374 /* e 8 */, 108 /* 2**38 = */ 109 6944 /* e 0 */, 7790 /* e 4 */, 2748 /* e 8 */, 110 /* 2**39 = */ 111 3888 /* e 0 */, 5581 /* e 4 */, 5497 /* e 8 */, 112 /* 2**40 = */ 113 7776 /* e 0 */, 1162 /* e 4 */, 995 /* e 8 */, 1 /* e 12 */, 114 115 /* 2**41 = */ 116 5552 /* e 0 */, 2325 /* e 4 */, 1990 /* e 8 */, 2 /* e 12 */, 117 118 /* 2**42 = */ 119 1104 /* e 0 */, 4651 /* e 4 */, 3980 /* e 8 */, 4 /* e 12 */, 120 121 /* 2**43 = */ 122 2208 /* e 0 */, 9302 /* e 4 */, 7960 /* e 8 */, 8 /* e 12 */, 123 124 /* 2**44 = */ 125 4416 /* e 0 */, 8604 /* e 4 */, 5921 /* e 8 */, 17 /* e 12 */, 126 127 /* 2**45 = */ 128 8832 /* e 0 */, 7208 /* e 4 */, 1843 /* e 8 */, 35 /* e 12 */, 129 130 /* 2**46 = */ 131 7664 /* e 0 */, 4417 /* e 4 */, 3687 /* e 8 */, 70 /* e 12 */, 132 133 /* 2**47 = */ 134 5328 /* e 0 */, 8835 /* e 4 */, 7374 /* e 8 */, 140 /* e 12 */, 135 136 /* 2**48 = */ 137 656 /* e 0 */, 7671 /* e 4 */, 4749 /* e 8 */, 281 /* e 12 */, 138 139 /* 2**49 = */ 140 1312 /* e 0 */, 5342 /* e 4 */, 9499 /* e 8 */, 562 /* e 12 */, 141 142 /* 2**50 = */ 143 2624 /* e 0 */, 684 /* e 4 */, 8999 /* e 8 */, 1125 /* e 12 */, 144 145 /* 2**51 = */ 146 5248 /* e 0 */, 1368 /* e 4 */, 7998 /* e 8 */, 2251 /* e 12 */, 147 148 /* 2**52 = */ 149 496 /* e 0 */, 2737 /* e 4 */, 5996 /* e 8 */, 4503 /* e 12 */, 150 151 /* 2**53 = */ 152 992 /* e 0 */, 5474 /* e 4 */, 1992 /* e 8 */, 9007 /* e 12 */, 153 154 /* 2**54 = */ 155 1984 /* e 0 */, 948 /* e 4 */, 3985 /* e 8 */, 8014 /* e 12 */, 156 1 /* e 16 */, 157 /* 2**55 = */ 158 3968 /* e 0 */, 1896 /* e 4 */, 7970 /* e 8 */, 6028 /* e 12 */, 159 3 /* e 16 */, 160 /* 2**56 = */ 161 7936 /* e 0 */, 3792 /* e 4 */, 5940 /* e 8 */, 2057 /* e 12 */, 162 7 /* e 16 */, 163 /* 2**57 = */ 164 5872 /* e 0 */, 7585 /* e 4 */, 1880 /* e 8 */, 4115 /* e 12 */, 165 14 /* e 16 */, 166 /* 2**58 = */ 167 1744 /* e 0 */, 5171 /* e 4 */, 3761 /* e 8 */, 8230 /* e 12 */, 168 28 /* e 16 */, 169 /* 2**59 = */ 170 3488 /* e 0 */, 342 /* e 4 */, 7523 /* e 8 */, 6460 /* e 12 */, 171 57 /* e 16 */, 172 /* 2**60 = */ 173 6976 /* e 0 */, 684 /* e 4 */, 5046 /* e 8 */, 2921 /* e 12 */, 174 115 /* e 16 */, 175 /* 2**61 = */ 176 3952 /* e 0 */, 1369 /* e 4 */, 92 /* e 8 */, 5843 /* e 12 */, 177 230 /* e 16 */, 178 /* 2**62 = */ 179 7904 /* e 0 */, 2738 /* e 4 */, 184 /* e 8 */, 1686 /* e 12 */, 180 461 /* e 16 */, 181 /* 2**63 = */ 182 5808 /* e 0 */, 5477 /* e 4 */, 368 /* e 8 */, 3372 /* e 12 */, 183 922 /* e 16 */, 184 /* 2**64 = */ 185 1616 /* e 0 */, 955 /* e 4 */, 737 /* e 8 */, 6744 /* e 12 */, 186 1844 /* e 16 */, 187 /* 2**65 = */ 188 3232 /* e 0 */, 1910 /* e 4 */, 1474 /* e 8 */, 3488 /* e 12 */, 189 3689 /* e 16 */, 190 /* 2**66 = */ 191 6464 /* e 0 */, 3820 /* e 4 */, 2948 /* e 8 */, 6976 /* e 12 */, 192 7378 /* e 16 */, 193 /* 2**67 = */ 194 2928 /* e 0 */, 7641 /* e 4 */, 5896 /* e 8 */, 3952 /* e 12 */, 195 4757 /* e 16 */, 1 /* e 20 */, 196 /* 2**68 = */ 197 5856 /* e 0 */, 5282 /* e 4 */, 1793 /* e 8 */, 7905 /* e 12 */, 198 9514 /* e 16 */, 2 /* e 20 */, 199 /* 2**69 = */ 200 1712 /* e 0 */, 565 /* e 4 */, 3587 /* e 8 */, 5810 /* e 12 */, 201 9029 /* e 16 */, 5 /* e 20 */, 202 /* 2**70 = */ 203 3424 /* e 0 */, 1130 /* e 4 */, 7174 /* e 8 */, 1620 /* e 12 */, 204 8059 /* e 16 */, 11 /* e 20 */, 205 /* 2**71 = */ 206 6848 /* e 0 */, 2260 /* e 4 */, 4348 /* e 8 */, 3241 /* e 12 */, 207 6118 /* e 16 */, 23 /* e 20 */, 208 /* 2**72 = */ 209 3696 /* e 0 */, 4521 /* e 4 */, 8696 /* e 8 */, 6482 /* e 12 */, 210 2236 /* e 16 */, 47 /* e 20 */, 211 /* 2**73 = */ 212 7392 /* e 0 */, 9042 /* e 4 */, 7392 /* e 8 */, 2965 /* e 12 */, 213 4473 /* e 16 */, 94 /* e 20 */, 214 /* 2**74 = */ 215 4784 /* e 0 */, 8085 /* e 4 */, 4785 /* e 8 */, 5931 /* e 12 */, 216 8946 /* e 16 */, 188 /* e 20 */, 217 /* 2**75 = */ 218 9568 /* e 0 */, 6170 /* e 4 */, 9571 /* e 8 */, 1862 /* e 12 */, 219 7893 /* e 16 */, 377 /* e 20 */, 220 /* 2**76 = */ 221 9136 /* e 0 */, 2341 /* e 4 */, 9143 /* e 8 */, 3725 /* e 12 */, 222 5786 /* e 16 */, 755 /* e 20 */, 223 /* 2**77 = */ 224 8272 /* e 0 */, 4683 /* e 4 */, 8286 /* e 8 */, 7451 /* e 12 */, 225 1572 /* e 16 */, 1511 /* e 20 */, 226 /* 2**78 = */ 227 6544 /* e 0 */, 9367 /* e 4 */, 6572 /* e 8 */, 4903 /* e 12 */, 228 3145 /* e 16 */, 3022 /* e 20 */, 229 /* 2**79 = */ 230 3088 /* e 0 */, 8735 /* e 4 */, 3145 /* e 8 */, 9807 /* e 12 */, 231 6290 /* e 16 */, 6044 /* e 20 */, 232 /* 2**80 = */ 233 6176 /* e 0 */, 7470 /* e 4 */, 6291 /* e 8 */, 9614 /* e 12 */, 234 2581 /* e 16 */, 2089 /* e 20 */, 1 /* e 24 */, 235 /* 2**81 = */ 236 2352 /* e 0 */, 4941 /* e 4 */, 2583 /* e 8 */, 9229 /* e 12 */, 237 5163 /* e 16 */, 4178 /* e 20 */, 2 /* e 24 */, 238 /* 2**82 = */ 239 4704 /* e 0 */, 9882 /* e 4 */, 5166 /* e 8 */, 8458 /* e 12 */, 240 327 /* e 16 */, 8357 /* e 20 */, 4 /* e 24 */, 241 /* 2**83 = */ 242 9408 /* e 0 */, 9764 /* e 4 */, 333 /* e 8 */, 6917 /* e 12 */, 243 655 /* e 16 */, 6714 /* e 20 */, 9 /* e 24 */, 244 /* 2**84 = */ 245 8816 /* e 0 */, 9529 /* e 4 */, 667 /* e 8 */, 3834 /* e 12 */, 246 1311 /* e 16 */, 3428 /* e 20 */, 19 /* e 24 */, 247 /* 2**85 = */ 248 7632 /* e 0 */, 9059 /* e 4 */, 1335 /* e 8 */, 7668 /* e 12 */, 249 2622 /* e 16 */, 6856 /* e 20 */, 38 /* e 24 */, 250 /* 2**86 = */ 251 5264 /* e 0 */, 8119 /* e 4 */, 2671 /* e 8 */, 5336 /* e 12 */, 252 5245 /* e 16 */, 3712 /* e 20 */, 77 /* e 24 */, 253 /* 2**87 = */ 254 528 /* e 0 */, 6239 /* e 4 */, 5343 /* e 8 */, 672 /* e 12 */, 255 491 /* e 16 */, 7425 /* e 20 */, 154 /* e 24 */, 256 /* 2**88 = */ 257 1056 /* e 0 */, 2478 /* e 4 */, 687 /* e 8 */, 1345 /* e 12 */, 258 982 /* e 16 */, 4850 /* e 20 */, 309 /* e 24 */, 259 /* 2**89 = */ 260 2112 /* e 0 */, 4956 /* e 4 */, 1374 /* e 8 */, 2690 /* e 12 */, 261 1964 /* e 16 */, 9700 /* e 20 */, 618 /* e 24 */, 262 /* 2**90 = */ 263 4224 /* e 0 */, 9912 /* e 4 */, 2748 /* e 8 */, 5380 /* e 12 */, 264 3928 /* e 16 */, 9400 /* e 20 */, 1237 /* e 24 */, 265 /* 2**91 = */ 266 8448 /* e 0 */, 9824 /* e 4 */, 5497 /* e 8 */, 760 /* e 12 */, 267 7857 /* e 16 */, 8800 /* e 20 */, 2475 /* e 24 */, 268 /* 2**92 = */ 269 6896 /* e 0 */, 9649 /* e 4 */, 995 /* e 8 */, 1521 /* e 12 */, 270 5714 /* e 16 */, 7601 /* e 20 */, 4951 /* e 24 */, 271 /* 2**93 = */ 272 3792 /* e 0 */, 9299 /* e 4 */, 1991 /* e 8 */, 3042 /* e 12 */, 273 1428 /* e 16 */, 5203 /* e 20 */, 9903 /* e 24 */, 274 /* 2**94 = */ 275 7584 /* e 0 */, 8598 /* e 4 */, 3983 /* e 8 */, 6084 /* e 12 */, 276 2856 /* e 16 */, 406 /* e 20 */, 9807 /* e 24 */, 1 /* e 28 */, 277 278 /* 2**95 = */ 279 5168 /* e 0 */, 7197 /* e 4 */, 7967 /* e 8 */, 2168 /* e 12 */, 280 5713 /* e 16 */, 812 /* e 20 */, 9614 /* e 24 */, 3 /* e 28 */, 281 282 /* 2**96 = */ 283 336 /* e 0 */, 4395 /* e 4 */, 5935 /* e 8 */, 4337 /* e 12 */, 284 1426 /* e 16 */, 1625 /* e 20 */, 9228 /* e 24 */, 7 /* e 28 */, 285 286 /* 2**97 = */ 287 672 /* e 0 */, 8790 /* e 4 */, 1870 /* e 8 */, 8675 /* e 12 */, 288 2852 /* e 16 */, 3250 /* e 20 */, 8456 /* e 24 */, 15 /* e 28 */, 289 290 /* 2**98 = */ 291 1344 /* e 0 */, 7580 /* e 4 */, 3741 /* e 8 */, 7350 /* e 12 */, 292 5705 /* e 16 */, 6500 /* e 20 */, 6912 /* e 24 */, 31 /* e 28 */, 293 294 /* 2**99 = */ 295 2688 /* e 0 */, 5160 /* e 4 */, 7483 /* e 8 */, 4700 /* e 12 */, 296 1411 /* e 16 */, 3001 /* e 20 */, 3825 /* e 24 */, 63 /* e 28 */, 297 298 /* 2**100 = */ 299 5376 /* e 0 */, 320 /* e 4 */, 4967 /* e 8 */, 9401 /* e 12 */, 300 2822 /* e 16 */, 6002 /* e 20 */, 7650 /* e 24 */, 126 /* e 28 */, 301 302 /* 2**101 = */ 303 752 /* e 0 */, 641 /* e 4 */, 9934 /* e 8 */, 8802 /* e 12 */, 304 5645 /* e 16 */, 2004 /* e 20 */, 5301 /* e 24 */, 253 /* e 28 */, 305 306 /* 2**102 = */ 307 1504 /* e 0 */, 1282 /* e 4 */, 9868 /* e 8 */, 7605 /* e 12 */, 308 1291 /* e 16 */, 4009 /* e 20 */, 602 /* e 24 */, 507 /* e 28 */, 309 310 /* 2**103 = */ 311 3008 /* e 0 */, 2564 /* e 4 */, 9736 /* e 8 */, 5211 /* e 12 */, 312 2583 /* e 16 */, 8018 /* e 20 */, 1204 /* e 24 */, 1014 /* e 28 */, 313 314 /* 2**104 = */ 315 6016 /* e 0 */, 5128 /* e 4 */, 9472 /* e 8 */, 423 /* e 12 */, 316 5167 /* e 16 */, 6036 /* e 20 */, 2409 /* e 24 */, 2028 /* e 28 */, 317 318 /* 2**105 = */ 319 2032 /* e 0 */, 257 /* e 4 */, 8945 /* e 8 */, 847 /* e 12 */, 320 334 /* e 16 */, 2073 /* e 20 */, 4819 /* e 24 */, 4056 /* e 28 */, 321 322 /* 2**106 = */ 323 4064 /* e 0 */, 514 /* e 4 */, 7890 /* e 8 */, 1695 /* e 12 */, 324 668 /* e 16 */, 4146 /* e 20 */, 9638 /* e 24 */, 8112 /* e 28 */, 325 326 /* 2**107 = */ 327 8128 /* e 0 */, 1028 /* e 4 */, 5780 /* e 8 */, 3391 /* e 12 */, 328 1336 /* e 16 */, 8292 /* e 20 */, 9276 /* e 24 */, 6225 /* e 28 */, 329 1 /* e 32 */, 330 /* 2**108 = */ 331 6256 /* e 0 */, 2057 /* e 4 */, 1560 /* e 8 */, 6783 /* e 12 */, 332 2672 /* e 16 */, 6584 /* e 20 */, 8553 /* e 24 */, 2451 /* e 28 */, 333 3 /* e 32 */, 334 /* 2**109 = */ 335 2512 /* e 0 */, 4115 /* e 4 */, 3120 /* e 8 */, 3566 /* e 12 */, 336 5345 /* e 16 */, 3168 /* e 20 */, 7107 /* e 24 */, 4903 /* e 28 */, 337 6 /* e 32 */, 338 /* 2**110 = */ 339 5024 /* e 0 */, 8230 /* e 4 */, 6240 /* e 8 */, 7132 /* e 12 */, 340 690 /* e 16 */, 6337 /* e 20 */, 4214 /* e 24 */, 9807 /* e 28 */, 341 12 /* e 32 */, 342 /* 2**111 = */ 343 48 /* e 0 */, 6461 /* e 4 */, 2481 /* e 8 */, 4265 /* e 12 */, 344 1381 /* e 16 */, 2674 /* e 20 */, 8429 /* e 24 */, 9614 /* e 28 */, 345 25 /* e 32 */, 346 /* 2**112 = */ 347 96 /* e 0 */, 2922 /* e 4 */, 4963 /* e 8 */, 8530 /* e 12 */, 348 2762 /* e 16 */, 5348 /* e 20 */, 6858 /* e 24 */, 9229 /* e 28 */, 349 51 /* e 32 */, 350 /* 2**113 = */ 351 192 /* e 0 */, 5844 /* e 4 */, 9926 /* e 8 */, 7060 /* e 12 */, 352 5525 /* e 16 */, 696 /* e 20 */, 3717 /* e 24 */, 8459 /* e 28 */, 353 103 /* e 32 */, 354 /* 2**114 = */ 355 384 /* e 0 */, 1688 /* e 4 */, 9853 /* e 8 */, 4121 /* e 12 */, 356 1051 /* e 16 */, 1393 /* e 20 */, 7434 /* e 24 */, 6918 /* e 28 */, 357 207 /* e 32 */, 358 /* 2**115 = */ 359 768 /* e 0 */, 3376 /* e 4 */, 9706 /* e 8 */, 8243 /* e 12 */, 360 2102 /* e 16 */, 2786 /* e 20 */, 4868 /* e 24 */, 3837 /* e 28 */, 361 415 /* e 32 */, 362 /* 2**116 = */ 363 1536 /* e 0 */, 6752 /* e 4 */, 9412 /* e 8 */, 6487 /* e 12 */, 364 4205 /* e 16 */, 5572 /* e 20 */, 9736 /* e 24 */, 7674 /* e 28 */, 365 830 /* e 32 */, 366 /* 2**117 = */ 367 3072 /* e 0 */, 3504 /* e 4 */, 8825 /* e 8 */, 2975 /* e 12 */, 368 8411 /* e 16 */, 1144 /* e 20 */, 9473 /* e 24 */, 5349 /* e 28 */, 369 1661 /* e 32 */, 370 /* 2**118 = */ 371 6144 /* e 0 */, 7008 /* e 4 */, 7650 /* e 8 */, 5951 /* e 12 */, 372 6822 /* e 16 */, 2289 /* e 20 */, 8946 /* e 24 */, 699 /* e 28 */, 373 3323 /* e 32 */, 374 /* 2**119 = */ 375 2288 /* e 0 */, 4017 /* e 4 */, 5301 /* e 8 */, 1903 /* e 12 */, 376 3645 /* e 16 */, 4579 /* e 20 */, 7892 /* e 24 */, 1399 /* e 28 */, 377 6646 /* e 32 */, 378 /* 2**120 = */ 379 4576 /* e 0 */, 8034 /* e 4 */, 602 /* e 8 */, 3807 /* e 12 */, 380 7290 /* e 16 */, 9158 /* e 20 */, 5784 /* e 24 */, 2799 /* e 28 */, 381 3292 /* e 32 */, 1 /* e 36 */, 382 /* 2**121 = */ 383 9152 /* e 0 */, 6068 /* e 4 */, 1205 /* e 8 */, 7614 /* e 12 */, 384 4580 /* e 16 */, 8317 /* e 20 */, 1569 /* e 24 */, 5599 /* e 28 */, 385 6584 /* e 32 */, 2 /* e 36 */, 386 /* 2**122 = */ 387 8304 /* e 0 */, 2137 /* e 4 */, 2411 /* e 8 */, 5228 /* e 12 */, 388 9161 /* e 16 */, 6634 /* e 20 */, 3139 /* e 24 */, 1198 /* e 28 */, 389 3169 /* e 32 */, 5 /* e 36 */, 390 /* 2**123 = */ 391 6608 /* e 0 */, 4275 /* e 4 */, 4822 /* e 8 */, 456 /* e 12 */, 392 8323 /* e 16 */, 3269 /* e 20 */, 6279 /* e 24 */, 2396 /* e 28 */, 393 6338 /* e 32 */, 10 /* e 36 */, 394 /* 2**124 = */ 395 3216 /* e 0 */, 8551 /* e 4 */, 9644 /* e 8 */, 912 /* e 12 */, 396 6646 /* e 16 */, 6539 /* e 20 */, 2558 /* e 24 */, 4793 /* e 28 */, 397 2676 /* e 32 */, 21 /* e 36 */, 398 /* 2**125 = */ 399 6432 /* e 0 */, 7102 /* e 4 */, 9289 /* e 8 */, 1825 /* e 12 */, 400 3292 /* e 16 */, 3079 /* e 20 */, 5117 /* e 24 */, 9586 /* e 28 */, 401 5352 /* e 32 */, 42 /* e 36 */, 402 /* 2**126 = */ 403 2864 /* e 0 */, 4205 /* e 4 */, 8579 /* e 8 */, 3651 /* e 12 */, 404 6584 /* e 16 */, 6158 /* e 20 */, 234 /* e 24 */, 9173 /* e 28 */, 405 705 /* e 32 */, 85 /* e 36 */, 406 /* 2**127 = */ 407 5728 /* e 0 */, 8410 /* e 4 */, 7158 /* e 8 */, 7303 /* e 12 */, 408 3168 /* e 16 */, 2317 /* e 20 */, 469 /* e 24 */, 8346 /* e 28 */, 409 1411 /* e 32 */, 170 /* e 36 */, 410 /* 2**128 = */ 411 1456 /* e 0 */, 6821 /* e 4 */, 4317 /* e 8 */, 4607 /* e 12 */, 412 6337 /* e 16 */, 4634 /* e 20 */, 938 /* e 24 */, 6692 /* e 28 */, 413 2823 /* e 32 */, 340 /* e 36 */, 414 /* 2**129 = */ 415 2912 /* e 0 */, 3642 /* e 4 */, 8635 /* e 8 */, 9214 /* e 12 */, 416 2674 /* e 16 */, 9269 /* e 20 */, 1876 /* e 24 */, 3384 /* e 28 */, 417 5647 /* e 32 */, 680 /* e 36 */, 418 /* 2**130 = */ 419 5824 /* e 0 */, 7284 /* e 4 */, 7270 /* e 8 */, 8429 /* e 12 */, 420 5349 /* e 16 */, 8538 /* e 20 */, 3753 /* e 24 */, 6768 /* e 28 */, 421 1294 /* e 32 */, 1361 /* e 36 */, 422 /* 2**131 = */ 423 1648 /* e 0 */, 4569 /* e 4 */, 4541 /* e 8 */, 6859 /* e 12 */, 424 699 /* e 16 */, 7077 /* e 20 */, 7507 /* e 24 */, 3536 /* e 28 */, 425 2589 /* e 32 */, 2722 /* e 36 */, 426 /* 2**132 = */ 427 3296 /* e 0 */, 9138 /* e 4 */, 9082 /* e 8 */, 3718 /* e 12 */, 428 1399 /* e 16 */, 4154 /* e 20 */, 5015 /* e 24 */, 7073 /* e 28 */, 429 5178 /* e 32 */, 5444 /* e 36 */, 430 /* 2**133 = */ 431 6592 /* e 0 */, 8276 /* e 4 */, 8165 /* e 8 */, 7437 /* e 12 */, 432 2798 /* e 16 */, 8308 /* e 20 */, 30 /* e 24 */, 4147 /* e 28 */, 433 357 /* e 32 */, 889 /* e 36 */, 1 /* e 40 */, 434 /* 2**134 = */ 435 3184 /* e 0 */, 6553 /* e 4 */, 6331 /* e 8 */, 4875 /* e 12 */, 436 5597 /* e 16 */, 6616 /* e 20 */, 61 /* e 24 */, 8294 /* e 28 */, 437 714 /* e 32 */, 1778 /* e 36 */, 2 /* e 40 */, 438 /* 2**135 = */ 439 6368 /* e 0 */, 3106 /* e 4 */, 2663 /* e 8 */, 9751 /* e 12 */, 440 1194 /* e 16 */, 3233 /* e 20 */, 123 /* e 24 */, 6588 /* e 28 */, 441 1429 /* e 32 */, 3556 /* e 36 */, 4 /* e 40 */, 442 /* 2**136 = */ 443 2736 /* e 0 */, 6213 /* e 4 */, 5326 /* e 8 */, 9502 /* e 12 */, 444 2389 /* e 16 */, 6466 /* e 20 */, 246 /* e 24 */, 3176 /* e 28 */, 445 2859 /* e 32 */, 7112 /* e 36 */, 8 /* e 40 */, 446 /* 2**137 = */ 447 5472 /* e 0 */, 2426 /* e 4 */, 653 /* e 8 */, 9005 /* e 12 */, 448 4779 /* e 16 */, 2932 /* e 20 */, 493 /* e 24 */, 6352 /* e 28 */, 449 5718 /* e 32 */, 4224 /* e 36 */, 17 /* e 40 */, 450 /* 2**138 = */ 451 944 /* e 0 */, 4853 /* e 4 */, 1306 /* e 8 */, 8010 /* e 12 */, 452 9559 /* e 16 */, 5864 /* e 20 */, 986 /* e 24 */, 2704 /* e 28 */, 453 1437 /* e 32 */, 8449 /* e 36 */, 34 /* e 40 */, 454 /* 2**139 = */ 455 1888 /* e 0 */, 9706 /* e 4 */, 2612 /* e 8 */, 6020 /* e 12 */, 456 9119 /* e 16 */, 1729 /* e 20 */, 1973 /* e 24 */, 5408 /* e 28 */, 457 2874 /* e 32 */, 6898 /* e 36 */, 69 /* e 40 */, 458 /* 2**140 = */ 459 3776 /* e 0 */, 9412 /* e 4 */, 5225 /* e 8 */, 2040 /* e 12 */, 460 8239 /* e 16 */, 3459 /* e 20 */, 3946 /* e 24 */, 816 /* e 28 */, 461 5749 /* e 32 */, 3796 /* e 36 */, 139 /* e 40 */, 462 /* 2**141 = */ 463 7552 /* e 0 */, 8824 /* e 4 */, 451 /* e 8 */, 4081 /* e 12 */, 464 6478 /* e 16 */, 6919 /* e 20 */, 7892 /* e 24 */, 1632 /* e 28 */, 465 1498 /* e 32 */, 7593 /* e 36 */, 278 /* e 40 */, 466 /* 2**142 = */ 467 5104 /* e 0 */, 7649 /* e 4 */, 903 /* e 8 */, 8162 /* e 12 */, 468 2956 /* e 16 */, 3839 /* e 20 */, 5785 /* e 24 */, 3265 /* e 28 */, 469 2996 /* e 32 */, 5186 /* e 36 */, 557 /* e 40 */, 470 /* 2**143 = */ 471 208 /* e 0 */, 5299 /* e 4 */, 1807 /* e 8 */, 6324 /* e 12 */, 472 5913 /* e 16 */, 7678 /* e 20 */, 1570 /* e 24 */, 6531 /* e 28 */, 473 5992 /* e 32 */, 372 /* e 36 */, 1115 /* e 40 */, 474 /* 2**144 = */ 475 416 /* e 0 */, 598 /* e 4 */, 3615 /* e 8 */, 2648 /* e 12 */, 476 1827 /* e 16 */, 5357 /* e 20 */, 3141 /* e 24 */, 3062 /* e 28 */, 477 1985 /* e 32 */, 745 /* e 36 */, 2230 /* e 40 */, 478 /* 2**145 = */ 479 832 /* e 0 */, 1196 /* e 4 */, 7230 /* e 8 */, 5296 /* e 12 */, 480 3654 /* e 16 */, 714 /* e 20 */, 6283 /* e 24 */, 6124 /* e 28 */, 481 3970 /* e 32 */, 1490 /* e 36 */, 4460 /* e 40 */, 482 /* 2**146 = */ 483 1664 /* e 0 */, 2392 /* e 4 */, 4460 /* e 8 */, 593 /* e 12 */, 484 7309 /* e 16 */, 1428 /* e 20 */, 2566 /* e 24 */, 2249 /* e 28 */, 485 7941 /* e 32 */, 2980 /* e 36 */, 8920 /* e 40 */, 486 /* 2**147 = */ 487 3328 /* e 0 */, 4784 /* e 4 */, 8920 /* e 8 */, 1186 /* e 12 */, 488 4618 /* e 16 */, 2857 /* e 20 */, 5132 /* e 24 */, 4498 /* e 28 */, 489 5882 /* e 32 */, 5961 /* e 36 */, 7840 /* e 40 */, 1 /* e 44 */, 490 491 /* 2**148 = */ 492 6656 /* e 0 */, 9568 /* e 4 */, 7840 /* e 8 */, 2373 /* e 12 */, 493 9236 /* e 16 */, 5714 /* e 20 */, 264 /* e 24 */, 8997 /* e 28 */, 494 1764 /* e 32 */, 1923 /* e 36 */, 5681 /* e 40 */, 3 /* e 44 */, 495 496 /* 2**149 = */ 497 3312 /* e 0 */, 9137 /* e 4 */, 5681 /* e 8 */, 4747 /* e 12 */, 498 8472 /* e 16 */, 1429 /* e 20 */, 529 /* e 24 */, 7994 /* e 28 */, 499 3529 /* e 32 */, 3846 /* e 36 */, 1362 /* e 40 */, 7 /* e 44 */, 500 501 /* 2**150 = */ 502 6624 /* e 0 */, 8274 /* e 4 */, 1363 /* e 8 */, 9495 /* e 12 */, 503 6944 /* e 16 */, 2859 /* e 20 */, 1058 /* e 24 */, 5988 /* e 28 */, 504 7059 /* e 32 */, 7692 /* e 36 */, 2724 /* e 40 */, 14 /* e 44 */, 505 506 /* 2**151 = */ 507 3248 /* e 0 */, 6549 /* e 4 */, 2727 /* e 8 */, 8990 /* e 12 */, 508 3889 /* e 16 */, 5719 /* e 20 */, 2116 /* e 24 */, 1976 /* e 28 */, 509 4119 /* e 32 */, 5385 /* e 36 */, 5449 /* e 40 */, 28 /* e 44 */, 510 511 /* 2**152 = */ 512 6496 /* e 0 */, 3098 /* e 4 */, 5455 /* e 8 */, 7980 /* e 12 */, 513 7779 /* e 16 */, 1438 /* e 20 */, 4233 /* e 24 */, 3952 /* e 28 */, 514 8238 /* e 32 */, 770 /* e 36 */, 899 /* e 40 */, 57 /* e 44 */, 515 516 /* 2**153 = */ 517 2992 /* e 0 */, 6197 /* e 4 */, 910 /* e 8 */, 5961 /* e 12 */, 518 5559 /* e 16 */, 2877 /* e 20 */, 8466 /* e 24 */, 7904 /* e 28 */, 519 6476 /* e 32 */, 1541 /* e 36 */, 1798 /* e 40 */, 114 /* e 44 */, 520 521 /* 2**154 = */ 522 5984 /* e 0 */, 2394 /* e 4 */, 1821 /* e 8 */, 1922 /* e 12 */, 523 1119 /* e 16 */, 5755 /* e 20 */, 6932 /* e 24 */, 5809 /* e 28 */, 524 2953 /* e 32 */, 3083 /* e 36 */, 3596 /* e 40 */, 228 /* e 44 */, 525 526 /* 2**155 = */ 527 1968 /* e 0 */, 4789 /* e 4 */, 3642 /* e 8 */, 3844 /* e 12 */, 528 2238 /* e 16 */, 1510 /* e 20 */, 3865 /* e 24 */, 1619 /* e 28 */, 529 5907 /* e 32 */, 6166 /* e 36 */, 7192 /* e 40 */, 456 /* e 44 */, 530 531 /* 2**156 = */ 532 3936 /* e 0 */, 9578 /* e 4 */, 7284 /* e 8 */, 7688 /* e 12 */, 533 4476 /* e 16 */, 3020 /* e 20 */, 7730 /* e 24 */, 3238 /* e 28 */, 534 1814 /* e 32 */, 2333 /* e 36 */, 4385 /* e 40 */, 913 /* e 44 */, 535 536 /* 2**157 = */ 537 7872 /* e 0 */, 9156 /* e 4 */, 4569 /* e 8 */, 5377 /* e 12 */, 538 8953 /* e 16 */, 6040 /* e 20 */, 5460 /* e 24 */, 6477 /* e 28 */, 539 3628 /* e 32 */, 4666 /* e 36 */, 8770 /* e 40 */, 1826 /* e 44 */, 540 541 /* 2**158 = */ 542 5744 /* e 0 */, 8313 /* e 4 */, 9139 /* e 8 */, 754 /* e 12 */, 543 7907 /* e 16 */, 2081 /* e 20 */, 921 /* e 24 */, 2955 /* e 28 */, 544 7257 /* e 32 */, 9332 /* e 36 */, 7540 /* e 40 */, 3653 /* e 44 */, 545 546 /* 2**159 = */ 547 1488 /* e 0 */, 6627 /* e 4 */, 8279 /* e 8 */, 1509 /* e 12 */, 548 5814 /* e 16 */, 4163 /* e 20 */, 1842 /* e 24 */, 5910 /* e 28 */, 549 4514 /* e 32 */, 8665 /* e 36 */, 5081 /* e 40 */, 7307 /* e 44 */, 550 551 /* 2**160 = */ 552 2976 /* e 0 */, 3254 /* e 4 */, 6559 /* e 8 */, 3019 /* e 12 */, 553 1628 /* e 16 */, 8327 /* e 20 */, 3684 /* e 24 */, 1820 /* e 28 */, 554 9029 /* e 32 */, 7330 /* e 36 */, 163 /* e 40 */, 4615 /* e 44 */, 555 1 /* e 48 */, 556 /* 2**161 = */ 557 5952 /* e 0 */, 6508 /* e 4 */, 3118 /* e 8 */, 6039 /* e 12 */, 558 3256 /* e 16 */, 6654 /* e 20 */, 7369 /* e 24 */, 3640 /* e 28 */, 559 8058 /* e 32 */, 4661 /* e 36 */, 327 /* e 40 */, 9230 /* e 44 */, 560 2 /* e 48 */, 561 /* 2**162 = */ 562 1904 /* e 0 */, 3017 /* e 4 */, 6237 /* e 8 */, 2078 /* e 12 */, 563 6513 /* e 16 */, 3308 /* e 20 */, 4739 /* e 24 */, 7281 /* e 28 */, 564 6116 /* e 32 */, 9323 /* e 36 */, 654 /* e 40 */, 8460 /* e 44 */, 565 5 /* e 48 */, 566 /* 2**163 = */ 567 3808 /* e 0 */, 6034 /* e 4 */, 2474 /* e 8 */, 4157 /* e 12 */, 568 3026 /* e 16 */, 6617 /* e 20 */, 9478 /* e 24 */, 4562 /* e 28 */, 569 2233 /* e 32 */, 8647 /* e 36 */, 1309 /* e 40 */, 6920 /* e 44 */, 570 11 /* e 48 */, 571 /* 2**164 = */ 572 7616 /* e 0 */, 2068 /* e 4 */, 4949 /* e 8 */, 8314 /* e 12 */, 573 6052 /* e 16 */, 3234 /* e 20 */, 8957 /* e 24 */, 9125 /* e 28 */, 574 4466 /* e 32 */, 7294 /* e 36 */, 2619 /* e 40 */, 3840 /* e 44 */, 575 23 /* e 48 */, 576 /* 2**165 = */ 577 5232 /* e 0 */, 4137 /* e 4 */, 9898 /* e 8 */, 6628 /* e 12 */, 578 2105 /* e 16 */, 6469 /* e 20 */, 7914 /* e 24 */, 8251 /* e 28 */, 579 8933 /* e 32 */, 4588 /* e 36 */, 5239 /* e 40 */, 7680 /* e 44 */, 580 46 /* e 48 */, 581 /* 2**166 = */ 582 464 /* e 0 */, 8275 /* e 4 */, 9796 /* e 8 */, 3257 /* e 12 */, 583 4211 /* e 16 */, 2938 /* e 20 */, 5829 /* e 24 */, 6503 /* e 28 */, 584 7867 /* e 32 */, 9177 /* e 36 */, 478 /* e 40 */, 5361 /* e 44 */, 585 93 /* e 48 */, 586 /* 2**167 = */ 587 928 /* e 0 */, 6550 /* e 4 */, 9593 /* e 8 */, 6515 /* e 12 */, 588 8422 /* e 16 */, 5876 /* e 20 */, 1658 /* e 24 */, 3007 /* e 28 */, 589 5735 /* e 32 */, 8355 /* e 36 */, 957 /* e 40 */, 722 /* e 44 */, 590 187 /* e 48 */, 591 /* 2**168 = */ 592 1856 /* e 0 */, 3100 /* e 4 */, 9187 /* e 8 */, 3031 /* e 12 */, 593 6845 /* e 16 */, 1753 /* e 20 */, 3317 /* e 24 */, 6014 /* e 28 */, 594 1470 /* e 32 */, 6711 /* e 36 */, 1915 /* e 40 */, 1444 /* e 44 */, 595 374 /* e 48 */, 596 /* 2**169 = */ 597 3712 /* e 0 */, 6200 /* e 4 */, 8374 /* e 8 */, 6063 /* e 12 */, 598 3690 /* e 16 */, 3507 /* e 20 */, 6634 /* e 24 */, 2028 /* e 28 */, 599 2941 /* e 32 */, 3422 /* e 36 */, 3831 /* e 40 */, 2888 /* e 44 */, 600 748 /* e 48 */, 601 /* 2**170 = */ 602 7424 /* e 0 */, 2400 /* e 4 */, 6749 /* e 8 */, 2127 /* e 12 */, 603 7381 /* e 16 */, 7014 /* e 20 */, 3268 /* e 24 */, 4057 /* e 28 */, 604 5882 /* e 32 */, 6844 /* e 36 */, 7662 /* e 40 */, 5776 /* e 44 */, 605 1496 /* e 48 */, 606 /* 2**171 = */ 607 4848 /* e 0 */, 4801 /* e 4 */, 3498 /* e 8 */, 4255 /* e 12 */, 608 4762 /* e 16 */, 4029 /* e 20 */, 6537 /* e 24 */, 8114 /* e 28 */, 609 1764 /* e 32 */, 3689 /* e 36 */, 5325 /* e 40 */, 1553 /* e 44 */, 610 2993 /* e 48 */, 611 /* 2**172 = */ 612 9696 /* e 0 */, 9602 /* e 4 */, 6996 /* e 8 */, 8510 /* e 12 */, 613 9524 /* e 16 */, 8058 /* e 20 */, 3074 /* e 24 */, 6229 /* e 28 */, 614 3529 /* e 32 */, 7378 /* e 36 */, 650 /* e 40 */, 3107 /* e 44 */, 615 5986 /* e 48 */, 616 /* 2**173 = */ 617 9392 /* e 0 */, 9205 /* e 4 */, 3993 /* e 8 */, 7021 /* e 12 */, 618 9049 /* e 16 */, 6117 /* e 20 */, 6149 /* e 24 */, 2458 /* e 28 */, 619 7059 /* e 32 */, 4756 /* e 36 */, 1301 /* e 40 */, 6214 /* e 44 */, 620 1972 /* e 48 */, 1 /* e 52 */, 621 /* 2**174 = */ 622 8784 /* e 0 */, 8411 /* e 4 */, 7987 /* e 8 */, 4042 /* e 12 */, 623 8099 /* e 16 */, 2235 /* e 20 */, 2299 /* e 24 */, 4917 /* e 28 */, 624 4118 /* e 32 */, 9513 /* e 36 */, 2602 /* e 40 */, 2428 /* e 44 */, 625 3945 /* e 48 */, 2 /* e 52 */, 626 /* 2**175 = */ 627 7568 /* e 0 */, 6823 /* e 4 */, 5975 /* e 8 */, 8085 /* e 12 */, 628 6198 /* e 16 */, 4471 /* e 20 */, 4598 /* e 24 */, 9834 /* e 28 */, 629 8236 /* e 32 */, 9026 /* e 36 */, 5205 /* e 40 */, 4856 /* e 44 */, 630 7890 /* e 48 */, 4 /* e 52 */, 631 0}; 632 633 /* table of starting indexes into previous table */ 634 const unsigned short __tbl_2_small_start [] = { 635 0, 1, 2, 3, 4, 5, 6, 7, 636 8, 9, 10, 11, 12, 13, 14, 16, 637 18, 20, 22, 24, 26, 28, 30, 32, 638 34, 36, 38, 40, 43, 46, 49, 52, 639 55, 58, 61, 64, 67, 70, 73, 76, 640 79, 83, 87, 91, 95, 99, 103, 107, 641 111, 115, 119, 123, 127, 131, 135, 140, 642 145, 150, 155, 160, 165, 170, 175, 180, 643 185, 190, 195, 200, 206, 212, 218, 224, 644 230, 236, 242, 248, 254, 260, 266, 272, 645 278, 285, 292, 299, 306, 313, 320, 327, 646 334, 341, 348, 355, 362, 369, 376, 384, 647 392, 400, 408, 416, 424, 432, 440, 448, 648 456, 464, 472, 480, 489, 498, 507, 516, 649 525, 534, 543, 552, 561, 570, 579, 588, 650 597, 607, 617, 627, 637, 647, 657, 667, 651 677, 687, 697, 707, 717, 727, 738, 749, 652 760, 771, 782, 793, 804, 815, 826, 837, 653 848, 859, 870, 881, 893, 905, 917, 929, 654 941, 953, 965, 977, 989, 1001, 1013, 1025, 655 1037, 1050, 1063, 1076, 1089, 1102, 1115, 1128, 656 1141, 1154, 1167, 1180, 1193, 1206, 1220, 1234, 657 1248, 0}; 658