1import numpy as np
2
3c16 = np.complex128()
4f8 = np.float64()
5i8 = np.int64()
6u8 = np.uint64()
7
8c8 = np.complex64()
9f4 = np.float32()
10i4 = np.int32()
11u4 = np.uint32()
12
13dt = np.datetime64(0, "D")
14td = np.timedelta64(0, "D")
15
16b_ = np.bool_()
17
18b = bool()
19c = complex()
20f = float()
21i = int()
22
23AR = np.array([0], dtype=np.float64)
24AR.setflags(write=False)
25
26# unary ops
27
28reveal_type(-c16)  # E: numpy.complexfloating[numpy.typing._64Bit, numpy.typing._64Bit]
29reveal_type(-c8)  # E: numpy.complexfloating[numpy.typing._32Bit, numpy.typing._32Bit]
30reveal_type(-f8)  # E: numpy.floating[numpy.typing._64Bit]
31reveal_type(-f4)  # E: numpy.floating[numpy.typing._32Bit]
32reveal_type(-i8)  # E: numpy.signedinteger[numpy.typing._64Bit]
33reveal_type(-i4)  # E: numpy.signedinteger[numpy.typing._32Bit]
34reveal_type(-u8)  # E: numpy.unsignedinteger[numpy.typing._64Bit]
35reveal_type(-u4)  # E: numpy.unsignedinteger[numpy.typing._32Bit]
36reveal_type(-td)  # E: numpy.timedelta64
37reveal_type(-AR)  # E: Any
38
39reveal_type(+c16)  # E: numpy.complexfloating[numpy.typing._64Bit, numpy.typing._64Bit]
40reveal_type(+c8)  # E: numpy.complexfloating[numpy.typing._32Bit, numpy.typing._32Bit]
41reveal_type(+f8)  # E: numpy.floating[numpy.typing._64Bit]
42reveal_type(+f4)  # E: numpy.floating[numpy.typing._32Bit]
43reveal_type(+i8)  # E: numpy.signedinteger[numpy.typing._64Bit]
44reveal_type(+i4)  # E: numpy.signedinteger[numpy.typing._32Bit]
45reveal_type(+u8)  # E: numpy.unsignedinteger[numpy.typing._64Bit]
46reveal_type(+u4)  # E: numpy.unsignedinteger[numpy.typing._32Bit]
47reveal_type(+td)  # E: numpy.timedelta64
48reveal_type(+AR)  # E: Any
49
50reveal_type(abs(c16))  # E: numpy.floating[numpy.typing._64Bit]
51reveal_type(abs(c8))  # E: numpy.floating[numpy.typing._32Bit]
52reveal_type(abs(f8))  # E: numpy.floating[numpy.typing._64Bit]
53reveal_type(abs(f4))  # E: numpy.floating[numpy.typing._32Bit]
54reveal_type(abs(i8))  # E: numpy.signedinteger[numpy.typing._64Bit]
55reveal_type(abs(i4))  # E: numpy.signedinteger[numpy.typing._32Bit]
56reveal_type(abs(u8))  # E: numpy.unsignedinteger[numpy.typing._64Bit]
57reveal_type(abs(u4))  # E: numpy.unsignedinteger[numpy.typing._32Bit]
58reveal_type(abs(td))  # E: numpy.timedelta64
59reveal_type(abs(b_))  # E: numpy.bool_
60reveal_type(abs(AR))  # E: Any
61
62# Time structures
63
64reveal_type(dt + td)  # E: numpy.datetime64
65reveal_type(dt + i)  # E: numpy.datetime64
66reveal_type(dt + i4)  # E: numpy.datetime64
67reveal_type(dt + i8)  # E: numpy.datetime64
68reveal_type(dt - dt)  # E: numpy.timedelta64
69reveal_type(dt - i)  # E: numpy.datetime64
70reveal_type(dt - i4)  # E: numpy.datetime64
71reveal_type(dt - i8)  # E: numpy.datetime64
72
73reveal_type(td + td)  # E: numpy.timedelta64
74reveal_type(td + i)  # E: numpy.timedelta64
75reveal_type(td + i4)  # E: numpy.timedelta64
76reveal_type(td + i8)  # E: numpy.timedelta64
77reveal_type(td - td)  # E: numpy.timedelta64
78reveal_type(td - i)  # E: numpy.timedelta64
79reveal_type(td - i4)  # E: numpy.timedelta64
80reveal_type(td - i8)  # E: numpy.timedelta64
81reveal_type(td / f)  # E: numpy.timedelta64
82reveal_type(td / f4)  # E: numpy.timedelta64
83reveal_type(td / f8)  # E: numpy.timedelta64
84reveal_type(td / td)  # E: numpy.floating[numpy.typing._64Bit]
85reveal_type(td // td)  # E: numpy.signedinteger[numpy.typing._64Bit]
86
87# boolean
88
89reveal_type(b_ / b)  # E: numpy.floating[numpy.typing._64Bit]
90reveal_type(b_ / b_)  # E: numpy.floating[numpy.typing._64Bit]
91reveal_type(b_ / i)  # E: numpy.floating[numpy.typing._64Bit]
92reveal_type(b_ / i8)  # E: numpy.floating[numpy.typing._64Bit]
93reveal_type(b_ / i4)  # E: numpy.floating[numpy.typing._64Bit]
94reveal_type(b_ / u8)  # E: numpy.floating[numpy.typing._64Bit]
95reveal_type(b_ / u4)  # E: numpy.floating[numpy.typing._64Bit]
96reveal_type(b_ / f)  # E: numpy.floating[numpy.typing._64Bit]
97reveal_type(b_ / f8)  # E: numpy.floating[numpy.typing._64Bit]
98reveal_type(b_ / f4)  # E: numpy.floating[numpy.typing._32Bit]
99reveal_type(b_ / c)  # E: numpy.complexfloating[numpy.typing._64Bit, numpy.typing._64Bit]
100reveal_type(b_ / c16)  # E: numpy.complexfloating[numpy.typing._64Bit, numpy.typing._64Bit]
101reveal_type(b_ / c8)  # E: numpy.complexfloating[numpy.typing._32Bit, numpy.typing._32Bit]
102
103reveal_type(b / b_)  # E: numpy.floating[numpy.typing._64Bit]
104reveal_type(b_ / b_)  # E: numpy.floating[numpy.typing._64Bit]
105reveal_type(i / b_)  # E: numpy.floating[numpy.typing._64Bit]
106reveal_type(i8 / b_)  # E: numpy.floating[numpy.typing._64Bit]
107reveal_type(i4 / b_)  # E: numpy.floating[numpy.typing._64Bit]
108reveal_type(u8 / b_)  # E: numpy.floating[numpy.typing._64Bit]
109reveal_type(u4 / b_)  # E: numpy.floating[numpy.typing._64Bit]
110reveal_type(f / b_)  # E: numpy.floating[numpy.typing._64Bit]
111reveal_type(f8 / b_)  # E: numpy.floating[numpy.typing._64Bit]
112reveal_type(f4 / b_)  # E: numpy.floating[numpy.typing._32Bit]
113reveal_type(c / b_)  # E: numpy.complexfloating[numpy.typing._64Bit, numpy.typing._64Bit]
114reveal_type(c16 / b_)  # E: numpy.complexfloating[numpy.typing._64Bit, numpy.typing._64Bit]
115reveal_type(c8 / b_)  # E: numpy.complexfloating[numpy.typing._32Bit, numpy.typing._32Bit]
116
117# Complex
118
119reveal_type(c16 + c16)  # E: numpy.complexfloating[numpy.typing._64Bit, numpy.typing._64Bit]
120reveal_type(c16 + f8)  # E: numpy.complexfloating[numpy.typing._64Bit, numpy.typing._64Bit]
121reveal_type(c16 + i8)  # E: numpy.complexfloating[numpy.typing._64Bit, numpy.typing._64Bit]
122reveal_type(c16 + c8)  # E: numpy.complexfloating[numpy.typing._64Bit, numpy.typing._64Bit]
123reveal_type(c16 + f4)  # E: numpy.complexfloating[numpy.typing._64Bit, numpy.typing._64Bit]
124reveal_type(c16 + i4)  # E: numpy.complexfloating[numpy.typing._64Bit, numpy.typing._64Bit]
125reveal_type(c16 + b_)  # E: numpy.complexfloating[numpy.typing._64Bit, numpy.typing._64Bit]
126reveal_type(c16 + b)  # E: numpy.complexfloating[numpy.typing._64Bit, numpy.typing._64Bit]
127reveal_type(c16 + c)  # E: numpy.complexfloating[numpy.typing._64Bit, numpy.typing._64Bit]
128reveal_type(c16 + f)  # E: numpy.complexfloating[numpy.typing._64Bit, numpy.typing._64Bit]
129reveal_type(c16 + i)  # E: numpy.complexfloating[Any, Any]
130reveal_type(c16 + AR)  # E: Any
131
132reveal_type(c16 + c16)  # E: numpy.complexfloating[numpy.typing._64Bit, numpy.typing._64Bit]
133reveal_type(f8 + c16)  # E: numpy.complexfloating[numpy.typing._64Bit, numpy.typing._64Bit]
134reveal_type(i8 + c16)  # E: numpy.complexfloating[numpy.typing._64Bit, numpy.typing._64Bit]
135reveal_type(c8 + c16)  # E: numpy.complexfloating[numpy.typing._64Bit, numpy.typing._64Bit]
136reveal_type(f4 + c16)  # E: numpy.complexfloating[numpy.typing._64Bit, numpy.typing._64Bit]
137reveal_type(i4 + c16)  # E: numpy.complexfloating[numpy.typing._64Bit, numpy.typing._64Bit]
138reveal_type(b_ + c16)  # E: numpy.complexfloating[numpy.typing._64Bit, numpy.typing._64Bit]
139reveal_type(b + c16)  # E: numpy.complexfloating[numpy.typing._64Bit, numpy.typing._64Bit]
140reveal_type(c + c16)  # E: numpy.complexfloating[numpy.typing._64Bit, numpy.typing._64Bit]
141reveal_type(f + c16)  # E: numpy.complexfloating[numpy.typing._64Bit, numpy.typing._64Bit]
142reveal_type(i + c16)  # E: numpy.complexfloating[Any, Any]
143reveal_type(AR + c16)  # E: Any
144
145reveal_type(c8 + c16)  # E: numpy.complexfloating[numpy.typing._64Bit, numpy.typing._64Bit]
146reveal_type(c8 + f8)  # E: numpy.complexfloating[numpy.typing._64Bit, numpy.typing._64Bit]
147reveal_type(c8 + i8)  # E: numpy.complexfloating[numpy.typing._64Bit, numpy.typing._64Bit]
148reveal_type(c8 + c8)  # E: numpy.complexfloating[numpy.typing._32Bit, numpy.typing._32Bit]
149reveal_type(c8 + f4)  # E: numpy.complexfloating[numpy.typing._32Bit, numpy.typing._32Bit]
150reveal_type(c8 + i4)  # E: numpy.complexfloating[numpy.typing._32Bit, numpy.typing._32Bit]
151reveal_type(c8 + b_)  # E: numpy.complexfloating[numpy.typing._32Bit, numpy.typing._32Bit]
152reveal_type(c8 + b)  # E: numpy.complexfloating[numpy.typing._32Bit, numpy.typing._32Bit]
153reveal_type(c8 + c)  # E: numpy.complexfloating[numpy.typing._64Bit, numpy.typing._64Bit]
154reveal_type(c8 + f)  # E: numpy.complexfloating[numpy.typing._64Bit, numpy.typing._64Bit]
155reveal_type(c8 + i)  # E: numpy.complexfloating[Any, Any]
156reveal_type(c8 + AR)  # E: Any
157
158reveal_type(c16 + c8)  # E: numpy.complexfloating[numpy.typing._64Bit, numpy.typing._64Bit]
159reveal_type(f8 + c8)  # E: numpy.complexfloating[numpy.typing._64Bit, numpy.typing._64Bit]
160reveal_type(i8 + c8)  # E: numpy.complexfloating[numpy.typing._64Bit, numpy.typing._64Bit]
161reveal_type(c8 + c8)  # E: numpy.complexfloating[numpy.typing._32Bit, numpy.typing._32Bit]
162reveal_type(f4 + c8)  # E: numpy.complexfloating[numpy.typing._32Bit, numpy.typing._32Bit]
163reveal_type(i4 + c8)  # E: numpy.complexfloating[numpy.typing._32Bit, numpy.typing._32Bit]
164reveal_type(b_ + c8)  # E: numpy.complexfloating[numpy.typing._32Bit, numpy.typing._32Bit]
165reveal_type(b + c8)  # E: numpy.complexfloating[numpy.typing._32Bit, numpy.typing._32Bit]
166reveal_type(c + c8)  # E: numpy.complexfloating[numpy.typing._64Bit, numpy.typing._64Bit]
167reveal_type(f + c8)  # E: numpy.complexfloating[numpy.typing._64Bit, numpy.typing._64Bit]
168reveal_type(i + c8)  # E: numpy.complexfloating[Any, Any]
169reveal_type(AR + c8)  # E: Any
170
171# Float
172
173reveal_type(f8 + f8)  # E: numpy.floating[numpy.typing._64Bit]
174reveal_type(f8 + i8)  # E: numpy.floating[numpy.typing._64Bit]
175reveal_type(f8 + f4)  # E: numpy.floating[numpy.typing._64Bit]
176reveal_type(f8 + i4)  # E: numpy.floating[numpy.typing._64Bit]
177reveal_type(f8 + b_)  # E: numpy.floating[numpy.typing._64Bit]
178reveal_type(f8 + b)  # E: numpy.floating[numpy.typing._64Bit]
179reveal_type(f8 + c)  # E: numpy.complexfloating[numpy.typing._64Bit, numpy.typing._64Bit]
180reveal_type(f8 + f)  # E: numpy.floating[numpy.typing._64Bit]
181reveal_type(f8 + i)  # E: numpy.floating[Any]
182reveal_type(f8 + AR)  # E: Any
183
184reveal_type(f8 + f8)  # E: numpy.floating[numpy.typing._64Bit]
185reveal_type(i8 + f8)  # E: numpy.floating[numpy.typing._64Bit]
186reveal_type(f4 + f8)  # E: numpy.floating[numpy.typing._64Bit]
187reveal_type(i4 + f8)  # E: numpy.floating[numpy.typing._64Bit]
188reveal_type(b_ + f8)  # E: numpy.floating[numpy.typing._64Bit]
189reveal_type(b + f8)  # E: numpy.floating[numpy.typing._64Bit]
190reveal_type(c + f8)  # E: numpy.complexfloating[numpy.typing._64Bit, numpy.typing._64Bit]
191reveal_type(f + f8)  # E: numpy.floating[numpy.typing._64Bit]
192reveal_type(i + f8)  # E: numpy.floating[Any]
193reveal_type(AR + f8)  # E: Any
194
195reveal_type(f4 + f8)  # E: numpy.floating[numpy.typing._64Bit]
196reveal_type(f4 + i8)  # E: numpy.floating[numpy.typing._64Bit]
197reveal_type(f4 + f4)  # E: numpy.floating[numpy.typing._32Bit]
198reveal_type(f4 + i4)  # E: numpy.floating[numpy.typing._32Bit]
199reveal_type(f4 + b_)  # E: numpy.floating[numpy.typing._32Bit]
200reveal_type(f4 + b)  # E: numpy.floating[numpy.typing._32Bit]
201reveal_type(f4 + c)  # E: numpy.complexfloating[numpy.typing._64Bit, numpy.typing._64Bit]
202reveal_type(f4 + f)  # E: numpy.floating[numpy.typing._64Bit]
203reveal_type(f4 + i)  # E: numpy.floating[Any]
204reveal_type(f4 + AR)  # E: Any
205
206reveal_type(f8 + f4)  # E: numpy.floating[numpy.typing._64Bit]
207reveal_type(i8 + f4)  # E: numpy.floating[numpy.typing._64Bit]
208reveal_type(f4 + f4)  # E: umpy.floating[numpy.typing._32Bit]
209reveal_type(i4 + f4)  # E: umpy.floating[numpy.typing._32Bit]
210reveal_type(b_ + f4)  # E: umpy.floating[numpy.typing._32Bit]
211reveal_type(b + f4)  # E: umpy.floating[numpy.typing._32Bit]
212reveal_type(c + f4)  # E: numpy.complexfloating[numpy.typing._64Bit, numpy.typing._64Bit]
213reveal_type(f + f4)  # E: numpy.floating[numpy.typing._64Bit]
214reveal_type(i + f4)  # E: numpy.floating[Any]
215reveal_type(AR + f4)  # E: Any
216
217# Int
218
219reveal_type(i8 + i8)  # E: numpy.signedinteger[numpy.typing._64Bit]
220reveal_type(i8 + u8)  # E: Any
221reveal_type(i8 + i4)  # E: numpy.signedinteger[numpy.typing._64Bit]
222reveal_type(i8 + u4)  # E: Any
223reveal_type(i8 + b_)  # E: numpy.signedinteger[numpy.typing._64Bit]
224reveal_type(i8 + b)  # E: numpy.signedinteger[numpy.typing._64Bit]
225reveal_type(i8 + c)  # E: numpy.complexfloating[numpy.typing._64Bit, numpy.typing._64Bit]
226reveal_type(i8 + f)  # E: numpy.floating[numpy.typing._64Bit]
227reveal_type(i8 + i)  # E: numpy.signedinteger[Any]
228reveal_type(i8 + AR)  # E: Any
229
230reveal_type(u8 + u8)  # E: numpy.unsignedinteger[numpy.typing._64Bit]
231reveal_type(u8 + i4)  # E: Any
232reveal_type(u8 + u4)  # E: numpy.unsignedinteger[numpy.typing._64Bit]
233reveal_type(u8 + b_)  # E: numpy.unsignedinteger[numpy.typing._64Bit]
234reveal_type(u8 + b)  # E: numpy.unsignedinteger[numpy.typing._64Bit]
235reveal_type(u8 + c)  # E: numpy.complexfloating[numpy.typing._64Bit, numpy.typing._64Bit]
236reveal_type(u8 + f)  # E: numpy.floating[numpy.typing._64Bit]
237reveal_type(u8 + i)  # E: Any
238reveal_type(u8 + AR)  # E: Any
239
240reveal_type(i8 + i8)  # E: numpy.signedinteger[numpy.typing._64Bit]
241reveal_type(u8 + i8)  # E: Any
242reveal_type(i4 + i8)  # E: numpy.signedinteger[numpy.typing._64Bit]
243reveal_type(u4 + i8)  # E: Any
244reveal_type(b_ + i8)  # E: numpy.signedinteger[numpy.typing._64Bit]
245reveal_type(b + i8)  # E: numpy.signedinteger[numpy.typing._64Bit]
246reveal_type(c + i8)  # E: numpy.complexfloating[numpy.typing._64Bit, numpy.typing._64Bit]
247reveal_type(f + i8)  # E: numpy.floating[numpy.typing._64Bit]
248reveal_type(i + i8)  # E: numpy.signedinteger[Any]
249reveal_type(AR + i8)  # E: Any
250
251reveal_type(u8 + u8)  # E: numpy.unsignedinteger[numpy.typing._64Bit]
252reveal_type(i4 + u8)  # E: Any
253reveal_type(u4 + u8)  # E: numpy.unsignedinteger[numpy.typing._64Bit]
254reveal_type(b_ + u8)  # E: numpy.unsignedinteger[numpy.typing._64Bit]
255reveal_type(b + u8)  # E: numpy.unsignedinteger[numpy.typing._64Bit]
256reveal_type(c + u8)  # E: numpy.complexfloating[numpy.typing._64Bit, numpy.typing._64Bit]
257reveal_type(f + u8)  # E: numpy.floating[numpy.typing._64Bit]
258reveal_type(i + u8)  # E: Any
259reveal_type(AR + u8)  # E: Any
260
261reveal_type(i4 + i8)  # E: numpy.signedinteger[numpy.typing._64Bit]
262reveal_type(i4 + i4)  # E: numpy.signedinteger[numpy.typing._32Bit]
263reveal_type(i4 + i)  # E: numpy.signedinteger[Any]
264reveal_type(i4 + b_)  # E: numpy.signedinteger[numpy.typing._32Bit]
265reveal_type(i4 + b)  # E: numpy.signedinteger[numpy.typing._32Bit]
266reveal_type(i4 + AR)  # E: Any
267
268reveal_type(u4 + i8)  # E: Any
269reveal_type(u4 + i4)  # E: Any
270reveal_type(u4 + u8)  # E: numpy.unsignedinteger[numpy.typing._64Bit]
271reveal_type(u4 + u4)  # E: numpy.unsignedinteger[numpy.typing._32Bit]
272reveal_type(u4 + i)  # E: Any
273reveal_type(u4 + b_)  # E: numpy.unsignedinteger[numpy.typing._32Bit]
274reveal_type(u4 + b)  # E: numpy.unsignedinteger[numpy.typing._32Bit]
275reveal_type(u4 + AR)  # E: Any
276
277reveal_type(i8 + i4)  # E: numpy.signedinteger[numpy.typing._64Bit]
278reveal_type(i4 + i4)  # E: numpy.signedinteger[numpy.typing._32Bit]
279reveal_type(i + i4)  # E: numpy.signedinteger[Any]
280reveal_type(b_ + i4)  # E: numpy.signedinteger[numpy.typing._32Bit]
281reveal_type(b + i4)  # E: numpy.signedinteger[numpy.typing._32Bit]
282reveal_type(AR + i4)  # E: Any
283
284reveal_type(i8 + u4)  # E: Any
285reveal_type(i4 + u4)  # E: Any
286reveal_type(u8 + u4)  # E: numpy.unsignedinteger[numpy.typing._64Bit]
287reveal_type(u4 + u4)  # E: numpy.unsignedinteger[numpy.typing._32Bit]
288reveal_type(b_ + u4)  # E: numpy.unsignedinteger[numpy.typing._32Bit]
289reveal_type(b + u4)  # E: numpy.unsignedinteger[numpy.typing._32Bit]
290reveal_type(i + u4)  # E: Any
291reveal_type(AR + u4)  # E: Any
292