From 7ef6056c6f31442d5a4360714e2faea31aa69884 Mon Sep 17 00:00:00 2001 From: Vladimir Chalupecky Date: Wed, 22 Aug 2018 14:46:17 +0200 Subject: [PATCH] lapack: rename EVSide consts --- lapack/gonum/dgebak.go | 8 ++++---- lapack/gonum/dgeev.go | 14 +++++++------- lapack/gonum/dtrevc3.go | 30 +++++++++++++++--------------- lapack/lapack.go | 9 ++++----- lapack/testlapack/dgebak.go | 4 ++-- lapack/testlapack/dtrevc3.go | 8 ++++---- 6 files changed, 36 insertions(+), 37 deletions(-) diff --git a/lapack/gonum/dgebak.go b/lapack/gonum/dgebak.go index 99d1baa3..ebb264de 100644 --- a/lapack/gonum/dgebak.go +++ b/lapack/gonum/dgebak.go @@ -10,8 +10,8 @@ import ( ) // Dgebak updates an n×m matrix V as -// V = P D V, if side == lapack.RightEV, -// V = P D^{-1} V, if side == lapack.LeftEV, +// V = P D V, if side == lapack.EVRight, +// V = P D^{-1} V, if side == lapack.EVLeft, // where P and D are n×n permutation and scaling matrices, respectively, // implicitly represented by job, scale, ilo and ihi as returned by Dgebal. // @@ -29,7 +29,7 @@ func (impl Implementation) Dgebak(job lapack.BalanceJob, side lapack.EVSide, n, switch side { default: panic(badEVSide) - case lapack.LeftEV, lapack.RightEV: + case lapack.EVLeft, lapack.EVRight: } checkMatrix(n, m, v, ldv) switch { @@ -47,7 +47,7 @@ func (impl Implementation) Dgebak(job lapack.BalanceJob, side lapack.EVSide, n, bi := blas64.Implementation() if ilo != ihi && job != lapack.Permute { // Backward balance. - if side == lapack.RightEV { + if side == lapack.EVRight { for i := ilo; i <= ihi; i++ { bi.Dscal(m, scale[i], v[i*ldv:], 1) } diff --git a/lapack/gonum/dgeev.go b/lapack/gonum/dgeev.go index ed0b5cd3..d7204fa8 100644 --- a/lapack/gonum/dgeev.go +++ b/lapack/gonum/dgeev.go @@ -119,9 +119,9 @@ func (impl Implementation) Dgeev(jobvl lapack.LeftEVJob, jobvr lapack.RightEVJob impl.Dhseqr(lapack.EigenvaluesAndSchur, lapack.OriginalEV, n, 0, n-1, nil, 1, nil, nil, nil, 1, work, -1) maxwrk = max(maxwrk, max(n+1, n+int(work[0]))) - side := lapack.LeftEV + side := lapack.EVLeft if wantvr { - side = lapack.RightEV + side = lapack.EVRight } impl.Dtrevc3(side, lapack.AllEVMulQ, nil, n, nil, 1, nil, 1, nil, 1, n, work, -1) @@ -169,7 +169,7 @@ func (impl Implementation) Dgeev(jobvl lapack.LeftEVJob, jobvr lapack.RightEVJob var side lapack.EVSide if wantvl { - side = lapack.LeftEV + side = lapack.EVLeft // Copy Householder vectors to VL. impl.Dlacpy(blas.Lower, n, n, a, lda, vl, ldvl) // Generate orthogonal matrix in VL. @@ -181,11 +181,11 @@ func (impl Implementation) Dgeev(jobvl lapack.LeftEVJob, jobvr lapack.RightEVJob if wantvr { // Want left and right eigenvectors. // Copy Schur vectors to VR. - side = lapack.RightLeftEV + side = lapack.EVRightLeft impl.Dlacpy(blas.All, n, n, vl, ldvl, vr, ldvr) } } else if wantvr { - side = lapack.RightEV + side = lapack.EVRight // Copy Householder vectors to VR. impl.Dlacpy(blas.Lower, n, n, a, lda, vr, ldvr) // Generate orthogonal matrix in VR. @@ -221,7 +221,7 @@ func (impl Implementation) Dgeev(jobvl lapack.LeftEVJob, jobvr lapack.RightEVJob bi := blas64.Implementation() if wantvl { // Undo balancing of left eigenvectors. - impl.Dgebak(lapack.PermuteScale, lapack.LeftEV, n, ilo, ihi, workbal, n, vl, ldvl) + impl.Dgebak(lapack.PermuteScale, lapack.EVLeft, n, ilo, ihi, workbal, n, vl, ldvl) // Normalize left eigenvectors and make largest component real. for i, wii := range wi { if wii < 0 { @@ -248,7 +248,7 @@ func (impl Implementation) Dgeev(jobvl lapack.LeftEVJob, jobvr lapack.RightEVJob } if wantvr { // Undo balancing of right eigenvectors. - impl.Dgebak(lapack.PermuteScale, lapack.RightEV, n, ilo, ihi, workbal, n, vr, ldvr) + impl.Dgebak(lapack.PermuteScale, lapack.EVRight, n, ilo, ihi, workbal, n, vr, ldvr) // Normalize right eigenvectors and make largest component real. for i, wii := range wi { if wii < 0 { diff --git a/lapack/gonum/dtrevc3.go b/lapack/gonum/dtrevc3.go index 6e9a3354..309db9b8 100644 --- a/lapack/gonum/dtrevc3.go +++ b/lapack/gonum/dtrevc3.go @@ -31,9 +31,9 @@ import ( // orthogonal factor that reduces a matrix A to Schur form T, then Q*X and Q*Y // are the matrices of right and left eigenvectors of A. // -// If side == lapack.RightEV, only right eigenvectors will be computed. -// If side == lapack.LeftEV, only left eigenvectors will be computed. -// If side == lapack.RightLeftEV, both right and left eigenvectors will be computed. +// If side == lapack.EVRight, only right eigenvectors will be computed. +// If side == lapack.EVLeft, only left eigenvectors will be computed. +// If side == lapack.EVRightLeft, both right and left eigenvectors will be computed. // For other values of side, Dtrevc3 will panic. // // If howmny == lapack.AllEV, all right and/or left eigenvectors will be @@ -60,13 +60,13 @@ import ( // selected complex eigenvector occupies two columns. If mm is not sufficiently // large, Dtrevc3 will panic. // -// On entry, if howmny == lapack.AllEVMulQ, it is assumed that VL (if side -// is lapack.LeftEV or lapack.RightLeftEV) contains an n×n matrix QL, -// and that VR (if side is lapack.LeftEV or lapack.RightLeftEV) contains +// On entry, if howmny is lapack.EVAllMulQ, it is assumed that VL (if side +// is lapack.EVLeft or lapack.EVRightLeft) contains an n×n matrix QL, +// and that VR (if side is lapack.EVLeft or lapack.EVRightLeft) contains // an n×n matrix QR. QL and QR are typically the orthogonal matrix Q of Schur // vectors returned by Dhseqr. // -// On return, if side is lapack.LeftEV or lapack.RightLeftEV, +// On return, if side is lapack.EVLeft or lapack.EVRightLeft, // VL will contain: // if howmny == lapack.AllEV, the matrix Y of left eigenvectors of T, // if howmny == lapack.AllEVMulQ, the matrix Q*Y, @@ -74,9 +74,9 @@ import ( // selected, stored consecutively in the // columns of VL, in the same order as their // eigenvalues. -// VL is not referenced if side == lapack.RightEV. +// VL is not referenced if side == lapack.EVRight. // -// On return, if side is lapack.RightEV or lapack.RightLeftEV, +// On return, if side is lapack.EVRight or lapack.EVRightLeft, // VR will contain: // if howmny == lapack.AllEV, the matrix X of right eigenvectors of T, // if howmny == lapack.AllEVMulQ, the matrix Q*X, @@ -84,7 +84,7 @@ import ( // selected, stored consecutively in the // columns of VR, in the same order as their // eigenvalues. -// VR is not referenced if side == lapack.LeftEV. +// VR is not referenced if side == lapack.EVLeft. // // Complex eigenvectors corresponding to a complex eigenvalue are stored in VL // and VR in two consecutive columns, the first holding the real part, and the @@ -109,7 +109,7 @@ func (impl Implementation) Dtrevc3(side lapack.EVSide, howmny lapack.HowMany, se switch side { default: panic(badEVSide) - case lapack.RightEV, lapack.LeftEV, lapack.RightLeftEV: + case lapack.EVRight, lapack.EVLeft, lapack.EVRightLeft: } switch howmny { default: @@ -158,10 +158,10 @@ func (impl Implementation) Dtrevc3(side lapack.EVSide, howmny lapack.HowMany, se panic("lapack: insufficient number of columns") } checkMatrix(n, n, t, ldt) - if (side == lapack.RightEV || side == lapack.RightLeftEV) && m > 0 { + if (side == lapack.EVRight || side == lapack.EVRightLeft) && m > 0 { checkMatrix(n, m, vr, ldvr) } - if (side == lapack.LeftEV || side == lapack.RightLeftEV) && m > 0 { + if (side == lapack.EVLeft || side == lapack.EVRightLeft) && m > 0 { checkMatrix(n, m, vl, ldvl) } } @@ -230,7 +230,7 @@ func (impl Implementation) Dtrevc3(side lapack.EVSide, howmny lapack.HowMany, se iscomplex [nbmax]int // Stores ip for each column in current block. ) - if side == lapack.LeftEV { + if side == lapack.EVLeft { goto leftev } @@ -539,7 +539,7 @@ func (impl Implementation) Dtrevc3(side lapack.EVSide, howmny lapack.HowMany, se } } - if side == lapack.RightEV { + if side == lapack.EVRight { return m } diff --git a/lapack/lapack.go b/lapack/lapack.go index 1f295878..f5cfe2ee 100644 --- a/lapack/lapack.go +++ b/lapack/lapack.go @@ -178,14 +178,13 @@ const ( EigenvaluesAndSchur SchurJob = 'S' ) -// EVSide specifies what eigenvectors will be computed. +// EVSide specifies what eigenvectors are computed in Dtrevc3. type EVSide byte -// EVSide constants for Dtrevc3. const ( - RightEV EVSide = 'R' // Compute right eigenvectors only. - LeftEV EVSide = 'L' // Compute left eigenvectors only. - RightLeftEV EVSide = 'B' // Compute both right and left eigenvectors. + EVRight EVSide = 'R' // Only right eigenvectors are computed. + EVLeft EVSide = 'L' // Only left eigenvectors are computed. + EVRightLeft EVSide = 'B' // Both right and left eigenvectors are computed. ) // HowMany specifies which eigenvectors will be computed. diff --git a/lapack/testlapack/dgebak.go b/lapack/testlapack/dgebak.go index 864899a4..bf21821c 100644 --- a/lapack/testlapack/dgebak.go +++ b/lapack/testlapack/dgebak.go @@ -23,7 +23,7 @@ func DgebakTest(t *testing.T, impl Dgebaker) { rnd := rand.New(rand.NewSource(1)) for _, job := range []lapack.BalanceJob{lapack.None, lapack.Permute, lapack.Scale, lapack.PermuteScale} { - for _, side := range []lapack.EVSide{lapack.LeftEV, lapack.RightEV} { + for _, side := range []lapack.EVSide{lapack.EVLeft, lapack.EVRight} { for _, n := range []int{0, 1, 2, 3, 4, 5, 6, 10, 18, 31, 53} { for _, extra := range []int{0, 11} { for cas := 0; cas < 100; cas++ { @@ -96,7 +96,7 @@ func testDgebak(t *testing.T, impl Dgebaker, job lapack.BalanceJob, side lapack. // Compute D*V or D^{-1}*V and store into dv. dv := zeros(n, m, m) - if side == lapack.RightEV { + if side == lapack.EVRight { blas64.Gemm(blas.NoTrans, blas.NoTrans, 1, d, v, 0, dv) } else { blas64.Gemm(blas.NoTrans, blas.NoTrans, 1, dinv, v, 0, dv) diff --git a/lapack/testlapack/dtrevc3.go b/lapack/testlapack/dtrevc3.go index 7fe10b97..eee26411 100644 --- a/lapack/testlapack/dtrevc3.go +++ b/lapack/testlapack/dtrevc3.go @@ -22,8 +22,8 @@ type Dtrevc3er interface { func Dtrevc3Test(t *testing.T, impl Dtrevc3er) { rnd := rand.New(rand.NewSource(1)) - for _, side := range []lapack.EVSide{lapack.RightEV, lapack.LeftEV, lapack.RightLeftEV} { - for _, howmny := range []lapack.HowMany{lapack.AllEV, lapack.AllEVMulQ, lapack.SelectedEV} { + for _, side := range []lapack.EVSide{lapack.EVRight, lapack.EVLeft, lapack.EVRightLeft} { + for _, howmny := range []lapack.EVHowMany{lapack.EVAll, lapack.EVAllMulQ, lapack.EVSelected} { for _, n := range []int{0, 1, 2, 3, 4, 5, 10, 34, 100} { for _, extra := range []int{0, 11} { for _, optwork := range []bool{true, false} { @@ -43,8 +43,8 @@ func testDtrevc3(t *testing.T, impl Dtrevc3er, side lapack.EVSide, howmny lapack n := tmat.Rows extra := tmat.Stride - tmat.Cols - right := side != lapack.LeftEV - left := side != lapack.RightEV + right := side != lapack.EVLeft + left := side != lapack.EVRight var selected, selectedWant []bool var mWant int // How many columns will the eigenvectors occupy.