Initial import from FreeBSD RELENG_4:
[dragonfly.git] / contrib / ntp / libntp / tvtots.c
1 /*
2  * tvtots - tables for converting from Unix struct timeval's to
3  *          NTP time stamp format.
4  */
5 #include <sys/types.h>
6
7 #include "ntp_types.h"
8
9 /*
10  * Tables to calculate time stamp fractions from usecs.  The entries
11  * in these tables are offset into using each of the two low order
12  * bytes plus the next 4 bits in a usec value (from a struct timeval).
13  * These are summed to produce the time stamp fraction.
14  *
15  * Note that these tables are rounded (not truncated) to the nearest
16  * low order bit in the fraction.  The timestamp computed should be
17  * +- 1.5 low order bits.
18  */
19
20 u_long ustotslo[256] = {
21         0x00000000, 0x000010c7, 0x0000218e, 0x00003255,
22         0x0000431c, 0x000053e3, 0x000064aa, 0x00007571,
23         0x00008638, 0x000096ff, 0x0000a7c6, 0x0000b88d,
24         0x0000c954, 0x0000da1b, 0x0000eae2, 0x0000fba9,
25         0x00010c6f, 0x00011d36, 0x00012dfd, 0x00013ec4,
26         0x00014f8b, 0x00016052, 0x00017119, 0x000181e0,
27         0x000192a7, 0x0001a36e, 0x0001b435, 0x0001c4fc,
28         0x0001d5c3, 0x0001e68a, 0x0001f751, 0x00020818,
29         0x000218df, 0x000229a6, 0x00023a6d, 0x00024b34,
30         0x00025bfb, 0x00026cc2, 0x00027d89, 0x00028e50,
31         0x00029f17, 0x0002afde, 0x0002c0a5, 0x0002d16c,
32         0x0002e233, 0x0002f2fa, 0x000303c0, 0x00031487,
33         0x0003254e, 0x00033615, 0x000346dc, 0x000357a3,
34         0x0003686a, 0x00037931, 0x000389f8, 0x00039abf,
35         0x0003ab86, 0x0003bc4d, 0x0003cd14, 0x0003dddb,
36         0x0003eea2, 0x0003ff69, 0x00041030, 0x000420f7,
37         0x000431be, 0x00044285, 0x0004534c, 0x00046413,
38         0x000474da, 0x000485a1, 0x00049668, 0x0004a72f,
39         0x0004b7f6, 0x0004c8bd, 0x0004d984, 0x0004ea4b,
40         0x0004fb12, 0x00050bd8, 0x00051c9f, 0x00052d66,
41         0x00053e2d, 0x00054ef4, 0x00055fbb, 0x00057082,
42         0x00058149, 0x00059210, 0x0005a2d7, 0x0005b39e,
43         0x0005c465, 0x0005d52c, 0x0005e5f3, 0x0005f6ba,
44         0x00060781, 0x00061848, 0x0006290f, 0x000639d6,
45         0x00064a9d, 0x00065b64, 0x00066c2b, 0x00067cf2,
46         0x00068db9, 0x00069e80, 0x0006af47, 0x0006c00e,
47         0x0006d0d5, 0x0006e19c, 0x0006f263, 0x00070329,
48         0x000713f0, 0x000724b7, 0x0007357e, 0x00074645,
49         0x0007570c, 0x000767d3, 0x0007789a, 0x00078961,
50         0x00079a28, 0x0007aaef, 0x0007bbb6, 0x0007cc7d,
51         0x0007dd44, 0x0007ee0b, 0x0007fed2, 0x00080f99,
52         0x00082060, 0x00083127, 0x000841ee, 0x000852b5,
53         0x0008637c, 0x00087443, 0x0008850a, 0x000895d1,
54         0x0008a698, 0x0008b75f, 0x0008c826, 0x0008d8ed,
55         0x0008e9b4, 0x0008fa7b, 0x00090b41, 0x00091c08,
56         0x00092ccf, 0x00093d96, 0x00094e5d, 0x00095f24,
57         0x00096feb, 0x000980b2, 0x00099179, 0x0009a240,
58         0x0009b307, 0x0009c3ce, 0x0009d495, 0x0009e55c,
59         0x0009f623, 0x000a06ea, 0x000a17b1, 0x000a2878,
60         0x000a393f, 0x000a4a06, 0x000a5acd, 0x000a6b94,
61         0x000a7c5b, 0x000a8d22, 0x000a9de9, 0x000aaeb0,
62         0x000abf77, 0x000ad03e, 0x000ae105, 0x000af1cc,
63         0x000b0292, 0x000b1359, 0x000b2420, 0x000b34e7,
64         0x000b45ae, 0x000b5675, 0x000b673c, 0x000b7803,
65         0x000b88ca, 0x000b9991, 0x000baa58, 0x000bbb1f,
66         0x000bcbe6, 0x000bdcad, 0x000bed74, 0x000bfe3b,
67         0x000c0f02, 0x000c1fc9, 0x000c3090, 0x000c4157,
68         0x000c521e, 0x000c62e5, 0x000c73ac, 0x000c8473,
69         0x000c953a, 0x000ca601, 0x000cb6c8, 0x000cc78f,
70         0x000cd856, 0x000ce91d, 0x000cf9e4, 0x000d0aaa,
71         0x000d1b71, 0x000d2c38, 0x000d3cff, 0x000d4dc6,
72         0x000d5e8d, 0x000d6f54, 0x000d801b, 0x000d90e2,
73         0x000da1a9, 0x000db270, 0x000dc337, 0x000dd3fe,
74         0x000de4c5, 0x000df58c, 0x000e0653, 0x000e171a,
75         0x000e27e1, 0x000e38a8, 0x000e496f, 0x000e5a36,
76         0x000e6afd, 0x000e7bc4, 0x000e8c8b, 0x000e9d52,
77         0x000eae19, 0x000ebee0, 0x000ecfa7, 0x000ee06e,
78         0x000ef135, 0x000f01fb, 0x000f12c2, 0x000f2389,
79         0x000f3450, 0x000f4517, 0x000f55de, 0x000f66a5,
80         0x000f776c, 0x000f8833, 0x000f98fa, 0x000fa9c1,
81         0x000fba88, 0x000fcb4f, 0x000fdc16, 0x000fecdd,
82         0x000ffda4, 0x00100e6b, 0x00101f32, 0x00102ff9,
83         0x001040c0, 0x00105187, 0x0010624e, 0x00107315,
84         0x001083dc, 0x001094a3, 0x0010a56a, 0x0010b631,
85 };
86
87 u_long ustotsmid[256] = {
88         0x00000000, 0x0010c6f8, 0x00218def, 0x003254e7,
89         0x00431bde, 0x0053e2d6, 0x0064a9ce, 0x007570c5,
90         0x008637bd, 0x0096feb4, 0x00a7c5ac, 0x00b88ca4,
91         0x00c9539b, 0x00da1a93, 0x00eae18a, 0x00fba882,
92         0x010c6f7a, 0x011d3671, 0x012dfd69, 0x013ec460,
93         0x014f8b58, 0x01605250, 0x01711947, 0x0181e03f,
94         0x0192a736, 0x01a36e2e, 0x01b43526, 0x01c4fc1d,
95         0x01d5c315, 0x01e68a0c, 0x01f75104, 0x020817fc,
96         0x0218def3, 0x0229a5eb, 0x023a6ce3, 0x024b33da,
97         0x025bfad2, 0x026cc1c9, 0x027d88c1, 0x028e4fb9,
98         0x029f16b0, 0x02afdda8, 0x02c0a49f, 0x02d16b97,
99         0x02e2328f, 0x02f2f986, 0x0303c07e, 0x03148775,
100         0x03254e6d, 0x03361565, 0x0346dc5c, 0x0357a354,
101         0x03686a4b, 0x03793143, 0x0389f83b, 0x039abf32,
102         0x03ab862a, 0x03bc4d21, 0x03cd1419, 0x03dddb11,
103         0x03eea208, 0x03ff6900, 0x04102ff7, 0x0420f6ef,
104         0x0431bde7, 0x044284de, 0x04534bd6, 0x046412cd,
105         0x0474d9c5, 0x0485a0bd, 0x049667b4, 0x04a72eac,
106         0x04b7f5a3, 0x04c8bc9b, 0x04d98393, 0x04ea4a8a,
107         0x04fb1182, 0x050bd879, 0x051c9f71, 0x052d6669,
108         0x053e2d60, 0x054ef458, 0x055fbb4f, 0x05708247,
109         0x0581493f, 0x05921036, 0x05a2d72e, 0x05b39e25,
110         0x05c4651d, 0x05d52c15, 0x05e5f30c, 0x05f6ba04,
111         0x060780fb, 0x061847f3, 0x06290eeb, 0x0639d5e2,
112         0x064a9cda, 0x065b63d2, 0x066c2ac9, 0x067cf1c1,
113         0x068db8b8, 0x069e7fb0, 0x06af46a8, 0x06c00d9f,
114         0x06d0d497, 0x06e19b8e, 0x06f26286, 0x0703297e,
115         0x0713f075, 0x0724b76d, 0x07357e64, 0x0746455c,
116         0x07570c54, 0x0767d34b, 0x07789a43, 0x0789613a,
117         0x079a2832, 0x07aaef2a, 0x07bbb621, 0x07cc7d19,
118         0x07dd4410, 0x07ee0b08, 0x07fed200, 0x080f98f7,
119         0x08205fef, 0x083126e6, 0x0841edde, 0x0852b4d6,
120         0x08637bcd, 0x087442c5, 0x088509bc, 0x0895d0b4,
121         0x08a697ac, 0x08b75ea3, 0x08c8259b, 0x08d8ec92,
122         0x08e9b38a, 0x08fa7a82, 0x090b4179, 0x091c0871,
123         0x092ccf68, 0x093d9660, 0x094e5d58, 0x095f244f,
124         0x096feb47, 0x0980b23e, 0x09917936, 0x09a2402e,
125         0x09b30725, 0x09c3ce1d, 0x09d49514, 0x09e55c0c,
126         0x09f62304, 0x0a06e9fb, 0x0a17b0f3, 0x0a2877ea,
127         0x0a393ee2, 0x0a4a05da, 0x0a5accd1, 0x0a6b93c9,
128         0x0a7c5ac1, 0x0a8d21b8, 0x0a9de8b0, 0x0aaeafa7,
129         0x0abf769f, 0x0ad03d97, 0x0ae1048e, 0x0af1cb86,
130         0x0b02927d, 0x0b135975, 0x0b24206d, 0x0b34e764,
131         0x0b45ae5c, 0x0b567553, 0x0b673c4b, 0x0b780343,
132         0x0b88ca3a, 0x0b999132, 0x0baa5829, 0x0bbb1f21,
133         0x0bcbe619, 0x0bdcad10, 0x0bed7408, 0x0bfe3aff,
134         0x0c0f01f7, 0x0c1fc8ef, 0x0c308fe6, 0x0c4156de,
135         0x0c521dd5, 0x0c62e4cd, 0x0c73abc5, 0x0c8472bc,
136         0x0c9539b4, 0x0ca600ab, 0x0cb6c7a3, 0x0cc78e9b,
137         0x0cd85592, 0x0ce91c8a, 0x0cf9e381, 0x0d0aaa79,
138         0x0d1b7171, 0x0d2c3868, 0x0d3cff60, 0x0d4dc657,
139         0x0d5e8d4f, 0x0d6f5447, 0x0d801b3e, 0x0d90e236,
140         0x0da1a92d, 0x0db27025, 0x0dc3371d, 0x0dd3fe14,
141         0x0de4c50c, 0x0df58c03, 0x0e0652fb, 0x0e1719f3,
142         0x0e27e0ea, 0x0e38a7e2, 0x0e496ed9, 0x0e5a35d1,
143         0x0e6afcc9, 0x0e7bc3c0, 0x0e8c8ab8, 0x0e9d51b0,
144         0x0eae18a7, 0x0ebedf9f, 0x0ecfa696, 0x0ee06d8e,
145         0x0ef13486, 0x0f01fb7d, 0x0f12c275, 0x0f23896c,
146         0x0f345064, 0x0f45175c, 0x0f55de53, 0x0f66a54b,
147         0x0f776c42, 0x0f88333a, 0x0f98fa32, 0x0fa9c129,
148         0x0fba8821, 0x0fcb4f18, 0x0fdc1610, 0x0fecdd08,
149         0x0ffda3ff, 0x100e6af7, 0x101f31ee, 0x102ff8e6,
150         0x1040bfde, 0x105186d5, 0x10624dcd, 0x107314c4,
151         0x1083dbbc, 0x1094a2b4, 0x10a569ab, 0x10b630a3,
152 };
153
154 u_long ustotshi[16] = {
155         0x00000000, 0x10c6f79a, 0x218def35, 0x3254e6cf,
156         0x431bde6a, 0x53e2d604, 0x64a9cd9f, 0x7570c539,
157         0x8637bcd3, 0x96feb46e, 0xa7c5ac08, 0xb88ca3a3,
158         0xc9539b3d, 0xda1a92d7, 0xeae18a72, 0xfba8820c,
159 };