1/*	$NetBSD$	*/
2
3/*
4 * tstotv - tables for converting from NTP time stamps to struct timeval
5 */
6
7#include "ntp_types.h"
8
9/*
10 * Tables to convert from a time stamp fraction to usecs.  Note that
11 * the units of these tables are actually (usec<<3).  We carry three
12 * guard bits so that the result can be properly truncated (or rounded)
13 * to be correct to the least significant bit.
14 *
15 * These tables are rounded.
16 */
17
18long tstoushi[256] = {
19	0x000000, 0x007a12, 0x00f424, 0x016e36,
20	0x01e848, 0x02625a, 0x02dc6c, 0x03567e,
21	0x03d090, 0x044aa2, 0x04c4b4, 0x053ec6,
22	0x05b8d8, 0x0632ea, 0x06acfc, 0x07270e,
23	0x07a120, 0x081b32, 0x089544, 0x090f56,
24	0x098968, 0x0a037a, 0x0a7d8c, 0x0af79e,
25	0x0b71b0, 0x0bebc2, 0x0c65d4, 0x0cdfe6,
26	0x0d59f8, 0x0dd40a, 0x0e4e1c, 0x0ec82e,
27	0x0f4240, 0x0fbc52, 0x103664, 0x10b076,
28	0x112a88, 0x11a49a, 0x121eac, 0x1298be,
29	0x1312d0, 0x138ce2, 0x1406f4, 0x148106,
30	0x14fb18, 0x15752a, 0x15ef3c, 0x16694e,
31	0x16e360, 0x175d72, 0x17d784, 0x185196,
32	0x18cba8, 0x1945ba, 0x19bfcc, 0x1a39de,
33	0x1ab3f0, 0x1b2e02, 0x1ba814, 0x1c2226,
34	0x1c9c38, 0x1d164a, 0x1d905c, 0x1e0a6e,
35	0x1e8480, 0x1efe92, 0x1f78a4, 0x1ff2b6,
36	0x206cc8, 0x20e6da, 0x2160ec, 0x21dafe,
37	0x225510, 0x22cf22, 0x234934, 0x23c346,
38	0x243d58, 0x24b76a, 0x25317c, 0x25ab8e,
39	0x2625a0, 0x269fb2, 0x2719c4, 0x2793d6,
40	0x280de8, 0x2887fa, 0x29020c, 0x297c1e,
41	0x29f630, 0x2a7042, 0x2aea54, 0x2b6466,
42	0x2bde78, 0x2c588a, 0x2cd29c, 0x2d4cae,
43	0x2dc6c0, 0x2e40d2, 0x2ebae4, 0x2f34f6,
44	0x2faf08, 0x30291a, 0x30a32c, 0x311d3e,
45	0x319750, 0x321162, 0x328b74, 0x330586,
46	0x337f98, 0x33f9aa, 0x3473bc, 0x34edce,
47	0x3567e0, 0x35e1f2, 0x365c04, 0x36d616,
48	0x375028, 0x37ca3a, 0x38444c, 0x38be5e,
49	0x393870, 0x39b282, 0x3a2c94, 0x3aa6a6,
50	0x3b20b8, 0x3b9aca, 0x3c14dc, 0x3c8eee,
51	0x3d0900, 0x3d8312, 0x3dfd24, 0x3e7736,
52	0x3ef148, 0x3f6b5a, 0x3fe56c, 0x405f7e,
53	0x40d990, 0x4153a2, 0x41cdb4, 0x4247c6,
54	0x42c1d8, 0x433bea, 0x43b5fc, 0x44300e,
55	0x44aa20, 0x452432, 0x459e44, 0x461856,
56	0x469268, 0x470c7a, 0x47868c, 0x48009e,
57	0x487ab0, 0x48f4c2, 0x496ed4, 0x49e8e6,
58	0x4a62f8, 0x4add0a, 0x4b571c, 0x4bd12e,
59	0x4c4b40, 0x4cc552, 0x4d3f64, 0x4db976,
60	0x4e3388, 0x4ead9a, 0x4f27ac, 0x4fa1be,
61	0x501bd0, 0x5095e2, 0x510ff4, 0x518a06,
62	0x520418, 0x527e2a, 0x52f83c, 0x53724e,
63	0x53ec60, 0x546672, 0x54e084, 0x555a96,
64	0x55d4a8, 0x564eba, 0x56c8cc, 0x5742de,
65	0x57bcf0, 0x583702, 0x58b114, 0x592b26,
66	0x59a538, 0x5a1f4a, 0x5a995c, 0x5b136e,
67	0x5b8d80, 0x5c0792, 0x5c81a4, 0x5cfbb6,
68	0x5d75c8, 0x5defda, 0x5e69ec, 0x5ee3fe,
69	0x5f5e10, 0x5fd822, 0x605234, 0x60cc46,
70	0x614658, 0x61c06a, 0x623a7c, 0x62b48e,
71	0x632ea0, 0x63a8b2, 0x6422c4, 0x649cd6,
72	0x6516e8, 0x6590fa, 0x660b0c, 0x66851e,
73	0x66ff30, 0x677942, 0x67f354, 0x686d66,
74	0x68e778, 0x69618a, 0x69db9c, 0x6a55ae,
75	0x6acfc0, 0x6b49d2, 0x6bc3e4, 0x6c3df6,
76	0x6cb808, 0x6d321a, 0x6dac2c, 0x6e263e,
77	0x6ea050, 0x6f1a62, 0x6f9474, 0x700e86,
78	0x708898, 0x7102aa, 0x717cbc, 0x71f6ce,
79	0x7270e0, 0x72eaf2, 0x736504, 0x73df16,
80	0x745928, 0x74d33a, 0x754d4c, 0x75c75e,
81	0x764170, 0x76bb82, 0x773594, 0x77afa6,
82	0x7829b8, 0x78a3ca, 0x791ddc, 0x7997ee
83};
84
85long tstousmid[256] = {
86	0x0000, 0x007a, 0x00f4, 0x016e, 0x01e8, 0x0262, 0x02dc, 0x0356,
87	0x03d1, 0x044b, 0x04c5, 0x053f, 0x05b9, 0x0633, 0x06ad, 0x0727,
88	0x07a1, 0x081b, 0x0895, 0x090f, 0x0989, 0x0a03, 0x0a7e, 0x0af8,
89	0x0b72, 0x0bec, 0x0c66, 0x0ce0, 0x0d5a, 0x0dd4, 0x0e4e, 0x0ec8,
90	0x0f42, 0x0fbc, 0x1036, 0x10b0, 0x112b, 0x11a5, 0x121f, 0x1299,
91	0x1313, 0x138d, 0x1407, 0x1481, 0x14fb, 0x1575, 0x15ef, 0x1669,
92	0x16e3, 0x175d, 0x17d8, 0x1852, 0x18cc, 0x1946, 0x19c0, 0x1a3a,
93	0x1ab4, 0x1b2e, 0x1ba8, 0x1c22, 0x1c9c, 0x1d16, 0x1d90, 0x1e0a,
94	0x1e84, 0x1eff, 0x1f79, 0x1ff3, 0x206d, 0x20e7, 0x2161, 0x21db,
95	0x2255, 0x22cf, 0x2349, 0x23c3, 0x243d, 0x24b7, 0x2531, 0x25ac,
96	0x2626, 0x26a0, 0x271a, 0x2794, 0x280e, 0x2888, 0x2902, 0x297c,
97	0x29f6, 0x2a70, 0x2aea, 0x2b64, 0x2bde, 0x2c59, 0x2cd3, 0x2d4d,
98	0x2dc7, 0x2e41, 0x2ebb, 0x2f35, 0x2faf, 0x3029, 0x30a3, 0x311d,
99	0x3197, 0x3211, 0x328b, 0x3306, 0x3380, 0x33fa, 0x3474, 0x34ee,
100	0x3568, 0x35e2, 0x365c, 0x36d6, 0x3750, 0x37ca, 0x3844, 0x38be,
101	0x3938, 0x39b3, 0x3a2d, 0x3aa7, 0x3b21, 0x3b9b, 0x3c15, 0x3c8f,
102	0x3d09, 0x3d83, 0x3dfd, 0x3e77, 0x3ef1, 0x3f6b, 0x3fe5, 0x405f,
103	0x40da, 0x4154, 0x41ce, 0x4248, 0x42c2, 0x433c, 0x43b6, 0x4430,
104	0x44aa, 0x4524, 0x459e, 0x4618, 0x4692, 0x470c, 0x4787, 0x4801,
105	0x487b, 0x48f5, 0x496f, 0x49e9, 0x4a63, 0x4add, 0x4b57, 0x4bd1,
106	0x4c4b, 0x4cc5, 0x4d3f, 0x4db9, 0x4e34, 0x4eae, 0x4f28, 0x4fa2,
107	0x501c, 0x5096, 0x5110, 0x518a, 0x5204, 0x527e, 0x52f8, 0x5372,
108	0x53ec, 0x5466, 0x54e1, 0x555b, 0x55d5, 0x564f, 0x56c9, 0x5743,
109	0x57bd, 0x5837, 0x58b1, 0x592b, 0x59a5, 0x5a1f, 0x5a99, 0x5b13,
110	0x5b8d, 0x5c08, 0x5c82, 0x5cfc, 0x5d76, 0x5df0, 0x5e6a, 0x5ee4,
111	0x5f5e, 0x5fd8, 0x6052, 0x60cc, 0x6146, 0x61c0, 0x623a, 0x62b5,
112	0x632f, 0x63a9, 0x6423, 0x649d, 0x6517, 0x6591, 0x660b, 0x6685,
113	0x66ff, 0x6779, 0x67f3, 0x686d, 0x68e7, 0x6962, 0x69dc, 0x6a56,
114	0x6ad0, 0x6b4a, 0x6bc4, 0x6c3e, 0x6cb8, 0x6d32, 0x6dac, 0x6e26,
115	0x6ea0, 0x6f1a, 0x6f94, 0x700f, 0x7089, 0x7103, 0x717d, 0x71f7,
116	0x7271, 0x72eb, 0x7365, 0x73df, 0x7459, 0x74d3, 0x754d, 0x75c7,
117	0x7641, 0x76bc, 0x7736, 0x77b0, 0x782a, 0x78a4, 0x791e, 0x7998
118};
119
120long tstouslo[128] = {
121	0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
122	0x08, 0x09, 0x0a, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e,
123	0x0f, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16,
124	0x17, 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e,
125	0x1f, 0x1f, 0x20, 0x21, 0x22, 0x23, 0x24, 0x25,
126	0x26, 0x27, 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d,
127	0x2e, 0x2f, 0x30, 0x31, 0x32, 0x33, 0x33, 0x34,
128	0x35, 0x36, 0x37, 0x38, 0x39, 0x3a, 0x3b, 0x3c,
129	0x3d, 0x3e, 0x3f, 0x40, 0x41, 0x42, 0x43, 0x44,
130	0x45, 0x46, 0x47, 0x48, 0x48, 0x49, 0x4a, 0x4b,
131	0x4c, 0x4d, 0x4e, 0x4f, 0x50, 0x51, 0x52, 0x53,
132	0x54, 0x55, 0x56, 0x57, 0x58, 0x59, 0x5a, 0x5b,
133	0x5c, 0x5c, 0x5d, 0x5e, 0x5f, 0x60, 0x61, 0x62,
134	0x63, 0x64, 0x65, 0x66, 0x67, 0x68, 0x69, 0x6a,
135	0x6b, 0x6c, 0x6d, 0x6e, 0x6f, 0x70, 0x71, 0x71,
136	0x72, 0x73, 0x74, 0x75, 0x76, 0x77, 0x78, 0x79
137};
138