6 #ifndef MYRAMATH_SPARSE_SPARSEMATRIXRANGE_H     7 #define MYRAMATH_SPARSE_SPARSEMATRIXRANGE_H    14 #include <myramath/MYRAMATH_EXPORT.h>    24 template<
int Arity, 
class Number> 
class Expression;
    26 template<
class Number> 
class Matrix;
    27 template<
class Number> 
class MatrixRange;
    29 template<
class Number> 
class SparseMatrix;
    30 template<
class Number> 
class CSparseMatrixRange;
    31 template<
class Number> 
class  SparseMatrixRange;
    34 template<
class T> 
class Array1;
    35 template<
class T> 
class Array2;
    65     SparseMatrixRange(
const int* in_Ao, 
const int* in_Ai, Number* in_Av, 
int I, 
int J);
    73     std::pair<int,int> size() 
const;
    76     int n_nonzeros() 
const;
    79     int n_nonzeros(
int j) 
const;
    82     bool test(
int i, 
int j) 
const;
    88     std::vector<int> pattern(
int j) 
const;
   120     Number* pointer(
int i, 
int j) 
const;
   123     Number& operator() (
int i, 
int j) 
const;
   126     Number& at(
int i, 
int j) 
const;
   152     Pair split_top(
int i) 
const;
   161     Pair split_bottom(
int i) 
const;
   181     Pair split_left(
int j) 
const;
   190     Pair split_right(
int j) 
const;
   196     template<
class Functor> 
void transform(
const Functor& f)
 const   199       Iterator b = this->begin();
   200       Iterator e = this->end();
   201       for (Iterator aij = b; aij != e; ++aij) 
   202         aij.value() = f(aij.value()); 
   210       Iterator b = this->begin();
   211       Iterator e = this->end();
   214         for (Iterator aij = b; aij != e; ++aij) 
   215           if (aij.i() <= aij.j())
   216             aij.value() = f(aij.value());
   218       else if (uplo == 
'L')
   220         for (Iterator aij = b; aij != e; ++aij) 
   221           if (aij.i() >= aij.j())
   222             aij.value() = f(aij.value());
   232       int N = II < JJ ? II : JJ;
   233       for (
int n = 0; n < N; ++n)
   235         Number* p = this->pointer(n,n);
   242     void operator *= (Number alpha) 
const;
   245     void operator /= (Number alpha) 
const;
   274   { 
public: 
typedef Number type; };
   277 template<
class Number> 
class MYRAMATH_EXPORT SparseMatrixIterator
   292     Number& value() 
const;
   301     void j_initialize(
int jj);
   304     int i_initialize(
int ii);
   320 template<
class Number> 
class MYRAMATH_EXPORT CSparseMatrixRange
   341     CSparseMatrixRange();
   344     CSparseMatrixRange(
const int* in_Ao, 
const int* in_Ai, 
const Number* in_Av, 
int I, 
int J);
   352     std::pair<int,int> size() 
const;
   355     int n_nonzeros() 
const;
   358     int n_nonzeros(
int j) 
const;
   361     bool test(
int i, 
int j) 
const;
   367     std::vector<int> pattern(
int j) 
const;
   396     const Number* pointer(
int i, 
int j) 
const;
   399     const Number& operator() (
int i, 
int j) 
const;
   402     const Number& at(
int i, 
int j) 
const;
   428     Pair split_top(
int i) 
const;
   437     Pair split_bottom(
int i) 
const;
   457     Pair split_left(
int j) 
const;
   466     Pair split_right(
int j) 
const;
   494   { 
public: 
typedef Number type; };
   497 template<
class Number> 
class MYRAMATH_EXPORT CSparseMatrixIterator
   512     const Number& value() 
const;
   521     void j_initialize(
int jj);
   524     int i_initialize(
int ii);
   535     friend class CSparseMatrixRange<Number>;
   540 MYRAMATH_EXPORT std::ostream& operator << (std::ostream& out, const CSparseMatrixRange<NumberS>& A);
   542 MYRAMATH_EXPORT std::ostream& operator << (std::ostream& out, const CSparseMatrixRange<NumberD>& A);
   543 MYRAMATH_EXPORT std::ostream& operator << (std::ostream& out, const CSparseMatrixRange<NumberC>& A);
   544 MYRAMATH_EXPORT std::ostream& operator << (std::ostream& out, const CSparseMatrixRange<NumberZ>& A);
 Container of values, allows random (i,j) access. 
Definition: Array2.h:30
Reflects Number trait for a Container, containers of Numbers (Matrix's, Vector's, etc) should special...
Definition: Number.h:55
Represents a mutable SparseMatrixRange. 
Definition: conjugate.h:21
const int * Ao
---------— Data members, all public ----------------— 
Definition: SparseMatrixRange.h:46
const int * Ai
---------— Data members, all public ----------------— 
Definition: SparseMatrixRange.h:47
void transform_triangle(const Functor &f, char uplo) const
Overwrites every A(i,j) in the 'U'pper or 'L'ower triangle of this SparseMatrixRange with f(A(i...
Definition: SparseMatrixRange.h:207
Tabulates an IxJ matrix. Allows random access, has column major layout to be compatible with BLAS/LAP...
Definition: bdsqr.h:20
Number * Av
---------— Data members, all public ----------------— 
Definition: SparseMatrixRange.h:48
An iterator over a SparseMatrixRange. 
Definition: SparseMatrixRange.h:33
void transform(const Functor &f) const
Overwrites every A(i,j) in this SparseMatrixRange with f(A(i,j)). 
Definition: SparseMatrixRange.h:196
Represents an immutable view of a Pattern. 
Definition: PatternRange.h:31
Abstraction layer, serializable objects write themselves to these. 
Definition: Streams.h:39
Various utility functions/classes related to scalar Number types. 
Represents a mutable MatrixRange. 
Definition: conjugate.h:26
const int * Ai
---------— Data members, all public ----------------— 
Definition: SparseMatrixRange.h:328
Represents a const SparseMatrixRange. 
Definition: bothcat.h:24
const int * Ao
---------— Data members, all public ----------------— 
Definition: SparseMatrixRange.h:327
int I1
---------— Data members, all public ----------------— 
Definition: SparseMatrixRange.h:332
int J1
---------— Data members, all public ----------------— 
Definition: SparseMatrixRange.h:52
bool sliced
---------— Data members, all public ----------------— 
Definition: SparseMatrixRange.h:53
const Number * Av
---------— Data members, all public ----------------— 
Definition: SparseMatrixRange.h:329
Container of values, allows random (i) access. 
Definition: Array1.h:32
bool sliced
---------— Data members, all public ----------------— 
Definition: SparseMatrixRange.h:334
An iterator over a CSparseMatrixRange. 
Definition: SparseMatrixRange.h:32
void transform_diagonal(const Functor &f) const
Overwrites every A(n,n) on the diagonal of this SparseMatrixRange with f(A(n,n)). ...
Definition: SparseMatrixRange.h:228
Stores an IxJ matrix A in compressed sparse column format. 
Definition: bothcat.h:23
int I1
---------— Data members, all public ----------------— 
Definition: SparseMatrixRange.h:51
int J1
---------— Data members, all public ----------------— 
Definition: SparseMatrixRange.h:333
Represents a const intRange. 
Definition: intRange.h:142