X-Git-Url: http://git.tdb.fi/?p=libs%2Fmath.git;a=blobdiff_plain;f=source%2Flinal%2Fmatrixops.h;h=0988accd6d44798ab906851fc180acf4455cba3e;hp=84c8012dd49addb539ee5d5f5ebcc4dfaf745fe1;hb=ff8619c1c440fd1a7c8deaca763a33b8e1d53b5e;hpb=291c11cf66e7083dc21fffea1afbdeaaad96077d diff --git a/source/linal/matrixops.h b/source/linal/matrixops.h index 84c8012..0988acc 100644 --- a/source/linal/matrixops.h +++ b/source/linal/matrixops.h @@ -22,37 +22,37 @@ inline T &gauss_jordan(T &m, T &r) typedef typename T::ElementType V; using std::abs; - for(unsigned i=0; iabs(m.element(pivot, i))) + for(unsigned j=i+1; jabs(m.element(i, pivot))) pivot = j; - if(m.element(pivot, i)==V(0)) + if(m.element(i, pivot)==V(0)) throw not_invertible(); if(pivot!=i) { - m.exchange_rows(i, pivot); - r.exchange_rows(i, pivot); + m.exchange_columns(i, pivot); + r.exchange_columns(i, pivot); } - for(unsigned j=i+1; j0; ) + for(unsigned i=m.columns(); i-->0; ) for(unsigned j=i; j-->0; ) - r.add_row(i, j, -m.element(j, i)); + r.add_column(i, j, -m.element(i, j)); return r; }