@@ -965,9 +965,9 @@ def test_invalid_out(self, out):
965
965
assert_raises (TypeError , numpy .add , a .asnumpy (), 2 , out )
966
966
967
967
968
- class TestHypot :
969
- @pytest .mark .parametrize ("dtype" , get_float_dtypes ())
970
- def test_hypot (self , dtype ):
968
+ class TestDivide :
969
+ @pytest .mark .parametrize ("dtype" , get_float_dtypes () + get_complex_dtypes () )
970
+ def test_divide (self , dtype ):
971
971
array1_data = numpy .arange (10 )
972
972
array2_data = numpy .arange (5 , 15 )
973
973
out = numpy .empty (10 , dtype = dtype )
@@ -976,56 +976,71 @@ def test_hypot(self, dtype):
976
976
dp_array1 = dpnp .array (array1_data , dtype = dtype )
977
977
dp_array2 = dpnp .array (array2_data , dtype = dtype )
978
978
dp_out = dpnp .array (out , dtype = dtype )
979
- result = dpnp .hypot (dp_array1 , dp_array2 , out = dp_out )
979
+ result = dpnp .divide (dp_array1 , dp_array2 , out = dp_out )
980
980
981
981
# original
982
982
np_array1 = numpy .array (array1_data , dtype = dtype )
983
983
np_array2 = numpy .array (array2_data , dtype = dtype )
984
- expected = numpy .hypot (np_array1 , np_array2 , out = out )
984
+ expected = numpy .divide (np_array1 , np_array2 , out = out )
985
985
986
- assert_allclose (expected , result )
987
- assert_allclose (out , dp_out )
986
+ tol = 1e-07
987
+ assert_allclose (expected , result , rtol = tol , atol = tol )
988
+ assert_allclose (out , dp_out , rtol = tol , atol = tol )
988
989
989
- @pytest .mark .parametrize ("dtype" , get_float_dtypes ())
990
+ @pytest .mark .usefixtures ("suppress_divide_invalid_numpy_warnings" )
991
+ @pytest .mark .parametrize ("dtype" , get_float_dtypes () + get_complex_dtypes ())
990
992
def test_out_dtypes (self , dtype ):
991
993
size = 10
992
994
993
995
np_array1 = numpy .arange (size , 2 * size , dtype = dtype )
994
996
np_array2 = numpy .arange (size , dtype = dtype )
995
- np_out = numpy .empty (size , dtype = numpy .float32 )
996
- expected = numpy .hypot (np_array1 , np_array2 , out = np_out )
997
+ np_out = numpy .empty (size , dtype = numpy .complex64 )
998
+ expected = numpy .divide (np_array1 , np_array2 , out = np_out )
997
999
998
1000
dp_array1 = dpnp .arange (size , 2 * size , dtype = dtype )
999
1001
dp_array2 = dpnp .arange (size , dtype = dtype )
1000
1002
1001
- dp_out = dpnp .empty (size , dtype = dpnp .float32 )
1002
- if dtype != dpnp .float32 :
1003
+ dp_out = dpnp .empty (size , dtype = dpnp .complex64 )
1004
+ if dtype != dpnp .complex64 :
1003
1005
# dtype of out mismatches types of input arrays
1004
1006
with pytest .raises (TypeError ):
1005
- dpnp .hypot (dp_array1 , dp_array2 , out = dp_out )
1007
+ dpnp .divide (dp_array1 , dp_array2 , out = dp_out )
1006
1008
1007
1009
# allocate new out with expected type
1008
1010
dp_out = dpnp .empty (size , dtype = dtype )
1009
1011
1010
- result = dpnp .hypot (dp_array1 , dp_array2 , out = dp_out )
1012
+ result = dpnp .divide (dp_array1 , dp_array2 , out = dp_out )
1011
1013
1012
- tol = numpy . finfo ( numpy . float32 ). resolution
1014
+ tol = 1e-07
1013
1015
assert_allclose (expected , result , rtol = tol , atol = tol )
1014
1016
1015
- @pytest .mark .parametrize ("dtype" , get_float_dtypes ())
1017
+ @pytest .mark .usefixtures ("suppress_divide_invalid_numpy_warnings" )
1018
+ @pytest .mark .parametrize ("dtype" , get_float_dtypes () + get_complex_dtypes ())
1016
1019
def test_out_overlap (self , dtype ):
1017
1020
size = 15
1018
1021
# DPNP
1019
1022
dp_a = dpnp .arange (2 * size , dtype = dtype )
1020
- dpnp .hypot (dp_a [size ::], dp_a [::2 ], out = dp_a [:size :])
1023
+ dpnp .divide (dp_a [size ::], dp_a [::2 ], out = dp_a [:size :])
1021
1024
1022
1025
# original
1023
1026
np_a = numpy .arange (2 * size , dtype = dtype )
1024
- numpy .hypot (np_a [size ::], np_a [::2 ], out = np_a [:size :])
1027
+ numpy .divide (np_a [size ::], np_a [::2 ], out = np_a [:size :])
1025
1028
1026
- tol = numpy . finfo ( numpy . float32 ). resolution
1029
+ tol = 1e-07
1027
1030
assert_allclose (np_a , dp_a , rtol = tol , atol = tol )
1028
1031
1032
+ @pytest .mark .parametrize ("dtype" , get_float_dtypes () + get_complex_dtypes ())
1033
+ def test_inplace_strided_out (self , dtype ):
1034
+ size = 21
1035
+
1036
+ np_a = numpy .arange (size , dtype = dtype )
1037
+ np_a [::3 ] /= 4
1038
+
1039
+ dp_a = dpnp .arange (size , dtype = dtype )
1040
+ dp_a [::3 ] /= 4
1041
+
1042
+ assert_allclose (dp_a , np_a )
1043
+
1029
1044
@pytest .mark .parametrize (
1030
1045
"shape" , [(0 ,), (15 ,), (2 , 2 )], ids = ["(0,)" , "(15, )" , "(2,2)" ]
1031
1046
)
@@ -1035,7 +1050,7 @@ def test_invalid_shape(self, shape):
1035
1050
dp_out = dpnp .empty (shape )
1036
1051
1037
1052
with pytest .raises (ValueError ):
1038
- dpnp .hypot (dp_array1 , dp_array2 , out = dp_out )
1053
+ dpnp .divide (dp_array1 , dp_array2 , out = dp_out )
1039
1054
1040
1055
@pytest .mark .parametrize (
1041
1056
"out" ,
@@ -1045,8 +1060,8 @@ def test_invalid_shape(self, shape):
1045
1060
def test_invalid_out (self , out ):
1046
1061
a = dpnp .arange (10 )
1047
1062
1048
- assert_raises (TypeError , dpnp .hypot , a , 2 , out )
1049
- assert_raises (TypeError , numpy .hypot , a .asnumpy (), 2 , out )
1063
+ assert_raises (TypeError , dpnp .divide , a , 2 , out )
1064
+ assert_raises (TypeError , numpy .divide , a .asnumpy (), 2 , out )
1050
1065
1051
1066
1052
1067
class TestFmax :
@@ -1211,6 +1226,90 @@ def test_invalid_out(self, out):
1211
1226
assert_raises (TypeError , numpy .fmin , a .asnumpy (), 2 , out )
1212
1227
1213
1228
1229
+ class TestHypot :
1230
+ @pytest .mark .parametrize ("dtype" , get_float_dtypes ())
1231
+ def test_hypot (self , dtype ):
1232
+ array1_data = numpy .arange (10 )
1233
+ array2_data = numpy .arange (5 , 15 )
1234
+ out = numpy .empty (10 , dtype = dtype )
1235
+
1236
+ # DPNP
1237
+ dp_array1 = dpnp .array (array1_data , dtype = dtype )
1238
+ dp_array2 = dpnp .array (array2_data , dtype = dtype )
1239
+ dp_out = dpnp .array (out , dtype = dtype )
1240
+ result = dpnp .hypot (dp_array1 , dp_array2 , out = dp_out )
1241
+
1242
+ # original
1243
+ np_array1 = numpy .array (array1_data , dtype = dtype )
1244
+ np_array2 = numpy .array (array2_data , dtype = dtype )
1245
+ expected = numpy .hypot (np_array1 , np_array2 , out = out )
1246
+
1247
+ assert_allclose (expected , result )
1248
+ assert_allclose (out , dp_out )
1249
+
1250
+ @pytest .mark .parametrize ("dtype" , get_float_dtypes ())
1251
+ def test_out_dtypes (self , dtype ):
1252
+ size = 10
1253
+
1254
+ np_array1 = numpy .arange (size , 2 * size , dtype = dtype )
1255
+ np_array2 = numpy .arange (size , dtype = dtype )
1256
+ np_out = numpy .empty (size , dtype = numpy .float32 )
1257
+ expected = numpy .hypot (np_array1 , np_array2 , out = np_out )
1258
+
1259
+ dp_array1 = dpnp .arange (size , 2 * size , dtype = dtype )
1260
+ dp_array2 = dpnp .arange (size , dtype = dtype )
1261
+
1262
+ dp_out = dpnp .empty (size , dtype = dpnp .float32 )
1263
+ if dtype != dpnp .float32 :
1264
+ # dtype of out mismatches types of input arrays
1265
+ with pytest .raises (TypeError ):
1266
+ dpnp .hypot (dp_array1 , dp_array2 , out = dp_out )
1267
+
1268
+ # allocate new out with expected type
1269
+ dp_out = dpnp .empty (size , dtype = dtype )
1270
+
1271
+ result = dpnp .hypot (dp_array1 , dp_array2 , out = dp_out )
1272
+
1273
+ tol = numpy .finfo (numpy .float32 ).resolution
1274
+ assert_allclose (expected , result , rtol = tol , atol = tol )
1275
+
1276
+ @pytest .mark .parametrize ("dtype" , get_float_dtypes ())
1277
+ def test_out_overlap (self , dtype ):
1278
+ size = 15
1279
+ # DPNP
1280
+ dp_a = dpnp .arange (2 * size , dtype = dtype )
1281
+ dpnp .hypot (dp_a [size ::], dp_a [::2 ], out = dp_a [:size :])
1282
+
1283
+ # original
1284
+ np_a = numpy .arange (2 * size , dtype = dtype )
1285
+ numpy .hypot (np_a [size ::], np_a [::2 ], out = np_a [:size :])
1286
+
1287
+ tol = numpy .finfo (numpy .float32 ).resolution
1288
+ assert_allclose (np_a , dp_a , rtol = tol , atol = tol )
1289
+
1290
+ @pytest .mark .parametrize (
1291
+ "shape" , [(0 ,), (15 ,), (2 , 2 )], ids = ["(0,)" , "(15, )" , "(2,2)" ]
1292
+ )
1293
+ def test_invalid_shape (self , shape ):
1294
+ dp_array1 = dpnp .arange (10 )
1295
+ dp_array2 = dpnp .arange (5 , 15 )
1296
+ dp_out = dpnp .empty (shape )
1297
+
1298
+ with pytest .raises (ValueError ):
1299
+ dpnp .hypot (dp_array1 , dp_array2 , out = dp_out )
1300
+
1301
+ @pytest .mark .parametrize (
1302
+ "out" ,
1303
+ [4 , (), [], (3 , 7 ), [2 , 4 ]],
1304
+ ids = ["4" , "()" , "[]" , "(3, 7)" , "[2, 4]" ],
1305
+ )
1306
+ def test_invalid_out (self , out ):
1307
+ a = dpnp .arange (10 )
1308
+
1309
+ assert_raises (TypeError , dpnp .hypot , a , 2 , out )
1310
+ assert_raises (TypeError , numpy .hypot , a .asnumpy (), 2 , out )
1311
+
1312
+
1214
1313
class TestMaximum :
1215
1314
@pytest .mark .parametrize ("dtype" , get_all_dtypes (no_none = True ))
1216
1315
def test_maximum (self , dtype ):
0 commit comments