use control flow graph for sink params
This commit is contained in:
parent
a50cfbf814
commit
dc935f2b41
3 changed files with 23 additions and 44 deletions
|
|
@ -52,6 +52,8 @@ proc matrix*(m, n: int, s: float): Matrix =
|
|||
for i in 0 ..< m * n:
|
||||
result.data[i] = s
|
||||
|
||||
proc len(m: Matrix): int = m.n * m.m
|
||||
|
||||
proc `[]`*(m: Matrix, i, j: int): float {.inline.} =
|
||||
## Get a single element.
|
||||
m.data[i * m.n + j]
|
||||
|
|
@ -73,7 +75,8 @@ proc `-`*(m: sink Matrix): Matrix =
|
|||
|
||||
proc `+`*(a: sink Matrix; b: Matrix): Matrix =
|
||||
## ``C = A + B``
|
||||
assert(b.m == a.m and b.n == a.n, "Matrix dimensions must agree.")
|
||||
doAssert(b.m == a.m and b.n == a.n, "Matrix dimensions must agree.")
|
||||
doAssert(a.len == b.len) # non destructive use before sink is ok
|
||||
result = a
|
||||
for i in 0 ..< result.m:
|
||||
for j in 0 ..< result.n:
|
||||
|
|
@ -82,9 +85,10 @@ proc `+`*(a: sink Matrix; b: Matrix): Matrix =
|
|||
proc `-`*(a: sink Matrix; b: Matrix): Matrix =
|
||||
## ``C = A - B``
|
||||
assert(b.m == a.m and b.n == a.n, "Matrix dimensions must agree.")
|
||||
doAssert(a.len == b.len) # non destructive use before sink is ok
|
||||
result = a
|
||||
for i in 0 ..< a.m:
|
||||
for j in 0 ..< a.n:
|
||||
for i in 0 ..< result.m:
|
||||
for j in 0 ..< result.n:
|
||||
result[i, j] = a[i, j] - b[i, j]
|
||||
|
||||
proc info =
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue