int gaussjordan(Matrix a, Vector b) { double big, dum, pivinv, tmp; static int *indxc, *indxr, *ipiv; static int oldn = 0; int i, icol = 0, irow = 0, j, k, l, ll; int m, n, p; g_assert(a != 0); g_assert(b != 0); n = MatrixSize1(a); m = MatrixSize2(a); p = Vectorlength(b); g_assert(m == n); g_assert(m == p); if(n != oldn) { oldn = n; if(oldn > 0) { g_free(indxc); g_free(indxr); g_free(ipiv); } if(n > 0) { indxc = g_new(int, n); indxr = g_new(int, n); ipiv = g_new(int, n); }
VecArray newVecArrayfromMatrix(const Matrix M) { int i, j, m, n; VecArray a; g_assert(M); n = MatrixSize1(M); m = MatrixSize2(M); a = newVecArray(n); for(j = 0; j < n; j++) { a[j] = newVector(m); for(i = 0; i < m; i++) a[j][i] = M[j][i]; } return a; }