mirror of
https://github.com/gonum/gonum.git
synced 2025-11-03 11:21:14 +08:00
lapack/testlapack: use worklen type in DgetriTest
... and make worklen type a Stringer.
This commit is contained in:
committed by
Vladimír Chalupecký
parent
0662aa10a9
commit
85a94c5204
@@ -57,22 +57,19 @@ func DgetriTest(t *testing.T, impl Dgetrier) {
|
|||||||
// Compute LU decomposition.
|
// Compute LU decomposition.
|
||||||
impl.Dgetrf(n, n, a, lda, ipiv)
|
impl.Dgetrf(n, n, a, lda, ipiv)
|
||||||
// Test with various workspace sizes.
|
// Test with various workspace sizes.
|
||||||
for size := range []int{0, 1, 2} {
|
for _, wl := range []worklen{minimumWork, mediumWork, optimumWork} {
|
||||||
ainv := make([]float64, len(a))
|
ainv := make([]float64, len(a))
|
||||||
copy(ainv, a)
|
copy(ainv, a)
|
||||||
|
|
||||||
var lwork int
|
var lwork int
|
||||||
switch size {
|
switch wl {
|
||||||
case 0:
|
case minimumWork:
|
||||||
// Minimum workspace size.
|
|
||||||
lwork = max(1, n)
|
lwork = max(1, n)
|
||||||
case 1:
|
case mediumWork:
|
||||||
// Medium workspace size.
|
|
||||||
work := make([]float64, 1)
|
work := make([]float64, 1)
|
||||||
impl.Dgetri(n, ainv, lda, ipiv, work, -1)
|
impl.Dgetri(n, ainv, lda, ipiv, work, -1)
|
||||||
lwork = max(int(work[0])-2*n, n)
|
lwork = max(int(work[0])-2*n, n)
|
||||||
case 2:
|
case optimumWork:
|
||||||
// Optimum workspace size.
|
|
||||||
work := make([]float64, 1)
|
work := make([]float64, 1)
|
||||||
impl.Dgetri(n, ainv, lda, ipiv, work, -1)
|
impl.Dgetri(n, ainv, lda, ipiv, work, -1)
|
||||||
lwork = int(work[0])
|
lwork = int(work[0])
|
||||||
|
|||||||
@@ -50,6 +50,18 @@ const (
|
|||||||
optimumWork
|
optimumWork
|
||||||
)
|
)
|
||||||
|
|
||||||
|
func (wl worklen) String() string {
|
||||||
|
switch wl {
|
||||||
|
case minimumWork:
|
||||||
|
return "minimum"
|
||||||
|
case mediumWork:
|
||||||
|
return "medium"
|
||||||
|
case optimumWork:
|
||||||
|
return "optimum"
|
||||||
|
}
|
||||||
|
return ""
|
||||||
|
}
|
||||||
|
|
||||||
// nanSlice allocates a new slice of length n filled with NaN.
|
// nanSlice allocates a new slice of length n filled with NaN.
|
||||||
func nanSlice(n int) []float64 {
|
func nanSlice(n int) []float64 {
|
||||||
s := make([]float64, n)
|
s := make([]float64, n)
|
||||||
|
|||||||
Reference in New Issue
Block a user