35 #ifndef _BLAZE_MATH_DYNAMICMATRIX_H_ 36 #define _BLAZE_MATH_DYNAMICMATRIX_H_ 72 template<
typename Type
74 class Rand< DynamicMatrix<Type,SO> >
80 inline const DynamicMatrix<Type,SO>
generate(
size_t m,
size_t n )
const;
82 template<
typename Arg >
83 inline const DynamicMatrix<Type,SO>
generate(
size_t m,
size_t n,
const Arg&
min,
const Arg&
max )
const;
90 inline void randomize( DynamicMatrix<Type,SO>& matrix )
const;
92 template<
typename Arg >
93 inline void randomize( DynamicMatrix<Type,SO>& matrix,
const Arg&
min,
const Arg&
max )
const;
109 template<
typename Type
111 inline const DynamicMatrix<Type,SO>
112 Rand< DynamicMatrix<Type,SO> >::generate(
size_t m,
size_t n )
const 114 DynamicMatrix<Type,SO> matrix( m, n );
132 template<
typename Type
134 template<
typename Arg >
135 inline const DynamicMatrix<Type,SO>
136 Rand< DynamicMatrix<Type,SO> >::generate(
size_t m,
size_t n,
const Arg&
min,
const Arg&
max )
const 138 DynamicMatrix<Type,SO> matrix( m, n );
153 template<
typename Type
155 inline void Rand< DynamicMatrix<Type,SO> >
::randomize( DynamicMatrix<Type,SO>& matrix )
const 159 const size_t m( matrix.rows() );
160 const size_t n( matrix.columns() );
162 for(
size_t i=0UL; i<m; ++i ) {
163 for(
size_t j=0UL; j<n; ++j ) {
181 template<
typename Type
183 template<
typename Arg >
184 inline void Rand< DynamicMatrix<Type,SO> >
::randomize( DynamicMatrix<Type,SO>& matrix,
185 const Arg&
min,
const Arg&
max )
const 189 const size_t m( matrix.rows() );
190 const size_t n( matrix.columns() );
192 for(
size_t i=0UL; i<m; ++i ) {
193 for(
size_t j=0UL; j<n; ++j ) {
218 template<
typename Type
220 void makeSymmetric( DynamicMatrix<Type,SO>& matrix )
228 const size_t n( matrix.rows() );
230 for(
size_t i=0UL; i<n; ++i ) {
231 for(
size_t j=0UL; j<i; ++j ) {
233 matrix(j,i) = matrix(i,j);
254 template<
typename Type
257 void makeSymmetric( DynamicMatrix<Type,SO>& matrix,
const Arg&
min,
const Arg&
max )
265 const size_t n( matrix.rows() );
267 for(
size_t i=0UL; i<n; ++i ) {
268 for(
size_t j=0UL; j<i; ++j ) {
270 matrix(j,i) = matrix(i,j);
289 template<
typename Type
291 void makeHermitian( DynamicMatrix<Type,SO>& matrix )
297 using BT = UnderlyingBuiltin_t<Type>;
303 const size_t n( matrix.rows() );
305 for(
size_t i=0UL; i<n; ++i ) {
306 for(
size_t j=0UL; j<i; ++j ) {
308 matrix(j,i) =
conj( matrix(i,j) );
310 matrix(i,i) = rand<BT>();
329 template<
typename Type
332 void makeHermitian( DynamicMatrix<Type,SO>& matrix,
const Arg&
min,
const Arg&
max )
338 using BT = UnderlyingBuiltin_t<Type>;
344 const size_t n( matrix.rows() );
346 for(
size_t i=0UL; i<n; ++i ) {
347 for(
size_t j=0UL; j<i; ++j ) {
349 matrix(j,i) =
conj( matrix(i,j) );
368 template<
typename Type
370 void makePositiveDefinite( DynamicMatrix<Type,SO>& matrix )
380 const size_t n( matrix.rows() );
383 matrix *=
ctrans( matrix );
385 for(
size_t i=0UL; i<n; ++i ) {
386 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.
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
T generate() const
Generation of a random value in the range .
Definition: Random.h:252
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.