@@ -25,7 +25,7 @@ def test_add_special_cases_two_args_either(arg1, arg2):
25
25
"""
26
26
res = add (arg1 , arg2 )
27
27
mask = logical_or (exactly_equal (arg1 , NaN (arg1 .shape , arg1 .dtype )), exactly_equal (arg2 , NaN (arg1 .shape , arg1 .dtype )))
28
- assert_exactly_equal (res [mask ], NaN (arg1 .shape , arg1 .dtype )[mask ])
28
+ assert_exactly_equal (res [mask ], ( NaN (arg1 .shape , arg1 .dtype ) )[mask ])
29
29
30
30
31
31
@given (numeric_arrays , numeric_arrays )
@@ -38,7 +38,7 @@ def test_add_special_cases_two_args_equal__equal_1(arg1, arg2):
38
38
"""
39
39
res = add (arg1 , arg2 )
40
40
mask = logical_and (exactly_equal (arg1 , infinity (arg1 .shape , arg1 .dtype )), exactly_equal (arg2 , - infinity (arg2 .shape , arg2 .dtype )))
41
- assert_exactly_equal (res [mask ], NaN (arg1 .shape , arg1 .dtype )[mask ])
41
+ assert_exactly_equal (res [mask ], ( NaN (arg1 .shape , arg1 .dtype ) )[mask ])
42
42
43
43
44
44
@given (numeric_arrays , numeric_arrays )
@@ -51,7 +51,7 @@ def test_add_special_cases_two_args_equal__equal_2(arg1, arg2):
51
51
"""
52
52
res = add (arg1 , arg2 )
53
53
mask = logical_and (exactly_equal (arg1 , - infinity (arg1 .shape , arg1 .dtype )), exactly_equal (arg2 , infinity (arg2 .shape , arg2 .dtype )))
54
- assert_exactly_equal (res [mask ], NaN (arg1 .shape , arg1 .dtype )[mask ])
54
+ assert_exactly_equal (res [mask ], ( NaN (arg1 .shape , arg1 .dtype ) )[mask ])
55
55
56
56
57
57
@given (numeric_arrays , numeric_arrays )
@@ -64,7 +64,7 @@ def test_add_special_cases_two_args_equal__equal_3(arg1, arg2):
64
64
"""
65
65
res = add (arg1 , arg2 )
66
66
mask = logical_and (exactly_equal (arg1 , infinity (arg1 .shape , arg1 .dtype )), exactly_equal (arg2 , infinity (arg2 .shape , arg2 .dtype )))
67
- assert_exactly_equal (res [mask ], infinity (arg1 .shape , arg1 .dtype )[mask ])
67
+ assert_exactly_equal (res [mask ], ( infinity (arg1 .shape , arg1 .dtype ) )[mask ])
68
68
69
69
70
70
@given (numeric_arrays , numeric_arrays )
@@ -77,7 +77,7 @@ def test_add_special_cases_two_args_equal__equal_4(arg1, arg2):
77
77
"""
78
78
res = add (arg1 , arg2 )
79
79
mask = logical_and (exactly_equal (arg1 , - infinity (arg1 .shape , arg1 .dtype )), exactly_equal (arg2 , - infinity (arg2 .shape , arg2 .dtype )))
80
- assert_exactly_equal (res [mask ], - infinity (arg1 .shape , arg1 .dtype )[mask ])
80
+ assert_exactly_equal (res [mask ], ( - infinity (arg1 .shape , arg1 .dtype ) )[mask ])
81
81
82
82
83
83
@given (numeric_arrays , numeric_arrays )
@@ -90,7 +90,7 @@ def test_add_special_cases_two_args_equal__equal_5(arg1, arg2):
90
90
"""
91
91
res = add (arg1 , arg2 )
92
92
mask = logical_and (exactly_equal (arg1 , infinity (arg1 .shape , arg1 .dtype )), isfinite (arg2 ))
93
- assert_exactly_equal (res [mask ], infinity (arg1 .shape , arg1 .dtype )[mask ])
93
+ assert_exactly_equal (res [mask ], ( infinity (arg1 .shape , arg1 .dtype ) )[mask ])
94
94
95
95
96
96
@given (numeric_arrays , numeric_arrays )
@@ -103,7 +103,7 @@ def test_add_special_cases_two_args_equal__equal_6(arg1, arg2):
103
103
"""
104
104
res = add (arg1 , arg2 )
105
105
mask = logical_and (exactly_equal (arg1 , - infinity (arg1 .shape , arg1 .dtype )), isfinite (arg2 ))
106
- assert_exactly_equal (res [mask ], - infinity (arg1 .shape , arg1 .dtype )[mask ])
106
+ assert_exactly_equal (res [mask ], ( - infinity (arg1 .shape , arg1 .dtype ) )[mask ])
107
107
108
108
109
109
@given (numeric_arrays , numeric_arrays )
@@ -116,7 +116,7 @@ def test_add_special_cases_two_args_equal__equal_7(arg1, arg2):
116
116
"""
117
117
res = add (arg1 , arg2 )
118
118
mask = logical_and (isfinite (arg1 ), exactly_equal (arg2 , infinity (arg2 .shape , arg2 .dtype )))
119
- assert_exactly_equal (res [mask ], infinity (arg1 .shape , arg1 .dtype )[mask ])
119
+ assert_exactly_equal (res [mask ], ( infinity (arg1 .shape , arg1 .dtype ) )[mask ])
120
120
121
121
122
122
@given (numeric_arrays , numeric_arrays )
@@ -129,7 +129,7 @@ def test_add_special_cases_two_args_equal__equal_8(arg1, arg2):
129
129
"""
130
130
res = add (arg1 , arg2 )
131
131
mask = logical_and (isfinite (arg1 ), exactly_equal (arg2 , - infinity (arg2 .shape , arg2 .dtype )))
132
- assert_exactly_equal (res [mask ], - infinity (arg1 .shape , arg1 .dtype )[mask ])
132
+ assert_exactly_equal (res [mask ], ( - infinity (arg1 .shape , arg1 .dtype ) )[mask ])
133
133
134
134
135
135
@given (numeric_arrays , numeric_arrays )
@@ -142,7 +142,7 @@ def test_add_special_cases_two_args_equal__equal_9(arg1, arg2):
142
142
"""
143
143
res = add (arg1 , arg2 )
144
144
mask = logical_and (exactly_equal (arg1 , - zero (arg1 .shape , arg1 .dtype )), exactly_equal (arg2 , - zero (arg2 .shape , arg2 .dtype )))
145
- assert_exactly_equal (res [mask ], - zero (arg1 .shape , arg1 .dtype )[mask ])
145
+ assert_exactly_equal (res [mask ], ( - zero (arg1 .shape , arg1 .dtype ) )[mask ])
146
146
147
147
148
148
@given (numeric_arrays , numeric_arrays )
@@ -155,7 +155,7 @@ def test_add_special_cases_two_args_equal__equal_10(arg1, arg2):
155
155
"""
156
156
res = add (arg1 , arg2 )
157
157
mask = logical_and (exactly_equal (arg1 , - zero (arg1 .shape , arg1 .dtype )), exactly_equal (arg2 , zero (arg2 .shape , arg2 .dtype )))
158
- assert_exactly_equal (res [mask ], zero (arg1 .shape , arg1 .dtype )[mask ])
158
+ assert_exactly_equal (res [mask ], ( zero (arg1 .shape , arg1 .dtype ) )[mask ])
159
159
160
160
161
161
@given (numeric_arrays , numeric_arrays )
@@ -168,7 +168,7 @@ def test_add_special_cases_two_args_equal__equal_11(arg1, arg2):
168
168
"""
169
169
res = add (arg1 , arg2 )
170
170
mask = logical_and (exactly_equal (arg1 , zero (arg1 .shape , arg1 .dtype )), exactly_equal (arg2 , - zero (arg2 .shape , arg2 .dtype )))
171
- assert_exactly_equal (res [mask ], zero (arg1 .shape , arg1 .dtype )[mask ])
171
+ assert_exactly_equal (res [mask ], ( zero (arg1 .shape , arg1 .dtype ) )[mask ])
172
172
173
173
174
174
@given (numeric_arrays , numeric_arrays )
@@ -181,7 +181,7 @@ def test_add_special_cases_two_args_equal__equal_12(arg1, arg2):
181
181
"""
182
182
res = add (arg1 , arg2 )
183
183
mask = logical_and (exactly_equal (arg1 , zero (arg1 .shape , arg1 .dtype )), exactly_equal (arg2 , zero (arg2 .shape , arg2 .dtype )))
184
- assert_exactly_equal (res [mask ], zero (arg1 .shape , arg1 .dtype )[mask ])
184
+ assert_exactly_equal (res [mask ], ( zero (arg1 .shape , arg1 .dtype ) )[mask ])
185
185
186
186
187
187
@given (numeric_arrays , numeric_arrays )
@@ -194,7 +194,7 @@ def test_add_special_cases_two_args_equal__equal_13(arg1, arg2):
194
194
"""
195
195
res = add (arg1 , arg2 )
196
196
mask = logical_and (logical_and (isfinite (arg1 ), non_zero (arg1 )), exactly_equal (arg2 , - arg1 ))
197
- assert_exactly_equal (res [mask ], zero (arg1 .shape , arg1 .dtype )[mask ])
197
+ assert_exactly_equal (res [mask ], ( zero (arg1 .shape , arg1 .dtype ) )[mask ])
198
198
199
199
200
200
@given (numeric_arrays , numeric_arrays )
@@ -207,7 +207,7 @@ def test_add_special_cases_two_args_either__equal(arg1, arg2):
207
207
"""
208
208
res = add (arg1 , arg2 )
209
209
mask = logical_and (logical_or (exactly_equal (arg1 , zero (arg1 .shape , arg1 .dtype )), exactly_equal (arg1 , - zero (arg1 .shape , arg1 .dtype ))), logical_and (isfinite (arg2 ), non_zero (arg2 )))
210
- assert_exactly_equal (res [mask ], arg2 [mask ])
210
+ assert_exactly_equal (res [mask ], ( arg2 ) [mask ])
211
211
212
212
213
213
@given (numeric_arrays , numeric_arrays )
@@ -220,7 +220,7 @@ def test_add_special_cases_two_args_equal__either(arg1, arg2):
220
220
"""
221
221
res = add (arg1 , arg2 )
222
222
mask = logical_and (logical_and (isfinite (arg1 ), non_zero (arg1 )), logical_or (exactly_equal (arg2 , zero (arg2 .shape , arg2 .dtype )), exactly_equal (arg2 , - zero (arg2 .shape , arg2 .dtype ))))
223
- assert_exactly_equal (res [mask ], arg1 [mask ])
223
+ assert_exactly_equal (res [mask ], ( arg1 ) [mask ])
224
224
225
225
# TODO: Implement REMAINING test for:
226
226
# - In the remaining cases, when neither `infinity`, `+0`, `-0`, nor a `NaN` is involved, and the operands have the same mathematical sign or have different magnitudes, the sum must be computed and rounded to the nearest representable value according to IEEE 754-2019 and a supported round mode. If the magnitude is too large to represent, the operation overflows and the result is an `infinity` of appropriate mathematical sign.
0 commit comments