#include "full-storage.icc"
int
-Diagonal_storage::dim()const
+Diagonal_storage::dim() const
{
return band_.rows();
}
}
int
-Diagonal_storage::band_size_i()const
+Diagonal_storage::band_size_i() const
{
return (band_.cols()-1)/2;
}
for (int i=0; i < dim(); i++)
{
int k=-s;
- for ( ; k < -band_size_i(); k++)
+ for (; k < -band_size_i(); k++)
f.elem (i,k + s) = 0.0;
- for ( ; k <= band_size_i()&& k<=s ; k++)
+ for (; k <= band_size_i()&& k<=s ; k++)
f.elem (i, k + s) = band_.elem (i,k+ band_size_i());
for (; k <= s; k++)
f.elem (i, k + s) =0.0;
bool
-Diagonal_storage::band_elt_b (int i,int j)const
+Diagonal_storage::band_elt_b (int i,int j) const
{
return abs (i-j) <= band_size_i();
}
void
-Diagonal_storage::assert_valid (int i,int j)const
+Diagonal_storage::assert_valid (int i,int j) const
{
assert (band_elt_b (i,j));
assert (i >=0 && j >=0 && i < dim() && j < dim ());
Full_storage f (d, 2*band_size_i()+1);
for (int i=0; i < d && i < dim(); i++)
{
- for ( int k=0; k < 2*band_size_i(); k++)
+ for (int k=0; k < 2*band_size_i(); k++)
f.elem (i,k) = elem (i,k);
}
bool
-Diagonal_storage::mult_ok (int i,int)const
+Diagonal_storage::mult_ok (int i,int) const
{
return i < dim();
}
void
-Diagonal_storage::mult_next (int &i, int &j)const
+Diagonal_storage::mult_next (int &i, int &j) const
{
j++;
- if ( j < i - band_size_i())
+ if (j < i - band_size_i())
j = i- band_size_i();
- if ( j > i + band_size_i() || j >= dim ())
+ if (j > i + band_size_i() || j >= dim ())
{
i++;
j = 0 >? i - band_size_i();
}
bool
-Diagonal_storage::trans_ok (int ,int j)const
+Diagonal_storage::trans_ok (int ,int j) const
{
return j < dim();
}
void
-Diagonal_storage::trans_next (int &i, int& j)const
+Diagonal_storage::trans_next (int &i, int& j) const
{
i++;
- if ( i < j - band_size_i())
+ if (i < j - band_size_i())
i = j-band_size_i();
- if ( i >= dim() || i > j + band_size_i ())
+ if (i >= dim() || i > j + band_size_i ())
{
j++;
i = 0 >? j - band_size_i();
static Real nul_entry=0.0;
Real
-Diagonal_storage::elem (int i, int j)const
+Diagonal_storage::elem (int i, int j) const
{
- if (abs ( i-j) > band_size_i())
+ if (abs (i-j) > band_size_i())
return 0;
else
return band_.elem (i, j - i +band_size_i());
*/
assert (!nul_entry);
- if (abs ( i-j) > band_size_i())
+ if (abs (i-j) > band_size_i())
return nul_entry;
else
return band_.elem (i, j - i + band_size_i());
bool
Diagonal_storage::try_right_multiply (Matrix_storage*dest,
- const Matrix_storage*right)const
+ const Matrix_storage*right) const
{
- if ( right->name() != Diagonal_storage::static_name ())
+ if (right->name() != Diagonal_storage::static_name ())
return false;
const Diagonal_storage* right_diag = (Diagonal_storage const*)right;
int stopk = i + band_size_i() <? n-1 <? j + band2;
int relk = startk + band_size_i() -i;
Real sum =0.0;
- for ( int k = startk; k <= stopk; k++)
+ for (int k = startk; k <= stopk; k++)
sum += band_.elem (i, relk++) * right_diag->elem (k, j);
dest->elem (i, j) = sum;
set_band_size (band_i);
resize_dim (stor_l->dim());
- for ( int i=0,j=0; mult_ok (i,j); mult_next (i,j))
+ for (int i=0,j=0; mult_ok (i,j); mult_next (i,j))
band_.elem (i, j + band_i -i) = stor_l->elem (i,j);
}