-
Notifications
You must be signed in to change notification settings - Fork 4
/
na_lut.hpp
executable file
·135 lines (133 loc) · 8.17 KB
/
na_lut.hpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
#pragma once
alignas(32) const double na_lut[64] = { // nans in the phenotype file - bit i is 0 iff nan at position in the corresponding chunk
0.0, // 0 | 00000000 >> 0 = 00000000, b & 0b1 = 00000000)
0.0, // 0 | 00000000 >> 1 = 00000000, b & 0b1 = 00000000)
0.0, // 0 | 00000000 >> 2 = 00000000, b & 0b1 = 00000000)
0.0, // 0 | 00000000 >> 3 = 00000000, b & 0b1 = 00000000)
1.0, // 1 | 00000001 >> 0 = 00000001, b & 0b1 = 00000001)
0.0, // 1 | 00000001 >> 1 = 00000000, b & 0b1 = 00000000)
0.0, // 1 | 00000001 >> 2 = 00000000, b & 0b1 = 00000000)
0.0, // 1 | 00000001 >> 3 = 00000000, b & 0b1 = 00000000)
0.0, // 2 | 00000010 >> 0 = 00000010, b & 0b1 = 00000000)
1.0, // 2 | 00000010 >> 1 = 00000001, b & 0b1 = 00000001)
0.0, // 2 | 00000010 >> 2 = 00000000, b & 0b1 = 00000000)
0.0, // 2 | 00000010 >> 3 = 00000000, b & 0b1 = 00000000)
1.0, // 3 | 00000011 >> 0 = 00000011, b & 0b1 = 00000001)
1.0, // 3 | 00000011 >> 1 = 00000001, b & 0b1 = 00000001)
0.0, // 3 | 00000011 >> 2 = 00000000, b & 0b1 = 00000000)
0.0, // 3 | 00000011 >> 3 = 00000000, b & 0b1 = 00000000)
0.0, // 4 | 00000100 >> 0 = 00000100, b & 0b1 = 00000000)
0.0, // 4 | 00000100 >> 1 = 00000010, b & 0b1 = 00000000)
1.0, // 4 | 00000100 >> 2 = 00000001, b & 0b1 = 00000001)
0.0, // 4 | 00000100 >> 3 = 00000000, b & 0b1 = 00000000)
1.0, // 5 | 00000101 >> 0 = 00000101, b & 0b1 = 00000001)
0.0, // 5 | 00000101 >> 1 = 00000010, b & 0b1 = 00000000)
1.0, // 5 | 00000101 >> 2 = 00000001, b & 0b1 = 00000001)
0.0, // 5 | 00000101 >> 3 = 00000000, b & 0b1 = 00000000)
0.0, // 6 | 00000110 >> 0 = 00000110, b & 0b1 = 00000000)
1.0, // 6 | 00000110 >> 1 = 00000011, b & 0b1 = 00000001)
1.0, // 6 | 00000110 >> 2 = 00000001, b & 0b1 = 00000001)
0.0, // 6 | 00000110 >> 3 = 00000000, b & 0b1 = 00000000)
1.0, // 7 | 00000111 >> 0 = 00000111, b & 0b1 = 00000001)
1.0, // 7 | 00000111 >> 1 = 00000011, b & 0b1 = 00000001)
1.0, // 7 | 00000111 >> 2 = 00000001, b & 0b1 = 00000001)
0.0, // 7 | 00000111 >> 3 = 00000000, b & 0b1 = 00000000)
0.0, // 8 | 00001000 >> 0 = 00001000, b & 0b1 = 00000000)
0.0, // 8 | 00001000 >> 1 = 00000100, b & 0b1 = 00000000)
0.0, // 8 | 00001000 >> 2 = 00000010, b & 0b1 = 00000000)
1.0, // 8 | 00001000 >> 3 = 00000001, b & 0b1 = 00000001)
1.0, // 9 | 00001001 >> 0 = 00001001, b & 0b1 = 00000001)
0.0, // 9 | 00001001 >> 1 = 00000100, b & 0b1 = 00000000)
0.0, // 9 | 00001001 >> 2 = 00000010, b & 0b1 = 00000000)
1.0, // 9 | 00001001 >> 3 = 00000001, b & 0b1 = 00000001)
0.0, // 10 | 00001010 >> 0 = 00001010, b & 0b1 = 00000000)
1.0, // 10 | 00001010 >> 1 = 00000101, b & 0b1 = 00000001)
0.0, // 10 | 00001010 >> 2 = 00000010, b & 0b1 = 00000000)
1.0, // 10 | 00001010 >> 3 = 00000001, b & 0b1 = 00000001)
1.0, // 11 | 00001011 >> 0 = 00001011, b & 0b1 = 00000001)
1.0, // 11 | 00001011 >> 1 = 00000101, b & 0b1 = 00000001)
0.0, // 11 | 00001011 >> 2 = 00000010, b & 0b1 = 00000000)
1.0, // 11 | 00001011 >> 3 = 00000001, b & 0b1 = 00000001)
0.0, // 12 | 00001100 >> 0 = 00001100, b & 0b1 = 00000000)
0.0, // 12 | 00001100 >> 1 = 00000110, b & 0b1 = 00000000)
1.0, // 12 | 00001100 >> 2 = 00000011, b & 0b1 = 00000001)
1.0, // 12 | 00001100 >> 3 = 00000001, b & 0b1 = 00000001)
1.0, // 13 | 00001101 >> 0 = 00001101, b & 0b1 = 00000001)
0.0, // 13 | 00001101 >> 1 = 00000110, b & 0b1 = 00000000)
1.0, // 13 | 00001101 >> 2 = 00000011, b & 0b1 = 00000001)
1.0, // 13 | 00001101 >> 3 = 00000001, b & 0b1 = 00000001)
0.0, // 14 | 00001110 >> 0 = 00001110, b & 0b1 = 00000000)
1.0, // 14 | 00001110 >> 1 = 00000111, b & 0b1 = 00000001)
1.0, // 14 | 00001110 >> 2 = 00000011, b & 0b1 = 00000001)
1.0, // 14 | 00001110 >> 3 = 00000001, b & 0b1 = 00000001)
1.0, // 15 | 00001111 >> 0 = 00001111, b & 0b1 = 00000001)
1.0, // 15 | 00001111 >> 1 = 00000111, b & 0b1 = 00000001)
1.0, // 15 | 00001111 >> 2 = 00000011, b & 0b1 = 00000001)
1.0 // 15 | 00001111 >> 3 = 00000001, b & 0b1 = 00000001)
};
alignas(32) const int na_lut_i32[128] = {
0, 0, // 0 | 00000000 >> 0 = 00000000, b & 0b1 = 00000000)
0, 0, // 0 | 00000000 >> 1 = 00000000, b & 0b1 = 00000000)
0, 0, // 0 | 00000000 >> 2 = 00000000, b & 0b1 = 00000000)
0, 0, // 0 | 00000000 >> 3 = 00000000, b & 0b1 = 00000000)
0, 1, // 1 | 00000001 >> 0 = 00000001, b & 0b1 = 00000001)
0, 0, // 1 | 00000001 >> 1 = 00000000, b & 0b1 = 00000000)
0, 0, // 1 | 00000001 >> 2 = 00000000, b & 0b1 = 00000000)
0, 0, // 1 | 00000001 >> 3 = 00000000, b & 0b1 = 00000000)
0, 0, // 2 | 00000010 >> 0 = 00000010, b & 0b1 = 00000000)
0, 1, // 2 | 00000010 >> 1 = 00000001, b & 0b1 = 00000001)
0, 0, // 2 | 00000010 >> 2 = 00000000, b & 0b1 = 00000000)
0, 0, // 2 | 00000010 >> 3 = 00000000, b & 0b1 = 00000000)
0, 1, // 3 | 00000011 >> 0 = 00000011, b & 0b1 = 00000001)
0, 1, // 3 | 00000011 >> 1 = 00000001, b & 0b1 = 00000001)
0, 0, // 3 | 00000011 >> 2 = 00000000, b & 0b1 = 00000000)
0, 0, // 3 | 00000011 >> 3 = 00000000, b & 0b1 = 00000000)
0, 0, // 4 | 00000100 >> 0 = 00000100, b & 0b1 = 00000000)
0, 0, // 4 | 00000100 >> 1 = 00000010, b & 0b1 = 00000000)
0, 1, // 4 | 00000100 >> 2 = 00000001, b & 0b1 = 00000001)
0, 0, // 4 | 00000100 >> 3 = 00000000, b & 0b1 = 00000000)
0, 1, // 5 | 00000101 >> 0 = 00000101, b & 0b1 = 00000001)
0, 0, // 5 | 00000101 >> 1 = 00000010, b & 0b1 = 00000000)
0, 1, // 5 | 00000101 >> 2 = 00000001, b & 0b1 = 00000001)
0, 0, // 5 | 00000101 >> 3 = 00000000, b & 0b1 = 00000000)
0, 0, // 6 | 00000110 >> 0 = 00000110, b & 0b1 = 00000000)
0, 1, // 6 | 00000110 >> 1 = 00000011, b & 0b1 = 00000001)
0, 1, // 6 | 00000110 >> 2 = 00000001, b & 0b1 = 00000001)
0, 0, // 6 | 00000110 >> 3 = 00000000, b & 0b1 = 00000000)
0, 1, // 7 | 00000111 >> 0 = 00000111, b & 0b1 = 00000001)
0, 1, // 7 | 00000111 >> 1 = 00000011, b & 0b1 = 00000001)
0, 1, // 7 | 00000111 >> 2 = 00000001, b & 0b1 = 00000001)
0, 0, // 7 | 00000111 >> 3 = 00000000, b & 0b1 = 00000000)
0, 0, // 8 | 00001000 >> 0 = 00001000, b & 0b1 = 00000000)
0, 0, // 8 | 00001000 >> 1 = 00000100, b & 0b1 = 00000000)
0, 0, // 8 | 00001000 >> 2 = 00000010, b & 0b1 = 00000000)
0, 1, // 8 | 00001000 >> 3 = 00000001, b & 0b1 = 00000001)
0, 1, // 9 | 00001001 >> 0 = 00001001, b & 0b1 = 00000001)
0, 0, // 9 | 00001001 >> 1 = 00000100, b & 0b1 = 00000000)
0, 0, // 9 | 00001001 >> 2 = 00000010, b & 0b1 = 00000000)
0, 1, // 9 | 00001001 >> 3 = 00000001, b & 0b1 = 00000001)
0, 0, // 10 | 00001010 >> 0 = 00001010, b & 0b1 = 00000000)
0, 1, // 10 | 00001010 >> 1 = 00000101, b & 0b1 = 00000001)
0, 0, // 10 | 00001010 >> 2 = 00000010, b & 0b1 = 00000000)
0, 1, // 10 | 00001010 >> 3 = 00000001, b & 0b1 = 00000001)
0, 1, // 11 | 00001011 >> 0 = 00001011, b & 0b1 = 00000001)
0, 1, // 11 | 00001011 >> 1 = 00000101, b & 0b1 = 00000001)
0, 0, // 11 | 00001011 >> 2 = 00000010, b & 0b1 = 00000000)
0, 1, // 11 | 00001011 >> 3 = 00000001, b & 0b1 = 00000001)
0, 0, // 12 | 00001100 >> 0 = 00001100, b & 0b1 = 00000000)
0, 0, // 12 | 00001100 >> 1 = 00000110, b & 0b1 = 00000000)
0, 1, // 12 | 00001100 >> 2 = 00000011, b & 0b1 = 00000001)
0, 1, // 12 | 00001100 >> 3 = 00000001, b & 0b1 = 00000001)
0, 1, // 13 | 00001101 >> 0 = 00001101, b & 0b1 = 00000001)
0, 0, // 13 | 00001101 >> 1 = 00000110, b & 0b1 = 00000000)
0, 1, // 13 | 00001101 >> 2 = 00000011, b & 0b1 = 00000001)
0, 1, // 13 | 00001101 >> 3 = 00000001, b & 0b1 = 00000001)
0, 0, // 14 | 00001110 >> 0 = 00001110, b & 0b1 = 00000000)
0, 1, // 14 | 00001110 >> 1 = 00000111, b & 0b1 = 00000001)
0, 1, // 14 | 00001110 >> 2 = 00000011, b & 0b1 = 00000001)
0, 1, // 14 | 00001110 >> 3 = 00000001, b & 0b1 = 00000001)
0, 1, // 15 | 00001111 >> 0 = 00001111, b & 0b1 = 00000001)
0, 1, // 15 | 00001111 >> 1 = 00000111, b & 0b1 = 00000001)
0, 1, // 15 | 00001111 >> 2 = 00000011, b & 0b1 = 00000001)
0, 1 // 15 | 00001111 >> 3 = 00000001, b & 0b1 = 00000001)
};