public static MFullArray <long> ToArray(MIntegralRange <long> range) { var result = new MFullArray <long>(1, range.Count); for (int i = 0; i < range.Count; ++i) { result[i] = range.First + i; } return(result); }
public static MFullArray <double> ToArray(MIntegralRange <double> range) { var result = new MFullArray <double>(1, range.Count); for (int i = 0; i < range.Count; ++i) { result[i] = (double)(range.First + i); } return(result); }
public static void ArraySet <[AnyPrimitive] TScalar>( MFullArray <TScalar> array, MIntegralRange <double> rowIndices, MIntegralRange <double> columnIndices, MFullArray <TScalar> values) { if (array.IsHigherDimensional) { throw new MArrayShapeException(); } int destRowCount = array.shape.RowCount; if (rowIndices.First < 1 || rowIndices.Last > destRowCount) { throw new ArgumentOutOfRangeException("rowIndices"); } int destColumnCount = array.shape.ColumnCount; if (columnIndices.First < 1 || columnIndices.Last > destColumnCount) { throw new ArgumentOutOfRangeException("columnIndices"); } int valueRowCount = rowIndices.Count; int valueColumnCount = columnIndices.Count; if (values.shape.RowCount != valueRowCount || values.shape.ColumnCount != valueColumnCount || values.IsHigherDimensional) { throw new MArrayShapeException(); } for (int j = 0; j < valueColumnCount; ++j) { int destColumnIndex = columnIndices.First + j - 1; for (int i = 0; i < valueRowCount; ++i) { int destRowIndex = rowIndices.First + i - 1; var value = values.elements[j * valueRowCount + i]; array.elements[destColumnIndex * destRowCount + destRowIndex] = value; } } }
public static MFullArray <TScalar> ArrayGet <[AnyPrimitive] TScalar>( MFullArray <TScalar> array, MIntegralRange <double> rowIndices, MIntegralRange <double> columnIndices) { if (array.IsHigherDimensional) { throw new MArrayShapeException(); } int sourceRowCount = array.shape.RowCount; if (rowIndices.First < 1 || rowIndices.Last > sourceRowCount) { throw new ArgumentOutOfRangeException("rowIndices"); } int sourceColumnCount = array.shape.ColumnCount; if (columnIndices.First < 1 || columnIndices.Last > sourceColumnCount) { throw new ArgumentOutOfRangeException("columnIndices"); } int resultRowCount = rowIndices.Count; int resultColumnCount = columnIndices.Count; var result = new MFullArray <TScalar>(resultRowCount, resultColumnCount); for (int j = 0; j < resultColumnCount; ++j) { int sourceColumnIndex = columnIndices.First + j - 1; for (int i = 0; i < resultRowCount; ++i) { int sourceRowIndex = rowIndices.First + i - 1; var sourceValue = array.elements[sourceColumnIndex * sourceRowCount + sourceRowIndex]; result.elements[j * resultRowCount + i] = sourceValue; } } return(result); }
public static void ArraySet <[AnyPrimitive] TScalar>( MFullArray <TScalar> array, double rowIndex, MIntegralRange <double> columnIndices, MFullArray <TScalar> values) { ArraySet(array, MIntegralRange <double> .FromValue(ToInt(rowIndex)), columnIndices, values); }
public static MFullArray <TScalar> ArrayGet <[AnyPrimitive] TScalar>( MFullArray <TScalar> array, double rowIndex, MIntegralRange <double> columnIndices) { return(ArrayGet(array, MIntegralRange <double> .FromValue(ToInt(rowIndex)), columnIndices)); }
public static MFullArray <TScalar> ArrayGet <[AnyPrimitive] TScalar>(MFullArray <TScalar> array, MIntegralRange <double> indices) { Contract.Requires(array != null); if (indices.First < 1 || indices.Last > array.Count) { throw new ArgumentOutOfRangeException("indices"); } var result = new MFullArray <TScalar>(1, indices.Count); Array.Copy(array.BackingArray, indices.First - 1, result.BackingArray, 0, indices.Count); return(result); }
public static MIntegralRange <double> GetDimensionRange <[AnyNumeric] TScalar>(MFullArray <TScalar> array, int index) { Contract.Requires(array != null); return(MIntegralRange <double> .FromFirstCount(1, array.shape.GetDimensionSize(index))); }
public bool Equals(MIntegralRange <TReal> other) { return(first == other.first && last == other.last); }