2 diagonal-storage.hh -- declare Diagonal_storage
4 source file of the Flower Library
6 (c) 1997--1998 Han-Wen Nienhuys <hanwen@stack.nl>
10 #ifndef DIAGONAL_STORAGE_HH
11 #define DIAGONAL_STORAGE_HH
12 #include "full-storage.hh"
15 Store a matrix with a single-band.
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;
33 void resize_dim (int);
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 DECLARE_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