lapack,native,cgo: use lapack.EVComp instead of lapack.Comp in Dhseqr

This commit is contained in:
Vladimir Chalupecky
2016-10-08 23:15:30 +09:00
parent e2a7d959d7
commit c02fe3f6ff
4 changed files with 10 additions and 9 deletions

View File

@@ -1828,7 +1828,7 @@ func (impl Implementation) Dtrtrs(uplo blas.Uplo, trans blas.Transpose, diag bla
// URL: http://dx.doi.org/10.1137/S0895479801384585
//
// Dhseqr is an internal routine. It is exported for testing purposes.
func (impl Implementation) Dhseqr(job lapack.EVJob, compz lapack.Comp, n, ilo, ihi int, h []float64, ldh int, wr, wi []float64, z []float64, ldz int, work []float64, lwork int) (unconverged int) {
func (impl Implementation) Dhseqr(job lapack.EVJob, compz lapack.EVComp, n, ilo, ihi int, h []float64, ldh int, wr, wi []float64, z []float64, ldz int, work []float64, lwork int) (unconverged int) {
switch job {
default:
panic(badEVJob)
@@ -1837,7 +1837,7 @@ func (impl Implementation) Dhseqr(job lapack.EVJob, compz lapack.Comp, n, ilo, i
var wantz bool
switch compz {
default:
panic("lapack: bad compz")
panic(badEVComp)
case lapack.None:
case lapack.InitZ, lapack.UpdateZ:
wantz = true
@@ -1866,7 +1866,8 @@ func (impl Implementation) Dhseqr(job lapack.EVJob, compz lapack.Comp, n, ilo, i
}
}
return lapacke.Dhseqr(lapack.Job(job), compz, n, ilo+1, ihi+1, h, ldh, wr, wi, z, ldz, work, lwork)
return lapacke.Dhseqr(lapack.Job(job), lapack.Comp(compz), n, ilo+1, ihi+1,
h, ldh, wr, wi, z, ldz, work, lwork)
}
// Dgeev computes the eigenvalues and, optionally, the left and/or right

View File

@@ -146,8 +146,8 @@ const (
EigenvaluesOnly EVJob = 'E'
EigenvaluesAndSchur EVJob = 'S'
InitZ Comp = 'I'
UpdateZ Comp = 'V'
InitZ EVComp = 'I'
UpdateZ EVComp = 'V'
)
// UpdateQ specifies that the matrix Q will be updated.

View File

@@ -118,7 +118,7 @@ import (
// URL: http://dx.doi.org/10.1137/S0895479801384585
//
// Dhseqr is an internal routine. It is exported for testing purposes.
func (impl Implementation) Dhseqr(job lapack.EVJob, compz lapack.Comp, n, ilo, ihi int, h []float64, ldh int, wr, wi []float64, z []float64, ldz int, work []float64, lwork int) (unconverged int) {
func (impl Implementation) Dhseqr(job lapack.EVJob, compz lapack.EVComp, n, ilo, ihi int, h []float64, ldh int, wr, wi []float64, z []float64, ldz int, work []float64, lwork int) (unconverged int) {
var wantt bool
switch job {
default:
@@ -130,7 +130,7 @@ func (impl Implementation) Dhseqr(job lapack.EVJob, compz lapack.Comp, n, ilo, i
var wantz bool
switch compz {
default:
panic("lapack: bad compz")
panic(badEVComp)
case lapack.None:
case lapack.InitZ, lapack.UpdateZ:
wantz = true

View File

@@ -16,7 +16,7 @@ import (
)
type Dhseqrer interface {
Dhseqr(job lapack.EVJob, compz lapack.Comp, n, ilo, ihi int, h []float64, ldh int, wr, wi []float64,
Dhseqr(job lapack.EVJob, compz lapack.EVComp, n, ilo, ihi int, h []float64, ldh int, wr, wi []float64,
z []float64, ldz int, work []float64, lwork int) int
}
@@ -57,7 +57,7 @@ func testDhseqr(t *testing.T, impl Dhseqrer, i int, test dhseqrTest, job lapack.
copyGeneral(h, blas64.General{Rows: n, Cols: n, Stride: max(1, n), Data: test.h})
hCopy := cloneGeneral(h)
var compz lapack.Comp = lapack.None
var compz lapack.EVComp = lapack.None
z := blas64.General{Stride: max(1, n)}
if wantz {
// First, let Dhseqr initialize Z to the identity matrix.