2 diagonal-storage.hh -- declare Diagonal_storage
4 source file of the Flower Library
6 (c) 1997 Han-Wen Nienhuys <hanwen@stack.nl>
10 #ifndef DIAGONAL_STORAGE_HH
11 #define DIAGONAL_STORAGE_HH
12 #include "full-storage.hh"
15 Store a single-band matrix;
19 Diagonal_storage(i,j) == band_(i, j-i + band_size_i())
21 band_.cols() == 2 * band_size_i() + 1
24 class Diagonal_storage : public Matrix_storage {
28 void set_band_size(int b);
29 int band_size_i()const;
31 void assert_valid(int i, int j) const;
32 bool band_elt_b(int,int )const;
35 virtual void resize_rows(int d) { resize_dim (d); }
36 virtual void resize_cols(int d) { resize_dim(d); }
37 virtual int dim() const;
39 virtual int rows() const ;
40 virtual int cols() const ;
43 virtual void resize(int i, int j);
44 virtual void resize(int i);
46 virtual Real& elem(int i,int j);
47 virtual Real elem(int i, int j) const;
48 Diagonal_storage(Matrix_storage* , int band_i);
52 virtual void insert_row(int k);
53 virtual void delete_row(int k);
54 virtual void delete_column(int k);
57 virtual bool mult_ok(int i, int j)const;
58 virtual void mult_next(int &i, int &j) const ;
59 virtual bool trans_ok(int i, int j) const;
60 virtual void trans_next(int &i, int &j) const;
61 VIRTUAL_COPY_CONS(Diagonal_storage, Matrix_storage);
62 DECLARE_MY_RUNTIME_TYPEINFO;
63 virtual bool try_right_multiply(Matrix_storage * dest, Matrix_storage const *)const;
65 #endif // DIAGONAL_STORAGE_HH