#include "matrix.h" #include #include #include #include double **multiply(double **A, int am, int an, double **B, int bm, int bn){ if(an!=bm) return 0; double **rst = new double*[am]; for(int i=0;i fabs(A[i][j])) ? scalemax : fabs(A[i][j]); scale[i] = scalemax; } //* Loop over rows k = 0, ..., (N-2) int signDet = 1; for(k=0;k ratiomax){ jPivot = i; ratiomax = ratio; } } //* Perform pivoting using row index list int indexJ = index[k]; if(jPivot != k){ // Pivot indexJ = index[jPivot]; index[jPivot] = index[k]; // Swap index jPivot and k index[k] = indexJ; signDet *= -1; // Flip sign of determinant } //* Perform forward elimination for(i=k+1;i=0;i--){ double sum = b[index[i]][k]; for(j=i+1;j & row_index, const vector & col_index){ int row = row_index.size(); int col = col_index.size(); double **rst = new double*[row]; for(int i=0;im || t>n) return 0; else rst[i][j]=A[s-1][t-1]; } return rst; }