6 #ifndef MYRAMATH_DENSE_MATRIX_H     7 #define MYRAMATH_DENSE_MATRIX_H    14 #include <myramath/MYRAMATH_EXPORT.h>    23 #ifdef MYRAMATH_ENABLE_CPP11    24 #include <initializer_list>    33 template<
int Arity, 
class Number> 
class Expression;
    34 template<
class Number> 
class Matrix;
    35 template<
class T> 
class Array1;
    36 template<
class T> 
class Array2;
    39 template<
class Number> 
class MYRAMATH_EXPORT Matrix
    53     explicit Matrix(
int I, 
int J);
    55     explicit Matrix(std::pair<int,int> IJ);
    67 #ifdef MYRAMATH_ENABLE_CPP11    93     std::pair<int,int> size() 
const;
    96     uint64_t n_words() 
const;
   131     const Number& operator () (
int i, 
int j) 
const;
   133           Number& operator () (
int i, 
int j)      ;
   137     const Number& at(
int i, 
int j) 
const;
   139           Number& at(
int i, 
int j)      ;
   175     CPair split_top(
int i) 
const;
   177      Pair split_top(
int i)      ;
   193     CPair split_bottom(
int i) 
const;
   195      Pair split_bottom(
int i)      ;
   231     CPair split_left(
int j) 
const;
   233      Pair split_left(
int j)      ;
   249     CPair split_right(
int j) 
const;
   251      Pair split_right(
int j)      ;
   258     template<
class Functor> 
void transform(
const Functor& f)
   259       { this->range().transform(f); }
   264       { this->range().transform_triangle(f,uplo); }
   269       { this->range().transform_diagonal(f); }
   297     void operator *= (Number alpha);
   300     void operator /= (Number alpha);
   322 #ifdef MYRAMATH_ENABLE_CPP11   323     static Matrix<Number> fill_cmajor(
int I, 
int J, std::initializer_list<Number> list);  
   325     static Matrix<Number> fill_rmajor(
int I, 
int J, std::initializer_list<Number> list);  
   334     void initialize(
int in_I, 
int in_J);
   337     size_t offset(
int i, 
int j) 
const;
   344     typedef std::vector<Number> Contents;
   351   { 
public: 
typedef Number type; };
 Container of values, allows random (i,j) access. 
Definition: Array2.h:30
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
void transform(const Functor &f)
Overwrites every A(i,j) in this Matrix with f(A(i,j)). 
Definition: Matrix.h:258
Interface class for representing subranges of dense Matrix's. 
Interface class for representing subranges of dense Vector's. 
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
void transform_triangle(const Functor &f, char uplo)
Overwrites every A(i,j) in the 'U'pper or 'L'ower triangle of this Matrix with f(A(i,j)). 
Definition: Matrix.h:263
Represents a const MatrixRange. 
Definition: bothcat.h:22
Abstraction layer, serializable objects write themselves to these. 
Definition: Streams.h:39
Various utility functions/classes related to scalar Number types. 
std::pair< MatrixRange< Number >, MatrixRange< Number > > Pair
Useful typedefs. 
Definition: Matrix.h:44
Represents a mutable MatrixRange. 
Definition: conjugate.h:26
void transform_diagonal(const Functor &f)
Overwrites every A(ij,ij) on the diagonal of this Matrix with f(A(ij,ij)). 
Definition: Matrix.h:268
Represents a const VectorRange. 
Definition: axpy.h:20
Container of values, allows random (i) access. 
Definition: Array1.h:32
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
Represents a const intRange. 
Definition: intRange.h:142
float NumberS
Useful typedefs. 
Definition: Number.h:21