Skip to content

Commit 1ad29a1

Browse files
Fix test_eig_arange (#973)
* Fix test_eig_arange * Change swaping two elements of arrays * Change vvsort Co-authored-by: Alexander-Makaryev <[email protected]>
1 parent b904b69 commit 1ad29a1

File tree

1 file changed

+13
-6
lines changed

1 file changed

+13
-6
lines changed

tests/test_linalg.py

Lines changed: 13 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -5,19 +5,26 @@
55
import numpy
66

77

8-
def vvsort(val, vec, size, xp):
8+
def vvsort(val, vec, size, xp):
99
for i in range(size):
1010
imax = i
1111
for j in range(i + 1, size):
12-
if xp.abs(val[imax]) < xp.abs(val[j]):
12+
unravel_imax = numpy.unravel_index(imax, val.shape)
13+
unravel_j = numpy.unravel_index(j, val.shape)
14+
if xp.abs(val[unravel_imax]) < xp.abs(val[unravel_j]):
1315
imax = j
1416

15-
temp = val[i]
16-
val[i] = val[imax]
17-
val[imax] = temp
17+
unravel_i = numpy.unravel_index(i, val.shape)
18+
unravel_imax = numpy.unravel_index(imax, val.shape)
1819

20+
temp = xp.empty(tuple(), dtype=vec.dtype)
21+
temp[()] = val[unravel_i] # make a copy
22+
val[unravel_i] = val[unravel_imax]
23+
val[unravel_imax] = temp
24+
1925
for k in range(size):
20-
temp = vec[k, i]
26+
temp = xp.empty(tuple(), dtype=val.dtype)
27+
temp[()] = vec[k, i] # make a copy
2128
vec[k, i] = vec[k, imax]
2229
vec[k, imax] = temp
2330

0 commit comments

Comments
 (0)