Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
19 changes: 12 additions & 7 deletions TMG-Framework/src/TMG-Framework/Processing/AST/Add.cs
Original file line number Diff line number Diff line change
Expand Up @@ -133,22 +133,24 @@ public override ComputationResult Evaluate(ComputationResult lhs, ComputationRes
else if (lhs.IsVectorResult)
{
var retMatrix = rhs.Accumulator ? rhs.OdData : new Matrix(rhs.OdData.RowCategories, rhs.OdData.ColumnCategories);
var flatRet = retMatrix.Data;
var flatRhs = rhs.OdData.Data;
var flatLhs = lhs.VectorData.Data;
var rowSize = flatLhs.Length;
if (lhs.Direction == ComputationResult.VectorDirection.Vertical)
{
for (int i = 0; i < rowSize; i++)
{
VectorHelper.Add(retMatrix.Data, i * rowSize, flatRhs, i * rowSize, flatLhs[i], rowSize);
var retRow = retMatrix.GetRow(i);
var rhsRow = rhs.OdData.GetRow(i);
VectorHelper.Add(retRow, rhsRow, flatLhs[i]);
}
}
else if (lhs.Direction == ComputationResult.VectorDirection.Horizontal)
{
for (int i = 0; i < rowSize; i++)
{
VectorHelper.Add(retMatrix.Data, i * rowSize, flatLhs, 0, flatRhs, i * rowSize, rowSize);
var retRow = retMatrix.GetRow(i);
var rhsRow = rhs.OdData.GetRow(i);
VectorHelper.Add(retRow, rhsRow, flatLhs);
}
}
else
Expand All @@ -160,22 +162,25 @@ public override ComputationResult Evaluate(ComputationResult lhs, ComputationRes
else
{
var retMatrix = lhs.Accumulator ? lhs.OdData : new Matrix(lhs.OdData.RowCategories, lhs.OdData.ColumnCategories);
var flatRet = retMatrix.Data;
var flatLhs = lhs.OdData.Data;
var flatRhs = rhs.VectorData.Data;
var rowSize = flatRhs.Length;
if (rhs.Direction == ComputationResult.VectorDirection.Vertical)
{
for (int i = 0; i < rowSize; i++)
{
VectorHelper.Add(retMatrix.Data, i * rowSize, flatLhs, i * rowSize, flatRhs[i], rowSize);
var retRow = retMatrix.GetRow(i);
var lhsRow = lhs.OdData.GetRow(i);
VectorHelper.Add(retRow, lhsRow, flatRhs[i]);
}
}
else if (rhs.Direction == ComputationResult.VectorDirection.Horizontal)
{
for (int i = 0; i < rowSize; i++)
{
VectorHelper.Add(retMatrix.Data, i * rowSize, flatRhs, 0, flatLhs, i * rowSize, rowSize);
var retRow = retMatrix.GetRow(i);
var lhsRow = lhs.OdData.GetRow(i);
VectorHelper.Add(retRow, lhsRow, flatRhs);
}
}
else
Expand Down
22 changes: 14 additions & 8 deletions TMG-Framework/src/TMG-Framework/Processing/AST/Divide.cs
Original file line number Diff line number Diff line change
Expand Up @@ -102,28 +102,30 @@ public override ComputationResult Evaluate(ComputationResult lhs, ComputationRes
if (lhs.IsVectorResult && rhs.IsVectorResult)
{
var retMatrix = lhs.Accumulator ? lhs.VectorData : (rhs.Accumulator ? rhs.VectorData : new Vector(lhs.VectorData));
VectorHelper.Divide(retMatrix.Data, 0, lhs.VectorData.Data, 0, rhs.VectorData.Data, 0, retMatrix.Data.Length);
VectorHelper.Divide(retMatrix.Data.AsSpan(), lhs.VectorData.Data.AsSpan(), rhs.VectorData.Data.AsSpan());
return new ComputationResult(retMatrix, true, lhs.Direction);
}
else if (lhs.IsVectorResult)
{
var retMatrix = rhs.Accumulator ? rhs.OdData : new Matrix(rhs.OdData);
var flatRet = retMatrix.Data;
var flatRhs = rhs.OdData.Data;
var flatLhs = lhs.VectorData.Data;
var rowSize = flatLhs.Length;
if (lhs.Direction == ComputationResult.VectorDirection.Vertical)
{
for (int i = 0; i < rowSize; i++)
{
VectorHelper.Divide(retMatrix.Data, i * rowSize, flatLhs[i], flatRhs, i * rowSize, rowSize);
var retRow = retMatrix.GetRow(i);
var retRight = rhs.OdData.GetRow(i);
VectorHelper.Divide(retRow, flatLhs[i], retRight);
}
}
else if (lhs.Direction == ComputationResult.VectorDirection.Horizontal)
{
for (int i = 0; i < rowSize; i++)
{
VectorHelper.Divide(retMatrix.Data, i * rowSize, flatLhs, 0, flatRhs, i * rowSize, rowSize);
var retRow = retMatrix.GetRow(i);
var retRight = rhs.OdData.GetRow(i);
VectorHelper.Divide(retRow, flatLhs, retRight);
}
}
else
Expand All @@ -143,14 +145,18 @@ public override ComputationResult Evaluate(ComputationResult lhs, ComputationRes
{
for (int i = 0; i < rowSize; i++)
{
VectorHelper.Divide(retMatrix.Data, i * rowSize, flatLhs, i * rowSize, flatRhs[i], rowSize);
var retRow = retMatrix.GetRow(i);
var retLeft = lhs.OdData.GetRow(i);
VectorHelper.Divide(retRow, retLeft, flatRhs[i]);
}
}
else if (rhs.Direction == ComputationResult.VectorDirection.Horizontal)
{
for (int i = 0; i < rowSize; i++)
{
VectorHelper.Divide(retMatrix.Data, i * rowSize, flatLhs, i * rowSize, flatRhs, 0, rowSize);
var retRow = retMatrix.GetRow(i);
var retLeft = lhs.OdData.GetRow(i);
VectorHelper.Divide(retRow, retLeft, flatRhs);
}
}
else
Expand All @@ -163,7 +169,7 @@ public override ComputationResult Evaluate(ComputationResult lhs, ComputationRes
else
{
var retMatrix = lhs.Accumulator ? lhs.OdData : (rhs.Accumulator ? rhs.OdData : new Matrix(lhs.OdData));
VectorHelper.Divide(retMatrix.Data, 0, lhs.OdData.Data, 0, rhs.OdData.Data, 0, lhs.OdData.Data.Length);
VectorHelper.Divide(retMatrix.Data, lhs.OdData.Data, rhs.OdData.Data);
return new ComputationResult(retMatrix, true);
}
}
Expand Down
22 changes: 13 additions & 9 deletions TMG-Framework/src/TMG-Framework/Processing/AST/Exponent.cs
Original file line number Diff line number Diff line change
Expand Up @@ -77,28 +77,30 @@ public override ComputationResult Evaluate(ComputationResult lhs, ComputationRes
if (lhs.IsVectorResult && rhs.IsVectorResult)
{
var retMatrix = lhs.Accumulator ? lhs.VectorData : (rhs.Accumulator ? rhs.VectorData : new Vector(lhs.VectorData));
VectorHelper.Subtract(retMatrix.Data, 0, lhs.VectorData.Data, 0, rhs.VectorData.Data, 0, retMatrix.Data.Length);
VectorHelper.Pow(retMatrix.Data, lhs.VectorData.Data, rhs.VectorData.Data);
return new ComputationResult(retMatrix, true, lhs.Direction);
}
else if (lhs.IsVectorResult)
{
var retMatrix = rhs.Accumulator ? rhs.OdData : new Matrix(rhs.OdData);
var flatRet = retMatrix.Data;
var flatRhs = rhs.OdData.Data;
var flatLhs = lhs.VectorData.Data;
var rowSize = flatLhs.Length;
if (lhs.Direction == ComputationResult.VectorDirection.Vertical)
{
for (int i = 0; i < rowSize; i++)
{
VectorHelper.Pow(retMatrix.Data, i * rowSize, flatLhs[i], flatRhs, i * rowSize, rowSize);
var retRow = retMatrix.GetRow(i);
var rhsRow = rhs.OdData.GetRow(i);
VectorHelper.Pow(retRow, flatLhs[i], rhsRow);
}
}
else if (lhs.Direction == ComputationResult.VectorDirection.Horizontal)
{
for (int i = 0; i < rowSize; i++)
{
VectorHelper.Pow(retMatrix.Data, i * rowSize, flatLhs, 0, flatRhs, i * rowSize, rowSize);
var retRow = retMatrix.GetRow(i);
var rhsRow = rhs.OdData.GetRow(i);
VectorHelper.Pow(retRow, flatLhs, rhsRow);
}
}
else
Expand All @@ -110,22 +112,24 @@ public override ComputationResult Evaluate(ComputationResult lhs, ComputationRes
else
{
var retMatrix = lhs.Accumulator ? lhs.OdData : new Matrix(lhs.OdData);
var flatRet = retMatrix.Data;
var flatLhs = lhs.OdData.Data;
var flatRhs = rhs.VectorData.Data;
var rowSize = flatRhs.Length;
if (rhs.Direction == ComputationResult.VectorDirection.Vertical)
{
for (int i = 0; i < rowSize; i++)
{
VectorHelper.Pow(retMatrix.Data, i * rowSize, flatLhs, i * rowSize, flatRhs[i], rowSize);
var retRow = retMatrix.GetRow(i);
var lhsRow = lhs.OdData.GetRow(i);
VectorHelper.Pow(retRow, lhsRow, flatRhs[i]);
}
}
else if (rhs.Direction == ComputationResult.VectorDirection.Horizontal)
{
for (int i = 0; i < rowSize; i++)
{
VectorHelper.Pow(retMatrix.Data, i * rowSize, flatLhs, i * rowSize, flatRhs, 0, rowSize);
var retRow = retMatrix.GetRow(i);
var lhsRow = lhs.OdData.GetRow(i);
VectorHelper.Pow(retRow, lhsRow, flatRhs);
}
}
else
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -498,7 +498,7 @@ private ComputationResult ComputeNormalizeRows(ComputationResult[] values)
else if (flatRead == flatWrite)
{
// we only need to accumulate if we are going to return a previously accumulated matrix.
VectorHelper.Memset(flatWrite, 0f);
flatWrite.Fill(0f);
}
});
return new ComputationResult(writeTo, true);
Expand Down Expand Up @@ -692,15 +692,15 @@ private ComputationResult Log(ComputationResult[] values)
var saveTo = values[0].Accumulator ? values[0].VectorData : new Vector(values[0].VectorData);
var flat = saveTo.Data;
var source = values[0].VectorData.Data;
VectorHelper.Log(flat, 0, source, 0, source.Length);
VectorHelper.Log(flat, source);
return new ComputationResult(saveTo, true);
}
else
{
var saveTo = values[0].Accumulator ? values[0].OdData : new Matrix(values[0].OdData);
var flat = saveTo.Data;
var source = values[0].OdData.Data;
VectorHelper.Log(flat, 0, source, 0, source.Length);
VectorHelper.Log(flat, source);
return new ComputationResult(saveTo, true);
}
}
Expand Down
Loading