Skip to content

Commit 2721f89

Browse files
committed
Add OfJaggedArray for dense storage.
1 parent f893665 commit 2721f89

File tree

2 files changed

+69
-0
lines changed

2 files changed

+69
-0
lines changed

CSparse.Tests/Double/DenseMatrixTest.cs

+48
Original file line numberDiff line numberDiff line change
@@ -304,6 +304,54 @@ public void TestOfMatrix(int rows, int columns)
304304
Assert.IsTrue(denseA.Equals(denseB));
305305
}
306306

307+
[TestCase(2, 2)]
308+
[TestCase(2, 3)]
309+
public void TestOfArray(int rows, int columns)
310+
{
311+
var denseData = MatrixHelper.LoadDense(rows, columns);
312+
313+
var denseA = denseData.A;
314+
315+
var jArray = new double[rows, columns];
316+
317+
for (int i = 0; i < rows; i++)
318+
{
319+
for (int j = 0; j < columns; j++)
320+
{
321+
jArray[i, j] = denseA.At(i, j);
322+
}
323+
}
324+
325+
var denseB = DenseMatrix.OfArray(jArray);
326+
327+
Assert.IsTrue(denseA.Equals(denseB));
328+
}
329+
330+
[TestCase(2, 2)]
331+
[TestCase(2, 3)]
332+
public void TestOfJaggedArray(int rows, int columns)
333+
{
334+
var denseData = MatrixHelper.LoadDense(rows, columns);
335+
336+
var denseA = denseData.A;
337+
338+
var jArray = new double[rows][];
339+
340+
for (int i = 0; i < rows; i++)
341+
{
342+
var r = jArray[i] = new double[columns];
343+
344+
for (int j = 0; j < columns; j++)
345+
{
346+
r[j] = denseA.At(i, j);
347+
}
348+
}
349+
350+
var denseB = DenseMatrix.OfJaggedArray(jArray);
351+
352+
Assert.IsTrue(denseA.Equals(denseB));
353+
}
354+
307355
[TestCase(2, 2)]
308356
[TestCase(2, 3)]
309357
public void TestOfIndexed(int rows, int columns)

CSparse/Storage/DenseColumnMajorStorage.cs

+21
Original file line numberDiff line numberDiff line change
@@ -92,6 +92,27 @@ public static DenseColumnMajorStorage<T> OfArray(T[,] array)
9292
return A;
9393
}
9494

95+
/// <summary>
96+
/// Create a new dense matrix as a copy of the given two-dimensional array.
97+
/// </summary>
98+
public static DenseColumnMajorStorage<T> OfJaggedArray(T[][] array)
99+
{
100+
int rows = array.Length;
101+
int columns = array[0].Length;
102+
103+
var A = Create(rows, columns);
104+
105+
for (int i = 0; i < rows; i++)
106+
{
107+
for (int j = 0; j < columns; j++)
108+
{
109+
A.At(i, j, array[i][j]);
110+
}
111+
}
112+
113+
return A;
114+
}
115+
95116
/// <summary>
96117
/// Create a new dense matrix as a copy of the given indexed enumerable.
97118
/// </summary>

0 commit comments

Comments
 (0)