]> git.donarmstrong.com Git - lilypond.git/blobdiff - flower/diagonal-storage.cc
release: 0.1.13
[lilypond.git] / flower / diagonal-storage.cc
index fc812423e5649e2f873b31286badba15de29311e..090f308635db8cb261110fb5d7f4328011394836 100644 (file)
@@ -19,9 +19,9 @@
 #include "full-storage.icc"
 
 int
-Diagonal_storage::dim()const
+Diagonal_storage::dim() const
 {
-    return band_.rows();
+  return band_.rows();
 }
 
 Diagonal_storage::Diagonal_storage()
@@ -31,37 +31,38 @@ Diagonal_storage::Diagonal_storage()
 int
 Diagonal_storage::rows() const
 {
-    return band_.rows();
+  return band_.rows();
 }
 
 int
 Diagonal_storage::cols() const
 {
-    return band_.rows();
+  return band_.rows();
 }
 
 int
-Diagonal_storage::band_size_i()const
+Diagonal_storage::band_size_i() const
 {
-    return (band_.cols()-1)/2;
+  return (band_.cols()-1)/2;
 }
 
 void
-Diagonal_storage::set_band_size(int s)
+Diagonal_storage::set_band_size (int s)
 {
-    assert( s>=0);
-    Full_storage f(dim(), 2*s+1);
-    for (int i=0; i < dim(); i++) {
+  assert (s>=0);
+  Full_storage f (dim(), 2*s+1);
+  for (int i=0; i < dim(); i++) 
+    {
        int k=-s;
-       for ( ;  k < -band_size_i(); k++)
-           f.elem(i,k + s) = 0.0;
-       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;
+       for (;  k < -band_size_i(); k++)
+           f.elem (i,k + s) = 0.0;
+       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;
     }
 
-    band_ = f;
+  band_ = f;
 }
 
 
@@ -70,98 +71,101 @@ Diagonal_storage::set_band_size(int s)
   any takers?
   */
 void
-Diagonal_storage::insert_row(int )
+Diagonal_storage::insert_row (int)
 {
-    assert(false);
+  assert (false);
 }
 
 void
-Diagonal_storage::delete_row(int )
+Diagonal_storage::delete_row (int)
 {
-    assert(false);
+  assert (false);
 }
 
 void
-Diagonal_storage::resize(int,int)
+Diagonal_storage::resize (int,int)
 {
 }
 
 void
-Diagonal_storage::resize(int)
+Diagonal_storage::resize (int)
 {
 }
 
 void
-Diagonal_storage::delete_column(int )
+Diagonal_storage::delete_column (int)
 {
-    assert(false);
+  assert (false);
 }
-    
+  
 Diagonal_storage::~Diagonal_storage()
 {
 }
 
 
 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();
+  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());
+  assert (band_elt_b (i,j));
+  assert (i >=0 && j >=0 && i < dim() && j < dim ());
 }
 
 
 void
-Diagonal_storage::resize_dim(int d)
+Diagonal_storage::resize_dim (int d)
 {
-    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++)
-           f.elem(i,k) = elem(i,k);
+  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++)
+           f.elem (i,k) = elem (i,k);
     }
 
-    band_ = f;
+  band_ = f;
 }
 
 
 
 bool
-Diagonal_storage::mult_ok(int i,int )const
+Diagonal_storage::mult_ok (int i,int) const
 {
-    return i < dim();
+  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() 
+  j++;
+  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();
+  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())
+  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(); 
     }
@@ -170,26 +174,26 @@ Diagonal_storage::trans_next(int &i, int& j)const
 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());
+  else
+       return band_.elem (i, j - i +band_size_i());
 }
 
 Real &
-Diagonal_storage::elem(int i, int j)
+Diagonal_storage::elem (int i, int j)
 {
-    /*
-      if this fails, the previous call fucked up
-      */
-    assert(!nul_entry);
+  /*
+    if this fails, the previous call fucked up
+    */
+  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());
+  else
+       return band_.elem (i, j - i + band_size_i());
 }
 
 /*
@@ -197,49 +201,51 @@ Diagonal_storage::elem(int i, int j)
  */
 
 bool
-Diagonal_storage::try_right_multiply(Matrix_storage*dest,
-                                    const Matrix_storage*right)const
+Diagonal_storage::try_right_multiply (Matrix_storage*dest,
+                                    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 band2 = right_diag->band_size_i();
-    int n = dim();
-    /*
-      should check if dest is a Diagonal_storage of sufficient size too.
-     */
-    for (int i=0;  i < n; i++) {
-       for (int j = 0; j < n; j++) {
+  
+  const Diagonal_storage*  right_diag = (Diagonal_storage const*)right;
+  int band2 = right_diag->band_size_i();
+  int n = dim();
+  /*
+    should check if dest is a Diagonal_storage of sufficient size too.
+   */
+  for (int i=0;  i < n; i++) 
+    {
+       for (int j = 0; j < n; j++) 
+         {
            int startk = i - band_size_i() >? 0 >? j - band2;
            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++)
-               sum += band_.elem(i, relk++) * right_diag->elem(k, j);
-           dest->elem(i, j) = sum;
+           for (int k = startk; k <= stopk; k++)
+               sum += band_.elem (i, relk++) * right_diag->elem (k, j);
+           dest->elem (i, j) = sum;
            
-       }
+         }
     }
-    return true;
+  return true;
 }
 
 IMPLEMENT_IS_TYPE_B1(Diagonal_storage, Matrix_storage);
 
 
-Diagonal_storage::Diagonal_storage(Matrix_storage*stor_l, int band_i)
+Diagonal_storage::Diagonal_storage (Matrix_storage*stor_l, int band_i)
 {
-    set_band_size(band_i);
-    resize_dim(stor_l->dim());
+  set_band_size (band_i);
+  resize_dim (stor_l->dim());
 
-    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);
+  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);
 }
 
 void
 Diagonal_storage::OK() const
 {
-    band_.OK();
+  band_.OK();
 }
 
 IMPLEMENT_VIRTUAL_COPY_CONS(Diagonal_storage, Matrix_storage);