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 #ifndef TMV_BaseSymBandMatrix_H
24 #define TMV_BaseSymBandMatrix_H
25 
26 #include "tmv/TMV_BaseSymMatrix.h"
27 #include "tmv/TMV_BaseBandMatrix.h"
28 
29 namespace tmv {
30 
31     template <typename T>
32     class GenSymBandMatrix;
33 
34     template <typename T, int A=0>
35     class ConstSymBandMatrixView;
36 
37     template <typename T, int A=0>
38     class SymBandMatrixView;
39 
40     template <typename T, int A=0>
41     class SymBandMatrix;
42 
43     template <typename T, int A=0>
44     class HermBandMatrix;
45 
46     template <typename T>
47     class HermBandCHDiv;
48 
49     template <typename T>
50     class HermBandSVDiv;
51 
52     template <typename T>
53     class SymBandSVDiv;
54 
55     template <typename T, typename Tm>
56     class QuotXsB;
57 
58     template <typename T, typename T1, typename T2>
59     class ProdBB;
60 
61     template <typename T>
62     struct AssignableToSymBandMatrix :
63         virtual public AssignableToSymMatrix<T>,
64         virtual public AssignableToBandMatrix<T>
65     {
66         typedef TMV_RealType(T) RT;
67         typedef TMV_ComplexType(T) CT;
68         virtual void assignTosB(SymBandMatrixView<RT> m) const = 0;
69         virtual void assignTosB(SymBandMatrixView<CT> m) const = 0;
~AssignableToSymBandMatrixAssignableToSymBandMatrix70         virtual inline ~AssignableToSymBandMatrix() {}
71     };
72 
73 
74     template <typename T, int A>
TMV_Text(const SymBandMatrix<T,A> &)75     inline std::string TMV_Text(const SymBandMatrix<T,A>& )
76     {
77         return std::string("SymBandMatrix<") +
78             TMV_Text(T()) + "," + Attrib<A>::text() + ">";
79     }
80 
81     template <typename T, int A>
TMV_Text(const HermBandMatrix<T,A> &)82     inline std::string TMV_Text(const HermBandMatrix<T,A>& )
83     {
84         return std::string("HermBandMatrix<") +
85             TMV_Text(T()) + "," + Attrib<A>::text() + ">";
86     }
87 
88     template <typename T>
TMV_Text(const GenSymBandMatrix<T> &)89     inline std::string TMV_Text(const GenSymBandMatrix<T>& )
90     {
91         return std::string("GenSymBandMatrix<") + TMV_Text(T()) + ">";
92     }
93 
94     template <typename T, int A>
TMV_Text(const ConstSymBandMatrixView<T,A> &)95     inline std::string TMV_Text(const ConstSymBandMatrixView<T,A>& )
96     {
97         return std::string("ConstSymBandMatrixView<") +
98             TMV_Text(T()) + "," + Attrib<A>::text() + ">";
99     }
100 
101     template <typename T, int A>
TMV_Text(const SymBandMatrixView<T,A> &)102     inline std::string TMV_Text(const SymBandMatrixView<T,A>& )
103     {
104         return std::string("SymBandMatrixView<") +
105             TMV_Text(T()) + "," + Attrib<A>::text() + ">";
106     }
107 
108 }
109 
110 #endif
111