dot product

This commit is contained in:
array-in-a-matrix 2022-11-22 19:53:27 -05:00
parent f13f805eac
commit 3e62374844

View file

@ -1,4 +1,5 @@
import strutils, sequtils, os, procedures #, strformat
import strutils, sequtils, os, procedures, strformat
var operation: string
case paramStr(0):
@ -10,7 +11,7 @@ case paramStr(0):
echo "Parameter is cross"
else:
# TODO: ask user to preform dot or cross product
echo "maultrix"
echo "multrix"
echo "Enter number of rows in the first matrix:"
@ -31,20 +32,31 @@ var m2 = newSeqWith(r2, newSeq[float](c2))
procedures.fillMatrix(m2, r2, c2)
var m = newSeqWith(0, newSeq[float](0)) # ? double check this
var r, c: int
# TODO: calculate dot product (in procedures)
for i in countup(1, r1):
for j in countup(1, c1):
m[i-1].add( m1[i-1][j-1] * m2[j-1][i-1] + m1[i][j] * m2[j][i] ) # ? double check this
m[i-1].delete(0)
if c1 == r2:
c = c2
r = r1
else:
quit "Matrix dimensions mismatched, operation invalid!", QuitFailure
var m = newSeqWith(r, newSeq[float](c))
for i in countup(0, r1-1):
for j in countup(0, c2-1):
for k in countup(0, c1-1):
m[i][j] = m[i][j] + m1[i][k] * m2[k][j]
# TODO: calculate cross product (in procedures)
echo "\nFirst matrix is:"
procedures.printMatrix(m1, r1)
echo "\nSecond matrix is:"
procedures.printMatrix(m2, r2)
# TODO: print result to stdout
procedures.printMatrix(m, r1)
echo "\nResult matrix is:"
procedures.printMatrix(m, r)