2N/A/*
2N/A * CDDL HEADER START
2N/A *
2N/A * The contents of this file are subject to the terms of the
2N/A * Common Development and Distribution License (the "License").
2N/A * You may not use this file except in compliance with the License.
2N/A *
2N/A * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
2N/A * or http://www.opensolaris.org/os/licensing.
2N/A * See the License for the specific language governing permissions
2N/A * and limitations under the License.
2N/A *
2N/A * When distributing Covered Code, include this CDDL HEADER in each
2N/A * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
2N/A * If applicable, add the following below this CDDL HEADER, with the
2N/A * fields enclosed by brackets "[]" replaced with your own identifying
2N/A * information: Portions Copyright [yyyy] [name of copyright owner]
2N/A *
2N/A * CDDL HEADER END
2N/A */
2N/A
2N/A/*
2N/A * Copyright 2008 Sun Microsystems, Inc. All rights reserved.
2N/A * Use is subject to license terms.
2N/A */
2N/A
2N/A#pragma ident "%Z%%M% %I% %E% SMI"
2N/A
2N/A#include "lint.h"
2N/A#include <sys/types.h>
2N/A
2N/A/* table of 64 multiples of 10**1 */
2N/Aconst unsigned short __tbl_10_small_digits [] = { 1,
2N/A/* 10**1 = */
2N/A5 /* h 1 */,
2N/A/* 10**2 = */
2N/A25 /* h 2 */,
2N/A/* 10**3 = */
2N/A125 /* h 3 */,
2N/A/* 10**4 = */
2N/A625 /* h 4 */,
2N/A/* 10**5 = */
2N/A3125 /* h 5 */,
2N/A/* 10**6 = */
2N/A15625 /* h 6 */,
2N/A/* 10**7 = */
2N/A12589 /* h 7 */, 1 /* h 23 */,
2N/A/* 10**8 = */
2N/A62945 /* h 8 */, 5 /* h 24 */,
2N/A/* 10**9 = */
2N/A52581 /* h 9 */, 29 /* h 25 */,
2N/A/* 10**10 = */
2N/A761 /* h 10 */, 149 /* h 26 */,
2N/A/* 10**11 = */
2N/A3805 /* h 11 */, 745 /* h 27 */,
2N/A/* 10**12 = */
2N/A19025 /* h 12 */, 3725 /* h 28 */,
2N/A/* 10**13 = */
2N/A29589 /* h 13 */, 18626 /* h 29 */,
2N/A/* 10**14 = */
2N/A16873 /* h 14 */, 27596 /* h 30 */, 1 /* h 46 */,
2N/A/* 10**15 = */
2N/A18829 /* h 15 */, 6909 /* h 31 */, 7 /* h 47 */,
2N/A/* 10**16 = */
2N/A28609 /* h 16 */, 34546 /* h 32 */, 35 /* h 48 */,
2N/A/* 10**17 = */
2N/A11973 /* h 17 */, 41660 /* h 33 */, 177 /* h 49 */,
2N/A/* 10**18 = */
2N/A59865 /* h 18 */, 11692 /* h 34 */, 888 /* h 50 */,
2N/A/* 10**19 = */
2N/A37181 /* h 19 */, 58464 /* h 35 */, 4440 /* h 51 */,
2N/A/* 10**20 = */
2N/A54833 /* h 20 */, 30178 /* h 36 */, 22204 /* h 52 */,
2N/A/* 10**21 = */
2N/A12021 /* h 21 */, 19822 /* h 37 */, 45486 /* h 53 */, 1 /* h 69 */,
2N/A
2N/A/* 10**22 = */
2N/A60105 /* h 22 */, 33574 /* h 38 */, 30823 /* h 54 */, 8 /* h 70 */,
2N/A
2N/A/* 10**23 = */
2N/A38381 /* h 23 */, 36802 /* h 39 */, 23045 /* h 55 */, 42 /* h 71 */,
2N/A
2N/A/* 10**24 = */
2N/A60833 /* h 24 */, 52940 /* h 40 */, 49691 /* h 56 */, 211 /* h 72 */,
2N/A
2N/A/* 10**25 = */
2N/A42021 /* h 25 */, 2560 /* h 41 */, 51851 /* h 57 */, 1058 /* h 73 */,
2N/A
2N/A/* 10**26 = */
2N/A13497 /* h 26 */, 12803 /* h 42 */, 62647 /* h 58 */, 5293 /* h 74 */,
2N/A
2N/A/* 10**27 = */
2N/A1949 /* h 27 */, 64016 /* h 43 */, 51091 /* h 59 */, 26469 /* h 75 */,
2N/A
2N/A/* 10**28 = */
2N/A9745 /* h 28 */, 57936 /* h 44 */, 58851 /* h 60 */, 1276 /* h 76 */,
2N/A2 /* h 92 */,
2N/A/* 10**29 = */
2N/A48725 /* h 29 */, 27536 /* h 45 */, 32115 /* h 61 */, 6384 /* h 77 */,
2N/A10 /* h 93 */,
2N/A/* 10**30 = */
2N/A47017 /* h 30 */, 6611 /* h 46 */, 29505 /* h 62 */, 31922 /* h 78 */,
2N/A50 /* h 94 */,
2N/A/* 10**31 = */
2N/A38477 /* h 31 */, 33058 /* h 47 */, 16453 /* h 63 */, 28540 /* h 79 */,
2N/A252 /* h 95 */,
2N/A/* 10**32 = */
2N/A61313 /* h 32 */, 34220 /* h 48 */, 16731 /* h 64 */, 11629 /* h 80 */,
2N/A1262 /* h 96 */,
2N/A/* 10**33 = */
2N/A44421 /* h 33 */, 40032 /* h 49 */, 18121 /* h 65 */, 58146 /* h 81 */,
2N/A6310 /* h 97 */,
2N/A/* 10**34 = */
2N/A25497 /* h 34 */, 3555 /* h 50 */, 25072 /* h 66 */, 28587 /* h 82 */,
2N/A31554 /* h 98 */,
2N/A/* 10**35 = */
2N/A61949 /* h 35 */, 17776 /* h 51 */, 59824 /* h 67 */, 11864 /* h 83 */,
2N/A26700 /* h 99 */, 2 /* h 115 */,
2N/A/* 10**36 = */
2N/A47601 /* h 36 */, 23348 /* h 52 */, 36977 /* h 68 */, 59324 /* h 84 */,
2N/A2428 /* h 100 */, 12 /* h 116 */,
2N/A/* 10**37 = */
2N/A41397 /* h 37 */, 51207 /* h 53 */, 53814 /* h 69 */, 34478 /* h 85 */,
2N/A12144 /* h 101 */, 60 /* h 117 */,
2N/A/* 10**38 = */
2N/A10377 /* h 38 */, 59430 /* h 54 */, 6929 /* h 70 */, 41322 /* h 86 */,
2N/A60722 /* h 102 */, 300 /* h 118 */,
2N/A/* 10**39 = */
2N/A51885 /* h 39 */, 35006 /* h 55 */, 34649 /* h 71 */, 10002 /* h 87 */,
2N/A41469 /* h 103 */, 1504 /* h 119 */,
2N/A/* 10**40 = */
2N/A62817 /* h 40 */, 43961 /* h 56 */, 42175 /* h 72 */, 50012 /* h 88 */,
2N/A10737 /* h 104 */, 7523 /* h 120 */,
2N/A/* 10**41 = */
2N/A51941 /* h 41 */, 23201 /* h 57 */, 14270 /* h 73 */, 53455 /* h 89 */,
2N/A53688 /* h 105 */, 37615 /* h 121 */,
2N/A/* 10**42 = */
2N/A63097 /* h 42 */, 50472 /* h 58 */, 5815 /* h 74 */, 5132 /* h 90 */,
2N/A6300 /* h 106 */, 57007 /* h 122 */, 2 /* h 138 */,
2N/A/* 10**43 = */
2N/A53341 /* h 43 */, 55756 /* h 59 */, 29078 /* h 75 */, 25660 /* h 91 */,
2N/A31500 /* h 107 */, 22891 /* h 123 */, 14 /* h 139 */,
2N/A/* 10**44 = */
2N/A4561 /* h 44 */, 16640 /* h 60 */, 14322 /* h 76 */, 62766 /* h 92 */,
2N/A26429 /* h 108 */, 48921 /* h 124 */, 71 /* h 140 */,
2N/A/* 10**45 = */
2N/A22805 /* h 45 */, 17664 /* h 61 */, 6075 /* h 77 */, 51687 /* h 93 */,
2N/A1077 /* h 109 */, 47999 /* h 125 */, 358 /* h 141 */,
2N/A/* 10**46 = */
2N/A48489 /* h 46 */, 22785 /* h 62 */, 30376 /* h 78 */, 61827 /* h 94 */,
2N/A5388 /* h 110 */, 43387 /* h 126 */, 1793 /* h 142 */,
2N/A/* 10**47 = */
2N/A45837 /* h 47 */, 48392 /* h 63 */, 20809 /* h 79 */, 46993 /* h 95 */,
2N/A26944 /* h 111 */, 20327 /* h 127 */, 8968 /* h 143 */,
2N/A/* 10**48 = */
2N/A32577 /* h 48 */, 45355 /* h 64 */, 38512 /* h 80 */, 38358 /* h 96 */,
2N/A3651 /* h 112 */, 36101 /* h 128 */, 44841 /* h 144 */,
2N/A/* 10**49 = */
2N/A31813 /* h 49 */, 30169 /* h 65 */, 61491 /* h 81 */, 60720 /* h 97 */,
2N/A18257 /* h 113 */, 49433 /* h 129 */, 27599 /* h 145 */, 3 /* h 161 */,
2N/A
2N/A/* 10**50 = */
2N/A27993 /* h 50 */, 19775 /* h 66 */, 45313 /* h 82 */, 41460 /* h 98 */,
2N/A25753 /* h 114 */, 50558 /* h 130 */, 6926 /* h 146 */, 17 /* h 162 */,
2N/A
2N/A/* 10**51 = */
2N/A8893 /* h 51 */, 33341 /* h 67 */, 29958 /* h 83 */, 10695 /* h 99 */,
2N/A63232 /* h 115 */, 56183 /* h 131 */, 34633 /* h 147 */, 85 /* h 163 */,
2N/A
2N/A/* 10**52 = */
2N/A44465 /* h 52 */, 35633 /* h 68 */, 18720 /* h 84 */, 53477 /* h 100 */,
2N/A54016 /* h 116 */, 18775 /* h 132 */, 42097 /* h 148 */, 427 /* h 164 */,
2N/A
2N/A/* 10**53 = */
2N/A25717 /* h 53 */, 47096 /* h 69 */, 28066 /* h 85 */, 5242 /* h 101 */,
2N/A7940 /* h 117 */, 28343 /* h 133 */, 13878 /* h 149 */, 2138 /* h 165 */,
2N/A
2N/A/* 10**54 = */
2N/A63049 /* h 54 */, 38873 /* h 70 */, 9261 /* h 86 */, 26212 /* h 102 */,
2N/A39700 /* h 118 */, 10643 /* h 134 */, 3856 /* h 150 */, 10691 /* h 166 */,
2N/A
2N/A/* 10**55 = */
2N/A53101 /* h 55 */, 63297 /* h 71 */, 46307 /* h 87 */, 65524 /* h 103 */,
2N/A1893 /* h 119 */, 53218 /* h 135 */, 19280 /* h 151 */, 53455 /* h 167 */,
2N/A
2N/A/* 10**56 = */
2N/A3361 /* h 56 */, 54345 /* h 72 */, 34931 /* h 88 */, 65479 /* h 104 */,
2N/A9469 /* h 120 */, 3946 /* h 136 */, 30868 /* h 152 */, 5132 /* h 168 */,
2N/A4 /* h 184 */,
2N/A/* 10**57 = */
2N/A16805 /* h 57 */, 9581 /* h 73 */, 43587 /* h 89 */, 65253 /* h 105 */,
2N/A47349 /* h 121 */, 19730 /* h 137 */, 23268 /* h 153 */, 25662 /* h 169 */,
2N/A20 /* h 185 */,
2N/A/* 10**58 = */
2N/A18489 /* h 58 */, 47906 /* h 74 */, 21327 /* h 90 */, 64124 /* h 106 */,
2N/A40141 /* h 122 */, 33117 /* h 138 */, 50805 /* h 154 */, 62775 /* h 170 */,
2N/A101 /* h 186 */,
2N/A/* 10**59 = */
2N/A26909 /* h 59 */, 42923 /* h 75 */, 41102 /* h 91 */, 58477 /* h 107 */,
2N/A4101 /* h 123 */, 34516 /* h 139 */, 57419 /* h 155 */, 51734 /* h 171 */,
2N/A509 /* h 187 */,
2N/A/* 10**60 = */
2N/A3473 /* h 60 */, 18009 /* h 76 */, 8905 /* h 92 */, 30244 /* h 108 */,
2N/A20509 /* h 124 */, 41508 /* h 140 */, 24953 /* h 156 */, 62066 /* h 172 */,
2N/A2548 /* h 188 */,
2N/A/* 10**61 = */
2N/A17365 /* h 61 */, 24509 /* h 77 */, 44526 /* h 93 */, 20148 /* h 109 */,
2N/A37011 /* h 125 */, 10933 /* h 141 */, 59232 /* h 157 */, 48187 /* h 173 */,
2N/A12744 /* h 189 */,
2N/A/* 10**62 = */
2N/A21289 /* h 62 */, 57010 /* h 78 */, 26023 /* h 94 */, 35207 /* h 110 */,
2N/A53984 /* h 126 */, 54667 /* h 142 */, 34016 /* h 158 */, 44331 /* h 174 */,
2N/A63723 /* h 190 */,
2N/A/* 10**63 = */
2N/A40909 /* h 63 */, 22907 /* h 79 */, 64583 /* h 95 */, 44964 /* h 111 */,
2N/A7778 /* h 127 */, 11195 /* h 143 */, 39012 /* h 159 */, 25049 /* h 175 */,
2N/A56474 /* h 191 */, 4 /* h 207 */,
2N/A0};
2N/A
2N/A/* table of starting indexes into previous table */
2N/Aconst unsigned short __tbl_10_small_start [] = {
2N/A0, 1, 2, 3, 4, 5, 6, 7,
2N/A9, 11, 13, 15, 17, 19, 21, 24,
2N/A27, 30, 33, 36, 39, 42, 46, 50,
2N/A54, 58, 62, 66, 70, 75, 80, 85,
2N/A90, 95, 100, 105, 111, 117, 123, 129,
2N/A135, 141, 147, 154, 161, 168, 175, 182,
2N/A189, 196, 204, 212, 220, 228, 236, 244,
2N/A252, 261, 270, 279, 288, 297, 306, 315,
2N/A325, 0};