35 #ifndef _BLAZE_MATH_CUSTOMMATRIX_H_ 36 #define _BLAZE_MATH_CUSTOMMATRIX_H_ 73 template<
typename Type
78 class Rand< CustomMatrix<Type,AF,PF,SO,RT> >
84 inline void randomize( CustomMatrix<Type,AF,PF,SO,RT>& matrix )
const;
86 template<
typename Arg >
87 inline void randomize( CustomMatrix<Type,AF,PF,SO,RT>& matrix,
const Arg&
min,
const Arg&
max )
const;
102 template<
typename Type
107 inline void Rand< CustomMatrix<Type,AF,PF,SO,RT> >
::randomize( CustomMatrix<Type,AF,PF,SO,RT>& matrix )
const 111 const size_t m( matrix.rows() );
112 const size_t n( matrix.columns() );
114 for(
size_t i=0UL; i<m; ++i ) {
115 for(
size_t j=0UL; j<n; ++j ) {
133 template<
typename Type
138 template<
typename Arg >
139 inline void Rand< CustomMatrix<Type,AF,PF,SO,RT> >
::randomize( CustomMatrix<Type,AF,PF,SO,RT>& matrix,
140 const Arg&
min,
const Arg&
max )
const 144 const size_t m( matrix.rows() );
145 const size_t n( matrix.columns() );
147 for(
size_t i=0UL; i<m; ++i ) {
148 for(
size_t j=0UL; j<n; ++j ) {
173 template<
typename Type
178 void makeSymmetric( CustomMatrix<Type,AF,PF,SO,RT>& matrix )
186 const size_t n( matrix.rows() );
188 for(
size_t i=0UL; i<n; ++i ) {
189 for(
size_t j=0UL; j<i; ++j ) {
191 matrix(j,i) = matrix(i,j);
212 template<
typename Type
218 void makeSymmetric( CustomMatrix<Type,AF,PF,SO,RT>& matrix,
const Arg&
min,
const Arg&
max )
226 const size_t n( matrix.rows() );
228 for(
size_t i=0UL; i<n; ++i ) {
229 for(
size_t j=0UL; j<i; ++j ) {
231 matrix(j,i) = matrix(i,j);
250 template<
typename Type
255 void makeHermitian( CustomMatrix<Type,AF,PF,SO,RT>& matrix )
261 using BT = UnderlyingBuiltin_t<Type>;
267 const size_t n( matrix.rows() );
269 for(
size_t i=0UL; i<n; ++i ) {
270 for(
size_t j=0UL; j<i; ++j ) {
272 matrix(j,i) =
conj( matrix(i,j) );
274 matrix(i,i) = rand<BT>();
293 template<
typename Type
299 void makeHermitian( CustomMatrix<Type,AF,PF,SO,RT>& matrix,
const Arg&
min,
const Arg&
max )
305 using BT = UnderlyingBuiltin_t<Type>;
311 const size_t n( matrix.rows() );
313 for(
size_t i=0UL; i<n; ++i ) {
314 for(
size_t j=0UL; j<i; ++j ) {
316 matrix(j,i) =
conj( matrix(i,j) );
335 template<
typename Type
340 void makePositiveDefinite( CustomMatrix<Type,AF,PF,SO,RT>& matrix )
350 const size_t n( matrix.rows() );
353 matrix *=
ctrans( matrix );
355 for(
size_t i=0UL; i<n; ++i ) {
356 matrix(i,i) += Type(n);
#define BLAZE_THROW_INVALID_ARGUMENT(MESSAGE)
Macro for the emission of a std::invalid_argument exception.This macro encapsulates the default way o...
Definition: Exception.h:235
Constraint on the data type.
decltype(auto) real(const DenseMatrix< MT, SO > &dm)
Returns a matrix containing the real part of each single element of dm.
Definition: DMatMapExpr.h:1392
void randomize(T &&value)
Randomization of a given variable.
Definition: Random.h:929
Implementation of a random number generator.
Header file for the implementation of a customizable matrix.
void randomize(T &value) const
Randomization of the given variable with a new value in the range .
Definition: Random.h:292
Namespace of the Blaze C++ math library.
Definition: Blaze.h:58
decltype(auto) ctrans(const DenseMatrix< MT, SO > &dm)
Returns the conjugate transpose matrix of dm.
Definition: DMatMapExpr.h:1364
Header file for the UnderlyingBuiltin type trait.
decltype(auto) min(const DenseMatrix< MT1, SO1 > &lhs, const DenseMatrix< MT2, SO2 > &rhs)
Computes the componentwise minimum of the dense matrices lhs and rhs.
Definition: DMatDMatMapExpr.h:1147
Header file for the exception macros of the math module.
Header file for the implementation of a dynamic MxN matrix.
decltype(auto) max(const DenseMatrix< MT1, SO1 > &lhs, const DenseMatrix< MT2, SO2 > &rhs)
Computes the componentwise maximum of the dense matrices lhs and rhs.
Definition: DMatDMatMapExpr.h:1179
Header file for the complete DynamicVector implementation.
Header file for the conjugate shim.
Header file for run time assertion macros.
#define BLAZE_CONSTRAINT_MUST_BE_NUMERIC_TYPE(T)
Constraint on the data type.In case the given data type T is not a numeric (integral or floating poin...
Definition: Numeric.h:61
bool isHermitian(const DenseMatrix< MT, SO > &dm)
Checks if the given dense matrix is Hermitian.
Definition: DenseMatrix.h:617
bool isSymmetric(const DenseMatrix< MT, SO > &dm)
Checks if the given dense matrix is symmetric.
Definition: DenseMatrix.h:539
Header file for all basic DenseMatrix functionality.
Header file for the complete IdentityMatrix implementation.
Header file for the real shim.
decltype(auto) conj(const DenseMatrix< MT, SO > &dm)
Returns a matrix containing the complex conjugate of each single element of dm.
Definition: DMatMapExpr.h:1326
bool isSquare(const Matrix< MT, SO > &matrix) noexcept
Checks if the given matrix is a square matrix.
Definition: Matrix.h:951
#define BLAZE_INTERNAL_ASSERT(expr, msg)
Run time assertion macro for internal checks.In case of an invalid run time expression, the program execution is terminated. The BLAZE_INTERNAL_ASSERT macro can be disabled by setting the BLAZE_USER_ASSERTION flag to zero or by defining NDEBUG during the compilation.
Definition: Assert.h:101
Header file for the complete ZeroMatrix implementation.