1 /////////////////////////////////////////////////////////////////////////////// 2 // // 3 // The Template Matrix/Vector Library for C++ was created by Mike Jarvis // 4 // Copyright (C) 1998 - 2016 // 5 // All rights reserved // 6 // // 7 // The project is hosted at https://code.google.com/p/tmv-cpp/ // 8 // where you can find the current version and current documention. // 9 // // 10 // For concerns or problems with the software, Mike may be contacted at // 11 // mike_jarvis17 [at] gmail. // 12 // // 13 // This software is licensed under a FreeBSD license. The file // 14 // TMV_LICENSE should have bee included with this distribution. // 15 // It not, you can get a copy from https://code.google.com/p/tmv-cpp/. // 16 // // 17 // Essentially, you can use this software however you want provided that // 18 // you include the TMV_LICENSE file in any distribution that uses it. // 19 // // 20 /////////////////////////////////////////////////////////////////////////////// 21 22 23 // Need to define the following with #define statements. 24 // (The given definition is for a regular Matrix. Modify as 25 // appropriate for the various other matrices.) 26 // 27 // #define GENMATRIX GenMatrix 28 // #define QUOTXM QuotXM 29 30 #ifndef X 31 #define X 32 #endif 33 34 #ifndef Y 35 #define Y 36 #endif 37 38 #ifndef CT 39 #define CT std::complex<T> 40 #endif 41 #ifndef CCT 42 #define CCT ConjRef<std::complex<T> > 43 #endif 44 #ifndef VCT 45 #define VCT VarConjRef<std::complex<T> > 46 #endif 47 48 #ifndef GETM 49 #define GETM .getM() 50 #endif 51 52 // x/m 53 54 template <typename T Y> 55 inline QUOTXM<T,T X> operator/(T x, const GENMATRIX<T X>& m) 56 { return QUOTXM<T,T X>(x,m); } 57 58 template <typename T Y> 59 inline QUOTXM<CT,T X> operator/(CT x, const GENMATRIX<T X>& m) 60 { return QUOTXM<CT,T X>(x,m); } 61 62 template <typename T Y> 63 inline QUOTXM<CT,T X> operator/(CCT x, const GENMATRIX<T X>& m) 64 { return QUOTXM<CT,T X>(CT(x),m); } 65 66 template <typename T Y> 67 inline QUOTXM<CT,T X> operator/(VCT x, const GENMATRIX<T X>& m) 68 { return QUOTXM<CT,T X>(CT(x),m); } 69 70 template <typename T Y> 71 inline QUOTXM<CT,CT X> operator/(T x, const GENMATRIX<CT X>& m) 72 { return QUOTXM<CT,CT X>(CT(x),m); } 73 74 template <typename T Y> 75 inline QUOTXM<CT,CT X> operator/(CCT x, const GENMATRIX<CT X>& m) 76 { return QUOTXM<CT,CT X>(CT(x),m); } 77 78 template <typename T Y> 79 inline QUOTXM<CT,CT X> operator/(VCT x, const GENMATRIX<CT X>& m) 80 { return QUOTXM<CT,CT X>(CT(x),m); } 81 82 // x%m 83 84 template <typename T Y> 85 inline QUOTXM<T,T X> operator%(T x, const GENMATRIX<T X>& m) 86 { return QUOTXM<T,T X>(x,m); } 87 88 template <typename T Y> 89 inline QUOTXM<CT,T X> operator%(CT x, const GENMATRIX<T X>& m) 90 { return QUOTXM<CT,T X>(x,m); } 91 92 template <typename T Y> 93 inline QUOTXM<CT,T X> operator%(CCT x, const GENMATRIX<T X>& m) 94 { return QUOTXM<CT,T X>(CT(x),m); } 95 96 template <typename T Y> 97 inline QUOTXM<CT,T X> operator%(VCT x, const GENMATRIX<T X>& m) 98 { return QUOTXM<CT,T X>(CT(x),m); } 99 100 template <typename T Y> 101 inline QUOTXM<CT,CT X> operator%(T x, const GENMATRIX<CT X>& m) 102 { return QUOTXM<CT,CT X>(CT(x),m); } 103 104 template <typename T Y> 105 inline QUOTXM<CT,CT X> operator%(CCT x, const GENMATRIX<CT X>& m) 106 { return QUOTXM<CT,CT X>(CT(x),m); } 107 108 template <typename T Y> 109 inline QUOTXM<CT,CT X> operator%(VCT x, const GENMATRIX<CT X>& m) 110 { return QUOTXM<CT,CT X>(CT(x),m); } 111 112 113 #undef X 114 #undef Y 115 #undef GETM 116