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