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