X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Flinal%2Fmatrixops.h;h=0988accd6d44798ab906851fc180acf4455cba3e;hb=60caa19c84877c89d750140a90e5d891bce30ee7;hp=84c8012dd49addb539ee5d5f5ebcc4dfaf745fe1;hpb=fb1e19889b85112eca096d7ec55b318859cea333;p=libs%2Fmath.git 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; }