Browse Source

LA: Storage should not make Zeros/ExistingData arguments optional (internal only until v4). Minor optimization.

cuda
Christoph Ruegg 12 years ago
parent
commit
d1651ebb4f
  1. 2
      src/Numerics/LinearAlgebra/Complex/DenseMatrix.cs
  2. 2
      src/Numerics/LinearAlgebra/Complex32/DenseMatrix.cs
  3. 2
      src/Numerics/LinearAlgebra/Double/DenseMatrix.cs
  4. 20
      src/Numerics/LinearAlgebra/Matrix.cs
  5. 2
      src/Numerics/LinearAlgebra/Single/DenseMatrix.cs
  6. 20
      src/Numerics/LinearAlgebra/Storage/DenseColumnMajorMatrixStorage.cs
  7. 25
      src/Numerics/LinearAlgebra/Storage/DenseVectorStorage.cs
  8. 22
      src/Numerics/LinearAlgebra/Storage/DiagonalMatrixStorage.cs
  9. 24
      src/Numerics/LinearAlgebra/Storage/MatrixStorage.cs
  10. 21
      src/Numerics/LinearAlgebra/Storage/SparseCompressedRowMatrixStorage.cs
  11. 19
      src/Numerics/LinearAlgebra/Storage/SparseVectorStorage.cs
  12. 26
      src/Numerics/LinearAlgebra/Storage/VectorStorage.cs

2
src/Numerics/LinearAlgebra/Complex/DenseMatrix.cs

@ -505,7 +505,7 @@ namespace MathNet.Numerics.LinearAlgebra.Complex
var diagonalOther = other.Storage as DiagonalMatrixStorage<Complex>; var diagonalOther = other.Storage as DiagonalMatrixStorage<Complex>;
if (diagonalOther != null) if (diagonalOther != null)
{ {
Storage.CopyToUnchecked(result.Storage); Storage.CopyToUnchecked(result.Storage, ExistingData.Clear);
var diagonal = diagonalOther.Data; var diagonal = diagonalOther.Data;
for (int i = 0; i < diagonal.Length; i++) for (int i = 0; i < diagonal.Length; i++)
{ {

2
src/Numerics/LinearAlgebra/Complex32/DenseMatrix.cs

@ -500,7 +500,7 @@ namespace MathNet.Numerics.LinearAlgebra.Complex32
var diagonalOther = other.Storage as DiagonalMatrixStorage<Complex32>; var diagonalOther = other.Storage as DiagonalMatrixStorage<Complex32>;
if (diagonalOther != null) if (diagonalOther != null)
{ {
Storage.CopyToUnchecked(result.Storage); Storage.CopyToUnchecked(result.Storage, ExistingData.Clear);
var diagonal = diagonalOther.Data; var diagonal = diagonalOther.Data;
for (int i = 0; i < diagonal.Length; i++) for (int i = 0; i < diagonal.Length; i++)
{ {

2
src/Numerics/LinearAlgebra/Double/DenseMatrix.cs

@ -482,7 +482,7 @@ namespace MathNet.Numerics.LinearAlgebra.Double
var diagonalOther = other.Storage as DiagonalMatrixStorage<double>; var diagonalOther = other.Storage as DiagonalMatrixStorage<double>;
if (diagonalOther != null) if (diagonalOther != null)
{ {
Storage.CopyToUnchecked(result.Storage); Storage.CopyToUnchecked(result.Storage, ExistingData.Clear);
var diagonal = diagonalOther.Data; var diagonal = diagonalOther.Data;
for (int i = 0; i < diagonal.Length; i++) for (int i = 0; i < diagonal.Length; i++)
{ {

20
src/Numerics/LinearAlgebra/Matrix.cs

@ -261,7 +261,7 @@ namespace MathNet.Numerics.LinearAlgebra
} }
var ret = Vector<T>.Build.SameAs(this, ColumnCount); var ret = Vector<T>.Build.SameAs(this, ColumnCount);
Storage.CopySubRowToUnchecked(ret.Storage, index, 0, 0, ColumnCount); Storage.CopySubRowToUnchecked(ret.Storage, index, 0, 0, ColumnCount, ExistingData.AssumeZeros);
return ret; return ret;
} }
@ -346,7 +346,7 @@ namespace MathNet.Numerics.LinearAlgebra
} }
var ret = Vector<T>.Build.SameAs(this, RowCount); var ret = Vector<T>.Build.SameAs(this, RowCount);
Storage.CopySubColumnToUnchecked(ret.Storage, index, 0, 0, RowCount); Storage.CopySubColumnToUnchecked(ret.Storage, index, 0, 0, RowCount, ExistingData.AssumeZeros);
return ret; return ret;
} }
@ -1121,8 +1121,8 @@ namespace MathNet.Numerics.LinearAlgebra
throw new ArgumentException(Resources.ArgumentMatrixSameColumnDimension); throw new ArgumentException(Resources.ArgumentMatrixSameColumnDimension);
} }
Storage.CopySubMatrixToUnchecked(result.Storage, 0, 0, RowCount, 0, 0, ColumnCount); Storage.CopySubMatrixToUnchecked(result.Storage, 0, 0, RowCount, 0, 0, ColumnCount, ExistingData.Clear);
right.Storage.CopySubMatrixToUnchecked(result.Storage, 0, 0, right.RowCount, 0, ColumnCount, right.ColumnCount); right.Storage.CopySubMatrixToUnchecked(result.Storage, 0, 0, right.RowCount, 0, ColumnCount, right.ColumnCount, ExistingData.Clear);
} }
/// <summary> /// <summary>
@ -1183,8 +1183,8 @@ namespace MathNet.Numerics.LinearAlgebra
throw DimensionsDontMatch<ArgumentException>(this, result, "result"); throw DimensionsDontMatch<ArgumentException>(this, result, "result");
} }
Storage.CopySubMatrixToUnchecked(result.Storage, 0, 0, RowCount, 0, 0, ColumnCount); Storage.CopySubMatrixToUnchecked(result.Storage, 0, 0, RowCount, 0, 0, ColumnCount, ExistingData.Clear);
lower.Storage.CopySubMatrixToUnchecked(result.Storage, 0, RowCount, lower.RowCount, 0, 0, lower.ColumnCount); lower.Storage.CopySubMatrixToUnchecked(result.Storage, 0, RowCount, lower.RowCount, 0, 0, lower.ColumnCount, ExistingData.Clear);
} }
/// <summary> /// <summary>
@ -1205,8 +1205,8 @@ namespace MathNet.Numerics.LinearAlgebra
} }
var result = Build.SameAs(this, lower, RowCount + lower.RowCount, ColumnCount + lower.ColumnCount, RowCount != ColumnCount); var result = Build.SameAs(this, lower, RowCount + lower.RowCount, ColumnCount + lower.ColumnCount, RowCount != ColumnCount);
Storage.CopySubMatrixToUnchecked(result.Storage, 0, 0, RowCount, 0, 0, ColumnCount); Storage.CopySubMatrixToUnchecked(result.Storage, 0, 0, RowCount, 0, 0, ColumnCount, ExistingData.AssumeZeros);
lower.Storage.CopySubMatrixToUnchecked(result.Storage, 0, RowCount, lower.RowCount, 0, ColumnCount, lower.ColumnCount); lower.Storage.CopySubMatrixToUnchecked(result.Storage, 0, RowCount, lower.RowCount, 0, ColumnCount, lower.ColumnCount, ExistingData.AssumeZeros);
return result; return result;
} }
@ -1237,8 +1237,8 @@ namespace MathNet.Numerics.LinearAlgebra
throw DimensionsDontMatch<ArgumentException>(this, result, "result"); throw DimensionsDontMatch<ArgumentException>(this, result, "result");
} }
Storage.CopySubMatrixToUnchecked(result.Storage, 0, 0, RowCount, 0, 0, ColumnCount); Storage.CopySubMatrixToUnchecked(result.Storage, 0, 0, RowCount, 0, 0, ColumnCount, ExistingData.Clear);
lower.Storage.CopySubMatrixToUnchecked(result.Storage, 0, RowCount, lower.RowCount, 0, ColumnCount, lower.ColumnCount); lower.Storage.CopySubMatrixToUnchecked(result.Storage, 0, RowCount, lower.RowCount, 0, ColumnCount, lower.ColumnCount, ExistingData.Clear);
} }
/// <summary> /// <summary>

