Sorry if the title and question are not clear; I don't have a good way to describe it. But here it goes:
So what is happening is that "testMat"s are somehow linked together, and it makes the values change even though I'm not redefining them. E.g., if you run this code below, you'll see that in testResult's matSum function the values of out1 and out2 are changing as out changes (in the loop), which I have no idea why! Their values don't change in testResult1's. Where does this behavior comes from?
Sub Main()
Dim testMat As Double(,) = {{1, 2}, {3, 4}}
Dim testResult As Double(,) = matSum(testMat, testMat, testMat)
Dim testResult1 As Double(,) = matSum({{1, 2}, {3, 4}}, {{1, 2}, {3, 4}}, {{1, 2}, {3, 4}})
End Sub
Function matSum(ByVal ParamArray args As Double()(,)) As Double(,)
'This function sums matrices. It assumes you know how to sum matrices.
Dim m, n As Integer
Dim out, out1, out2 As Double(,)
Dim numArgs As Integer = args.Length
out = args(0)
out1 = args(1)
out2 = args(2)
m = out.GetUpperBound(0)
n = out.GetUpperBound(1)
For v As Integer = 1 To numArgs - 1
For i As Integer = 0 To m
For j As Integer = 0 To n
out(i, j) = out(i, j) + args(v)(i, j)
Next
Next
Next
Return out
End Function