MyraMath
conjugate.h
Go to the documentation of this file.
1 // ========================================================================= //
2 // This file is part of MyraMath, copyright (c) 2014-2019 by Ryan A Chilton //
3 // and distributed by MyraCore, LLC. See LICENSE.txt for license terms. //
4 // ========================================================================= //
5 
6 #ifndef MYRAMATH_DENSE_CONJUGATE_H
7 #define MYRAMATH_DENSE_CONJUGATE_H
8 
14 #include <myramath/utility/detail/LIBPUBLIC.h>
16 
17 namespace myra {
18 
19 // Containers.
20 template<class Number> class Matrix;
21 template<class Number> class Vector;
22 template<class Number> class LowerMatrix;
23 template<class Number> class DiagonalMatrix;
24 
25 // Mutable ranges.
26 template<class Number> class MatrixRange;
27 template<class Number> class VectorRange;
28 template<class Number> class LowerMatrixRange;
29 template<class Number> class DiagonalMatrixRange;
30 
31 // Const ranges.
32 template<class Number> class CMatrixRange;
33 template<class Number> class CVectorRange;
34 template<class Number> class CLowerMatrixRange;
35 template<class Number> class CDiagonalMatrixRange;
36 
38 LIBPUBLIC Matrix<NumberS> conjugate(const CMatrixRange<NumberS>& A);
40 LIBPUBLIC Matrix<NumberD> conjugate(const CMatrixRange<NumberD>& A);
41 LIBPUBLIC Matrix<NumberC> conjugate(const CMatrixRange<NumberC>& A);
42 LIBPUBLIC Matrix<NumberZ> conjugate(const CMatrixRange<NumberZ>& A);
44 
46 LIBPUBLIC Vector<NumberS> conjugate(const CVectorRange<NumberS>& x);
48 LIBPUBLIC Vector<NumberD> conjugate(const CVectorRange<NumberD>& x);
49 LIBPUBLIC Vector<NumberC> conjugate(const CVectorRange<NumberC>& x);
50 LIBPUBLIC Vector<NumberZ> conjugate(const CVectorRange<NumberZ>& x);
52 
54 LIBPUBLIC LowerMatrix<NumberS> conjugate(const CLowerMatrixRange<NumberS>& L);
56 LIBPUBLIC LowerMatrix<NumberD> conjugate(const CLowerMatrixRange<NumberD>& L);
57 LIBPUBLIC LowerMatrix<NumberC> conjugate(const CLowerMatrixRange<NumberC>& L);
58 LIBPUBLIC LowerMatrix<NumberZ> conjugate(const CLowerMatrixRange<NumberZ>& L);
60 
62 LIBPUBLIC DiagonalMatrix<NumberS> conjugate(const CDiagonalMatrixRange<NumberS>& D);
64 LIBPUBLIC DiagonalMatrix<NumberD> conjugate(const CDiagonalMatrixRange<NumberD>& D);
65 LIBPUBLIC DiagonalMatrix<NumberC> conjugate(const CDiagonalMatrixRange<NumberC>& D);
66 LIBPUBLIC DiagonalMatrix<NumberZ> conjugate(const CDiagonalMatrixRange<NumberZ>& D);
68 
70 LIBPUBLIC void conjugate_inplace(const MatrixRange<NumberS>& A);
72 LIBPUBLIC void conjugate_inplace(const MatrixRange<NumberD>& A);
73 LIBPUBLIC void conjugate_inplace(const MatrixRange<NumberC>& A);
74 LIBPUBLIC void conjugate_inplace(const MatrixRange<NumberZ>& A);
76 
78 LIBPUBLIC void conjugate_inplace(const VectorRange<NumberS>& x);
80 LIBPUBLIC void conjugate_inplace(const VectorRange<NumberD>& x);
81 LIBPUBLIC void conjugate_inplace(const VectorRange<NumberC>& x);
82 LIBPUBLIC void conjugate_inplace(const VectorRange<NumberZ>& x);
84 
86 LIBPUBLIC void conjugate_inplace(const LowerMatrixRange<NumberS>& L);
88 LIBPUBLIC void conjugate_inplace(const LowerMatrixRange<NumberD>& L);
89 LIBPUBLIC void conjugate_inplace(const LowerMatrixRange<NumberC>& L);
90 LIBPUBLIC void conjugate_inplace(const LowerMatrixRange<NumberZ>& L);
92 
94 LIBPUBLIC void conjugate_inplace(const DiagonalMatrixRange<NumberS>& D);
96 LIBPUBLIC void conjugate_inplace(const DiagonalMatrixRange<NumberD>& D);
97 LIBPUBLIC void conjugate_inplace(const DiagonalMatrixRange<NumberC>& D);
98 LIBPUBLIC void conjugate_inplace(const DiagonalMatrixRange<NumberZ>& D);
100 
101 // ----------- Conjugating just one triangle.
102 
104 LIBPUBLIC void conjugate_triangle(const MatrixRange<NumberS>& A, char uplo);
106 LIBPUBLIC void conjugate_triangle(const MatrixRange<NumberD>& A, char uplo);
107 LIBPUBLIC void conjugate_triangle(const MatrixRange<NumberC>& A, char uplo);
108 LIBPUBLIC void conjugate_triangle(const MatrixRange<NumberZ>& A, char uplo);
110 
111 } // namespace
112 
113 #endif
Represents a const DiagonalMatrixRange.
Definition: conjugate.h:35
Tabulates the values of a square NxN diagonal matrix. Allows random access, but only on the diagonal...
Definition: conjugate.h:23
Represents a mutable LowerMatrixRange.
Definition: conjugate.h:28
Tabulates an IxJ matrix. Allows random access, has column major layout to be compatible with BLAS/LAP...
Definition: bdsqr.h:20
Represents a mutable VectorRange.
Definition: axpy.h:21
Definition: syntax.dox:1
Represents a const MatrixRange.
Definition: bothcat.h:22
Various utility functions/classes related to scalar Number types.
Represents a mutable MatrixRange.
Definition: conjugate.h:26
Tabulates a vector of length N, allows random access.
Definition: conjugate.h:21
Represents a const VectorRange.
Definition: axpy.h:20
Stores a lower triangular matrix in rectangular packed format.
Definition: conjugate.h:22
Represents a const LowerMatrixRange.
Definition: conjugate.h:34
Represents a mutable DiagonalMatrixRange.
Definition: conjugate.h:29