17#ifndef __B2LINEAR_ALGEBRA_DEF_H__
18#define __B2LINEAR_ALGEBRA_DEF_H__
22namespace b2000::b2linalg {
26template <
typename T1,
typename T2>
28template <
typename T1,
typename T2>
30template <
typename T1,
typename T2>
35struct Vdense_constref;
37struct Vincrement_constref;
38struct Vincrement_scale_constref;
40struct Vindex_constref;
41struct Vindex_scale_constref;
43struct Vcompressed_scale_constref;
45template <
typename T,
typename STORAGE = Vdense>
51struct Mrectangle_constref;
52struct Mrectangle_increment_ref;
53struct Mrectangle_increment_constref;
54struct Mrectangle_increment_st_constref;
57struct Mupper_packed_ref;
58struct Mupper_packed_constref;
60struct Mlower_packed_ref;
61struct Mlower_packed_constref;
64struct Mpacked_st_constref;
66struct Mcompressed_col;
67struct Mcompressed_col_ref;
68struct Mcompressed_col_constref;
69struct Mcompressed_col_st_constref;
71struct Mcompressed_col_update_inv;
72struct Mcompressed_col_update_sub_ref;
73struct Mcompressed_col_update_inv_ext;
75struct Msym_compressed_col;
76struct Msym_compressed_col_ref;
77struct Msym_compressed_col_constref;
78struct Msym_compressed_col_st_constref;
80struct Msym_compressed_col_update_inv;
81struct Msym_compressed_col_update_sub_ref;
82struct Msym_compressed_col_update_inv_ext;
83template <
typename MTYPE>
84struct Minverse_constref;
85template <
typename MTYPE>
86struct Minverse_ext_constref;
87template <
typename ATYPE,
typename BTYPE>
89template <
typename ATYPE,
typename BTYPE>
90struct PolyEigenvector;
91template <
typename MTYPE>
92struct Mstructured_constref;
93template <
typename MTYPE,
typename INDEX1,
typename INDEX2>
96template <
typename T,
typename STORAGE = Mrectangle>
100 typedef Mrectangle dense;
101 typedef Mcompressed_col sparse;
102 typedef Mcompressed_col_update_inv sparse_inversible;
103 typedef Mcompressed_col_update_inv_ext sparse_inversible_ext;
104 static const bool symmetric =
false;
108 typedef Mpacked dense;
109 typedef Msym_compressed_col sparse;
110 typedef Msym_compressed_col_update_inv sparse_inversible;
111 typedef Msym_compressed_col_update_inv_ext sparse_inversible_ext;
112 static const bool symmetric =
true;
115enum SparseMatrixConnectivityType {
116 sparse_matrix_connectivity_unknown = 0,
117 sparse_matrix_connectivity_2D = 1,
118 sparse_matrix_connectivity_3D = 2,
119 sparse_matrix_connectivity_2D_and_3D = 3
123class TemporaryBuffer;
126 template <typename T_FRIEND, typename STORAGE_FRIEND> \
127 friend class Vector; \
128 template <typename T_FRIEND, typename STORAGE_FRIEND> \