@@ -519,38 +519,40 @@ def test_infinity_sign_errors(func):
519
519
520
520
521
521
class TestIsClose :
522
- @pytest .mark .parametrize ("dtype" , get_all_dtypes (no_bool = True ))
522
+ @pytest .mark .parametrize (
523
+ "dtype" , get_all_dtypes (no_bool = True , no_none = True )
524
+ )
523
525
@pytest .mark .parametrize (
524
526
"rtol" , [1e-5 , dpnp .array (1e-5 ), dpnp .full ((10 ,), 1e-5 )]
525
527
)
526
528
@pytest .mark .parametrize (
527
529
"atol" , [1e-8 , dpnp .array (1e-8 ), dpnp .full ((10 ,), 1e-8 )]
528
530
)
529
531
def test_isclose (self , dtype , rtol , atol ):
530
- a = numpy . random . rand ( 10 )
531
- b = a + numpy .random . rand ( 10 ) * 1e-8
532
+ a = generate_random_numpy_array (( 10 ,), dtype = dtype )
533
+ b = a + numpy .array ( 1e-8 , dtype = dtype )
532
534
533
535
dpnp_a = dpnp .array (a , dtype = dtype )
534
536
dpnp_b = dpnp .array (b , dtype = dtype )
535
537
536
538
np_res = numpy .isclose (a , b , rtol = 1e-5 , atol = 1e-8 )
537
539
dpnp_res = dpnp .isclose (dpnp_a , dpnp_b , rtol = rtol , atol = atol )
538
- assert_allclose (dpnp_res , np_res )
540
+ assert_equal (dpnp_res , np_res )
539
541
540
542
@pytest .mark .parametrize ("dtype" , get_complex_dtypes ())
541
543
@pytest .mark .parametrize ("shape" , [(4 , 4 ), (16 , 16 ), (4 , 4 , 4 )])
542
544
def test_isclose_complex (self , dtype , shape ):
543
545
a = generate_random_numpy_array (shape , dtype = dtype , seed_value = 81 )
544
546
b = a .copy ()
545
547
546
- b = b + (1e-6 + 1e-6j )
548
+ b = b + numpy . array (1e-6 + 1e-6j , dtype = dtype )
547
549
548
550
dpnp_a = dpnp .array (a , dtype = dtype )
549
551
dpnp_b = dpnp .array (b , dtype = dtype )
550
552
551
553
np_res = numpy .isclose (a , b )
552
554
dpnp_res = dpnp .isclose (dpnp_a , dpnp_b )
553
- assert_allclose (dpnp_res , np_res )
555
+ assert_equal (dpnp_res , np_res )
554
556
555
557
@pytest .mark .parametrize (
556
558
"rtol, atol" ,
@@ -568,7 +570,7 @@ def test_empty_input(self, rtol, atol):
568
570
569
571
np_res = numpy .isclose (a , b , rtol = 1e-5 , atol = 1e-8 )
570
572
dpnp_res = dpnp .isclose (dpnp_a , dpnp_b , rtol = rtol , atol = atol )
571
- assert_allclose (dpnp_res , np_res )
573
+ assert_equal (dpnp_res , np_res )
572
574
573
575
@pytest .mark .parametrize (
574
576
"rtol, atol" ,
@@ -585,17 +587,17 @@ def test_input_0d(self, val, rtol, atol):
585
587
# array & scalar
586
588
dp_res = dpnp .isclose (dp_arr , val , rtol = rtol , atol = atol )
587
589
np_res = numpy .isclose (np_arr , val , rtol = 1e-5 , atol = 1e-8 )
588
- assert_allclose (dp_res , np_res )
590
+ assert_equal (dp_res , np_res )
589
591
590
592
# scalar & array
591
593
dp_res = dpnp .isclose (val , dp_arr , rtol = rtol , atol = atol )
592
594
np_res = numpy .isclose (val , np_arr , rtol = 1e-5 , atol = 1e-8 )
593
- assert_allclose (dp_res , np_res )
595
+ assert_equal (dp_res , np_res )
594
596
595
597
# array & array
596
598
dp_res = dpnp .isclose (dp_arr , dp_arr , rtol = rtol , atol = atol )
597
599
np_res = numpy .isclose (np_arr , np_arr , rtol = 1e-5 , atol = 1e-8 )
598
- assert_allclose (dp_res , np_res )
600
+ assert_equal (dp_res , np_res )
599
601
600
602
@pytest .mark .parametrize (
601
603
"sh_a, sh_b" ,
@@ -615,7 +617,7 @@ def test_broadcast_shapes(self, sh_a, sh_b):
615
617
616
618
np_res = numpy .isclose (a_np , b_np )
617
619
dp_res = dpnp .isclose (a_dp , b_dp )
618
- assert_allclose (dp_res , np_res )
620
+ assert_equal (dp_res , np_res )
619
621
620
622
@pytest .mark .parametrize (
621
623
"rtol, atol" ,
@@ -624,16 +626,19 @@ def test_broadcast_shapes(self, sh_a, sh_b):
624
626
(dpnp .array (1e-5 ), dpnp .array (1e-8 )),
625
627
],
626
628
)
627
- def test_equal_nan (self , rtol , atol ):
629
+ @pytest .mark .parametrize ("equal_nan" , [True , 1 , "1" ])
630
+ def test_equal_nan (self , rtol , atol , equal_nan ):
628
631
a = numpy .array ([numpy .nan , 1.0 ])
629
632
b = numpy .array ([numpy .nan , 1.0 ])
630
633
631
634
dp_a = dpnp .array (a )
632
635
dp_b = dpnp .array (b )
633
636
634
- np_res = numpy .isclose (a , b , rtol = 1e-5 , atol = 1e-8 , equal_nan = True )
635
- dp_res = dpnp .isclose (dp_a , dp_b , rtol = rtol , atol = atol , equal_nan = True )
636
- assert_allclose (dp_res , np_res )
637
+ np_res = numpy .isclose (a , b , rtol = 1e-5 , atol = 1e-8 , equal_nan = equal_nan )
638
+ dp_res = dpnp .isclose (
639
+ dp_a , dp_b , rtol = rtol , atol = atol , equal_nan = equal_nan
640
+ )
641
+ assert_equal (dp_res , np_res )
637
642
638
643
# array-like rtol/atol support requires NumPy >= 2.0
639
644
@testing .with_requires ("numpy>=2.0" )
@@ -650,7 +655,7 @@ def test_rtol_atol_arrays(self):
650
655
651
656
np_res = numpy .isclose (a , b , rtol = rtol , atol = atol )
652
657
dp_res = dpnp .isclose (dp_a , dp_b , rtol = dp_rtol , atol = dp_atol )
653
- assert_allclose (dp_res , np_res )
658
+ assert_equal (dp_res , np_res )
654
659
655
660
@pytest .mark .parametrize (
656
661
"rtol, atol" ,
@@ -666,7 +671,7 @@ def test_rtol_atol_complex(self, rtol, atol):
666
671
667
672
dpnp_res = dpnp .isclose (a , b , rtol = rtol , atol = atol )
668
673
np_res = numpy .isclose (a .asnumpy (), b .asnumpy (), rtol = rtol , atol = atol )
669
- assert_allclose (dpnp_res , np_res )
674
+ assert_equal (dpnp_res , np_res )
670
675
671
676
# NEP 50: float32 vs Python float comparison requires NumPy >= 2.0
672
677
@testing .with_requires ("numpy>=2.0" )
@@ -675,7 +680,7 @@ def test_rtol_atol_nep50(self):
675
680
f32 = numpy .array (below_one , dtype = "f4" )
676
681
dp_f32 = dpnp .array (f32 )
677
682
678
- assert_allclose (
683
+ assert_equal (
679
684
dpnp .isclose (dp_f32 , below_one , rtol = 0 , atol = 0 ),
680
685
numpy .isclose (f32 , below_one , rtol = 0 , atol = 0 ),
681
686
)
0 commit comments