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> \