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