public static extern CholmodDense SuiteSparseQR_C_backslash ( int ordering, double tol, ref CholmodSparse A, ref CholmodDense B, ref CholmodCommon cc );
public static extern IntPtr SuiteSparseQR_C_qmult /* returns Y, or NULL on failure */ ( /* inputs: */ int method, IntPtr QR, ref CholmodDense X, ref CholmodCommon cc );
public static DenseColumnMajorStorage <Complex> GetDenseMatrix(CholmodDense dense, ref double[] buffer) { int rows = (int)dense.nrow; int columns = (int)dense.ncol; var matrix = new DenseMatrix(rows, columns); CopyArray(2 * (int)dense.nzmax, dense.x, matrix.Values, ref buffer); return(matrix); }
public static DenseColumnMajorStorage <double> GetDenseMatrix(CholmodDense dense) { int rows = (int)dense.nrow; int columns = (int)dense.ncol; var matrix = new DenseMatrix(rows, columns); Marshal.Copy(dense.x, matrix.Values, 0, rows * columns); return(matrix); }
protected override CholmodDense CreateDense(DenseColumnMajorStorage <Complex> matrix, List <GCHandle> handles) { var A = new CholmodDense(); A.nrow = (uint)matrix.RowCount; A.ncol = (uint)matrix.ColumnCount; A.nzmax = (uint)(matrix.RowCount * matrix.ColumnCount); A.dtype = Dtype.Double; A.xtype = Xtype.Real; A.x = InteropHelper.Pin(matrix.Values, handles); A.z = IntPtr.Zero; A.d = (uint)matrix.RowCount; // TODO: cholmod_dense leading dimension? return(A); }
protected override void CopyDense(CholmodDense dense, DenseColumnMajorStorage <Complex> matrix) { int count = 2 * (int)dense.nzmax; if (tempStorage == null) { tempStorage = new double[count]; } Marshal.Copy(dense.x, tempStorage, 0, count); var values = matrix.Values; count = count / 2; for (int i = 0; i < count; i++) { values[i] = new Complex(tempStorage[2 * i], tempStorage[2 * i + 1]); } }
public static extern sp_long SuiteSparseQR_C ( /* inputs: */ int ordering, double tol, sp_long econ, int getCTX, ref CholmodSparse A, IntPtr Bsparse, // ref CholmodSparse ref CholmodDense Bdense, /* outputs: */ out IntPtr Zsparse, // CholmodSparse out IntPtr Zdense, // CholmodDense out IntPtr R, // CholmodSparse out IntPtr E, // SuiteSparse_long[] out IntPtr H, // CholmodSparse out IntPtr HPinv, // SuiteSparse_long[] out IntPtr HTau, // CholmodDense ref CholmodCommon cc // );
public static extern CholmodDense SuiteSparseQR_C_backslash_default ( ref CholmodSparse A, ref CholmodDense B, ref CholmodCommon cc );
protected override void CopyDense(CholmodDense dense, DenseColumnMajorStorage <Complex> matrix) { CholmodHelper.CopyArray(2 * (int)dense.nzmax, dense.x, matrix.Values, ref buffer); }
protected override void CopyDense(CholmodDense dense, DenseColumnMajorStorage <double> matrix) { Marshal.Copy(dense.x, matrix.Values, 0, (int)dense.nzmax); }
/// <summary> /// Copy native memory to dense matrix. /// </summary> /// <param name="dense">CHOLMOD dense matrix.</param> /// <param name="matrix">Target storage.</param> protected abstract void CopyDense(CholmodDense dense, DenseColumnMajorStorage <T> matrix);