diff --git a/lapack/gonum/dggsvd3.go b/lapack/gonum/dggsvd3.go index be6e8da7..d062c8f8 100644 --- a/lapack/gonum/dggsvd3.go +++ b/lapack/gonum/dggsvd3.go @@ -167,8 +167,8 @@ func (impl Implementation) Dggsvd3(jobU, jobV, jobQ lapack.GSVDJob, m, n, p int, } // Compute the Frobenius norm of matrices A and B. - anorm := impl.Dlange(lapack.NormFrob, m, n, a, lda, nil) - bnorm := impl.Dlange(lapack.NormFrob, p, n, b, ldb, nil) + anorm := impl.Dlange(lapack.Frobenius, m, n, a, lda, nil) + bnorm := impl.Dlange(lapack.Frobenius, p, n, b, ldb, nil) // Get machine precision and set up threshold for determining // the effective numerical rank of the matrices A and B. diff --git a/lapack/gonum/dlange.go b/lapack/gonum/dlange.go index 76bce5ec..2e509368 100644 --- a/lapack/gonum/dlange.go +++ b/lapack/gonum/dlange.go @@ -15,14 +15,14 @@ import ( // lapack.MaxAbs: the maximum absolute value of an element. // lapack.MaxColumnSum: the maximum column sum of the absolute values of the entries. // lapack.MaxRowSum: the maximum row sum of the absolute values of the entries. -// lapack.NormFrob: the square root of the sum of the squares of the entries. +// lapack.Frobenius: the square root of the sum of the squares of the entries. // If norm == lapack.MaxColumnSum, work must be of length n, and this function will panic otherwise. // There are no restrictions on work for the other matrix norms. func (impl Implementation) Dlange(norm lapack.MatrixNorm, m, n int, a []float64, lda int, work []float64) float64 { // TODO(btracey): These should probably be refactored to use BLAS calls. checkMatrix(m, n, a, lda) switch norm { - case lapack.MaxRowSum, lapack.MaxColumnSum, lapack.NormFrob, lapack.MaxAbs: + case lapack.MaxRowSum, lapack.MaxColumnSum, lapack.Frobenius, lapack.MaxAbs: default: panic(badNorm) } @@ -70,7 +70,7 @@ func (impl Implementation) Dlange(norm lapack.MatrixNorm, m, n int, a []float64, } return value } - if norm == lapack.NormFrob { + if norm == lapack.Frobenius { var value float64 scale := 0.0 sum := 1.0 diff --git a/lapack/gonum/dlanst.go b/lapack/gonum/dlanst.go index 74eafeb2..ad539486 100644 --- a/lapack/gonum/dlanst.go +++ b/lapack/gonum/dlanst.go @@ -55,7 +55,7 @@ func (impl Implementation) Dlanst(norm lapack.MatrixNorm, n int, d, e []float64) } } return anorm - case lapack.NormFrob: + case lapack.Frobenius: var scale float64 sum := 1.0 if n > 1 { diff --git a/lapack/gonum/dlansy.go b/lapack/gonum/dlansy.go index 2a380d21..f8e26058 100644 --- a/lapack/gonum/dlansy.go +++ b/lapack/gonum/dlansy.go @@ -17,7 +17,7 @@ import ( func (impl Implementation) Dlansy(norm lapack.MatrixNorm, uplo blas.Uplo, n int, a []float64, lda int, work []float64) float64 { checkMatrix(n, n, a, lda) switch norm { - case lapack.MaxRowSum, lapack.MaxColumnSum, lapack.NormFrob, lapack.MaxAbs: + case lapack.MaxRowSum, lapack.MaxColumnSum, lapack.Frobenius, lapack.MaxAbs: default: panic(badNorm) } @@ -98,7 +98,7 @@ func (impl Implementation) Dlansy(norm lapack.MatrixNorm, uplo blas.Uplo, n int, } } return max - case lapack.NormFrob: + case lapack.Frobenius: if uplo == blas.Upper { var sum float64 for i := 0; i < n; i++ { diff --git a/lapack/gonum/dlantr.go b/lapack/gonum/dlantr.go index 25702cff..e3dbde11 100644 --- a/lapack/gonum/dlantr.go +++ b/lapack/gonum/dlantr.go @@ -17,7 +17,7 @@ import ( func (impl Implementation) Dlantr(norm lapack.MatrixNorm, uplo blas.Uplo, diag blas.Diag, m, n int, a []float64, lda int, work []float64) float64 { checkMatrix(m, n, a, lda) switch norm { - case lapack.MaxRowSum, lapack.MaxColumnSum, lapack.NormFrob, lapack.MaxAbs: + case lapack.MaxRowSum, lapack.MaxColumnSum, lapack.Frobenius, lapack.MaxAbs: default: panic(badNorm) } @@ -211,7 +211,7 @@ func (impl Implementation) Dlantr(norm lapack.MatrixNorm, uplo blas.Uplo, diag b return maxsum } } - case lapack.NormFrob: + case lapack.Frobenius: var nrm float64 if diag == blas.Unit { if uplo == blas.Upper { diff --git a/lapack/lapack.go b/lapack/lapack.go index aa994606..82cab05a 100644 --- a/lapack/lapack.go +++ b/lapack/lapack.go @@ -64,10 +64,10 @@ const ( type MatrixNorm byte const ( - MaxAbs MatrixNorm = 'M' // max(abs(A(i,j))) ('M') - MaxColumnSum MatrixNorm = 'O' // Maximum column sum (one norm) ('1', 'O') - MaxRowSum MatrixNorm = 'I' // Maximum row sum (infinity norm) ('I', 'i') - NormFrob MatrixNorm = 'F' // Frobenius norm (sqrt of sum of squares) ('F', 'f', E, 'e') + MaxAbs MatrixNorm = 'M' // max(abs(A(i,j))) + MaxColumnSum MatrixNorm = 'O' // Maximum absolute column sum (one norm) + MaxRowSum MatrixNorm = 'I' // Maximum absolute row sum (infinity norm) + Frobenius MatrixNorm = 'F' // Frobenius norm (sqrt of sum of squares) ) // MatrixType represents the kind of matrix represented in the data. diff --git a/lapack/testlapack/dggsvp3.go b/lapack/testlapack/dggsvp3.go index fd1298e2..a1af60b8 100644 --- a/lapack/testlapack/dggsvp3.go +++ b/lapack/testlapack/dggsvp3.go @@ -73,8 +73,8 @@ func Dggsvp3Test(t *testing.T, impl Dggsvp3er) { b := randomGeneral(p, n, ldb, rnd) bCopy := cloneGeneral(b) - tola := float64(max(m, n)) * impl.Dlange(lapack.NormFrob, m, n, a.Data, a.Stride, nil) * dlamchE - tolb := float64(max(p, n)) * impl.Dlange(lapack.NormFrob, p, n, b.Data, b.Stride, nil) * dlamchE + tola := float64(max(m, n)) * impl.Dlange(lapack.Frobenius, m, n, a.Data, a.Stride, nil) * dlamchE + tolb := float64(max(p, n)) * impl.Dlange(lapack.Frobenius, p, n, b.Data, b.Stride, nil) * dlamchE u := nanGeneral(m, m, ldu) v := nanGeneral(p, p, ldv) diff --git a/lapack/testlapack/dlange.go b/lapack/testlapack/dlange.go index ad69e04b..6e47a13c 100644 --- a/lapack/testlapack/dlange.go +++ b/lapack/testlapack/dlange.go @@ -80,7 +80,7 @@ func DlangeTest(t *testing.T, impl Dlanger) { } // Test Frobenius norm - norm = impl.Dlange(lapack.NormFrob, m, n, a, lda, work) + norm = impl.Dlange(lapack.Frobenius, m, n, a, lda, work) ans = 0 for i := 0; i < m; i++ { sum := blas64.Nrm2(n, blas64.Vector{Inc: 1, Data: aCopy[i*lda:]}) @@ -88,7 +88,7 @@ func DlangeTest(t *testing.T, impl Dlanger) { } ans = math.Sqrt(ans) if math.Abs(norm-ans) > 1e-14 { - t.Errorf("NormFrob mismatch. Want %v, got %v.", ans, norm) + t.Errorf("Frobenius norm mismatch. Want %v, got %v.", ans, norm) } } } diff --git a/lapack/testlapack/dlanst.go b/lapack/testlapack/dlanst.go index f5c072d9..e366811a 100644 --- a/lapack/testlapack/dlanst.go +++ b/lapack/testlapack/dlanst.go @@ -20,7 +20,7 @@ type Dlanster interface { func DlanstTest(t *testing.T, impl Dlanster) { rnd := rand.New(rand.NewSource(1)) - for _, norm := range []lapack.MatrixNorm{lapack.MaxAbs, lapack.MaxColumnSum, lapack.MaxRowSum, lapack.NormFrob} { + for _, norm := range []lapack.MatrixNorm{lapack.MaxAbs, lapack.MaxColumnSum, lapack.MaxRowSum, lapack.Frobenius} { for _, n := range []int{1, 3, 10, 100} { for cas := 0; cas < 100; cas++ { d := make([]float64, n) diff --git a/lapack/testlapack/dlansy.go b/lapack/testlapack/dlansy.go index 6f8d8024..e8321411 100644 --- a/lapack/testlapack/dlansy.go +++ b/lapack/testlapack/dlansy.go @@ -21,7 +21,7 @@ type Dlansyer interface { func DlansyTest(t *testing.T, impl Dlansyer) { rnd := rand.New(rand.NewSource(1)) - for _, norm := range []lapack.MatrixNorm{lapack.MaxAbs, lapack.MaxColumnSum, lapack.MaxRowSum, lapack.NormFrob} { + for _, norm := range []lapack.MatrixNorm{lapack.MaxAbs, lapack.MaxColumnSum, lapack.MaxRowSum, lapack.Frobenius} { for _, uplo := range []blas.Uplo{blas.Lower, blas.Upper} { for _, test := range []struct { n, lda int diff --git a/lapack/testlapack/dlantr.go b/lapack/testlapack/dlantr.go index bd3e0b85..5994dc36 100644 --- a/lapack/testlapack/dlantr.go +++ b/lapack/testlapack/dlantr.go @@ -21,7 +21,7 @@ type Dlantrer interface { func DlantrTest(t *testing.T, impl Dlantrer) { rnd := rand.New(rand.NewSource(1)) - for _, norm := range []lapack.MatrixNorm{lapack.MaxAbs, lapack.MaxColumnSum, lapack.MaxRowSum, lapack.NormFrob} { + for _, norm := range []lapack.MatrixNorm{lapack.MaxAbs, lapack.MaxColumnSum, lapack.MaxRowSum, lapack.Frobenius} { for _, diag := range []blas.Diag{blas.NonUnit, blas.Unit} { for _, uplo := range []blas.Uplo{blas.Lower, blas.Upper} { for _, test := range []struct { diff --git a/lapack/testlapack/dtgsja.go b/lapack/testlapack/dtgsja.go index fb5b5603..0c4c73b6 100644 --- a/lapack/testlapack/dtgsja.go +++ b/lapack/testlapack/dtgsja.go @@ -77,8 +77,8 @@ func DtgsjaTest(t *testing.T, impl Dtgsjaer) { b := blockedUpperTriGeneral(p, n, k, l, ldb, false, rnd) bCopy := cloneGeneral(b) - tola := float64(max(m, n)) * impl.Dlange(lapack.NormFrob, m, n, a.Data, a.Stride, nil) * dlamchE - tolb := float64(max(p, n)) * impl.Dlange(lapack.NormFrob, p, n, b.Data, b.Stride, nil) * dlamchE + tola := float64(max(m, n)) * impl.Dlange(lapack.Frobenius, m, n, a.Data, a.Stride, nil) * dlamchE + tolb := float64(max(p, n)) * impl.Dlange(lapack.Frobenius, p, n, b.Data, b.Stride, nil) * dlamchE alpha := make([]float64, n) beta := make([]float64, n) diff --git a/mat/matrix.go b/mat/matrix.go index 59f94583..36015e0e 100644 --- a/mat/matrix.go +++ b/mat/matrix.go @@ -762,7 +762,7 @@ func normLapack(norm float64, aTrans bool) lapack.MatrixNorm { } return n case 2: - return lapack.NormFrob + return lapack.Frobenius case math.Inf(1): n := lapack.MaxRowSum if aTrans {