6 #ifndef MYRAMATH_DENSE_LOWERMATRIX_H 7 #define MYRAMATH_DENSE_LOWERMATRIX_H 14 #include <myramath/utility/detail/LIBPUBLIC.h> 23 #ifdef MYRAMATH_ENABLE_CPP11 24 #include <initializer_list> 32 template<
int Arity,
class Number>
class Expression;
33 template<
class Number>
class LowerMatrix;
34 template<
class Number>
class Matrix;
37 template <
class Number>
class LIBPUBLIC LowerMatrix
47 explicit LowerMatrix(
int N);
50 explicit LowerMatrix(
const Expression<2,Number>& e);
53 LowerMatrix(
const LowerMatrix& that);
56 void swap(LowerMatrix<Number>& that);
58 #ifdef MYRAMATH_ENABLE_CPP11 59 LowerMatrix(LowerMatrix&& that);
64 LowerMatrix& operator = (LowerMatrix that);
67 explicit LowerMatrix(
const CLowerMatrixRange<Number>& that);
70 explicit LowerMatrix(
const CMatrixRange<Number>& that);
73 explicit LowerMatrix(InputStream& in);
76 void write(OutputStream& out)
const;
79 const LowerMatrix<Number>& add_const()
const;
90 uint64_t n_words()
const;
93 std::pair<int,int> blocking()
const;
98 CLowerMatrixRange<Number> range()
const;
100 LowerMatrixRange<Number> range() ;
104 operator CLowerMatrixRange<Number> ()
const;
106 operator LowerMatrixRange<Number> () ;
110 CMatrixRange<Number> rectangle()
const;
112 MatrixRange<Number> rectangle() ;
116 const Number& operator () (
int i,
int j)
const;
118 Number& operator () (
int i,
int j) ;
122 const Number& at(
int i,
int j)
const;
124 Number& at(
int i,
int j) ;
130 Matrix<Number> make_Matrix(
char op =
'N')
const;
131 void make_Matrix(
const MatrixRange<Number>& A,
char op =
'N')
const;
137 CMatrixRange<Number> range11 ()
const;
139 CMatrixRange<Number> range21 ()
const;
140 CMatrixRange<Number> range22t()
const;
144 MatrixRange<Number> range11 ();
146 MatrixRange<Number> range21 ();
147 MatrixRange<Number> range22t();
154 template<
class Functor>
void transform(
const Functor& f)
155 { this->range().transform(f); }
186 void operator *= (Number alpha);
189 void operator /= (Number alpha);
211 #ifdef MYRAMATH_ENABLE_CPP11 223 void initialize(
int in_N);
232 typedef std::vector<Number> Contents;
242 {
public:
typedef Number type; };
Number random()
Generate random real/complex Numbers, uniformly distributed over [-1,1].
Reflects Number trait for a Container, containers of Numbers (Matrix's, Vector's, etc) should special...
Definition: Number.h:55
Interface class for representing subranges of dense Matrix's.
Represents a mutable LowerMatrixRange.
Definition: conjugate.h:28
Range construct for a lower triangular matrix stored in rectangular packed format.
Represents a const MatrixRange.
Definition: bothcat.h:22
Various utility functions/classes related to scalar Number types.
void transform(const Functor &f)
Overwrites every A(i,j) in this LowerMatrix with f(A(i,j)).
Definition: LowerMatrix.h:154
Expression< 1, NumberC > make_complex(const Expression< 1, NumberS > &A)
Promotes a real Expression into a complex one.
Definition: functions_complex.cpp:122
Given an index (i,j,etc), returns a value.
Definition: arithmetic.h:19
Stores a lower triangular matrix in rectangular packed format.
Definition: conjugate.h:22
Represents a const LowerMatrixRange.
Definition: conjugate.h:34
float NumberS
Useful typedefs.
Definition: Number.h:21