2
src/Numerics/LinearAlgebra/Single/DenseMatrix.cs

@ -482,7 +482,7 @@ namespace MathNet.Numerics.LinearAlgebra.Single
var diagonalOther = other.Storage as DiagonalMatrixStorage<float>; var diagonalOther = other.Storage as DiagonalMatrixStorage<float>;
if (diagonalOther != null) if (diagonalOther != null)
{ {
Storage.CopyToUnchecked(result.Storage); Storage.CopyToUnchecked(result.Storage, ExistingData.Clear);
var diagonal = diagonalOther.Data; var diagonal = diagonalOther.Data;
for (int i = 0; i < diagonal.Length; i++) for (int i = 0; i < diagonal.Length; i++)
{ {

20
src/Numerics/LinearAlgebra/Storage/DenseColumnMajorMatrixStorage.cs

@ -376,7 +376,7 @@ namespace MathNet.Numerics.LinearAlgebra.Storage
// MATRIX COPY // MATRIX COPY
internal override void CopyToUnchecked(MatrixStorage<T> target, ExistingData existingData = ExistingData.Clear) internal override void CopyToUnchecked(MatrixStorage<T> target, ExistingData existingData)
{ {
var denseTarget = target as DenseColumnMajorMatrixStorage<T>; var denseTarget = target as DenseColumnMajorMatrixStorage<T>;
if (denseTarget != null) if (denseTarget != null)
@ -405,7 +405,7 @@ namespace MathNet.Numerics.LinearAlgebra.Storage
internal override void CopySubMatrixToUnchecked(MatrixStorage<T> target, internal override void CopySubMatrixToUnchecked(MatrixStorage<T> target,
int sourceRowIndex, int targetRowIndex, int rowCount, int sourceRowIndex, int targetRowIndex, int rowCount,
int sourceColumnIndex, int targetColumnIndex, int columnCount, int sourceColumnIndex, int targetColumnIndex, int columnCount,
ExistingData existingData = ExistingData.Clear) ExistingData existingData)
{ {
var denseTarget = target as DenseColumnMajorMatrixStorage<T>; var denseTarget = target as DenseColumnMajorMatrixStorage<T>;
if (denseTarget != null) if (denseTarget != null)
@ -442,7 +442,7 @@ namespace MathNet.Numerics.LinearAlgebra.Storage
// ROW COPY // ROW COPY
internal override void CopySubRowToUnchecked(VectorStorage<T> target, int rowIndex, int sourceColumnIndex, int targetColumnIndex, int columnCount, internal override void CopySubRowToUnchecked(VectorStorage<T> target, int rowIndex, int sourceColumnIndex, int targetColumnIndex, int columnCount,
ExistingData existingData = ExistingData.Clear) ExistingData existingData)
{ {
var targetDense = target as DenseVectorStorage<T>; var targetDense = target as DenseVectorStorage<T>;
if (targetDense != null) if (targetDense != null)
@ -465,7 +465,7 @@ namespace MathNet.Numerics.LinearAlgebra.Storage
// COLUMN COPY // COLUMN COPY
internal override void CopySubColumnToUnchecked(VectorStorage<T> target, int columnIndex, int sourceRowIndex, int targetRowIndex, int rowCount, internal override void CopySubColumnToUnchecked(VectorStorage<T> target, int columnIndex, int sourceRowIndex, int targetRowIndex, int rowCount,
ExistingData existingData = ExistingData.Clear) ExistingData existingData)
{ {
var targetDense = target as DenseVectorStorage<T>; var targetDense = target as DenseVectorStorage<T>;
if (targetDense != null) if (targetDense != null)
@ -485,7 +485,7 @@ namespace MathNet.Numerics.LinearAlgebra.Storage
// TRANSPOSE // TRANSPOSE
internal override void TransposeToUnchecked(MatrixStorage<T> target, ExistingData existingData = ExistingData.Clear) internal override void TransposeToUnchecked(MatrixStorage<T> target, ExistingData existingData)
{ {
var denseTarget = target as DenseColumnMajorMatrixStorage<T>; var denseTarget = target as DenseColumnMajorMatrixStorage<T>;
if (denseTarget != null) if (denseTarget != null)
@ -782,7 +782,7 @@ namespace MathNet.Numerics.LinearAlgebra.Storage
} }
internal override void MapToUnchecked<TU>(MatrixStorage<TU> target, Func<T, TU> f, internal override void MapToUnchecked<TU>(MatrixStorage<TU> target, Func<T, TU> f,
Zeros zeros = Zeros.AllowSkip, ExistingData existingData = ExistingData.Clear) Zeros zeros, ExistingData existingData)
{ {
var denseTarget = target as DenseColumnMajorMatrixStorage<TU>; var denseTarget = target as DenseColumnMajorMatrixStorage<TU>;
if (denseTarget != null) if (denseTarget != null)
@ -810,7 +810,7 @@ namespace MathNet.Numerics.LinearAlgebra.Storage
} }
internal override void MapIndexedToUnchecked<TU>(MatrixStorage<TU> target, Func<int, int, T, TU> f, internal override void MapIndexedToUnchecked<TU>(MatrixStorage<TU> target, Func<int, int, T, TU> f,
Zeros zeros = Zeros.AllowSkip, ExistingData existingData = ExistingData.Clear) Zeros zeros, ExistingData existingData)
{ {
var denseTarget = target as DenseColumnMajorMatrixStorage<TU>; var denseTarget = target as DenseColumnMajorMatrixStorage<TU>;
if (denseTarget != null) if (denseTarget != null)
@ -845,7 +845,7 @@ namespace MathNet.Numerics.LinearAlgebra.Storage
internal override void MapSubMatrixIndexedToUnchecked<TU>(MatrixStorage<TU> target, Func<int, int, T, TU> f, internal override void MapSubMatrixIndexedToUnchecked<TU>(MatrixStorage<TU> target, Func<int, int, T, TU> f,
int sourceRowIndex, int targetRowIndex, int rowCount, int sourceRowIndex, int targetRowIndex, int rowCount,
int sourceColumnIndex, int targetColumnIndex, int columnCount, int sourceColumnIndex, int targetColumnIndex, int columnCount,
Zeros zeros = Zeros.AllowSkip, ExistingData existingData = ExistingData.Clear) Zeros zeros, ExistingData existingData)
{ {
var denseTarget = target as DenseColumnMajorMatrixStorage<TU>; var denseTarget = target as DenseColumnMajorMatrixStorage<TU>;
if (denseTarget != null) if (denseTarget != null)
@ -881,7 +881,7 @@ namespace MathNet.Numerics.LinearAlgebra.Storage
// FUNCTIONAL COMBINATORS: FOLD // FUNCTIONAL COMBINATORS: FOLD
internal override void FoldByRowUnchecked<TU>(TU[] target, Func<TU, T, TU> f, Func<TU, int, TU> finalize, TU[] state, Zeros zeros = Zeros.AllowSkip) internal override void FoldByRowUnchecked<TU>(TU[] target, Func<TU, T, TU> f, Func<TU, int, TU> finalize, TU[] state, Zeros zeros)
{ {
for (int i = 0; i < RowCount; i++) for (int i = 0; i < RowCount; i++)
{ {
@ -894,7 +894,7 @@ namespace MathNet.Numerics.LinearAlgebra.Storage
} }
} }
internal override void FoldByColumnUnchecked<TU>(TU[] target, Func<TU, T, TU> f, Func<TU, int, TU> finalize, TU[] state, Zeros zeros = Zeros.AllowSkip) internal override void FoldByColumnUnchecked<TU>(TU[] target, Func<TU, T, TU> f, Func<TU, int, TU> finalize, TU[] state, Zeros zeros)
{ {
for (int j = 0; j < ColumnCount; j++) for (int j = 0; j < ColumnCount; j++)
{ {

25
src/Numerics/LinearAlgebra/Storage/DenseVectorStorage.cs

@ -181,7 +181,7 @@ namespace MathNet.Numerics.LinearAlgebra.Storage
// VECTOR COPY // VECTOR COPY
internal override void CopyToUnchecked(VectorStorage<T> target, ExistingData existingData = ExistingData.Clear) internal override void CopyToUnchecked(VectorStorage<T> target, ExistingData existingData)
{ {
var denseTarget = target as DenseVectorStorage<T>; var denseTarget = target as DenseVectorStorage<T>;
if (denseTarget != null) if (denseTarget != null)
@ -226,7 +226,7 @@ namespace MathNet.Numerics.LinearAlgebra.Storage
// ROW COPY // ROW COPY
internal override void CopyToRowUnchecked(MatrixStorage<T> target, int rowIndex, ExistingData existingData = ExistingData.Clear) internal override void CopyToRowUnchecked(MatrixStorage<T> target, int rowIndex, ExistingData existingData)
{ {
var denseTarget = target as DenseColumnMajorMatrixStorage<T>; var denseTarget = target as DenseColumnMajorMatrixStorage<T>;
if (denseTarget != null) if (denseTarget != null)
@ -248,7 +248,7 @@ namespace MathNet.Numerics.LinearAlgebra.Storage
// COLUMN COPY // COLUMN COPY
internal override void CopyToColumnUnchecked(MatrixStorage<T> target, int columnIndex, ExistingData existingData = ExistingData.Clear) internal override void CopyToColumnUnchecked(MatrixStorage<T> target, int columnIndex, ExistingData existingData)
{ {
var denseTarget = target as DenseColumnMajorMatrixStorage<T>; var denseTarget = target as DenseColumnMajorMatrixStorage<T>;
if (denseTarget != null) if (denseTarget != null)
@ -268,8 +268,7 @@ namespace MathNet.Numerics.LinearAlgebra.Storage
// SUB-VECTOR COPY // SUB-VECTOR COPY
internal override void CopySubVectorToUnchecked(VectorStorage<T> target, internal override void CopySubVectorToUnchecked(VectorStorage<T> target,
int sourceIndex, int targetIndex, int count, int sourceIndex, int targetIndex, int count, ExistingData existingData)
ExistingData existingData = ExistingData.Clear)
{ {
var denseTarget = target as DenseVectorStorage<T>; var denseTarget = target as DenseVectorStorage<T>;
if (denseTarget != null) if (denseTarget != null)
@ -286,8 +285,7 @@ namespace MathNet.Numerics.LinearAlgebra.Storage
// SUB-ROW COPY // SUB-ROW COPY
internal override void CopyToSubRowUnchecked(MatrixStorage<T> target, int rowIndex, internal override void CopyToSubRowUnchecked(MatrixStorage<T> target, int rowIndex,
int sourceColumnIndex, int targetColumnIndex, int columnCount, int sourceColumnIndex, int targetColumnIndex, int columnCount, ExistingData existingData)
ExistingData existingData = ExistingData.Clear)
{ {
var denseTarget = target as DenseColumnMajorMatrixStorage<T>; var denseTarget = target as DenseColumnMajorMatrixStorage<T>;
if (denseTarget != null) if (denseTarget != null)
@ -310,8 +308,7 @@ namespace MathNet.Numerics.LinearAlgebra.Storage
// SUB-COLUMN COPY // SUB-COLUMN COPY
internal override void CopyToSubColumnUnchecked(MatrixStorage<T> target, int columnIndex, internal override void CopyToSubColumnUnchecked(MatrixStorage<T> target, int columnIndex,
int sourceRowIndex, int targetRowIndex, int rowCount, int sourceRowIndex, int targetRowIndex, int rowCount, ExistingData existingData)
ExistingData existingData = ExistingData.Clear)
{ {
var denseTarget = target as DenseColumnMajorMatrixStorage<T>; var denseTarget = target as DenseColumnMajorMatrixStorage<T>;
if (denseTarget != null) if (denseTarget != null)
@ -358,8 +355,7 @@ namespace MathNet.Numerics.LinearAlgebra.Storage
// FUNCTIONAL COMBINATORS // FUNCTIONAL COMBINATORS
internal override void MapToUnchecked<TU>(VectorStorage<TU> target, Func<T, TU> f, internal override void MapToUnchecked<TU>(VectorStorage<TU> target, Func<T, TU> f, Zeros zeros, ExistingData existingData)
Zeros zeros = Zeros.AllowSkip, ExistingData existingData = ExistingData.Clear)
{ {
var denseTarget = target as DenseVectorStorage<TU>; var denseTarget = target as DenseVectorStorage<TU>;
if (denseTarget != null) if (denseTarget != null)
@ -382,8 +378,7 @@ namespace MathNet.Numerics.LinearAlgebra.Storage
} }
} }
internal override void MapIndexedToUnchecked<TU>(VectorStorage<TU> target, Func<int, T, TU> f, internal override void MapIndexedToUnchecked<TU>(VectorStorage<TU> target, Func<int, T, TU> f, Zeros zeros, ExistingData existingData)
Zeros zeros = Zeros.AllowSkip, ExistingData existingData = ExistingData.Clear)
{ {
var denseTarget = target as DenseVectorStorage<TU>; var denseTarget = target as DenseVectorStorage<TU>;
if (denseTarget != null) if (denseTarget != null)
@ -406,7 +401,7 @@ namespace MathNet.Numerics.LinearAlgebra.Storage
} }
} }
internal override void Map2ToUnchecked(VectorStorage<T> target, VectorStorage<T> other, Func<T, T, T> f, Zeros zeros = Zeros.AllowSkip, ExistingData existingData = ExistingData.Clear) internal override void Map2ToUnchecked(VectorStorage<T> target, VectorStorage<T> other, Func<T, T, T> f, Zeros zeros, ExistingData existingData)
{ {
if (target is SparseVectorStorage<T>) if (target is SparseVectorStorage<T>)
{ {
@ -461,7 +456,7 @@ namespace MathNet.Numerics.LinearAlgebra.Storage
base.Map2ToUnchecked(target, other, f, zeros, existingData); base.Map2ToUnchecked(target, other, f, zeros, existingData);
} }
internal override TState Fold2Unchecked<TOther, TState>(VectorStorage<TOther> other, Func<TState, T, TOther, TState> f, TState state, Zeros zeros = Zeros.AllowSkip) internal override TState Fold2Unchecked<TOther, TState>(VectorStorage<TOther> other, Func<TState, T, TOther, TState> f, TState state, Zeros zeros)
{ {
var denseOther = other as DenseVectorStorage<TOther>; var denseOther = other as DenseVectorStorage<TOther>;
if (denseOther != null) if (denseOther != null)

22
src/Numerics/LinearAlgebra/Storage/DiagonalMatrixStorage.cs

@ -252,7 +252,7 @@ namespace MathNet.Numerics.LinearAlgebra.Storage
// MATRIX COPY // MATRIX COPY
internal override void CopyToUnchecked(MatrixStorage<T> target, ExistingData existingData = ExistingData.Clear) internal override void CopyToUnchecked(MatrixStorage<T> target, ExistingData existingData)
{ {
var diagonalTarget = target as DiagonalMatrixStorage<T>; var diagonalTarget = target as DiagonalMatrixStorage<T>;
if (diagonalTarget != null) if (diagonalTarget != null)
@ -323,7 +323,7 @@ namespace MathNet.Numerics.LinearAlgebra.Storage
internal override void CopySubMatrixToUnchecked(MatrixStorage<T> target, internal override void CopySubMatrixToUnchecked(MatrixStorage<T> target,
int sourceRowIndex, int targetRowIndex, int rowCount, int sourceRowIndex, int targetRowIndex, int rowCount,
int sourceColumnIndex, int targetColumnIndex, int columnCount, int sourceColumnIndex, int targetColumnIndex, int columnCount,
ExistingData existingData = ExistingData.Clear) ExistingData existingData)
{ {
var denseTarget = target as DenseColumnMajorMatrixStorage<T>; var denseTarget = target as DenseColumnMajorMatrixStorage<T>;
if (denseTarget != null) if (denseTarget != null)
@ -453,8 +453,7 @@ namespace MathNet.Numerics.LinearAlgebra.Storage
// ROW COPY // ROW COPY
internal override void CopySubRowToUnchecked(VectorStorage<T> target, int rowIndex, internal override void CopySubRowToUnchecked(VectorStorage<T> target, int rowIndex,
int sourceColumnIndex, int targetColumnIndex, int columnCount, int sourceColumnIndex, int targetColumnIndex, int columnCount, ExistingData existingData)
ExistingData existingData = ExistingData.Clear)
{ {
if (existingData == ExistingData.Clear) if (existingData == ExistingData.Clear)
{ {
@ -470,8 +469,7 @@ namespace MathNet.Numerics.LinearAlgebra.Storage
// COLUMN COPY // COLUMN COPY
internal override void CopySubColumnToUnchecked(VectorStorage<T> target, int columnIndex, internal override void CopySubColumnToUnchecked(VectorStorage<T> target, int columnIndex,
int sourceRowIndex, int targetRowIndex, int rowCount, int sourceRowIndex, int targetRowIndex, int rowCount, ExistingData existingData)
ExistingData existingData = ExistingData.Clear)
{ {
if (existingData == ExistingData.Clear) if (existingData == ExistingData.Clear)
{ {
@ -486,7 +484,7 @@ namespace MathNet.Numerics.LinearAlgebra.Storage
// TRANSPOSE // TRANSPOSE
internal override void TransposeToUnchecked(MatrixStorage<T> target, ExistingData existingData = ExistingData.Clear) internal override void TransposeToUnchecked(MatrixStorage<T> target, ExistingData existingData)
{ {
CopyToUnchecked(target, existingData); CopyToUnchecked(target, existingData);
} }
@ -763,7 +761,7 @@ namespace MathNet.Numerics.LinearAlgebra.Storage
} }
internal override void MapToUnchecked<TU>(MatrixStorage<TU> target, Func<T, TU> f, internal override void MapToUnchecked<TU>(MatrixStorage<TU> target, Func<T, TU> f,
Zeros zeros = Zeros.AllowSkip, ExistingData existingData = ExistingData.Clear) Zeros zeros, ExistingData existingData)
{ {
var processZeros = zeros == Zeros.Include || !Zero.Equals(f(Zero)); var processZeros = zeros == Zeros.Include || !Zero.Equals(f(Zero));
@ -812,7 +810,7 @@ namespace MathNet.Numerics.LinearAlgebra.Storage
} }
internal override void MapIndexedToUnchecked<TU>(MatrixStorage<TU> target, Func<int, int, T, TU> f, internal override void MapIndexedToUnchecked<TU>(MatrixStorage<TU> target, Func<int, int, T, TU> f,
Zeros zeros = Zeros.AllowSkip, ExistingData existingData = ExistingData.Clear) Zeros zeros, ExistingData existingData)
{ {
var processZeros = zeros == Zeros.Include || !Zero.Equals(f(0, 1, Zero)); var processZeros = zeros == Zeros.Include || !Zero.Equals(f(0, 1, Zero));
@ -863,7 +861,7 @@ namespace MathNet.Numerics.LinearAlgebra.Storage
internal override void MapSubMatrixIndexedToUnchecked<TU>(MatrixStorage<TU> target, Func<int, int, T, TU> f, internal override void MapSubMatrixIndexedToUnchecked<TU>(MatrixStorage<TU> target, Func<int, int, T, TU> f,
int sourceRowIndex, int targetRowIndex, int rowCount, int sourceRowIndex, int targetRowIndex, int rowCount,
int sourceColumnIndex, int targetColumnIndex, int columnCount, int sourceColumnIndex, int targetColumnIndex, int columnCount,
Zeros zeros = Zeros.AllowSkip, ExistingData existingData = ExistingData.Clear) Zeros zeros, ExistingData existingData)
{ {
var diagonalTarget = target as DiagonalMatrixStorage<TU>; var diagonalTarget = target as DiagonalMatrixStorage<TU>;
if (diagonalTarget != null) if (diagonalTarget != null)
@ -1034,7 +1032,7 @@ namespace MathNet.Numerics.LinearAlgebra.Storage
// FUNCTIONAL COMBINATORS: FOLD // FUNCTIONAL COMBINATORS: FOLD
internal override void FoldByRowUnchecked<TU>(TU[] target, Func<TU, T, TU> f, Func<TU, int, TU> finalize, TU[] state, Zeros zeros = Zeros.AllowSkip) internal override void FoldByRowUnchecked<TU>(TU[] target, Func<TU, T, TU> f, Func<TU, int, TU> finalize, TU[] state, Zeros zeros)
{ {
if (zeros == Zeros.AllowSkip) if (zeros == Zeros.AllowSkip)
{ {
@ -1062,7 +1060,7 @@ namespace MathNet.Numerics.LinearAlgebra.Storage
} }
} }
internal override void FoldByColumnUnchecked<TU>(TU[] target, Func<TU, T, TU> f, Func<TU, int, TU> finalize, TU[] state, Zeros zeros = Zeros.AllowSkip) internal override void FoldByColumnUnchecked<TU>(TU[] target, Func<TU, T, TU> f, Func<TU, int, TU> finalize, TU[] state, Zeros zeros)
{ {
if (zeros == Zeros.AllowSkip) if (zeros == Zeros.AllowSkip)
{ {

24
src/Numerics/LinearAlgebra/Storage/MatrixStorage.cs

@ -320,7 +320,7 @@ namespace MathNet.Numerics.LinearAlgebra.Storage
CopyToUnchecked(target, existingData); CopyToUnchecked(target, existingData);
} }
internal virtual void CopyToUnchecked(MatrixStorage<T> target, ExistingData existingData = ExistingData.Clear) internal virtual void CopyToUnchecked(MatrixStorage<T> target, ExistingData existingData)
{ {
for (int j = 0; j < ColumnCount; j++) for (int j = 0; j < ColumnCount; j++)
{ {
@ -362,7 +362,7 @@ namespace MathNet.Numerics.LinearAlgebra.Storage
internal virtual void CopySubMatrixToUnchecked(MatrixStorage<T> target, internal virtual void CopySubMatrixToUnchecked(MatrixStorage<T> target,
int sourceRowIndex, int targetRowIndex, int rowCount, int sourceRowIndex, int targetRowIndex, int rowCount,
int sourceColumnIndex, int targetColumnIndex, int columnCount, int sourceColumnIndex, int targetColumnIndex, int columnCount,
ExistingData existingData = ExistingData.Clear) ExistingData existingData)
{ {
for (int j = sourceColumnIndex, jj = targetColumnIndex; j < sourceColumnIndex + columnCount; j++, jj++) for (int j = sourceColumnIndex, jj = targetColumnIndex; j < sourceColumnIndex + columnCount; j++, jj++)
{ {
@ -405,8 +405,7 @@ namespace MathNet.Numerics.LinearAlgebra.Storage
} }
internal virtual void CopySubRowToUnchecked(VectorStorage<T> target, int rowIndex, internal virtual void CopySubRowToUnchecked(VectorStorage<T> target, int rowIndex,
int sourceColumnIndex, int targetColumnIndex, int columnCount, int sourceColumnIndex, int targetColumnIndex, int columnCount, ExistingData existingData)
ExistingData existingData = ExistingData.Clear)
{ {
for (int j = sourceColumnIndex, jj = targetColumnIndex; j < sourceColumnIndex + columnCount; j++, jj++) for (int j = sourceColumnIndex, jj = targetColumnIndex; j < sourceColumnIndex + columnCount; j++, jj++)
{ {
@ -446,8 +445,7 @@ namespace MathNet.Numerics.LinearAlgebra.Storage
} }
internal virtual void CopySubColumnToUnchecked(VectorStorage<T> target, int columnIndex, internal virtual void CopySubColumnToUnchecked(VectorStorage<T> target, int columnIndex,
int sourceRowIndex, int targetRowIndex, int rowCount, int sourceRowIndex, int targetRowIndex, int rowCount, ExistingData existingData)
ExistingData existingData = ExistingData.Clear)
{ {
for (int i = sourceRowIndex, ii = targetRowIndex; i < sourceRowIndex + rowCount; i++, ii++) for (int i = sourceRowIndex, ii = targetRowIndex; i < sourceRowIndex + rowCount; i++, ii++)
{ {
@ -478,7 +476,7 @@ namespace MathNet.Numerics.LinearAlgebra.Storage
TransposeToUnchecked(target, existingData); TransposeToUnchecked(target, existingData);
} }
internal virtual void TransposeToUnchecked(MatrixStorage<T> target, ExistingData existingData = ExistingData.Clear) internal virtual void TransposeToUnchecked(MatrixStorage<T> target, ExistingData existingData)
{ {
for (int j = 0; j < ColumnCount; j++) for (int j = 0; j < ColumnCount; j++)
{ {
@ -711,8 +709,7 @@ namespace MathNet.Numerics.LinearAlgebra.Storage
MapToUnchecked(target, f, zeros, existingData); MapToUnchecked(target, f, zeros, existingData);
} }
internal virtual void MapToUnchecked<TU>(MatrixStorage<TU> target, Func<T, TU> f, internal virtual void MapToUnchecked<TU>(MatrixStorage<TU> target, Func<T, TU> f, Zeros zeros, ExistingData existingData)
Zeros zeros = Zeros.AllowSkip, ExistingData existingData = ExistingData.Clear)
where TU : struct, IEquatable<TU>, IFormattable where TU : struct, IEquatable<TU>, IFormattable
{ {
for (int i = 0; i < RowCount; i++) for (int i = 0; i < RowCount; i++)
@ -742,8 +739,7 @@ namespace MathNet.Numerics.LinearAlgebra.Storage
MapIndexedToUnchecked(target, f, zeros, existingData); MapIndexedToUnchecked(target, f, zeros, existingData);
} }
internal virtual void MapIndexedToUnchecked<TU>(MatrixStorage<TU> target, Func<int, int, T, TU> f, internal virtual void MapIndexedToUnchecked<TU>(MatrixStorage<TU> target, Func<int, int, T, TU> f, Zeros zeros, ExistingData existingData)
Zeros zeros = Zeros.AllowSkip, ExistingData existingData = ExistingData.Clear)
where TU : struct, IEquatable<TU>, IFormattable where TU : struct, IEquatable<TU>, IFormattable
{ {
for (int j = 0; j < ColumnCount; j++) for (int j = 0; j < ColumnCount; j++)
@ -786,7 +782,7 @@ namespace MathNet.Numerics.LinearAlgebra.Storage
internal virtual void MapSubMatrixIndexedToUnchecked<TU>(MatrixStorage<TU> target, Func<int, int, T, TU> f, internal virtual void MapSubMatrixIndexedToUnchecked<TU>(MatrixStorage<TU> target, Func<int, int, T, TU> f,
int sourceRowIndex, int targetRowIndex, int rowCount, int sourceRowIndex, int targetRowIndex, int rowCount,
int sourceColumnIndex, int targetColumnIndex, int columnCount, int sourceColumnIndex, int targetColumnIndex, int columnCount,
Zeros zeros = Zeros.AllowSkip, ExistingData existingData = ExistingData.Clear) Zeros zeros, ExistingData existingData)
where TU : struct, IEquatable<TU>, IFormattable where TU : struct, IEquatable<TU>, IFormattable
{ {
for (int j = sourceColumnIndex, jj = targetColumnIndex; j < sourceColumnIndex + columnCount; j++, jj++) for (int j = sourceColumnIndex, jj = targetColumnIndex; j < sourceColumnIndex + columnCount; j++, jj++)
@ -825,7 +821,7 @@ namespace MathNet.Numerics.LinearAlgebra.Storage
} }
/// <remarks>The state array will not be modified, unless it is the same instance as the target array (which is allowed).</remarks> /// <remarks>The state array will not be modified, unless it is the same instance as the target array (which is allowed).</remarks>
internal virtual void FoldByRowUnchecked<TU>(TU[] target, Func<TU, T, TU> f, Func<TU, int, TU> finalize, TU[] state, Zeros zeros = Zeros.AllowSkip) internal virtual void FoldByRowUnchecked<TU>(TU[] target, Func<TU, T, TU> f, Func<TU, int, TU> finalize, TU[] state, Zeros zeros)
{ {
for (int i = 0; i < RowCount; i++) for (int i = 0; i < RowCount; i++)
{ {
@ -863,7 +859,7 @@ namespace MathNet.Numerics.LinearAlgebra.Storage
} }
/// <remarks>The state array will not be modified, unless it is the same instance as the target array (which is allowed).</remarks> /// <remarks>The state array will not be modified, unless it is the same instance as the target array (which is allowed).</remarks>
internal virtual void FoldByColumnUnchecked<TU>(TU[] target, Func<TU, T, TU> f, Func<TU, int, TU> finalize, TU[] state, Zeros zeros = Zeros.AllowSkip) internal virtual void FoldByColumnUnchecked<TU>(TU[] target, Func<TU, T, TU> f, Func<TU, int, TU> finalize, TU[] state, Zeros zeros)
{ {
for (int j = 0; j < ColumnCount; j++) for (int j = 0; j < ColumnCount; j++)
{ {

21
src/Numerics/LinearAlgebra/Storage/SparseCompressedRowMatrixStorage.cs

@ -816,7 +816,7 @@ namespace MathNet.Numerics.LinearAlgebra.Storage
// MATRIX COPY // MATRIX COPY
internal override void CopyToUnchecked(MatrixStorage<T> target, ExistingData existingData = ExistingData.Clear) internal override void CopyToUnchecked(MatrixStorage<T> target, ExistingData existingData)
{ {
var sparseTarget = target as SparseCompressedRowMatrixStorage<T>; var sparseTarget = target as SparseCompressedRowMatrixStorage<T>;
if (sparseTarget != null) if (sparseTarget != null)
@ -892,7 +892,7 @@ namespace MathNet.Numerics.LinearAlgebra.Storage
internal override void CopySubMatrixToUnchecked(MatrixStorage<T> target, internal override void CopySubMatrixToUnchecked(MatrixStorage<T> target,
int sourceRowIndex, int targetRowIndex, int rowCount, int sourceRowIndex, int targetRowIndex, int rowCount,
int sourceColumnIndex, int targetColumnIndex, int columnCount, int sourceColumnIndex, int targetColumnIndex, int columnCount,
ExistingData existingData = ExistingData.Clear) ExistingData existingData)
{ {
if (target == null) if (target == null)
{ {
@ -1007,8 +1007,7 @@ namespace MathNet.Numerics.LinearAlgebra.Storage
// ROW COPY // ROW COPY
internal override void CopySubRowToUnchecked(VectorStorage<T> target, int rowIndex, internal override void CopySubRowToUnchecked(VectorStorage<T> target, int rowIndex,
int sourceColumnIndex, int targetColumnIndex, int columnCount, int sourceColumnIndex, int targetColumnIndex, int columnCount, ExistingData existingData)
ExistingData existingData = ExistingData.Clear)
{ {
if (existingData == ExistingData.Clear) if (existingData == ExistingData.Clear)
{ {
@ -1034,7 +1033,7 @@ namespace MathNet.Numerics.LinearAlgebra.Storage
// TRANSPOSE // TRANSPOSE
internal override void TransposeToUnchecked(MatrixStorage<T> target, ExistingData existingData = ExistingData.Clear) internal override void TransposeToUnchecked(MatrixStorage<T> target, ExistingData existingData)
{ {
var sparseTarget = target as SparseCompressedRowMatrixStorage<T>; var sparseTarget = target as SparseCompressedRowMatrixStorage<T>;
if (sparseTarget != null) if (sparseTarget != null)
@ -1576,8 +1575,7 @@ namespace MathNet.Numerics.LinearAlgebra.Storage
} }
} }
internal override void MapToUnchecked<TU>(MatrixStorage<TU> target, Func<T, TU> f, internal override void MapToUnchecked<TU>(MatrixStorage<TU> target, Func<T, TU> f, Zeros zeros, ExistingData existingData)
Zeros zeros = Zeros.AllowSkip, ExistingData existingData = ExistingData.Clear)
{ {
var processZeros = zeros == Zeros.Include || !Zero.Equals(f(Zero)); var processZeros = zeros == Zeros.Include || !Zero.Equals(f(Zero));
@ -1671,8 +1669,7 @@ namespace MathNet.Numerics.LinearAlgebra.Storage
} }
} }
internal override void MapIndexedToUnchecked<TU>(MatrixStorage<TU> target, Func<int, int, T, TU> f, internal override void MapIndexedToUnchecked<TU>(MatrixStorage<TU> target, Func<int, int, T, TU> f, Zeros zeros, ExistingData existingData)
Zeros zeros = Zeros.AllowSkip, ExistingData existingData = ExistingData.Clear)
{ {
var processZeros = zeros == Zeros.Include || !Zero.Equals(f(0, 1, Zero)); var processZeros = zeros == Zeros.Include || !Zero.Equals(f(0, 1, Zero));
@ -1769,7 +1766,7 @@ namespace MathNet.Numerics.LinearAlgebra.Storage
internal override void MapSubMatrixIndexedToUnchecked<TU>(MatrixStorage<TU> target, Func<int, int, T, TU> f, internal override void MapSubMatrixIndexedToUnchecked<TU>(MatrixStorage<TU> target, Func<int, int, T, TU> f,
int sourceRowIndex, int targetRowIndex, int rowCount, int sourceRowIndex, int targetRowIndex, int rowCount,
int sourceColumnIndex, int targetColumnIndex, int columnCount, int sourceColumnIndex, int targetColumnIndex, int columnCount,
Zeros zeros = Zeros.AllowSkip, ExistingData existingData = ExistingData.Clear) Zeros zeros, ExistingData existingData)
{ {
var sparseTarget = target as SparseCompressedRowMatrixStorage<TU>; var sparseTarget = target as SparseCompressedRowMatrixStorage<TU>;
if (sparseTarget != null) if (sparseTarget != null)
@ -1978,7 +1975,7 @@ namespace MathNet.Numerics.LinearAlgebra.Storage
// FUNCTIONAL COMBINATORS: FOLD // FUNCTIONAL COMBINATORS: FOLD
internal override void FoldByRowUnchecked<TU>(TU[] target, Func<TU, T, TU> f, Func<TU, int, TU> finalize, TU[] state, Zeros zeros = Zeros.AllowSkip) internal override void FoldByRowUnchecked<TU>(TU[] target, Func<TU, T, TU> f, Func<TU, int, TU> finalize, TU[] state, Zeros zeros)
{ {
if (zeros == Zeros.AllowSkip) if (zeros == Zeros.AllowSkip)
{ {
@ -2018,7 +2015,7 @@ namespace MathNet.Numerics.LinearAlgebra.Storage
} }
} }
internal override void FoldByColumnUnchecked<TU>(TU[] target, Func<TU, T, TU> f, Func<TU, int, TU> finalize, TU[] state, Zeros zeros = Zeros.AllowSkip) internal override void FoldByColumnUnchecked<TU>(TU[] target, Func<TU, T, TU> f, Func<TU, int, TU> finalize, TU[] state, Zeros zeros)
{ {
if (!ReferenceEquals(state, target)) if (!ReferenceEquals(state, target))
{ {

19
src/Numerics/LinearAlgebra/Storage/SparseVectorStorage.cs

@ -417,7 +417,7 @@ namespace MathNet.Numerics.LinearAlgebra.Storage
// VECTOR COPY // VECTOR COPY
internal override void CopyToUnchecked(VectorStorage<T> target, ExistingData existingData = ExistingData.Clear) internal override void CopyToUnchecked(VectorStorage<T> target, ExistingData existingData)
{ {
var sparseTarget = target as SparseVectorStorage<T>; var sparseTarget = target as SparseVectorStorage<T>;
if (sparseTarget != null) if (sparseTarget != null)
@ -468,7 +468,7 @@ namespace MathNet.Numerics.LinearAlgebra.Storage
// Row COPY // Row COPY
internal override void CopyToRowUnchecked(MatrixStorage<T> target, int rowIndex, ExistingData existingData = ExistingData.Clear) internal override void CopyToRowUnchecked(MatrixStorage<T> target, int rowIndex, ExistingData existingData)
{ {
if (existingData == ExistingData.Clear) if (existingData == ExistingData.Clear)
{ {
@ -488,7 +488,7 @@ namespace MathNet.Numerics.LinearAlgebra.Storage
// COLUMN COPY // COLUMN COPY
internal override void CopyToColumnUnchecked(MatrixStorage<T> target, int columnIndex, ExistingData existingData = ExistingData.Clear) internal override void CopyToColumnUnchecked(MatrixStorage<T> target, int columnIndex, ExistingData existingData)
{ {
if (existingData == ExistingData.Clear) if (existingData == ExistingData.Clear)
{ {
@ -509,8 +509,7 @@ namespace MathNet.Numerics.LinearAlgebra.Storage
// SUB-VECTOR COPY // SUB-VECTOR COPY
internal override void CopySubVectorToUnchecked(VectorStorage<T> target, internal override void CopySubVectorToUnchecked(VectorStorage<T> target,
int sourceIndex, int targetIndex, int count, int sourceIndex, int targetIndex, int count, ExistingData existingData)
ExistingData existingData = ExistingData.Clear)
{ {
var sparseTarget = target as SparseVectorStorage<T>; var sparseTarget = target as SparseVectorStorage<T>;
if (sparseTarget != null) if (sparseTarget != null)
@ -648,8 +647,7 @@ namespace MathNet.Numerics.LinearAlgebra.Storage
// FUNCTIONAL COMBINATORS // FUNCTIONAL COMBINATORS
internal override void MapToUnchecked<TU>(VectorStorage<TU> target, Func<T, TU> f, internal override void MapToUnchecked<TU>(VectorStorage<TU> target, Func<T, TU> f, Zeros zeros, ExistingData existingData)
Zeros zeros = Zeros.AllowSkip, ExistingData existingData = ExistingData.Clear)
{ {
var sparseTarget = target as SparseVectorStorage<TU>; var sparseTarget = target as SparseVectorStorage<TU>;
if (sparseTarget != null) if (sparseTarget != null)
@ -723,8 +721,7 @@ namespace MathNet.Numerics.LinearAlgebra.Storage
base.MapToUnchecked(target, f, zeros, existingData); base.MapToUnchecked(target, f, zeros, existingData);
} }
internal override void MapIndexedToUnchecked<TU>(VectorStorage<TU> target, Func<int, T, TU> f, internal override void MapIndexedToUnchecked<TU>(VectorStorage<TU> target, Func<int, T, TU> f, Zeros zeros, ExistingData existingData)
Zeros zeros = Zeros.AllowSkip, ExistingData existingData = ExistingData.Clear)
{ {
var sparseTarget = target as SparseVectorStorage<TU>; var sparseTarget = target as SparseVectorStorage<TU>;
if (sparseTarget != null) if (sparseTarget != null)
@ -798,7 +795,7 @@ namespace MathNet.Numerics.LinearAlgebra.Storage
base.MapIndexedToUnchecked(target, f, zeros, existingData); base.MapIndexedToUnchecked(target, f, zeros, existingData);
} }
internal override void Map2ToUnchecked(VectorStorage<T> target, VectorStorage<T> other, Func<T, T, T> f, Zeros zeros = Zeros.AllowSkip, ExistingData existingData = ExistingData.Clear) internal override void Map2ToUnchecked(VectorStorage<T> target, VectorStorage<T> other, Func<T, T, T> f, Zeros zeros, ExistingData existingData)
{ {
var processZeros = zeros == Zeros.Include || !Zero.Equals(f(Zero, Zero)); var processZeros = zeros == Zeros.Include || !Zero.Equals(f(Zero, Zero));
@ -948,7 +945,7 @@ namespace MathNet.Numerics.LinearAlgebra.Storage
base.Map2ToUnchecked(target, other, f, zeros, existingData); base.Map2ToUnchecked(target, other, f, zeros, existingData);
} }
internal override TState Fold2Unchecked<TOther, TState>(VectorStorage<TOther> other, Func<TState, T, TOther, TState> f, TState state, Zeros zeros = Zeros.AllowSkip) internal override TState Fold2Unchecked<TOther, TState>(VectorStorage<TOther> other, Func<TState, T, TOther, TState> f, TState state, Zeros zeros)
{ {
var sparseOther = other as SparseVectorStorage<TOther>; var sparseOther = other as SparseVectorStorage<TOther>;
if (sparseOther != null) if (sparseOther != null)

26
src/Numerics/LinearAlgebra/Storage/VectorStorage.cs

@ -207,7 +207,7 @@ namespace MathNet.Numerics.LinearAlgebra.Storage
CopyToUnchecked(target, existingData); CopyToUnchecked(target, existingData);
} }
internal virtual void CopyToUnchecked(VectorStorage<T> target, ExistingData existingData = ExistingData.Clear) internal virtual void CopyToUnchecked(VectorStorage<T> target, ExistingData existingData)
{ {
for (int i = 0; i < Length; i++) for (int i = 0; i < Length; i++)
{ {
@ -233,7 +233,7 @@ namespace MathNet.Numerics.LinearAlgebra.Storage
CopyToRowUnchecked(target, rowIndex, existingData); CopyToRowUnchecked(target, rowIndex, existingData);
} }
internal virtual void CopyToRowUnchecked(MatrixStorage<T> target, int rowIndex, ExistingData existingData = ExistingData.Clear) internal virtual void CopyToRowUnchecked(MatrixStorage<T> target, int rowIndex, ExistingData existingData)
{ {
for (int j = 0; j < Length; j++) for (int j = 0; j < Length; j++)
{ {
@ -259,7 +259,7 @@ namespace MathNet.Numerics.LinearAlgebra.Storage
CopyToColumnUnchecked(target, columnIndex, existingData); CopyToColumnUnchecked(target, columnIndex, existingData);
} }
internal virtual void CopyToColumnUnchecked(MatrixStorage<T> target, int columnIndex, ExistingData existingData = ExistingData.Clear) internal virtual void CopyToColumnUnchecked(MatrixStorage<T> target, int columnIndex, ExistingData existingData)
{ {
for (int i = 0; i < Length; i++) for (int i = 0; i < Length; i++)
{ {
@ -288,8 +288,7 @@ namespace MathNet.Numerics.LinearAlgebra.Storage
} }
internal virtual void CopySubVectorToUnchecked(VectorStorage<T> target, internal virtual void CopySubVectorToUnchecked(VectorStorage<T> target,
int sourceIndex, int targetIndex, int count, int sourceIndex, int targetIndex, int count, ExistingData existingData)
ExistingData existingData = ExistingData.Clear)
{ {
if (ReferenceEquals(this, target)) if (ReferenceEquals(this, target))
{ {
@ -333,8 +332,7 @@ namespace MathNet.Numerics.LinearAlgebra.Storage
} }
internal virtual void CopyToSubRowUnchecked(MatrixStorage<T> target, int rowIndex, internal virtual void CopyToSubRowUnchecked(MatrixStorage<T> target, int rowIndex,
int sourceColumnIndex, int targetColumnIndex, int columnCount, int sourceColumnIndex, int targetColumnIndex, int columnCount, ExistingData existingData)
ExistingData existingData = ExistingData.Clear)
{ {
for (int j = sourceColumnIndex, jj = targetColumnIndex; j < sourceColumnIndex + columnCount; j++, jj++) for (int j = sourceColumnIndex, jj = targetColumnIndex; j < sourceColumnIndex + columnCount; j++, jj++)
{ {
@ -363,8 +361,7 @@ namespace MathNet.Numerics.LinearAlgebra.Storage
} }
internal virtual void CopyToSubColumnUnchecked(MatrixStorage<T> target, int columnIndex, internal virtual void CopyToSubColumnUnchecked(MatrixStorage<T> target, int columnIndex,
int sourceRowIndex, int targetRowIndex, int rowCount, int sourceRowIndex, int targetRowIndex, int rowCount, ExistingData existingData)
ExistingData existingData = ExistingData.Clear)
{ {
for (int i = sourceRowIndex, ii = targetRowIndex; i < sourceRowIndex + rowCount; i++, ii++) for (int i = sourceRowIndex, ii = targetRowIndex; i < sourceRowIndex + rowCount; i++, ii++)
{ {
@ -433,8 +430,7 @@ namespace MathNet.Numerics.LinearAlgebra.Storage
MapToUnchecked(target, f, zeros, existingData); MapToUnchecked(target, f, zeros, existingData);
} }
internal virtual void MapToUnchecked<TU>(VectorStorage<TU> target, Func<T, TU> f, internal virtual void MapToUnchecked<TU>(VectorStorage<TU> target, Func<T, TU> f, Zeros zeros, ExistingData existingData)
Zeros zeros = Zeros.AllowSkip, ExistingData existingData = ExistingData.Clear)
where TU : struct, IEquatable<TU>, IFormattable where TU : struct, IEquatable<TU>, IFormattable
{ {
for (int i = 0; i < Length; i++) for (int i = 0; i < Length; i++)
@ -460,8 +456,7 @@ namespace MathNet.Numerics.LinearAlgebra.Storage
MapIndexedToUnchecked(target, f, zeros, existingData); MapIndexedToUnchecked(target, f, zeros, existingData);
} }
internal virtual void MapIndexedToUnchecked<TU>(VectorStorage<TU> target, Func<int, T, TU> f, internal virtual void MapIndexedToUnchecked<TU>(VectorStorage<TU> target, Func<int, T, TU> f, Zeros zeros, ExistingData existingData)
Zeros zeros = Zeros.AllowSkip, ExistingData existingData = ExistingData.Clear)
where TU : struct, IEquatable<TU>, IFormattable where TU : struct, IEquatable<TU>, IFormattable
{ {
for (int i = 0; i < Length; i++) for (int i = 0; i < Length; i++)
@ -496,8 +491,7 @@ namespace MathNet.Numerics.LinearAlgebra.Storage
Map2ToUnchecked(target, other, f, zeros, existingData); Map2ToUnchecked(target, other, f, zeros, existingData);
} }
internal virtual void Map2ToUnchecked(VectorStorage<T> target, VectorStorage<T> other, Func<T, T, T> f, internal virtual void Map2ToUnchecked(VectorStorage<T> target, VectorStorage<T> other, Func<T, T, T> f, Zeros zeros, ExistingData existingData)
Zeros zeros = Zeros.AllowSkip, ExistingData existingData = ExistingData.Clear)
{ {
for (int i = 0; i < Length; i++) for (int i = 0; i < Length; i++)
{ {
@ -521,7 +515,7 @@ namespace MathNet.Numerics.LinearAlgebra.Storage
return Fold2Unchecked(other, f, state, zeros); return Fold2Unchecked(other, f, state, zeros);
} }
internal virtual TState Fold2Unchecked<TOther, TState>(VectorStorage<TOther> other, Func<TState, T, TOther, TState> f, TState state, Zeros zeros = Zeros.AllowSkip) internal virtual TState Fold2Unchecked<TOther, TState>(VectorStorage<TOther> other, Func<TState, T, TOther, TState> f, TState state, Zeros zeros)
where TOther : struct, IEquatable<TOther>, IFormattable where TOther : struct, IEquatable<TOther>, IFormattable
{ {
for (int i = 0; i < Length; i++) for (int i = 0; i < Length; i++)

Loading…
Cancel
Save