public override double MatrixNorm(Norm norm, int rows, int columns, double[] matrix, double[] work)
        {
            if (matrix == null)
            {
                throw new ArgumentNullException("matrix");
            }

            if (rows <= 0)
            {
                throw new ArgumentException(Resources.ArgumentMustBePositive, "rows");
            }

            if (columns <= 0)
            {
                throw new ArgumentException(Resources.ArgumentMustBePositive, "columns");
            }

            if (matrix.Length < rows * columns)
            {
                throw new ArgumentException(string.Format(Resources.ArrayTooSmall, rows * columns), "matrix");
            }

            if (work.Length < rows)
            {
                throw new ArgumentException(string.Format(Resources.ArrayTooSmall, rows), "work");
            }

            return(SafeNativeMethods.d_matrix_norm((byte)norm, rows, columns, matrix, work));
        }