Skip to content

Commit

Permalink
update matrix ops
Browse files Browse the repository at this point in the history
  • Loading branch information
daelsepara committed Dec 13, 2018
1 parent 1468aad commit 68268f5
Show file tree
Hide file tree
Showing 2 changed files with 147 additions and 114 deletions.
108 changes: 54 additions & 54 deletions Clustering/ManagedMatrix.cs
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ public static class ManagedMatrix
// ------------------------------------------------------------------------------------
public static void PrintList(ManagedIntList input, bool vert = false)
{
for (int x = 0; x < input.x; x++)
for (var x = 0; x < input.x; x++)
{
if (!vert)
{
Expand All @@ -36,11 +36,11 @@ public static void PrintList(ManagedIntList input, bool vert = false)

public static void Print2D(ManagedArray input)
{
for (int y = 0; y < input.y; y++)
for (var y = 0; y < input.y; y++)
{
Console.Write("{0}: ", y.ToString("D", ci));

for (int x = 0; x < input.x; x++)
for (var x = 0; x < input.x; x++)
{
if (x > 0)
{
Expand All @@ -56,15 +56,15 @@ public static void Print2D(ManagedArray input)

public static void Print3D(ManagedArray input)
{
for (int z = 0; z < input.z; z++)
for (var z = 0; z < input.z; z++)
{
Console.Write("[, , {0}]\n", z.ToString("D", ci));

for (int y = 0; y < input.y; y++)
for (var y = 0; y < input.y; y++)
{
Console.Write("{0}: ", y.ToString("D", ci));

for (int x = 0; x < input.x; x++)
for (var x = 0; x < input.x; x++)
{
if (x > 0)
{
Expand All @@ -81,15 +81,15 @@ public static void Print3D(ManagedArray input)

public static void Print4D(ManagedArray input, int i)
{
for (int z = 0; z < input.z; z++)
for (var z = 0; z < input.z; z++)
{
Console.Write("[, , {0}]\n", z.ToString("D", ci));

for (int y = 0; y < input.y; y++)
for (var y = 0; y < input.y; y++)
{
Console.Write("{0}: ", y.ToString("D", ci));

for (int x = 0; x < input.x; x++)
for (var x = 0; x < input.x; x++)
{
if (x > 0)
{
Expand All @@ -109,11 +109,11 @@ public static void Print4DIJ(ManagedArray input, int i, int j)
var size2D = input.x * input.y;
var srcoffset = (i * input.j + j) * size2D;

for (int y = 0; y < input.y; y++)
for (var y = 0; y < input.y; y++)
{
Console.Write("{0}: ", y.ToString("D", ci));

for (int x = 0; x < input.x; x++)
for (var x = 0; x < input.x; x++)
{
if (x > 0)
{
Expand All @@ -136,9 +136,9 @@ public static void Transpose(ManagedArray dst, ManagedArray src)
{
dst.Resize(src.y, src.x, false);

for (int y = 0; y < src.y; y++)
for (var y = 0; y < src.y; y++)
{
for (int x = 0; x < src.x; x++)
for (var x = 0; x < src.x; x++)
{
dst[y, x] = src[x, y];
}
Expand All @@ -164,13 +164,13 @@ public static void Multiply(ManagedArray result, ManagedArray A, ManagedArray B)
// Naive version
result.Resize(B.x, A.y, false);
for (int y = 0; y < A.y; y++)
for (var y = 0; y < A.y; y++)
{
for (int x = 0; x < B.x; x++)
for (var x = 0; x < B.x; x++)
{
result[x, y] = 0;
for (int k = 0; k < A.x; k++)
for (var k = 0; k < A.x; k++)
{
result[x, y] = result[x, y] + A[k, y] * B[x, k];
}
Expand All @@ -189,13 +189,13 @@ public static void Multiply(ManagedArray result, ManagedArray A, ManagedArray B)

result.Resize(cols, rows, true);

for (int y = 0; y < rows; y++)
for (var y = 0; y < rows; y++)
{
rhs = 0;

for (int x = 0; x < mid; x++)
for (var x = 0; x < mid; x++)
{
for (int k = 0; k < cols; k++)
for (var k = 0; k < cols; k++)
{
result[dest + k] += A[lhs + x] * B[rhs + k];
}
Expand All @@ -216,7 +216,7 @@ public static void Multiply(ManagedArray result, ManagedArray A, ManagedArray B)
// Element by element multiplication
public static void Product(ManagedArray result, ManagedArray A, ManagedArray B)
{
for (int x = 0; x < A.Length(); x++)
for (var x = 0; x < A.Length(); x++)
{
result[x] = A[x] * B[x];
}
Expand All @@ -233,7 +233,7 @@ public static ManagedArray BSXMUL(ManagedArray A, ManagedArray B)
{
var result = new ManagedArray(A);

for (int x = 0; x < A.Length(); x++)
for (var x = 0; x < A.Length(); x++)
{
result[x] = A[x] * B[x];
}
Expand All @@ -246,7 +246,7 @@ public static ManagedArray BSXADD(ManagedArray A, ManagedArray B)
{
var result = new ManagedArray(A);

for (int x = 0; x < A.Length(); x++)
for (var x = 0; x < A.Length(); x++)
{
result[x] = A[x] + B[x];
}
Expand All @@ -267,7 +267,7 @@ public static ManagedArray Multiply(ManagedArray A, ManagedArray B)
// Matrix Addition with Scaling
public static void Add(ManagedArray A, ManagedArray B, double Scale = 1)
{
for (int x = 0; x < A.Length(); x++)
for (var x = 0; x < A.Length(); x++)
{
A[x] = A[x] + Scale * B[x];
}
Expand All @@ -277,7 +277,7 @@ public static ManagedArray Pow(ManagedArray A, double power)
{
var result = new ManagedArray(A);

for (int x = 0; x < A.Length(); x++)
for (var x = 0; x < A.Length(); x++)
{
result[x] = Math.Pow(A[x], power);
}
Expand All @@ -300,7 +300,7 @@ public static ManagedArray Pow(double A, ManagedArray powers)
// Matrix * Constant Multiplication
public static void Multiply(ManagedArray A, double B)
{
for (int x = 0; x < A.Length(); x++)
for (var x = 0; x < A.Length(); x++)
{
A[x] = A[x] * B;
}
Expand All @@ -309,7 +309,7 @@ public static void Multiply(ManagedArray A, double B)
// Matrix + Constant Addition
public static void Add(ManagedArray A, double B)
{
for (int x = 0; x < A.Length(); x++)
for (var x = 0; x < A.Length(); x++)
{
A[x] = A[x] + B;
}
Expand All @@ -318,9 +318,9 @@ public static void Add(ManagedArray A, double B)
// Matrix Summation
public static double Sum(ManagedArray A)
{
double sum = 0;
var sum = 0.0;

for (int x = 0; x < A.Length(); x++)
for (var x = 0; x < A.Length(); x++)
{
sum += A[x];
}
Expand All @@ -331,9 +331,9 @@ public static double Sum(ManagedArray A)
// get sum of squares of each element
public static double SquareSum(ManagedArray A)
{
double sum = 0;
var sum = 0.0;

for (int x = 0; x < A.Length(); x++)
for (var x = 0; x < A.Length(); x++)
{
sum += A[x] * A[x];
}
Expand All @@ -348,11 +348,11 @@ public static void Mean(ManagedArray dst, ManagedArray src, int dim)
{
dst.Resize(src.x, 1, false);

for (int x = 0; x < src.x; x++)
for (var x = 0; x < src.x; x++)
{
double sum = 0;
var sum = 0.0;

for (int y = 0; y < src.y; y++)
for (var y = 0; y < src.y; y++)
{
sum += src[x, y];
}
Expand All @@ -364,11 +364,11 @@ public static void Mean(ManagedArray dst, ManagedArray src, int dim)
{
dst.Resize(1, src.y, false);

for (int y = 0; y < src.y; y++)
for (var y = 0; y < src.y; y++)
{
double sum = 0;
var sum = 0.0;

for (int x = 0; x < src.x; x++)
for (var x = 0; x < src.x; x++)
{
sum += src[x, y];
}
Expand All @@ -381,15 +381,15 @@ public static void Mean(ManagedArray dst, ManagedArray src, int dim)
// sigmoid function
public static double Sigmoid(double x)
{
return 1 / (1 + Math.Exp(-x));
return 1.0 / (1.0 + Math.Exp(-x));
}

// Get element per element difference between arrays
public static ManagedArray Diff(ManagedArray A, ManagedArray B)
{
var result = new ManagedArray(A, false);

for (int x = 0; x < A.Length(); x++)
for (var x = 0; x < A.Length(); x++)
{
result[x] = A[x] - B[x];
}
Expand All @@ -402,7 +402,7 @@ public static ManagedArray Sigm(ManagedArray A)
{
var result = new ManagedArray(A, false);

for (int x = 0; x < A.Length(); x++)
for (var x = 0; x < A.Length(); x++)
{
result[x] = Sigmoid(A[x]);
}
Expand All @@ -415,11 +415,11 @@ public static ManagedArray DSigm(ManagedArray A)
{
var result = new ManagedArray(A, false);

for (int x = 0; x < A.Length(); x++)
for (var x = 0; x < A.Length(); x++)
{
var sigmoid = Sigmoid(A[x]);

result[x] = sigmoid * (1 - sigmoid);
result[x] = sigmoid * (1.0 - sigmoid);
}

return result;
Expand Down Expand Up @@ -449,11 +449,11 @@ public static void Flip(ManagedArray dst, ManagedArray src, int FlipDim)
{
dst.Resize(src.x, src.y, src.z, false);

for (int z = 0; z < src.z; z++)
for (var z = 0; z < src.z; z++)
{
for (int y = 0; y < src.y; y++)
for (var y = 0; y < src.y; y++)
{
for (int x = 0; x < src.x; x++)
for (var x = 0; x < src.x; x++)
{
switch (FlipDim)
{
Expand Down Expand Up @@ -484,7 +484,7 @@ public static void FlipAll(ManagedArray dst, ManagedArray src)

ManagedOps.Copy3D(tmp, src, 0, 0, 0);

for (int FlipDim = 0; FlipDim < 3; FlipDim++)
for (var FlipDim = 0; FlipDim < 3; FlipDim++)
{
Flip(dst, tmp, FlipDim);

Expand All @@ -503,7 +503,7 @@ public static void Rotate180(ManagedArray dst, ManagedArray src)

ManagedOps.Copy2D(tmp, src, 0, 0);

for (int FlipDim = 0; FlipDim < 2; FlipDim++)
for (var FlipDim = 0; FlipDim < 2; FlipDim++)
{
Flip(dst, tmp, FlipDim);

Expand All @@ -521,13 +521,13 @@ public static void Expand(ManagedArray A, int expandx, int expandy, ManagedArray

output.Resize(outputx, outputy, false);

for (int y = 0; y < A.y; y++)
for (var y = 0; y < A.y; y++)
{
for (int x = 0; x < A.x; x++)
for (var x = 0; x < A.x; x++)
{
for (int SZy = 0; SZy < expandy; SZy++)
for (var SZy = 0; SZy < expandy; SZy++)
{
for (int SZx = 0; SZx < expandx; SZx++)
for (var SZx = 0; SZx < expandx; SZx++)
{
output[x * expandx + SZx, y * expandy + SZy] = A[x, y];
}
Expand Down Expand Up @@ -559,7 +559,7 @@ public static ManagedArray RowSums(ManagedArray A)

for (var i = 0; i < A.y; i++)
{
result[i] = 0;
result[i] = 0.0;

for (var j = 0; j < A.x; j++)
{
Expand All @@ -576,7 +576,7 @@ public static ManagedArray ColSums(ManagedArray A)

for (var j = 0; j < A.x; j++)
{
result[j] = 0;
result[j] = 0.0;

for (var i = 0; i < A.y; i++)
{
Expand All @@ -594,9 +594,9 @@ public static ManagedArray Diag(int dim)
{
var result = new ManagedArray(dim, dim, false);

for (int y = 0; y < dim; y++)
for (var y = 0; y < dim; y++)
{
for (int x = 0; x < dim; x++)
for (var x = 0; x < dim; x++)
{
result[x, y] = (x == y) ? 1 : 0;
}
Expand Down
Loading

0 comments on commit 68268f5

Please sign in to comment.