lapack/testlapack: use real arguments in workspace query calls

This commit is contained in:
Vladimir Chalupecky
2018-11-20 17:11:10 +01:00
committed by Vladimír Chalupecký
parent 3f7ecaa7e8
commit ce429941af
9 changed files with 13 additions and 12 deletions

View File

@@ -579,7 +579,7 @@ func testDgeev(t *testing.T, impl Dgeever, tc string, test dgeevTest, jobvl lapa
} }
case mediumWork: case mediumWork:
work := make([]float64, 1) work := make([]float64, 1)
impl.Dgeev(jobvl, jobvr, n, nil, 1, nil, nil, nil, 1, nil, 1, work, -1) impl.Dgeev(jobvl, jobvr, n, a.Data, a.Stride, wr, wi, vl.Data, vl.Stride, vr.Data, vr.Stride, work, -1)
if jobvl == lapack.LeftEVCompute || jobvr == lapack.RightEVCompute { if jobvl == lapack.LeftEVCompute || jobvr == lapack.RightEVCompute {
lwork = (int(work[0]) + 4*n) / 2 lwork = (int(work[0]) + 4*n) / 2
} else { } else {
@@ -588,7 +588,7 @@ func testDgeev(t *testing.T, impl Dgeever, tc string, test dgeevTest, jobvl lapa
lwork = max(1, lwork) lwork = max(1, lwork)
case optimumWork: case optimumWork:
work := make([]float64, 1) work := make([]float64, 1)
impl.Dgeev(jobvl, jobvr, n, nil, 1, nil, nil, nil, 1, nil, 1, work, -1) impl.Dgeev(jobvl, jobvr, n, a.Data, a.Stride, wr, wi, vl.Data, vl.Stride, vr.Data, vr.Stride, work, -1)
lwork = int(work[0]) lwork = int(work[0])
} }
work := make([]float64, lwork) work := make([]float64, lwork)

View File

@@ -46,7 +46,7 @@ func DgeevBenchmark(b *testing.B, impl Dgeever) {
wr := make([]float64, n) wr := make([]float64, n)
wi := make([]float64, n) wi := make([]float64, n)
work := make([]float64, 1) work := make([]float64, 1)
impl.Dgeev(lapack.LeftEVCompute, lapack.RightEVCompute, n, nil, n, nil, nil, nil, n, nil, n, work, -1) impl.Dgeev(lapack.LeftEVCompute, lapack.RightEVCompute, n, a.Data, a.Stride, wr, wi, vl.Data, vl.Stride, vr.Data, vr.Stride, work, -1)
work = make([]float64, int(work[0])) work = make([]float64, int(work[0]))
b.Run(bm.name, func(b *testing.B) { b.Run(bm.name, func(b *testing.B) {
for i := 0; i < b.N; i++ { for i := 0; i < b.N; i++ {

View File

@@ -93,7 +93,7 @@ func testDgehrd(t *testing.T, impl Dgehrder, n, ilo, ihi, extra int, optwork boo
var work []float64 var work []float64
if optwork { if optwork {
work = nanSlice(1) work = nanSlice(1)
impl.Dgehrd(n, ilo, ihi, nil, a.Stride, nil, work, -1) impl.Dgehrd(n, ilo, ihi, a.Data, a.Stride, tau, work, -1)
work = nanSlice(int(work[0])) work = nanSlice(int(work[0]))
} else { } else {
work = nanSlice(max(1, n)) work = nanSlice(max(1, n))

View File

@@ -70,7 +70,7 @@ func testDhseqr(t *testing.T, impl Dhseqrer, i int, test dhseqrTest, job lapack.
work := nanSlice(max(1, n)) work := nanSlice(max(1, n))
if optwork { if optwork {
impl.Dhseqr(job, lapack.SchurHess, n, ilo, ihi, nil, h.Stride, nil, nil, nil, z.Stride, work, -1) impl.Dhseqr(job, lapack.SchurHess, n, ilo, ihi, h.Data, h.Stride, wr, wi, z.Data, z.Stride, work, -1)
work = nanSlice(int(work[0])) work = nanSlice(int(work[0]))
} }

View File

@@ -318,7 +318,7 @@ func testDlaqr04(t *testing.T, impl Dlaqr04er, test dlaqr04Test, optwork bool, r
var work []float64 var work []float64
if optwork { if optwork {
work = nanSlice(1) work = nanSlice(1)
impl.Dlaqr04(wantt, wantz, n, ilo, ihi, nil, 0, nil, nil, iloz, ihiz, nil, 0, work, -1, recur) impl.Dlaqr04(wantt, wantz, n, ilo, ihi, h.Data, h.Stride, wr, wi, iloz, ihiz, z.Data, z.Stride, work, -1, recur)
work = nanSlice(int(work[0])) work = nanSlice(int(work[0]))
} else { } else {
work = nanSlice(max(1, n)) work = nanSlice(max(1, n))

View File

@@ -280,8 +280,8 @@ func testDlaqr23(t *testing.T, impl Dlaqr23er, test dlaqr23Test, opt bool, recur
if opt { if opt {
// Allocate work slice with optimal length. // Allocate work slice with optimal length.
work = nanSlice(1) work = nanSlice(1)
impl.Dlaqr23(wantt, wantz, n, ktop, kbot, nw, nil, h.Stride, iloz, ihiz, nil, z.Stride, impl.Dlaqr23(wantt, wantz, n, ktop, kbot, nw, h.Data, h.Stride, iloz, ihiz, z.Data, z.Stride,
nil, nil, nil, v.Stride, tmat.Cols, nil, tmat.Stride, wv.Rows, nil, wv.Stride, work, -1, recur) sr, si, v.Data, v.Stride, tmat.Cols, tmat.Data, tmat.Stride, wv.Rows, wv.Data, wv.Stride, work, -1, recur)
work = nanSlice(int(work[0])) work = nanSlice(int(work[0]))
} else { } else {
// Allocate work slice with minimum length. // Allocate work slice with minimum length.

View File

@@ -94,12 +94,12 @@ func DorgqlTest(t *testing.T, impl Dorgqler) {
lwork = max(1, n) lwork = max(1, n)
case mediumWork: case mediumWork:
work := make([]float64, 1) work := make([]float64, 1)
impl.Dorgql(m, n, k, nil, a.Stride, nil, work, -1) impl.Dorgql(m, n, k, a.Data, a.Stride, tau, work, -1)
lwork = (int(work[0]) + n) / 2 lwork = (int(work[0]) + n) / 2
lwork = max(1, lwork) lwork = max(1, lwork)
case optimumWork: case optimumWork:
work := make([]float64, 1) work := make([]float64, 1)
impl.Dorgql(m, n, k, nil, a.Stride, nil, work, -1) impl.Dorgql(m, n, k, a.Data, a.Stride, tau, work, -1)
lwork = int(work[0]) lwork = int(work[0])
} }
work := make([]float64, lwork) work := make([]float64, lwork)

View File

@@ -114,7 +114,7 @@ func DormqrTest(t *testing.T, impl Dormqrer) {
// Try with the optimum amount of work // Try with the optimum amount of work
copy(c, cCopy) copy(c, cCopy)
impl.Dormqr(side, trans, mc, nc, k, nil, lda, nil, nil, ldc, work, -1) impl.Dormqr(side, trans, mc, nc, k, a, lda, tau, c, ldc, work, -1)
work = make([]float64, int(work[0])) work = make([]float64, int(work[0]))
for i := range work { for i := range work {
work[i] = rnd.Float64() work[i] = rnd.Float64()

View File

@@ -108,7 +108,8 @@ func testDtrevc3(t *testing.T, impl Dtrevc3er, side lapack.EVSide, howmny lapack
work := make([]float64, max(1, 3*n)) work := make([]float64, max(1, 3*n))
if optwork { if optwork {
impl.Dtrevc3(side, howmny, nil, n, nil, 1, nil, 1, nil, 1, mWant, work, -1) impl.Dtrevc3(side, howmny, selected, n, tmat.Data, tmat.Stride,
vl.Data, vl.Stride, vr.Data, vr.Stride, mWant, work, -1)
work = make([]float64, int(work[0])) work = make([]float64, int(work[0]))
} }