Skip to content

Commit bb73497

Browse files
authored
Fix #682 - strformat symbol binding bug with special matrices (#684)
* add necessary import for error messages * remove uncessesary import * ensure correct symbol binding
1 parent 84af537 commit bb73497

File tree

3 files changed

+6
-3
lines changed

3 files changed

+6
-3
lines changed

src/arraymancer/linear_algebra/special_matrices.nim

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44

55
import ../tensor
66
import ./helpers/triangular
7-
import std / [sequtils, bitops]
7+
import std / [sequtils, bitops, strformat]
88

99
proc hilbert*(n: int, T: typedesc[SomeFloat]): Tensor[T] =
1010
## Generates an Hilbert matrix of shape [N, N]
@@ -129,6 +129,7 @@ proc diagonal*[T](a: Tensor[T], k = 0, anti = false): Tensor[T] {.noInit.} =
129129
## - anti: If true, get the k-th "anti-diagonal" instead of the k-th regular diagonal.
130130
## Result:
131131
## - A copy of the diagonal elements as a rank-1 tensor
132+
bind `&`
132133
assert a.rank == 2, "diagonal() only works on matrices"
133134
assert k < a.shape[0], &"Diagonal index ({k=}) exceeds the output matrix height ({a.shape[0]})"
134135
assert k < a.shape[1], &"Diagonal index ({k=}) exceeds the output matrix width ({a.shape[1]})"
@@ -167,6 +168,7 @@ proc set_diagonal*[T](a: var Tensor[T], d: Tensor[T], k = 0, anti = false) =
167168
## - k: The index k of the diagonal that will be changed. The default is 0 (i.e. the main diagonal).
168169
## Use k>0 for diagonals above the main diagonal, and k<0 for diagonals below the main diagonal.
169170
## - anti: If true, set the k-th "anti-diagonal" instead of the k-th regular diagonal.
171+
bind `&`
170172
assert a.rank == 2, "set_diagonal() only works on matrices"
171173
assert d.rank == 1, "The diagonal passed to set_diagonal() must be a rank-1 tensor"
172174
assert k < a.shape[0], &"Diagonal index ({k=}) exceeds input matrix height ({a.shape[0]})"
@@ -259,6 +261,7 @@ proc tri*[T](shape: Metadata, k: static int = 0, upper: static bool = false): Te
259261
## diagonal. The default is false.
260262
## Result:
261263
## - The constructed, rank-2 triangular tensor.
264+
bind `&`
262265
assert shape.len == 2, &"tri() requires a rank-2 shape as it's input but a shape of rank {shape.len} was passed"
263266
assert k < shape[0], &"tri() received a diagonal index ({k=}) which exceeds the output matrix height ({shape[0]})"
264267
assert k < shape[1], &"tri() received a diagonal index ({k=}) which exceeds the output matrix width ({shape[1]})"

tests/linear_algebra/test_linear_algebra.nim

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
# Distributed under the Apache v2 License (license terms are at http://www.apache.org/licenses/LICENSE-2.0).
33

44
import ../../src/arraymancer
5-
import std / [unittest, strformat]
5+
import std / [unittest]
66

77
proc main() =
88
suite "Linear algebra":

tests/linear_algebra/test_special_matrices.nim

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
# Distributed under the Apache v2 License (license terms are at http://www.apache.org/licenses/LICENSE-2.0).
33

44
import ../../src/arraymancer
5-
import std / [unittest, strformat]
5+
import std / [unittest]
66

77
proc main() =
88
suite "Diagonals":

0 commit comments

Comments
 (0)