3333 setdiff1d ,
3434 sinc ,
3535 union1d ,
36+ angle ,
3637)
3738from array_api_extra import (
3839 searchsorted as xpx_searchsorted ,
@@ -1881,3 +1882,27 @@ def test_device(self, xp: ModuleType, device: Device):
18811882 a = xp .asarray ([- 1 , 1 , 0 ], device = device )
18821883 b = xp .asarray ([2 , - 2 , 0 ], device = device )
18831884 assert get_device (union1d (a , b )) == device
1885+
1886+ class TestAngle :
1887+ def test_simple (self , xp : ModuleType ):
1888+ a = xp .asarray ([1 , 0 ])
1889+ expected = xp .asarray ([0. , 0. ])
1890+ res = angle (a )
1891+ xp_assert_equal (res , expected )
1892+
1893+ def test_complex (self , xp : ModuleType ):
1894+ a = xp .asarray ([1 + 1j , 1 - 1j , - 1 + 1j , - 1 - 1j ])
1895+ expected = xp .asarray ([np .pi / 4 , - np .pi / 4 , 3 * np .pi / 4 , - 3 * np .pi / 4 ])
1896+ res = angle (a )
1897+ xp_assert_equal (res , expected )
1898+
1899+ def test_2d (self , xp : ModuleType ):
1900+ a = xp .asarray ([[1 + 1j , 1 - 1j ], [- 1 + 1j , - 1 - 1j ]])
1901+ expected = xp .asarray ([[np .pi / 4 , - np .pi / 4 ], [3 * np .pi / 4 , - 3 * np .pi / 4 ]])
1902+ res = angle (a )
1903+ xp_assert_equal (res , expected )
1904+
1905+ @pytest .mark .skip_xp_backend (Backend .TORCH , reason = "materialize 'meta' device" )
1906+ def test_device (self , xp : ModuleType , device : Device ):
1907+ a = xp .asarray ([1 + 1j ], device = device )
1908+ assert get_device (angle (a )) == device
0 commit comments