hyb
2025-11-10 e0a856b5072c5a09f3f6de6da85abf90e00ee704
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
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
from typing import Any, TypeAlias, assert_type
from typing import Literal as L
 
import numpy as np
import numpy.typing as npt
 
FalseType: TypeAlias = L[False]
TrueType: TypeAlias = L[True]
 
i4: np.int32
i8: np.int64
 
u4: np.uint32
u8: np.uint64
 
b_: np.bool[bool]
b0_: np.bool[FalseType]
b1_: np.bool[TrueType]
 
b: bool
b0: FalseType
b1: TrueType
 
i: int
 
AR: npt.NDArray[np.int32]
 
assert_type(i8 << i8, np.int64)
assert_type(i8 >> i8, np.int64)
assert_type(i8 | i8, np.int64)
assert_type(i8 ^ i8, np.int64)
assert_type(i8 & i8, np.int64)
 
assert_type(i8 << AR, npt.NDArray[np.signedinteger])
assert_type(i8 >> AR, npt.NDArray[np.signedinteger])
assert_type(i8 | AR, npt.NDArray[np.signedinteger])
assert_type(i8 ^ AR, npt.NDArray[np.signedinteger])
assert_type(i8 & AR, npt.NDArray[np.signedinteger])
 
assert_type(i4 << i4, np.int32)
assert_type(i4 >> i4, np.int32)
assert_type(i4 | i4, np.int32)
assert_type(i4 ^ i4, np.int32)
assert_type(i4 & i4, np.int32)
 
assert_type(i8 << i4, np.signedinteger)
assert_type(i8 >> i4, np.signedinteger)
assert_type(i8 | i4, np.signedinteger)
assert_type(i8 ^ i4, np.signedinteger)
assert_type(i8 & i4, np.signedinteger)
 
assert_type(i8 << b_, np.int64)
assert_type(i8 >> b_, np.int64)
assert_type(i8 | b_, np.int64)
assert_type(i8 ^ b_, np.int64)
assert_type(i8 & b_, np.int64)
 
assert_type(i8 << b, np.int64)
assert_type(i8 >> b, np.int64)
assert_type(i8 | b, np.int64)
assert_type(i8 ^ b, np.int64)
assert_type(i8 & b, np.int64)
 
assert_type(u8 << u8, np.uint64)
assert_type(u8 >> u8, np.uint64)
assert_type(u8 | u8, np.uint64)
assert_type(u8 ^ u8, np.uint64)
assert_type(u8 & u8, np.uint64)
 
assert_type(u8 << AR, npt.NDArray[np.signedinteger])
assert_type(u8 >> AR, npt.NDArray[np.signedinteger])
assert_type(u8 | AR, npt.NDArray[np.signedinteger])
assert_type(u8 ^ AR, npt.NDArray[np.signedinteger])
assert_type(u8 & AR, npt.NDArray[np.signedinteger])
 
assert_type(u4 << u4, np.uint32)
assert_type(u4 >> u4, np.uint32)
assert_type(u4 | u4, np.uint32)
assert_type(u4 ^ u4, np.uint32)
assert_type(u4 & u4, np.uint32)
 
assert_type(u4 << i4, np.signedinteger)
assert_type(u4 >> i4, np.signedinteger)
assert_type(u4 | i4, np.signedinteger)
assert_type(u4 ^ i4, np.signedinteger)
assert_type(u4 & i4, np.signedinteger)
 
assert_type(u4 << i, np.uint32)
assert_type(u4 >> i, np.uint32)
assert_type(u4 | i, np.uint32)
assert_type(u4 ^ i, np.uint32)
assert_type(u4 & i, np.uint32)
 
assert_type(u8 << b_, np.uint64)
assert_type(u8 >> b_, np.uint64)
assert_type(u8 | b_, np.uint64)
assert_type(u8 ^ b_, np.uint64)
assert_type(u8 & b_, np.uint64)
 
assert_type(u8 << b, np.uint64)
assert_type(u8 >> b, np.uint64)
assert_type(u8 | b, np.uint64)
assert_type(u8 ^ b, np.uint64)
assert_type(u8 & b, np.uint64)
 
assert_type(b_ << b_, np.int8)
assert_type(b_ >> b_, np.int8)
assert_type(b_ | b_, np.bool)
assert_type(b_ ^ b_, np.bool)
assert_type(b_ & b_, np.bool)
 
assert_type(b_ << AR, npt.NDArray[np.signedinteger])
assert_type(b_ >> AR, npt.NDArray[np.signedinteger])
assert_type(b_ | AR, npt.NDArray[np.signedinteger])
assert_type(b_ ^ AR, npt.NDArray[np.signedinteger])
assert_type(b_ & AR, npt.NDArray[np.signedinteger])
 
assert_type(b_ << b, np.int8)
assert_type(b_ >> b, np.int8)
assert_type(b_ | b, np.bool)
assert_type(b_ ^ b, np.bool)
assert_type(b_ & b, np.bool)
 
assert_type(b_ << i, np.int_)
assert_type(b_ >> i, np.int_)
assert_type(b_ | i, np.bool | np.int_)
assert_type(b_ ^ i, np.bool | np.int_)
assert_type(b_ & i, np.bool | np.int_)
 
assert_type(~i8, np.int64)
assert_type(~i4, np.int32)
assert_type(~u8, np.uint64)
assert_type(~u4, np.uint32)
assert_type(~b_, np.bool)
assert_type(~b0_, np.bool[TrueType])
assert_type(~b1_, np.bool[FalseType])
assert_type(~AR, npt.NDArray[np.int32])
 
assert_type(b_ | b0_, np.bool)
assert_type(b0_ | b_, np.bool)
assert_type(b_ | b1_, np.bool[TrueType])
assert_type(b1_ | b_, np.bool[TrueType])
 
assert_type(b_ ^ b0_, np.bool)
assert_type(b0_ ^ b_, np.bool)
assert_type(b_ ^ b1_, np.bool)
assert_type(b1_ ^ b_, np.bool)
 
assert_type(b_ & b0_, np.bool[FalseType])
assert_type(b0_ & b_, np.bool[FalseType])
assert_type(b_ & b1_, np.bool)
assert_type(b1_ & b_, np.bool)
 
assert_type(b0_ | b0_, np.bool[FalseType])
assert_type(b0_ | b1_, np.bool[TrueType])
assert_type(b1_ | b0_, np.bool[TrueType])
assert_type(b1_ | b1_, np.bool[TrueType])
 
assert_type(b0_ ^ b0_, np.bool[FalseType])
assert_type(b0_ ^ b1_, np.bool[TrueType])
assert_type(b1_ ^ b0_, np.bool[TrueType])
assert_type(b1_ ^ b1_, np.bool[FalseType])
 
assert_type(b0_ & b0_, np.bool[FalseType])
assert_type(b0_ & b1_, np.bool[FalseType])
assert_type(b1_ & b0_, np.bool[FalseType])
assert_type(b1_ & b1_, np.bool[TrueType])