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 , switchconfig )
10+ Min , Max , Real , Imag , Conj , switchconfig )
1111from devito .finite_differences .differentiable import SafeInv , Weights
1212from devito .ir import Expression , FindNodes , ccode
1313from devito .symbolics import (retrieve_functions , retrieve_indexed , evalrel , # noqa
@@ -893,15 +893,15 @@ def run_operator(self, eqs, language):
893893 def test_devito_print (self ):
894894 f , _ , _ = self .setup_basic (np .complex64 )
895895
896- assert str (Re (f )) == 'Re (f(x))'
897- assert str (Im (f )) == 'Im (f(x))'
896+ assert str (Real (f )) == 'Real (f(x))'
897+ assert str (Imag (f )) == 'Imag (f(x))'
898898
899899 @pytest .mark .parametrize ('language' , ['C' , 'CXX' , 'CXXopenmp' ])
900900 def test_printing (self , language ):
901901 f , f_real , f_imag = self .setup_basic (np .complex64 )
902902
903- eq_re = Eq (f_real , Re (f ))
904- eq_im = Eq (f_imag , Im (f ))
903+ eq_re = Eq (f_real , Real (f ))
904+ eq_im = Eq (f_imag , Imag (f ))
905905
906906 with switchconfig (language = language ):
907907 op = Operator ([eq_re , eq_im ])
@@ -919,8 +919,8 @@ def test_printing(self, language):
919919 def test_trivial (self , language , dtype ):
920920 f , f_real , f_imag = self .setup_basic (dtype )
921921
922- eq_re = Eq (f_real , Re (f + 1. ))
923- eq_im = Eq (f_imag , Im (f + 1. ))
922+ eq_re = Eq (f_real , Real (f + 1. ))
923+ eq_im = Eq (f_imag , Imag (f + 1. ))
924924
925925 self .run_operator ([eq_re , eq_im ], language )
926926
@@ -934,8 +934,8 @@ def test_trivial(self, language, dtype):
934934 def test_trivial_imag (self , language , dtype ):
935935 f , f_real , f_imag = self .setup_basic (dtype )
936936
937- eq_re = Eq (f_real , Re (f + 1j ))
938- eq_im = Eq (f_imag , Im (f + 1j ))
937+ eq_re = Eq (f_real , Real (f + 1j ))
938+ eq_im = Eq (f_imag , Imag (f + 1j ))
939939
940940 self .run_operator ([eq_re , eq_im ], language )
941941
@@ -948,8 +948,8 @@ def test_trivial_imag(self, language, dtype):
948948 def test_deriv (self , language ):
949949 f , f_real , f_imag = self .setup_basic (np .complex64 )
950950
951- eq_re = Eq (f_real , Re (f .dx ))
952- eq_im = Eq (f_imag , Im (f .dx ))
951+ eq_re = Eq (f_real , Real (f .dx ))
952+ eq_im = Eq (f_imag , Imag (f .dx ))
953953
954954 self .run_operator ([eq_re , eq_im ], language )
955955
@@ -960,8 +960,8 @@ def test_deriv(self, language):
960960 def test_outer_deriv (self , language ):
961961 f , f_real , f_imag = self .setup_basic (np .complex64 )
962962
963- eq_re = Eq (f_real , Re (f ).dx )
964- eq_im = Eq (f_imag , Im (f ).dx )
963+ eq_re = Eq (f_real , Real (f ).dx )
964+ eq_im = Eq (f_imag , Imag (f ).dx )
965965
966966 self .run_operator ([eq_re , eq_im ], language )
967967
@@ -984,10 +984,10 @@ def test_mul(self, language):
984984 fh_re = Function (name = 'fh_re' , grid = grid )
985985 fh_im = Function (name = 'fh_im' , grid = grid )
986986
987- eq_fg_re = Eq (fg_re , Re (f * g ))
988- eq_fg_im = Eq (fg_im , Im (f * g ))
989- eq_fh_re = Eq (fh_re , Re (f * h ))
990- eq_fh_im = Eq (fh_im , Im (f * h ))
987+ eq_fg_re = Eq (fg_re , Real (f * g ))
988+ eq_fg_im = Eq (fg_im , Imag (f * g ))
989+ eq_fh_re = Eq (fh_re , Real (f * h ))
990+ eq_fh_im = Eq (fh_im , Imag (f * h ))
991991
992992 self .run_operator ([eq_fg_re , eq_fg_im , eq_fh_re , eq_fh_im ], language )
993993
@@ -996,3 +996,15 @@ def test_mul(self, language):
996996
997997 assert np .all (np .isclose (fh_re .data , - 2. ))
998998 assert np .all (np .isclose (fh_im .data , 2. ))
999+
1000+ @pytest .mark .parametrize ('language' , ['C' , 'CXX' , 'CXXopenmp' ])
1001+ def test_conj (self , language ):
1002+ grid = Grid (shape = (5 ,))
1003+ f = Function (name = 'f' , grid = grid , dtype = np .complex64 )
1004+ g = Function (name = 'g' , grid = grid , dtype = np .complex64 )
1005+
1006+ f .data [:] = np .arange (5 ) + 1j * np .arange (5 )[::- 1 ]
1007+
1008+ self .run_operator ([Eq (g , Conj (f ))], language )
1009+
1010+ assert np .all (np .isclose (g .data , np .conj (f .data )))
0 commit comments