Skip to content

Commit c63517f

Browse files
luhenryuhoefel
andauthored
Fix index checking for dgeev and sgeev (#15)
Co-authored-by: udoh <[email protected]>
1 parent 47885c9 commit c63517f

File tree

3 files changed

+30
-10
lines changed

3 files changed

+30
-10
lines changed

lapack/src/main/java/dev/ludovic/netlib/lapack/AbstractLAPACK.java

+8-8
Original file line numberDiff line numberDiff line change
@@ -325,19 +325,19 @@ public void dgeev(String jobvl, String jobvr, int n, double[] a, int offseta, in
325325
requireNonNull(a);
326326
requireNonNull(wr);
327327
requireNonNull(wi);
328-
if (lsame("N", jobvl))
328+
if (lsame("V", jobvl))
329329
requireNonNull(vl);
330-
if (lsame("N", jobvr))
330+
if (lsame("V", jobvr))
331331
requireNonNull(vr);
332332
requireNonNull(work);
333333
requireNonNull(info);
334334
if (lwork != -1) {
335335
checkIndex(offseta + n * lda - 1, a.length);
336336
checkIndex(offsetwr + n - 1, wr.length);
337337
checkIndex(offsetwi + n - 1, wi.length);
338-
if (lsame("N", jobvl))
338+
if (lsame("V", jobvl))
339339
checkIndex(offsetvl + n * ldvl - 1, vl.length);
340-
if (lsame("N", jobvr))
340+
if (lsame("V", jobvr))
341341
checkIndex(offsetvr + n * ldvr - 1, vr.length);
342342
}
343343
checkIndex(offsetwork + Math.max(1, lwork) - 1, work.length);
@@ -4959,19 +4959,19 @@ public void sgeev(String jobvl, String jobvr, int n, float[] a, int offseta, int
49594959
requireNonNull(a);
49604960
requireNonNull(wr);
49614961
requireNonNull(wi);
4962-
if (lsame("N", jobvl))
4962+
if (lsame("V", jobvl))
49634963
requireNonNull(vl);
4964-
if (lsame("N", jobvr))
4964+
if (lsame("V", jobvr))
49654965
requireNonNull(vr);
49664966
requireNonNull(work);
49674967
requireNonNull(info);
49684968
if (lwork != -1) {
49694969
checkIndex(offseta + n * lda - 1, a.length);
49704970
checkIndex(offsetwr + n - 1, wr.length);
49714971
checkIndex(offsetwi + n - 1, wi.length);
4972-
if (lsame("N", jobvl))
4972+
if (lsame("V", jobvl))
49734973
checkIndex(offsetvl + n * ldvl - 1, vl.length);
4974-
if (lsame("N", jobvr))
4974+
if (lsame("V", jobvr))
49754975
checkIndex(offsetvr + n * ldvr - 1, vr.length);
49764976
}
49774977
checkIndex(offsetwork + Math.max(1, lwork) - 1, work.length);

lapack/src/test/java/dev/ludovic/netlib/lapack/DgeevTest.java

+11-1
Original file line numberDiff line numberDiff line change
@@ -30,11 +30,21 @@
3030
import org.junit.jupiter.params.provider.MethodSource;
3131
import static org.junit.jupiter.api.Assertions.*;
3232

33+
import org.netlib.util.intW;
34+
3335
public class DgeevTest extends LAPACKTest {
3436

3537
@ParameterizedTest
3638
@MethodSource("LAPACKImplementations")
3739
void testSanity(LAPACK lapack) {
38-
org.junit.jupiter.api.Assumptions.assumeTrue(false);
40+
int n = 2;
41+
double[] a = {1.0, 0.75, 0.5, 1.0};
42+
double[] wr = new double[2];
43+
double[] wi = new double[2];
44+
int lwork = 68; // optimal size from previous query
45+
double[] work = new double[lwork];
46+
intW info = new intW(2);
47+
48+
lapack.dgeev("N", "N", n, a, n, wr, wi, new double[1], 1, new double[1], 1, work, lwork, info);
3949
}
4050
}

lapack/src/test/java/dev/ludovic/netlib/lapack/SgeevTest.java

+11-1
Original file line numberDiff line numberDiff line change
@@ -30,11 +30,21 @@
3030
import org.junit.jupiter.params.provider.MethodSource;
3131
import static org.junit.jupiter.api.Assertions.*;
3232

33+
import org.netlib.util.intW;
34+
3335
public class SgeevTest extends LAPACKTest {
3436

3537
@ParameterizedTest
3638
@MethodSource("LAPACKImplementations")
3739
void testSanity(LAPACK lapack) {
38-
org.junit.jupiter.api.Assumptions.assumeTrue(false);
40+
int n = 2;
41+
float[] a = {1.0f, 0.75f, 0.5f, 1.0f};
42+
float[] wr = new float[2];
43+
float[] wi = new float[2];
44+
int lwork = 68; // optimal size from previous query
45+
float[] work = new float[lwork];
46+
intW info = new intW(2);
47+
48+
lapack.sgeev("N", "N", n, a, n, wr, wi, new float[1], 1, new float[1], 1, work, lwork, info);
3949
}
4050
}

0 commit comments

Comments
 (0)