ckcomplex: define operators - and *
authorRamprasad Venkataraman <ramv@illinois.edu>
Mon, 7 Jun 2010 17:19:01 +0000 (12:19 -0500)
committerRamprasad Venkataraman <ramv@illinois.edu>
Mon, 7 Jun 2010 17:19:01 +0000 (12:19 -0500)
Quickly add just the operators required by OpenAtom. However, the real need is to
deprecate the current ckcomplex and provide a substitute to std::complex based on
autconfig tests.

As a side note, there is no charm or openatom code that defines USE_FFTW_DECLS that
ckcomplex checks for. If the other major apps are also in the same boat, then this macro
can be nuked.

src/util/ckcomplex.h

index 7a66f8847e0d37af9d71df1fbd19df13dcd4328c..520e0b513d916464c7c3908aa8dab7789e6a7ab5 100644 (file)
@@ -29,6 +29,11 @@ struct ckcomplex {
       return ckcomplex(re+a.re,im+a.im); 
     }
 
+    // note: not a member
+    inline friend ckcomplex operator-(ckcomplex lhs, ckcomplex rhs) {
+      return ckcomplex(lhs.re - rhs.re, lhs.im - rhs.im);
+    }
+
     inline ckcomplex conj(void) { 
         return ckcomplex(re, -im); 
     }
@@ -37,6 +42,11 @@ struct ckcomplex {
       re+=a.re; im+=a.im; 
     }
     
+    // note: not a member
+    inline friend ckcomplex operator*(RealType lhs, ckcomplex rhs) {
+      return ckcomplex(rhs.re*lhs, rhs.im*lhs);
+    }
+
     inline ckcomplex operator*(RealType a) { 
       return ckcomplex(re*a, im*a); 
     }