Skip to content

Commit db44ee5

Browse files
committed
LAPACK: Fix stride arguments (by changing to stride(?, 2) for multiple LAPACK functions.
1 parent 1ee0282 commit db44ee5

File tree

2 files changed

+16
-14
lines changed

2 files changed

+16
-14
lines changed

base/linalg/lapack.jl

+16-13
Original file line numberDiff line numberDiff line change
@@ -1245,8 +1245,8 @@ for (geevx, ggev, elty) in
12451245
chkstride1(A,B)
12461246
n, m = chksquare(A,B)
12471247
n==m || throw(DimensionMismatch("matrices must have same size"))
1248-
lda = max(1, n)
1249-
ldb = max(1, n)
1248+
lda = max(1, stride(A, 2))
1249+
ldb = max(1, stride(B, 2))
12501250
alphar = similar(A, $elty, n)
12511251
alphai = similar(A, $elty, n)
12521252
beta = similar(A, $elty, n)
@@ -1351,7 +1351,8 @@ for (geevx, ggev, elty, relty) in
13511351
chkstride1(A, B)
13521352
n, m = chksquare(A, B)
13531353
n==m || throw(DimensionMismatch("matrices must have same size"))
1354-
lda = ldb = max(1, n)
1354+
lda = max(1, stride(A, 2))
1355+
ldb = max(1, stride(B, 2))
13551356
alpha = similar(A, $elty, n)
13561357
beta = similar(A, $elty, n)
13571358
ldvl = jobvl == 'V' ? n : 1
@@ -2920,7 +2921,8 @@ for (syev, syevr, sygvd, elty) in
29202921
chkstride1(A, B)
29212922
n, m = chksquare(A, B)
29222923
n==m || throw(DimensionMismatch("Matrices must have same size"))
2923-
lda = ldb = max(1, n)
2924+
lda = max(1, stride(A, 2))
2925+
ldb = max(1, stride(B, 2))
29242926
w = similar(A, $elty, n)
29252927
work = Array($elty, 1)
29262928
lwork = -one(BlasInt)
@@ -3071,7 +3073,8 @@ for (syev, syevr, sygvd, elty, relty) in
30713073
chkstride1(A, B)
30723074
n, m = chksquare(A, B)
30733075
n==m || throw(DimensionMismatch("Matrices must have same size"))
3074-
lda = ldb = max(1, n)
3076+
lda = max(1, stride(A, 2))
3077+
ldb = max(1, stride(B, 2))
30753078
w = similar(A, $relty, n)
30763079
work = Array($elty, 1)
30773080
lwork = -one(BlasInt)
@@ -3307,7 +3310,7 @@ for (gehrd, elty) in
33073310
Ptr{BlasInt}, Ptr{$elty}, Ptr{$elty}, Ptr{BlasInt},
33083311
Ptr{BlasInt}),
33093312
&n, &ilo, &ihi, A,
3310-
&max(1,n), tau, work, &lwork,
3313+
&max(1, stride(A, 2)), tau, work, &lwork,
33113314
info)
33123315
@lapackerror
33133316
if lwork < 0
@@ -3346,7 +3349,7 @@ for (orghr, elty) in
33463349
Ptr{BlasInt}, Ptr{$elty}, Ptr{$elty}, Ptr{BlasInt},
33473350
Ptr{BlasInt}),
33483351
&n, &ilo, &ihi, A,
3349-
&max(1,n), tau, work, &lwork,
3352+
&max(1, stride(A, 2)), tau, work, &lwork,
33503353
info)
33513354
@lapackerror
33523355
if lwork < 0
@@ -3389,7 +3392,7 @@ for (gees, gges, elty) in
33893392
Ptr{$elty}, Ptr{$elty}, Ptr{BlasInt}, Ptr{$elty},
33903393
Ptr{BlasInt}, Ptr{Void}, Ptr{BlasInt}),
33913394
&jobvs, &'N', C_NULL, &n,
3392-
A, &max(1, n), sdim, wr,
3395+
A, &max(1, stride(A, 2)), sdim, wr,
33933396
wi, vs, &ldvs, work,
33943397
&lwork, C_NULL, info)
33953398
@lapackerror
@@ -3433,8 +3436,8 @@ for (gees, gges, elty) in
34333436
Ptr{BlasInt}, Ptr{$elty}, Ptr{BlasInt}, Ptr{Void},
34343437
Ptr{BlasInt}),
34353438
&jobvsl, &jobvsr, &'N', C_NULL,
3436-
&n, A, &max(1,n), B,
3437-
&max(1,n), &sdim, alphar, alphai,
3439+
&n, A, &max(1,stride(A, 2)), B,
3440+
&max(1,stride(B, 2)), &sdim, alphar, alphai,
34383441
beta, vsl, &ldvsl, vsr,
34393442
&ldvsr, work, &lwork, C_NULL,
34403443
info)
@@ -3479,7 +3482,7 @@ for (gees, gges, elty, relty) in
34793482
Ptr{$elty}, Ptr{BlasInt}, Ptr{$elty}, Ptr{BlasInt},
34803483
Ptr{$relty}, Ptr{Void}, Ptr{BlasInt}),
34813484
&jobvs, &sort, C_NULL, &n,
3482-
A, &max(1, n), &sdim, w,
3485+
A, &max(1, stride(A, 2)), &sdim, w,
34833486
vs, &ldvs, work, &lwork,
34843487
rwork, C_NULL, info)
34853488
@lapackerror
@@ -3524,8 +3527,8 @@ for (gees, gges, elty, relty) in
35243527
Ptr{$elty}, Ptr{BlasInt}, Ptr{$relty}, Ptr{Void},
35253528
Ptr{BlasInt}),
35263529
&jobvsl, &jobvsr, &'N', C_NULL,
3527-
&n, A, &max(1,n), B,
3528-
&max(1,n), &sdim, alpha, beta,
3530+
&n, A, &max(1, stride(A, 2)), B,
3531+
&max(1, stride(B, 2)), &sdim, alpha, beta,
35293532
vsl, &ldvsl, vsr, &ldvsr,
35303533
work, &lwork, rwork, C_NULL,
35313534
info)

test/linalg1.jl

-1
Original file line numberDiff line numberDiff line change
@@ -264,7 +264,6 @@ debug && println("Test nullspace")
264264
@test_approx_eq_eps norm(a15null'a[:,1:n1], Inf) zero(eltya) 400ε
265265
@test size(nullspace(b), 2) == 0
266266
end
267-
268267
end # for eltyb
269268

270269
debug && println("\ntype of a: ", eltya, "\n")

0 commit comments

Comments
 (0)