Skip to content

Commit 915dcd3

Browse files
committed
matrix functions use 0-index
1 parent aff1c3f commit 915dcd3

2 files changed

Lines changed: 11 additions & 11 deletions

File tree

fluid/lib/matrix.fld

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,23 +1,23 @@
11
def zero(m, n, image):
2-
def (m_max, n_max): dims(image)
3-
if m >= 1 and m <= m_max and n >= 1 and n <= n_max: image ! (m, n)
2+
def (m_size, n_size): dims(image)
3+
if m >= 0 and m < m_size and n >= 0 and n < n_size: image ! (m, n)
44
else: 0
55

66
def wrap(m, n, image):
7-
def (m_max, n_max): dims(image)
8-
image ! (((m - 1) % m_max) + 1, ((n - 1) % n_max) + 1)
7+
def (m_size, n_size): dims(image)
8+
image ! (m % m_size, n % n_size)
99

1010
def extend(m, n, image):
11-
def (m_max, n_max): dims(image)
11+
def (m_size, n_size): dims(image)
1212
def m_:
13-
min(max(m, 1), m_max)
13+
min(max(m, 0), m_size - 1)
1414
def n_:
15-
min(max(n, 1), n_max)
15+
min(max(n, 0), n_size - 1)
1616
image ! (m_, n_)
1717

1818
def matrix_sum(matr):
1919
def (m, n): dims(matr)
20-
foldl((+), 0, [matr ! (i, j) for (i, j) in range2d((1, 1), (m, n))])
20+
foldl((+), 0, [matr ! (i, j) for (i, j) in range2d((0, 0), (m - 1, n - 1))])
2121

2222
def convolve(image, kernel, lookup):
2323
def ((m, n), (i, j)):
@@ -26,7 +26,7 @@ def convolve(image, kernel, lookup):
2626
(i |quot| 2, j |quot| 2)
2727
def area: i * j
2828
def interMatrix(m_, n_):
29-
[| lookup(((m_ + i_) - 1) - half_i, ((n_ + j_) - 1) - half_j, image) * kernel ! (i_, j_) for (i_, j_) in (i, j) |]
29+
[| lookup(m_ + i_ - half_i, n_ + j_ - half_j, image) * kernel ! (i_, j_) for (i_, j_) in (i, j) |]
3030

3131
[| matrix_sum(interMatrix(m_, n_)) |quot| area for (m_, n_) in (m, n) |]
3232

@@ -37,4 +37,4 @@ def mat_mul(a, b):
3737
error("Dimensions don't line up")
3838
else:
3939
@doc(f"""Intermediate matrix""")
40-
[| sum([a!(i_, k) * b!(k, j_) for k in range(1, n)]) for (i_, j_) in (m, j) |]
40+
[| sum([a!(i_, k) * b!(k, j_) for k in range(0, n - 1)]) for (i_, j_) in (m, j) |]

fluid/lib/prelude.fld

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -262,7 +262,7 @@ def nth(n, x :| xs):
262262

263263
# Matrix Int -> Int -> Int -> Int
264264
def nth2(i, j, xss):
265-
nth(j - 1, nth(i - 1, xss))
265+
nth(j, nth(i, xss))
266266

267267
# Partial; requires k to be in the map.
268268
# Int -> List (Int, b) -> b

0 commit comments

Comments
 (0)