00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012 #ifndef MTL_ADJOINT_INCLUDE
00013 #define MTL_ADJOINT_INCLUDE
00014
00015 #include <boost/numeric/mtl/operation/hermitian.hpp>
00016
00017 namespace mtl { namespace matrix {
00018
00019 namespace traits {
00020
00021 template <typename LinOp>
00022 struct adjoint
00023 {
00024 typedef mtl::matrix::hermitian_view<LinOp> type;
00025 type operator()(const LinOp& A)
00026 {
00027 return hermitian(A);
00028 }
00029 };
00030 }
00031
00033 template <typename LinOp>
00034 typename traits::adjoint<LinOp>::type
00035 inline adjoint(const LinOp& A)
00036 {
00037 return traits::adjoint<LinOp>()(A);
00038 }
00039
00040 }}
00041
00042 #endif // MTL_ADJOINT_INCLUDE