toon-members
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Toon-members] TooN Cholesky.h


From: Ethan Eade
Subject: [Toon-members] TooN Cholesky.h
Date: Tue, 23 Jan 2007 21:37:08 +0000

CVSROOT:        /cvsroot/toon
Module name:    TooN
Changes by:     Ethan Eade <ethaneade>  07/01/23 21:37:08

Modified files:
        .              : Cholesky.h 

Log message:
        Fixed implementation of Backsub_LT so that things don't break with
        Cholesky<1>.  Thanks to James for pointing out the problem.

CVSWeb URLs:
http://cvs.savannah.gnu.org/viewcvs/TooN/Cholesky.h?cvsroot=toon&r1=1.13&r2=1.14

Patches:
Index: Cholesky.h
===================================================================
RCS file: /cvsroot/toon/TooN/Cholesky.h,v
retrieving revision 1.13
retrieving revision 1.14
diff -u -b -r1.13 -r1.14
--- Cholesky.h  15 Jan 2007 18:00:53 -0000      1.13
+++ Cholesky.h  23 Jan 2007 21:37:08 -0000      1.14
@@ -65,7 +65,7 @@
        template <int N, int I=N> struct Backsub_LT {
            template <class A1, class A2, class A3, class A4> static inline 
void eval(const FixedMatrix<N,N,A1>& L, const FixedVector<N,A2>& v, 
                                                                                
      const FixedVector<N,A3>& invdiag, FixedVector<N,A4>& x) {
-               x[I] = v[I]*invdiag[I] - Dot<I+1,N-1>::eval(L.T()[I], x);
+               x[I-1] = v[I-1]*invdiag[I-1] - Dot<I,N-1>::eval(L.T()[I-1], x);
                Backsub_LT<N,I-1>::eval(L, v, invdiag, x);
            }
        };
@@ -73,14 +73,12 @@
            template <class A1, class A2, class A3, class A4> static inline 
void eval(const FixedMatrix<N,N,A1>& L, const FixedVector<N,A2>& v, 
                                                                                
      const FixedVector<N,A3>& invdiag, FixedVector<N,A4>& x) {
                x[N-1] = v[N-1]*invdiag[N-1];
-               Backsub_LT<N,N-2>::eval(L, v, invdiag, x);
+               Backsub_LT<N,N-1>::eval(L, v, invdiag, x);
            }
        };
        template <int N> struct Backsub_LT<N,0> {
            template <class A1, class A2, class A3, class A4> static inline 
void eval(const FixedMatrix<N,N,A1>& L, const FixedVector<N,A2>& v, 
-                                                                               
      const FixedVector<N,A3>& invdiag, FixedVector<N,A4>& x) {
-               x[0] = v[0]*invdiag[0] - Dot<1,N-1>::eval(L.T()[0], x);
-           }
+                                                                               
      const FixedVector<N,A3>& invdiag, FixedVector<N,A4>& x) {}
        };
 
        template <int N, class A1, class A2, class A3, class A4>




reply via email to

[Prev in Thread] Current Thread [Next in Thread]