public NArray(StorageLocation location, T[,] value)
 {
     Length      = value.Length;
     RowCount    = value.GetLength(0);
     ColumnCount = value.GetLength(1);
     _storage    = StorageCreator.NewStorage(location, value);
 }
 public NArray(NArrayStorage <T> storage)
 {
     _storage    = storage;
     RowCount    = storage.RowCount;
     ColumnCount = storage.ColumnCount;
     Length      = storage.Length;
 }
 public NArray(StorageLocation location, int rowCount, int columnCount)
 {
     RowCount    = rowCount;
     ColumnCount = columnCount;
     Length      = RowCount * ColumnCount;
     _storage    = StorageCreator.NewStorage <T>(location, rowCount, columnCount);
 }
 public static NArray <T> CreateNArray <T>(NArrayStorage <T> storage)
 {
     if (typeof(T) == typeof(double))
     {
         return(new NArray(storage as NArrayStorage <double>) as NArray <T>);
     }
     //else if (typeof(T) == typeof(int)) return new NArrayInt(storage as NArrayStorage<int>) as NArray<T>;
     else
     {
         return(null);
     }
 }
 private bool StorageMatches(NArrayStorage <T> storage)
 {
     return(storage.RowCount == RowCount && storage.ColumnCount == ColumnCount);
 }
 public NArray(StorageLocation location, T[] value)
 {
     RowCount    = Length = value.Length;
     ColumnCount = 1;
     _storage    = StorageCreator.NewStorage(location, value);
 }
 public NArray(StorageLocation location, int length)
 {
     RowCount    = Length = length;
     ColumnCount = 1;
     _storage    = StorageCreator.NewStorage <T>(location, length, 1);
 }
 /// <summary>
 /// Creates a copy of a sub-matrix, allocating new storage.
 /// </summary>
 /// <param name="target"></param>
 /// <param name="sourceRowIndex"></param>
 /// <param name="targetRowIndex"></param>
 /// <param name="rowCount"></param>
 /// <param name="sourceColumnIndex"></param>
 /// <param name="targetColumnIndex"></param>
 /// <param name="columnCount"></param>
 internal abstract void CopySubMatrixTo(NArrayStorage <T> target,
                                        int sourceRowIndex, int targetRowIndex, int rowCount,
                                        int sourceColumnIndex, int targetColumnIndex, int columnCount);
 internal abstract bool Matches(NArrayStorage <T> other);