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
@@ -943,15 +943,15 @@ def run_operator(self, eqs, language):
943943 def test_devito_print (self ):
944944 f , _ , _ = self .setup_basic (np .complex64 )
945945
946- assert str (Re (f )) == 'Re (f(x))'
947- assert str (Im (f )) == 'Im (f(x))'
946+ assert str (Real (f )) == 'Real (f(x))'
947+ assert str (Imag (f )) == 'Imag (f(x))'
948948
949949 @pytest .mark .parametrize ('language' , ['C' , 'CXX' , 'CXXopenmp' ])
950950 def test_printing (self , language ):
951951 f , f_real , f_imag = self .setup_basic (np .complex64 )
952952
953- eq_re = Eq (f_real , Re (f ))
954- eq_im = Eq (f_imag , Im (f ))
953+ eq_re = Eq (f_real , Real (f ))
954+ eq_im = Eq (f_imag , Imag (f ))
955955
956956 with switchconfig (language = language ):
957957 op = Operator ([eq_re , eq_im ])
@@ -969,8 +969,8 @@ def test_printing(self, language):
969969 def test_trivial (self , language , dtype ):
970970 f , f_real , f_imag = self .setup_basic (dtype )
971971
972- eq_re = Eq (f_real , Re (f + 1. ))
973- eq_im = Eq (f_imag , Im (f + 1. ))
972+ eq_re = Eq (f_real , Real (f + 1. ))
973+ eq_im = Eq (f_imag , Imag (f + 1. ))
974974
975975 self .run_operator ([eq_re , eq_im ], language )
976976
@@ -984,8 +984,8 @@ def test_trivial(self, language, dtype):
984984 def test_trivial_imag (self , language , dtype ):
985985 f , f_real , f_imag = self .setup_basic (dtype )
986986
987- eq_re = Eq (f_real , Re (f + 1j ))
988- eq_im = Eq (f_imag , Im (f + 1j ))
987+ eq_re = Eq (f_real , Real (f + 1j ))
988+ eq_im = Eq (f_imag , Imag (f + 1j ))
989989
990990 self .run_operator ([eq_re , eq_im ], language )
991991
@@ -998,8 +998,8 @@ def test_trivial_imag(self, language, dtype):
998998 def test_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
@@ -1010,8 +1010,8 @@ def test_deriv(self, language):
10101010 def test_outer_deriv (self , language ):
10111011 f , f_real , f_imag = self .setup_basic (np .complex64 )
10121012
1013- eq_re = Eq (f_real , Re (f ).dx )
1014- eq_im = Eq (f_imag , Im (f ).dx )
1013+ eq_re = Eq (f_real , Real (f ).dx )
1014+ eq_im = Eq (f_imag , Imag (f ).dx )
10151015
10161016 self .run_operator ([eq_re , eq_im ], language )
10171017
@@ -1034,10 +1034,10 @@ def test_mul(self, language):
10341034 fh_re = Function (name = 'fh_re' , grid = grid )
10351035 fh_im = Function (name = 'fh_im' , grid = grid )
10361036
1037- eq_fg_re = Eq (fg_re , Re (f * g ))
1038- eq_fg_im = Eq (fg_im , Im (f * g ))
1039- eq_fh_re = Eq (fh_re , Re (f * h ))
1040- eq_fh_im = Eq (fh_im , Im (f * h ))
1037+ eq_fg_re = Eq (fg_re , Real (f * g ))
1038+ eq_fg_im = Eq (fg_im , Imag (f * g ))
1039+ eq_fh_re = Eq (fh_re , Real (f * h ))
1040+ eq_fh_im = Eq (fh_im , Imag (f * h ))
10411041
10421042 self .run_operator ([eq_fg_re , eq_fg_im , eq_fh_re , eq_fh_im ], language )
10431043
@@ -1046,3 +1046,15 @@ def test_mul(self, language):
10461046
10471047 assert np .all (np .isclose (fh_re .data , - 2. ))
10481048 assert np .all (np .isclose (fh_im .data , 2. ))
1049+
1050+ @pytest .mark .parametrize ('language' , ['C' , 'CXX' , 'CXXopenmp' ])
1051+ def test_conj (self , language ):
1052+ grid = Grid (shape = (5 ,))
1053+ f = Function (name = 'f' , grid = grid , dtype = np .complex64 )
1054+ g = Function (name = 'g' , grid = grid , dtype = np .complex64 )
1055+
1056+ f .data [:] = np .arange (5 ) + 1j * np .arange (5 )[::- 1 ]
1057+
1058+ self .run_operator ([Eq (g , Conj (f ))], language )
1059+
1060+ assert np .all (np .isclose (g .data , np .conj (f .data )))
0 commit comments