diff --git a/go.mod b/go.mod index 9f032423..835c2324 100644 --- a/go.mod +++ b/go.mod @@ -3,7 +3,7 @@ module gonum.org/v1/netlib require ( github.com/remyoudompheng/bigfft v0.0.0-20190728182440-6a916e37a237 // indirect golang.org/x/exp v0.0.0-20190312203227-4b39c73a6495 - gonum.org/v1/gonum v0.6.0 + gonum.org/v1/gonum v0.6.2 modernc.org/cc v1.0.0 modernc.org/golex v1.0.0 // indirect modernc.org/mathutil v1.0.0 // indirect diff --git a/go.sum b/go.sum index 01654adb..3ac09b1b 100644 --- a/go.sum +++ b/go.sum @@ -24,6 +24,8 @@ golang.org/x/tools v0.0.0-20190312151545-0bb0c0a6e846/go.mod h1:LCzVGOaR6xXOjkQ3 gonum.org/v1/gonum v0.0.0-20180816165407-929014505bf4/go.mod h1:Y+Yx5eoAFn32cQvJDxZx5Dpnq+c3wtXuadVZAcxbbBo= gonum.org/v1/gonum v0.6.0 h1:DJy6UzXbahnGUf1ujUNkh/NEtK14qMo2nvlBPs4U5yw= gonum.org/v1/gonum v0.6.0/go.mod h1:9mxDZsDKxgMAuccQkewq682L+0eCu4dCN2yonUJTCLU= +gonum.org/v1/gonum v0.6.2 h1:4r+yNT0+8SWcOkXP+63H2zQbN+USnC73cjGUxnDF94Q= +gonum.org/v1/gonum v0.6.2/go.mod h1:9mxDZsDKxgMAuccQkewq682L+0eCu4dCN2yonUJTCLU= gonum.org/v1/netlib v0.0.0-20190313105609-8cb42192e0e0/go.mod h1:wa6Ws7BG/ESfp6dHfk7C6KdzKA7wR7u/rKwOGE66zvw= gonum.org/v1/plot v0.0.0-20190515093506-e2840ee46a6b/go.mod h1:Wt8AAjI+ypCyYX3nZBvf6cAIx93T+c/OS2HFAYskSZc= modernc.org/cc v1.0.0 h1:nPibNuDEx6tvYrUAtvDTTw98rx5juGsa5zuDnKwEEQQ= diff --git a/lapack/netlib/lapack.go b/lapack/netlib/lapack.go index f18105a2..e513a836 100644 --- a/lapack/netlib/lapack.go +++ b/lapack/netlib/lapack.go @@ -573,8 +573,14 @@ func (impl Implementation) Dlantr(norm lapack.MatrixNorm, uplo blas.Uplo, diag b panic(badUplo) case diag != blas.Unit && diag != blas.NonUnit: panic(badDiag) + case m < 0: + panic(mLT0) + case uplo == blas.Upper && m > n: + panic(mGTN) case n < 0: panic(nLT0) + case uplo == blas.Lower && n > m: + panic(nGTM) case lda < max(1, n): panic(badLdA) } @@ -593,7 +599,8 @@ func (impl Implementation) Dlantr(norm lapack.MatrixNorm, uplo blas.Uplo, diag b } if norm == lapack.MaxRowSum && len(work) < m { - // Unfortunately we have to allocate work for LAPACKE. + // Allocate new work to be on the safe side because the expectation of LAPACKE on + // row-major input is unclear. work = make([]float64, m) } return lapacke.Dlantr(byte(norm), byte(uplo), byte(diag), m, n, a, lda, work)