lapack/testlapack: use const tol in DlarfgTest

This commit is contained in:
Vladimir Chalupecky
2019-01-18 14:59:29 +01:00
committed by Vladimír Chalupecký
parent f81f6eef22
commit 246a5a92a2

View File

@@ -12,6 +12,7 @@ import (
"gonum.org/v1/gonum/blas" "gonum.org/v1/gonum/blas"
"gonum.org/v1/gonum/blas/blas64" "gonum.org/v1/gonum/blas/blas64"
"gonum.org/v1/gonum/floats"
) )
type Dlarfger interface { type Dlarfger interface {
@@ -19,6 +20,7 @@ type Dlarfger interface {
} }
func DlarfgTest(t *testing.T, impl Dlarfger) { func DlarfgTest(t *testing.T, impl Dlarfger) {
const tol = 1e-14
rnd := rand.New(rand.NewSource(1)) rnd := rand.New(rand.NewSource(1))
for i, test := range []struct { for i, test := range []struct {
alpha float64 alpha float64
@@ -105,7 +107,7 @@ func DlarfgTest(t *testing.T, impl Dlarfger) {
} }
blas64.Gemm(blas.Trans, blas.NoTrans, 1, hmat, hmat, 0, eye) blas64.Gemm(blas.Trans, blas.NoTrans, 1, hmat, hmat, 0, eye)
dist := distFromIdentity(n, eye.Data, n) dist := distFromIdentity(n, eye.Data, n)
if dist > 1e-14 { if dist > tol {
t.Errorf("H^T * H is not close to I, dist=%v", dist) t.Errorf("H^T * H is not close to I, dist=%v", dist)
} }
@@ -122,14 +124,11 @@ func DlarfgTest(t *testing.T, impl Dlarfger) {
Data: ans, Data: ans,
} }
blas64.Gemv(blas.NoTrans, 1, hmat, xVec, 0, ansVec) blas64.Gemv(blas.NoTrans, 1, hmat, xVec, 0, ansVec)
if math.Abs(ans[0]-beta) > 1e-14 { if math.Abs(ans[0]-beta) > tol {
t.Errorf("Case %v, beta mismatch. Want %v, got %v", i, ans[0], beta) t.Errorf("Case %v, beta mismatch. Want %v, got %v", i, ans[0], beta)
} }
for i := 1; i < n; i++ { if floats.Norm(ans[1:n], math.Inf(1)) > tol {
if math.Abs(ans[i]) > 1e-14 { t.Errorf("Case %v, nonzero answer %v", i, ans[1:n])
t.Errorf("Case %v, nonzero answer %v", i, ans)
break
}
} }
} }
} }