Skip to content
This repository was archived by the owner on Nov 24, 2018. It is now read-only.

Commit 3d87f56

Browse files
committed
testlapack: make tests independent
1 parent 1d7a2a4 commit 3d87f56

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

52 files changed

+158
-106
lines changed

testlapack/dbdsqr.go

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ type Dbdsqrer interface {
2020
}
2121

2222
func DbdsqrTest(t *testing.T, impl Dbdsqrer) {
23+
rnd := rand.New(rand.NewSource(1))
2324
bi := blas64.Implementation()
2425
_ = bi
2526
for _, uplo := range []blas.Uplo{blas.Upper, blas.Lower} {
@@ -58,19 +59,19 @@ func DbdsqrTest(t *testing.T, impl Dbdsqrer) {
5859

5960
d := make([]float64, n)
6061
for i := range d {
61-
d[i] = rand.NormFloat64()
62+
d[i] = rnd.NormFloat64()
6263
}
6364
e := make([]float64, n-1)
6465
for i := range e {
65-
e[i] = rand.NormFloat64()
66+
e[i] = rnd.NormFloat64()
6667
}
6768
dCopy := make([]float64, len(d))
6869
copy(dCopy, d)
6970
eCopy := make([]float64, len(e))
7071
copy(eCopy, e)
7172
work := make([]float64, 4*n)
7273
for i := range work {
73-
work[i] = rand.NormFloat64()
74+
work[i] = rnd.NormFloat64()
7475
}
7576

7677
// First test the decomposition of the bidiagonal matrix. Set
@@ -141,19 +142,19 @@ func DbdsqrTest(t *testing.T, impl Dbdsqrer) {
141142

142143
u := make([]float64, nru*ldu)
143144
for i := range u {
144-
u[i] = rand.NormFloat64()
145+
u[i] = rnd.NormFloat64()
145146
}
146147
uCopy := make([]float64, len(u))
147148
copy(uCopy, u)
148149
vt := make([]float64, n*ldvt)
149150
for i := range vt {
150-
vt[i] = rand.NormFloat64()
151+
vt[i] = rnd.NormFloat64()
151152
}
152153
vtCopy := make([]float64, len(vt))
153154
copy(vtCopy, vt)
154155
c := make([]float64, n*ldc)
155156
for i := range c {
156-
c[i] = rand.NormFloat64()
157+
c[i] = rnd.NormFloat64()
157158
}
158159
cCopy := make([]float64, len(c))
159160
copy(cCopy, c)

testlapack/dgebd2.go

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ type Dgebd2er interface {
1414
}
1515

1616
func Dgebd2Test(t *testing.T, impl Dgebd2er) {
17+
rnd := rand.New(rand.NewSource(1))
1718
for _, test := range []struct {
1819
m, n, lda int
1920
}{
@@ -31,7 +32,7 @@ func Dgebd2Test(t *testing.T, impl Dgebd2er) {
3132
nb := min(m, n) // 'nb' name parallel with Dlabrd code.
3233
a := make([]float64, m*lda)
3334
for i := range a {
34-
a[i] = rand.NormFloat64()
35+
a[i] = rnd.NormFloat64()
3536
}
3637
d := nanSlice(nb)
3738
e := nanSlice(nb - 1)

testlapack/dgebrd.go

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ type Dgebrder interface {
1818
}
1919

2020
func DgebrdTest(t *testing.T, impl Dgebrder) {
21+
rnd := rand.New(rand.NewSource(1))
2122
for _, test := range []struct {
2223
m, n, lda int
2324
}{
@@ -44,7 +45,7 @@ func DgebrdTest(t *testing.T, impl Dgebrder) {
4445
minmn := min(m, n)
4546
a := make([]float64, m*lda)
4647
for i := range a {
47-
a[i] = rand.NormFloat64()
48+
a[i] = rnd.NormFloat64()
4849
}
4950

5051
d := make([]float64, minmn)

testlapack/dgelq2.go

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ type Dgelq2er interface {
1919
}
2020

2121
func Dgelq2Test(t *testing.T, impl Dgelq2er) {
22+
rnd := rand.New(rand.NewSource(1))
2223
for c, test := range []struct {
2324
m, n, lda int
2425
}{
@@ -52,15 +53,15 @@ func Dgelq2Test(t *testing.T, impl Dgelq2er) {
5253
k := min(m, n)
5354
tau := make([]float64, k)
5455
for i := range tau {
55-
tau[i] = rand.Float64()
56+
tau[i] = rnd.Float64()
5657
}
5758
work := make([]float64, m)
5859
for i := range work {
59-
work[i] = rand.Float64()
60+
work[i] = rnd.Float64()
6061
}
6162
a := make([]float64, m*lda)
6263
for i := 0; i < m*lda; i++ {
63-
a[i] = rand.Float64()
64+
a[i] = rnd.Float64()
6465
}
6566
aCopy := make([]float64, len(a))
6667
copy(aCopy, a)

testlapack/dgelqf.go

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ type Dgelqfer interface {
1717
}
1818

1919
func DgelqfTest(t *testing.T, impl Dgelqfer) {
20+
rnd := rand.New(rand.NewSource(1))
2021
for c, test := range []struct {
2122
m, n, lda int
2223
}{
@@ -50,20 +51,20 @@ func DgelqfTest(t *testing.T, impl Dgelqfer) {
5051
a := make([]float64, m*lda)
5152
for i := 0; i < m; i++ {
5253
for j := 0; j < n; j++ {
53-
a[i*lda+j] = rand.Float64()
54+
a[i*lda+j] = rnd.Float64()
5455
}
5556
}
5657
tau := make([]float64, n)
5758
for i := 0; i < n; i++ {
58-
tau[i] = rand.Float64()
59+
tau[i] = rnd.Float64()
5960
}
6061
aCopy := make([]float64, len(a))
6162
copy(aCopy, a)
6263
ans := make([]float64, len(a))
6364
copy(ans, a)
6465
work := make([]float64, m)
6566
for i := range work {
66-
work[i] = rand.Float64()
67+
work[i] = rnd.Float64()
6768
}
6869
// Compute unblocked QR.
6970
impl.Dgelq2(m, n, ans, lda, tau, work)

testlapack/dgels.go

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ type Dgelser interface {
1818
}
1919

2020
func DgelsTest(t *testing.T, impl Dgelser) {
21+
rnd := rand.New(rand.NewSource(1))
2122
for _, trans := range []blas.Transpose{blas.NoTrans, blas.Trans} {
2223
for _, test := range []struct {
2324
m, n, nrhs, lda, ldb int
@@ -69,7 +70,7 @@ func DgelsTest(t *testing.T, impl Dgelser) {
6970
}
7071
a := make([]float64, m*lda)
7172
for i := range a {
72-
a[i] = rand.Float64()
73+
a[i] = rnd.Float64()
7374
}
7475
aCopy := make([]float64, len(a))
7576
copy(aCopy, a)
@@ -84,7 +85,7 @@ func DgelsTest(t *testing.T, impl Dgelser) {
8485
}
8586
b := make([]float64, mb*ldb)
8687
for i := range b {
87-
b[i] = rand.Float64()
88+
b[i] = rnd.Float64()
8889
}
8990
bCopy := make([]float64, len(b))
9091
copy(bCopy, b)
@@ -97,7 +98,7 @@ func DgelsTest(t *testing.T, impl Dgelser) {
9798
work = make([]float64, int(work[0]))
9899
lwork := len(work)
99100
for i := range work {
100-
work[i] = rand.Float64()
101+
work[i] = rnd.Float64()
101102
}
102103
impl.Dgels(trans, m, n, nrhs, a, lda, b, ldb, work, lwork)
103104

testlapack/dgeql2.go

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ type Dgeql2er interface {
1818
}
1919

2020
func Dgeql2Test(t *testing.T, impl Dgeql2er) {
21+
rnd := rand.New(rand.NewSource(1))
2122
// TODO(btracey): Add tests for m < n.
2223
for _, test := range []struct {
2324
m, n, lda int
@@ -34,7 +35,7 @@ func Dgeql2Test(t *testing.T, impl Dgeql2er) {
3435
}
3536
a := make([]float64, m*lda)
3637
for i := range a {
37-
a[i] = rand.NormFloat64()
38+
a[i] = rnd.NormFloat64()
3839
}
3940
tau := nanSlice(min(m, n))
4041
work := nanSlice(n)

testlapack/dgeqr2.go

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ type Dgeqr2er interface {
1919
}
2020

2121
func Dgeqr2Test(t *testing.T, impl Dgeqr2er) {
22+
rnd := rand.New(rand.NewSource(1))
2223
for c, test := range []struct {
2324
m, n, lda int
2425
}{
@@ -51,17 +52,17 @@ func Dgeqr2Test(t *testing.T, impl Dgeqr2er) {
5152
}
5253
a := make([]float64, m*lda)
5354
for i := range a {
54-
a[i] = rand.Float64()
55+
a[i] = rnd.Float64()
5556
}
5657
aCopy := make([]float64, len(a))
5758
k := min(m, n)
5859
tau := make([]float64, k)
5960
for i := range tau {
60-
tau[i] = rand.Float64()
61+
tau[i] = rnd.Float64()
6162
}
6263
work := make([]float64, n)
6364
for i := range work {
64-
work[i] = rand.Float64()
65+
work[i] = rnd.Float64()
6566
}
6667
copy(aCopy, a)
6768
impl.Dgeqr2(m, n, a, lda, tau, work)

testlapack/dgeqrf.go

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ type Dgeqrfer interface {
1717
}
1818

1919
func DgeqrfTest(t *testing.T, impl Dgeqrfer) {
20+
rnd := rand.New(rand.NewSource(1))
2021
for c, test := range []struct {
2122
m, n, lda int
2223
}{
@@ -50,12 +51,12 @@ func DgeqrfTest(t *testing.T, impl Dgeqrfer) {
5051
a := make([]float64, m*lda)
5152
for i := 0; i < m; i++ {
5253
for j := 0; j < n; j++ {
53-
a[i*lda+j] = rand.Float64()
54+
a[i*lda+j] = rnd.Float64()
5455
}
5556
}
5657
tau := make([]float64, n)
5758
for i := 0; i < n; i++ {
58-
tau[i] = rand.Float64()
59+
tau[i] = rnd.Float64()
5960
}
6061
aCopy := make([]float64, len(a))
6162
copy(aCopy, a)

testlapack/dgesvd.go

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ type Dgesvder interface {
2020
}
2121

2222
func DgesvdTest(t *testing.T, impl Dgesvder) {
23+
rnd := rand.New(rand.NewSource(1))
2324
// TODO(btracey): Add tests for all of the cases when the SVD implementation
2425
// is finished.
2526
// TODO(btracey): Add tests for m > mnthr and n > mnthr when other SVD
@@ -73,17 +74,17 @@ func DgesvdTest(t *testing.T, impl Dgesvder) {
7374

7475
a := make([]float64, m*lda)
7576
for i := range a {
76-
a[i] = rand.NormFloat64()
77+
a[i] = rnd.NormFloat64()
7778
}
7879

7980
u := make([]float64, m*ldu)
8081
for i := range u {
81-
u[i] = rand.NormFloat64()
82+
u[i] = rnd.NormFloat64()
8283
}
8384

8485
vt := make([]float64, n*ldvt)
8586
for i := range vt {
86-
vt[i] = rand.NormFloat64()
87+
vt[i] = rnd.NormFloat64()
8788
}
8889

8990
uAllOrig := make([]float64, len(u))
@@ -125,14 +126,15 @@ func DgesvdTest(t *testing.T, impl Dgesvder) {
125126
// svdCheckPartial checks that the singular values and vectors are computed when
126127
// not all of them are computed.
127128
func svdCheckPartial(t *testing.T, impl Dgesvder, job lapack.SVDJob, errStr string, uAllOrig, vtAllOrig, aCopy []float64, m, n int, a []float64, lda int, s, u []float64, ldu int, vt []float64, ldvt int, work []float64, shortWork bool) {
129+
rnd := rand.New(rand.NewSource(1))
128130
jobU := job
129131
jobVT := job
130132
// Compare the singular values when computed with {SVDNone, SVDNone.}
131133
sCopy := make([]float64, len(s))
132134
copy(sCopy, s)
133135
copy(a, aCopy)
134136
for i := range s {
135-
s[i] = rand.Float64()
137+
s[i] = rnd.Float64()
136138
}
137139
tmp1 := make([]float64, 1)
138140
tmp2 := make([]float64, 1)
@@ -167,7 +169,7 @@ func svdCheckPartial(t *testing.T, impl Dgesvder, job lapack.SVDJob, errStr stri
167169
jobVT = lapack.SVDNone
168170
copy(a, aCopy)
169171
for i := range s {
170-
s[i] = rand.Float64()
172+
s[i] = rnd.Float64()
171173
}
172174
impl.Dgesvd(jobU, jobVT, m, n, a, lda, s, u, ldu, tmp2, ldvt, work, -1)
173175
work = make([]float64, int(work[0]))
@@ -186,7 +188,7 @@ func svdCheckPartial(t *testing.T, impl Dgesvder, job lapack.SVDJob, errStr stri
186188
jobVT = job
187189
copy(a, aCopy)
188190
for i := range s {
189-
s[i] = rand.Float64()
191+
s[i] = rnd.Float64()
190192
}
191193
impl.Dgesvd(jobU, jobVT, m, n, a, lda, s, tmp1, ldu, vt, ldvt, work, -1)
192194
work = make([]float64, int(work[0]))
@@ -281,5 +283,4 @@ func svdCheck(t *testing.T, thin bool, errStr string, m, n int, s, a, u []float6
281283
}
282284
}
283285
}
284-
285286
}

0 commit comments

Comments
 (0)