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 //---------------------------------------------------------------------------
24 //
25 // This file defines the TMV SymDivider class.
26 //
27 // It adds Inverse(SymMatrix) capability to the regular Divier class.
28 //
29 
30 #ifndef TMV_SymDivider_H
31 #define TMV_SymDivider_H
32 
33 #include "tmv/TMV_Divider.h"
34 #include "tmv/TMV_BaseSymMatrix.h"
35 
36 namespace tmv {
37 
38 #define RT TMV_RealType(T)
39 #define CT TMV_ComplexType(T)
40 
41     template <typename T>
42     class SymDivider : public Divider<T>
43     {
44 
45     public :
46 
SymDivider()47         SymDivider() {}
~SymDivider()48         virtual ~SymDivider() {}
49 
50         using Divider<T>::makeInverse;
51         virtual void makeInverse(SymMatrixView<RT> sinv) const =0;
52         virtual void makeInverse(SymMatrixView<CT> sinv) const =0;
53     };
54 
55     template <typename T>
TMV_Text(const SymDivider<T> & d)56     inline std::string TMV_Text(const SymDivider<T>& d)
57     { return std::string("SymDivider<")+tmv::TMV_Text(T())+">"; }
58 
59 #undef RT
60 #undef CT
61 
62 } // namespace tmv
63 
64 #endif
65