public static bool isTranspose(DMatrixSparseCSC A, DMatrixSparseCSC B, double tol) { if (A.numCols != B.numRows || A.numRows != B.numCols) { return(false); } if (A.nz_length != B.nz_length) { return(false); } if (!A.indicesSorted) { throw new ArgumentException("A must have sorted indicies"); } DMatrixSparseCSC Btran = new DMatrixSparseCSC(B.numCols, B.numRows, B.nz_length); CommonOps_DSCC.transpose(B, Btran, null); Btran.sortIndices(null); for (int i = 0; i < B.nz_length; i++) { if (A.nz_rows[i] != Btran.nz_rows[i]) { return(false); } if (Math.Abs(A.nz_values[i] - Btran.nz_values[i]) > tol) { return(false); } } return(true); }
public static DMatrixSparseCSC triangleUpper(int dimen, int hessenberg, int nz_total, double min, double max, IMersenneTwister rand) { DMatrixSparseCSC L = triangleLower(dimen, hessenberg, nz_total, min, max, rand); DMatrixSparseCSC U = (DMatrixSparseCSC)L.createLike(); CommonOps_DSCC.transpose(L, U, null); return(U); }