77from sympy import Expr , Number , Symbol
88from devito import (Constant , Dimension , Grid , Function , solve , TimeFunction , Eq , # noqa
99 Operator , SubDimension , norm , Le , Ge , Gt , Lt , Abs , sin , cos ,
10- Min , Max , Re , Im , SubDomain )
10+ Min , Max , Real , Imag , Conj , SubDomain )
1111from devito .finite_differences .differentiable import SafeInv , Weights , Mul
1212from devito .ir import Expression , FindNodes , ccode
1313from devito .symbolics import (retrieve_functions , retrieve_indexed , evalrel , # noqa
@@ -931,15 +931,15 @@ def run_operator(self, eqs, language):
931931 def test_devito_print (self ):
932932 f , _ , _ = self .setup_basic (np .complex64 )
933933
934- assert str (Re (f )) == 'Re (f(x))'
935- assert str (Im (f )) == 'Im (f(x))'
934+ assert str (Real (f )) == 'Real (f(x))'
935+ assert str (Imag (f )) == 'Imag (f(x))'
936936
937937 @pytest .mark .parametrize ('language' , ['C' , 'CXX' , 'CXXopenmp' ])
938938 def test_printing (self , language ):
939939 f , f_real , f_imag = self .setup_basic (np .complex64 )
940940
941- eq_re = Eq (f_real , Re (f ))
942- eq_im = Eq (f_imag , Im (f ))
941+ eq_re = Eq (f_real , Real (f ))
942+ eq_im = Eq (f_imag , Imag (f ))
943943
944944 with switchconfig (language = language ):
945945 op = Operator ([eq_re , eq_im ])
@@ -957,8 +957,8 @@ def test_printing(self, language):
957957 def test_trivial (self , language , dtype ):
958958 f , f_real , f_imag = self .setup_basic (dtype )
959959
960- eq_re = Eq (f_real , Re (f + 1. ))
961- eq_im = Eq (f_imag , Im (f + 1. ))
960+ eq_re = Eq (f_real , Real (f + 1. ))
961+ eq_im = Eq (f_imag , Imag (f + 1. ))
962962
963963 self .run_operator ([eq_re , eq_im ], language )
964964
@@ -972,8 +972,8 @@ def test_trivial(self, language, dtype):
972972 def test_trivial_imag (self , language , dtype ):
973973 f , f_real , f_imag = self .setup_basic (dtype )
974974
975- eq_re = Eq (f_real , Re (f + 1j ))
976- eq_im = Eq (f_imag , Im (f + 1j ))
975+ eq_re = Eq (f_real , Real (f + 1j ))
976+ eq_im = Eq (f_imag , Imag (f + 1j ))
977977
978978 self .run_operator ([eq_re , eq_im ], language )
979979
@@ -986,8 +986,8 @@ def test_trivial_imag(self, language, dtype):
986986 def test_deriv (self , language ):
987987 f , f_real , f_imag = self .setup_basic (np .complex64 )
988988
989- eq_re = Eq (f_real , Re (f .dx ))
990- eq_im = Eq (f_imag , Im (f .dx ))
989+ eq_re = Eq (f_real , Real (f .dx ))
990+ eq_im = Eq (f_imag , Imag (f .dx ))
991991
992992 self .run_operator ([eq_re , eq_im ], language )
993993
@@ -998,8 +998,8 @@ def test_deriv(self, language):
998998 def test_outer_deriv (self , language ):
999999 f , f_real , f_imag = self .setup_basic (np .complex64 )
10001000
1001- eq_re = Eq (f_real , Re (f ).dx )
1002- eq_im = Eq (f_imag , Im (f ).dx )
1001+ eq_re = Eq (f_real , Real (f ).dx )
1002+ eq_im = Eq (f_imag , Imag (f ).dx )
10031003
10041004 self .run_operator ([eq_re , eq_im ], language )
10051005
@@ -1022,10 +1022,10 @@ def test_mul(self, language):
10221022 fh_re = Function (name = 'fh_re' , grid = grid )
10231023 fh_im = Function (name = 'fh_im' , grid = grid )
10241024
1025- eq_fg_re = Eq (fg_re , Re (f * g ))
1026- eq_fg_im = Eq (fg_im , Im (f * g ))
1027- eq_fh_re = Eq (fh_re , Re (f * h ))
1028- eq_fh_im = Eq (fh_im , Im (f * h ))
1025+ eq_fg_re = Eq (fg_re , Real (f * g ))
1026+ eq_fg_im = Eq (fg_im , Imag (f * g ))
1027+ eq_fh_re = Eq (fh_re , Real (f * h ))
1028+ eq_fh_im = Eq (fh_im , Imag (f * h ))
10291029
10301030 self .run_operator ([eq_fg_re , eq_fg_im , eq_fh_re , eq_fh_im ], language )
10311031
@@ -1034,3 +1034,15 @@ def test_mul(self, language):
10341034
10351035 assert np .all (np .isclose (fh_re .data , - 2. ))
10361036 assert np .all (np .isclose (fh_im .data , 2. ))
1037+
1038+ @pytest .mark .parametrize ('language' , ['C' , 'CXX' , 'CXXopenmp' ])
1039+ def test_conj (self , language ):
1040+ grid = Grid (shape = (5 ,))
1041+ f = Function (name = 'f' , grid = grid , dtype = np .complex64 )
1042+ g = Function (name = 'g' , grid = grid , dtype = np .complex64 )
1043+
1044+ f .data [:] = np .arange (5 ) + 1j * np .arange (5 )[::- 1 ]
1045+
1046+ self .run_operator ([Eq (g , Conj (f ))], language )
1047+
1048+ assert np .all (np .isclose (g .data , np .conj (f .data )))
0 commit comments