mirror of
https://github.com/gonum/gonum.git
synced 2025-10-07 08:01:20 +08:00
all: replace internal rand shim with math/rand/v2
This commit is contained in:
@@ -6,6 +6,7 @@ package testlapack
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"math/rand/v2"
|
||||
"sort"
|
||||
"testing"
|
||||
|
||||
@@ -13,7 +14,6 @@ import (
|
||||
"gonum.org/v1/gonum/blas/blas64"
|
||||
"gonum.org/v1/gonum/floats"
|
||||
"gonum.org/v1/gonum/floats/scalar"
|
||||
"gonum.org/v1/gonum/internal/rand"
|
||||
)
|
||||
|
||||
type Dbdsqrer interface {
|
||||
@@ -21,7 +21,7 @@ type Dbdsqrer interface {
|
||||
}
|
||||
|
||||
func DbdsqrTest(t *testing.T, impl Dbdsqrer) {
|
||||
rnd := rand.New(rand.NewSource(1))
|
||||
rnd := rand.New(rand.NewPCG(1, 1))
|
||||
bi := blas64.Implementation()
|
||||
for _, uplo := range []blas.Uplo{blas.Upper, blas.Lower} {
|
||||
for _, test := range []struct {
|
||||
|
@@ -6,11 +6,11 @@ package testlapack
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"math/rand/v2"
|
||||
"testing"
|
||||
|
||||
"gonum.org/v1/gonum/blas"
|
||||
"gonum.org/v1/gonum/blas/blas64"
|
||||
"gonum.org/v1/gonum/internal/rand"
|
||||
"gonum.org/v1/gonum/lapack"
|
||||
)
|
||||
|
||||
@@ -19,19 +19,19 @@ type Dgebaker interface {
|
||||
}
|
||||
|
||||
func DgebakTest(t *testing.T, impl Dgebaker) {
|
||||
rnd := rand.New(rand.NewSource(1))
|
||||
rnd := rand.New(rand.NewPCG(1, 1))
|
||||
|
||||
for _, job := range []lapack.BalanceJob{lapack.BalanceNone, lapack.Permute, lapack.Scale, lapack.PermuteScale} {
|
||||
for _, side := range []lapack.EVSide{lapack.EVLeft, lapack.EVRight} {
|
||||
for _, n := range []int{0, 1, 2, 3, 4, 5, 6, 10, 18, 31, 53} {
|
||||
for _, extra := range []int{0, 11} {
|
||||
for cas := 0; cas < 100; cas++ {
|
||||
m := rnd.Intn(n + 1)
|
||||
m := rnd.IntN(n + 1)
|
||||
v := randomGeneral(n, m, m+extra, rnd)
|
||||
var ilo, ihi int
|
||||
if v.Rows > 0 {
|
||||
ihi = rnd.Intn(n)
|
||||
ilo = rnd.Intn(ihi + 1)
|
||||
ihi = rnd.IntN(n)
|
||||
ilo = rnd.IntN(ihi + 1)
|
||||
} else {
|
||||
ihi = -1
|
||||
}
|
||||
@@ -70,12 +70,12 @@ func testDgebak(t *testing.T, impl Dgebaker, job lapack.BalanceJob, side lapack.
|
||||
if job == lapack.Permute || job == lapack.PermuteScale {
|
||||
// Make up some random permutations.
|
||||
for i := n - 1; i > ihi; i-- {
|
||||
scale[i] = float64(rnd.Intn(i + 1))
|
||||
scale[i] = float64(rnd.IntN(i + 1))
|
||||
blas64.Swap(blas64.Vector{N: n, Data: p.Data[i:], Inc: p.Stride},
|
||||
blas64.Vector{N: n, Data: p.Data[int(scale[i]):], Inc: p.Stride})
|
||||
}
|
||||
for i := 0; i < ilo; i++ {
|
||||
scale[i] = float64(i + rnd.Intn(ihi-i+1))
|
||||
scale[i] = float64(i + rnd.IntN(ihi-i+1))
|
||||
blas64.Swap(blas64.Vector{N: n, Data: p.Data[i:], Inc: p.Stride},
|
||||
blas64.Vector{N: n, Data: p.Data[int(scale[i]):], Inc: p.Stride})
|
||||
}
|
||||
|
@@ -6,11 +6,11 @@ package testlapack
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"math/rand/v2"
|
||||
"testing"
|
||||
|
||||
"gonum.org/v1/gonum/blas"
|
||||
"gonum.org/v1/gonum/blas/blas64"
|
||||
"gonum.org/v1/gonum/internal/rand"
|
||||
"gonum.org/v1/gonum/lapack"
|
||||
)
|
||||
|
||||
@@ -19,7 +19,7 @@ type Dgebaler interface {
|
||||
}
|
||||
|
||||
func DgebalTest(t *testing.T, impl Dgebaler) {
|
||||
rnd := rand.New(rand.NewSource(1))
|
||||
rnd := rand.New(rand.NewPCG(1, 1))
|
||||
|
||||
for _, job := range []lapack.BalanceJob{lapack.BalanceNone, lapack.Permute, lapack.Scale, lapack.PermuteScale} {
|
||||
for _, n := range []int{0, 1, 2, 3, 4, 5, 6, 10, 18, 31, 53, 100} {
|
||||
|
@@ -5,9 +5,8 @@
|
||||
package testlapack
|
||||
|
||||
import (
|
||||
"math/rand/v2"
|
||||
"testing"
|
||||
|
||||
"gonum.org/v1/gonum/internal/rand"
|
||||
)
|
||||
|
||||
type Dgebd2er interface {
|
||||
@@ -15,7 +14,7 @@ type Dgebd2er interface {
|
||||
}
|
||||
|
||||
func Dgebd2Test(t *testing.T, impl Dgebd2er) {
|
||||
rnd := rand.New(rand.NewSource(1))
|
||||
rnd := rand.New(rand.NewPCG(1, 1))
|
||||
for _, test := range []struct {
|
||||
m, n, lda int
|
||||
}{
|
||||
|
@@ -6,10 +6,10 @@ package testlapack
|
||||
|
||||
import (
|
||||
"math"
|
||||
"math/rand/v2"
|
||||
"testing"
|
||||
|
||||
"gonum.org/v1/gonum/floats"
|
||||
"gonum.org/v1/gonum/internal/rand"
|
||||
)
|
||||
|
||||
type Dgebrder interface {
|
||||
@@ -18,7 +18,7 @@ type Dgebrder interface {
|
||||
}
|
||||
|
||||
func DgebrdTest(t *testing.T, impl Dgebrder) {
|
||||
rnd := rand.New(rand.NewSource(1))
|
||||
rnd := rand.New(rand.NewPCG(1, 1))
|
||||
for _, test := range []struct {
|
||||
m, n, lda int
|
||||
}{
|
||||
|
@@ -7,10 +7,10 @@ package testlapack
|
||||
import (
|
||||
"fmt"
|
||||
"math"
|
||||
"math/rand/v2"
|
||||
"testing"
|
||||
|
||||
"gonum.org/v1/gonum/floats"
|
||||
"gonum.org/v1/gonum/internal/rand"
|
||||
"gonum.org/v1/gonum/lapack"
|
||||
)
|
||||
|
||||
@@ -22,7 +22,7 @@ type Dgeconer interface {
|
||||
}
|
||||
|
||||
func DgeconTest(t *testing.T, impl Dgeconer) {
|
||||
rnd := rand.New(rand.NewSource(1))
|
||||
rnd := rand.New(rand.NewPCG(1, 1))
|
||||
for _, n := range []int{0, 1, 2, 3, 4, 5, 10, 50} {
|
||||
for _, lda := range []int{max(1, n), n + 3} {
|
||||
dgeconTest(t, impl, rnd, n, lda)
|
||||
|
@@ -8,12 +8,12 @@ import (
|
||||
"fmt"
|
||||
"math"
|
||||
"math/cmplx"
|
||||
"math/rand/v2"
|
||||
"strconv"
|
||||
"testing"
|
||||
|
||||
"gonum.org/v1/gonum/blas"
|
||||
"gonum.org/v1/gonum/blas/blas64"
|
||||
"gonum.org/v1/gonum/internal/rand"
|
||||
"gonum.org/v1/gonum/lapack"
|
||||
)
|
||||
|
||||
@@ -30,7 +30,7 @@ type dgeevTest struct {
|
||||
}
|
||||
|
||||
func DgeevTest(t *testing.T, impl Dgeever) {
|
||||
rnd := rand.New(rand.NewSource(1))
|
||||
rnd := rand.New(rand.NewPCG(1, 1))
|
||||
|
||||
for i, test := range []dgeevTest{
|
||||
{
|
||||
@@ -488,7 +488,7 @@ func DgeevTest(t *testing.T, impl Dgeever) {
|
||||
re := rnd.NormFloat64()
|
||||
if i == n-1 || rnd.Float64() < 0.5 {
|
||||
// Real eigenvalue.
|
||||
nb := rnd.Intn(min(4, n-i)) + 1
|
||||
nb := rnd.IntN(min(4, n-i)) + 1
|
||||
for k := 0; k < nb; k++ {
|
||||
tmat.Data[i*tmat.Stride+i] = re
|
||||
ev[i] = complex(re, 0)
|
||||
@@ -498,7 +498,7 @@ func DgeevTest(t *testing.T, impl Dgeever) {
|
||||
}
|
||||
// Complex eigenvalue.
|
||||
im := rnd.NormFloat64()
|
||||
nb := rnd.Intn(min(4, (n-i)/2)) + 1
|
||||
nb := rnd.IntN(min(4, (n-i)/2)) + 1
|
||||
for k := 0; k < nb; k++ {
|
||||
// 2×2 block for the complex eigenvalue.
|
||||
tmat.Data[i*tmat.Stride+i] = re
|
||||
|
@@ -5,16 +5,16 @@
|
||||
package testlapack
|
||||
|
||||
import (
|
||||
"math/rand/v2"
|
||||
"testing"
|
||||
|
||||
"gonum.org/v1/gonum/blas/blas64"
|
||||
"gonum.org/v1/gonum/internal/rand"
|
||||
"gonum.org/v1/gonum/lapack"
|
||||
)
|
||||
|
||||
func DgeevBenchmark(b *testing.B, impl Dgeever) {
|
||||
var resultGeneral blas64.General
|
||||
rnd := rand.New(rand.NewSource(1))
|
||||
rnd := rand.New(rand.NewPCG(1, 1))
|
||||
benchmarks := []struct {
|
||||
name string
|
||||
a blas64.General
|
||||
|
@@ -7,11 +7,11 @@ package testlapack
|
||||
import (
|
||||
"fmt"
|
||||
"math"
|
||||
"math/rand/v2"
|
||||
"testing"
|
||||
|
||||
"gonum.org/v1/gonum/blas"
|
||||
"gonum.org/v1/gonum/blas/blas64"
|
||||
"gonum.org/v1/gonum/internal/rand"
|
||||
)
|
||||
|
||||
type Dgehd2er interface {
|
||||
@@ -19,7 +19,7 @@ type Dgehd2er interface {
|
||||
}
|
||||
|
||||
func Dgehd2Test(t *testing.T, impl Dgehd2er) {
|
||||
rnd := rand.New(rand.NewSource(1))
|
||||
rnd := rand.New(rand.NewPCG(1, 1))
|
||||
for _, n := range []int{1, 2, 3, 4, 5, 7, 10, 30} {
|
||||
for _, extra := range []int{0, 1, 13} {
|
||||
for cas := 0; cas < 100; cas++ {
|
||||
@@ -32,8 +32,8 @@ func Dgehd2Test(t *testing.T, impl Dgehd2er) {
|
||||
func testDgehd2(t *testing.T, impl Dgehd2er, n, extra int, rnd *rand.Rand) {
|
||||
const tol = 1e-14
|
||||
|
||||
ilo := rnd.Intn(n)
|
||||
ihi := rnd.Intn(n)
|
||||
ilo := rnd.IntN(n)
|
||||
ihi := rnd.IntN(n)
|
||||
if ilo > ihi {
|
||||
ilo, ihi = ihi, ilo
|
||||
}
|
||||
|
@@ -7,11 +7,11 @@ package testlapack
|
||||
import (
|
||||
"fmt"
|
||||
"math"
|
||||
"math/rand/v2"
|
||||
"testing"
|
||||
|
||||
"gonum.org/v1/gonum/blas"
|
||||
"gonum.org/v1/gonum/blas/blas64"
|
||||
"gonum.org/v1/gonum/internal/rand"
|
||||
)
|
||||
|
||||
type Dgehrder interface {
|
||||
@@ -21,7 +21,7 @@ type Dgehrder interface {
|
||||
}
|
||||
|
||||
func DgehrdTest(t *testing.T, impl Dgehrder) {
|
||||
rnd := rand.New(rand.NewSource(1))
|
||||
rnd := rand.New(rand.NewPCG(1, 1))
|
||||
|
||||
// Randomized tests for small matrix sizes that will most likely
|
||||
// use the unblocked algorithm.
|
||||
@@ -29,8 +29,8 @@ func DgehrdTest(t *testing.T, impl Dgehrder) {
|
||||
for _, extra := range []int{0, 13} {
|
||||
for _, optwork := range []bool{true, false} {
|
||||
for cas := 0; cas < 10; cas++ {
|
||||
ilo := rnd.Intn(n)
|
||||
ihi := rnd.Intn(n)
|
||||
ilo := rnd.IntN(n)
|
||||
ihi := rnd.IntN(n)
|
||||
if ilo > ihi {
|
||||
ilo, ihi = ihi, ilo
|
||||
}
|
||||
|
@@ -5,12 +5,12 @@
|
||||
package testlapack
|
||||
|
||||
import (
|
||||
"math/rand/v2"
|
||||
"testing"
|
||||
|
||||
"gonum.org/v1/gonum/blas"
|
||||
"gonum.org/v1/gonum/blas/blas64"
|
||||
"gonum.org/v1/gonum/floats"
|
||||
"gonum.org/v1/gonum/internal/rand"
|
||||
)
|
||||
|
||||
type Dgelq2er interface {
|
||||
@@ -20,7 +20,7 @@ type Dgelq2er interface {
|
||||
func Dgelq2Test(t *testing.T, impl Dgelq2er) {
|
||||
const tol = 1e-14
|
||||
|
||||
rnd := rand.New(rand.NewSource(1))
|
||||
rnd := rand.New(rand.NewPCG(1, 1))
|
||||
for c, test := range []struct {
|
||||
m, n, lda int
|
||||
}{
|
||||
|
@@ -5,10 +5,10 @@
|
||||
package testlapack
|
||||
|
||||
import (
|
||||
"math/rand/v2"
|
||||
"testing"
|
||||
|
||||
"gonum.org/v1/gonum/floats"
|
||||
"gonum.org/v1/gonum/internal/rand"
|
||||
)
|
||||
|
||||
type Dgelqfer interface {
|
||||
@@ -18,7 +18,7 @@ type Dgelqfer interface {
|
||||
|
||||
func DgelqfTest(t *testing.T, impl Dgelqfer) {
|
||||
const tol = 1e-12
|
||||
rnd := rand.New(rand.NewSource(1))
|
||||
rnd := rand.New(rand.NewPCG(1, 1))
|
||||
for c, test := range []struct {
|
||||
m, n, lda int
|
||||
}{
|
||||
|
@@ -5,12 +5,12 @@
|
||||
package testlapack
|
||||
|
||||
import (
|
||||
"math/rand/v2"
|
||||
"testing"
|
||||
|
||||
"gonum.org/v1/gonum/blas"
|
||||
"gonum.org/v1/gonum/blas/blas64"
|
||||
"gonum.org/v1/gonum/floats"
|
||||
"gonum.org/v1/gonum/internal/rand"
|
||||
)
|
||||
|
||||
type Dgelser interface {
|
||||
@@ -18,7 +18,7 @@ type Dgelser interface {
|
||||
}
|
||||
|
||||
func DgelsTest(t *testing.T, impl Dgelser) {
|
||||
rnd := rand.New(rand.NewSource(1))
|
||||
rnd := rand.New(rand.NewPCG(1, 1))
|
||||
for _, trans := range []blas.Transpose{blas.NoTrans, blas.Trans} {
|
||||
for _, test := range []struct {
|
||||
m, n, nrhs, lda, ldb int
|
||||
|
@@ -5,12 +5,12 @@
|
||||
package testlapack
|
||||
|
||||
import (
|
||||
"math/rand/v2"
|
||||
"testing"
|
||||
|
||||
"gonum.org/v1/gonum/blas"
|
||||
"gonum.org/v1/gonum/blas/blas64"
|
||||
"gonum.org/v1/gonum/floats"
|
||||
"gonum.org/v1/gonum/internal/rand"
|
||||
)
|
||||
|
||||
type Dgeql2er interface {
|
||||
@@ -20,7 +20,7 @@ type Dgeql2er interface {
|
||||
func Dgeql2Test(t *testing.T, impl Dgeql2er) {
|
||||
const tol = 1e-14
|
||||
|
||||
rnd := rand.New(rand.NewSource(1))
|
||||
rnd := rand.New(rand.NewPCG(1, 1))
|
||||
// TODO(btracey): Add tests for m < n.
|
||||
for _, test := range []struct {
|
||||
m, n, lda int
|
||||
|
@@ -6,11 +6,11 @@ package testlapack
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"math/rand/v2"
|
||||
"testing"
|
||||
|
||||
"gonum.org/v1/gonum/blas"
|
||||
"gonum.org/v1/gonum/blas/blas64"
|
||||
"gonum.org/v1/gonum/internal/rand"
|
||||
"gonum.org/v1/gonum/lapack"
|
||||
)
|
||||
|
||||
@@ -20,7 +20,7 @@ type Dgeqp3er interface {
|
||||
}
|
||||
|
||||
func Dgeqp3Test(t *testing.T, impl Dgeqp3er) {
|
||||
rnd := rand.New(rand.NewSource(1))
|
||||
rnd := rand.New(rand.NewPCG(1, 1))
|
||||
for _, m := range []int{0, 1, 2, 3, 4, 5, 12, 23, 129} {
|
||||
for _, n := range []int{0, 1, 2, 3, 4, 5, 12, 23, 129} {
|
||||
for _, lda := range []int{max(1, n), n + 3} {
|
||||
@@ -55,7 +55,7 @@ func dgeqp3Test(t *testing.T, impl Dgeqp3er, rnd *rand.Rand, m, n, lda int) {
|
||||
name += "free=all"
|
||||
case some:
|
||||
// Some columns are free, some are leading columns.
|
||||
jpvt[j] = rnd.Intn(2) - 1 // -1 or 0
|
||||
jpvt[j] = rnd.IntN(2) - 1 // -1 or 0
|
||||
name += "free=some"
|
||||
case none:
|
||||
// All columns are leading.
|
||||
|
@@ -6,11 +6,11 @@ package testlapack
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"math/rand/v2"
|
||||
"testing"
|
||||
|
||||
"gonum.org/v1/gonum/blas"
|
||||
"gonum.org/v1/gonum/blas/blas64"
|
||||
"gonum.org/v1/gonum/internal/rand"
|
||||
"gonum.org/v1/gonum/lapack"
|
||||
)
|
||||
|
||||
@@ -19,7 +19,7 @@ type Dgeqr2er interface {
|
||||
}
|
||||
|
||||
func Dgeqr2Test(t *testing.T, impl Dgeqr2er) {
|
||||
rnd := rand.New(rand.NewSource(1))
|
||||
rnd := rand.New(rand.NewPCG(1, 1))
|
||||
for _, m := range []int{0, 1, 2, 3, 4, 5, 6, 12, 23} {
|
||||
for _, n := range []int{0, 1, 2, 3, 4, 5, 6, 12, 23} {
|
||||
for _, lda := range []int{max(1, n), n + 4} {
|
||||
|
@@ -5,10 +5,10 @@
|
||||
package testlapack
|
||||
|
||||
import (
|
||||
"math/rand/v2"
|
||||
"testing"
|
||||
|
||||
"gonum.org/v1/gonum/floats"
|
||||
"gonum.org/v1/gonum/internal/rand"
|
||||
)
|
||||
|
||||
type Dgeqrfer interface {
|
||||
@@ -18,7 +18,7 @@ type Dgeqrfer interface {
|
||||
|
||||
func DgeqrfTest(t *testing.T, impl Dgeqrfer) {
|
||||
const tol = 1e-12
|
||||
rnd := rand.New(rand.NewSource(1))
|
||||
rnd := rand.New(rand.NewPCG(1, 1))
|
||||
for c, test := range []struct {
|
||||
m, n, lda int
|
||||
}{
|
||||
|
@@ -6,11 +6,11 @@ package testlapack
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"math/rand/v2"
|
||||
"testing"
|
||||
|
||||
"gonum.org/v1/gonum/blas"
|
||||
"gonum.org/v1/gonum/blas/blas64"
|
||||
"gonum.org/v1/gonum/internal/rand"
|
||||
"gonum.org/v1/gonum/lapack"
|
||||
)
|
||||
|
||||
@@ -19,7 +19,7 @@ type Dgerq2er interface {
|
||||
}
|
||||
|
||||
func Dgerq2Test(t *testing.T, impl Dgerq2er) {
|
||||
rnd := rand.New(rand.NewSource(1))
|
||||
rnd := rand.New(rand.NewPCG(1, 1))
|
||||
for _, m := range []int{0, 1, 2, 3, 4, 5, 6, 12, 23} {
|
||||
for _, n := range []int{0, 1, 2, 3, 4, 5, 6, 12, 23} {
|
||||
for _, lda := range []int{max(1, n), n + 4} {
|
||||
|
@@ -6,11 +6,11 @@ package testlapack
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"math/rand/v2"
|
||||
"testing"
|
||||
|
||||
"gonum.org/v1/gonum/blas"
|
||||
"gonum.org/v1/gonum/blas/blas64"
|
||||
"gonum.org/v1/gonum/internal/rand"
|
||||
"gonum.org/v1/gonum/lapack"
|
||||
)
|
||||
|
||||
@@ -19,7 +19,7 @@ type Dgerqfer interface {
|
||||
}
|
||||
|
||||
func DgerqfTest(t *testing.T, impl Dgerqfer) {
|
||||
rnd := rand.New(rand.NewSource(1))
|
||||
rnd := rand.New(rand.NewPCG(1, 1))
|
||||
for _, m := range []int{0, 1, 2, 3, 4, 5, 6, 12, 129, 160} {
|
||||
for _, n := range []int{0, 1, 2, 3, 4, 5, 6, 12, 129, 160} {
|
||||
for _, lda := range []int{max(1, n), n + 4} {
|
||||
|
@@ -7,12 +7,12 @@ package testlapack
|
||||
import (
|
||||
"fmt"
|
||||
"math"
|
||||
"math/rand/v2"
|
||||
"testing"
|
||||
|
||||
"gonum.org/v1/gonum/blas"
|
||||
"gonum.org/v1/gonum/blas/blas64"
|
||||
"gonum.org/v1/gonum/floats"
|
||||
"gonum.org/v1/gonum/internal/rand"
|
||||
"gonum.org/v1/gonum/lapack"
|
||||
)
|
||||
|
||||
@@ -23,7 +23,7 @@ type Dgesc2er interface {
|
||||
}
|
||||
|
||||
func Dgesc2Test(t *testing.T, impl Dgesc2er) {
|
||||
rnd := rand.New(rand.NewSource(1))
|
||||
rnd := rand.New(rand.NewPCG(1, 1))
|
||||
for _, n := range []int{0, 1, 2, 3, 4, 5, 10, 20, 50} {
|
||||
for _, lda := range []int{n, n + 3} {
|
||||
testDgesc2(t, impl, rnd, n, lda, false)
|
||||
|
@@ -7,11 +7,11 @@ package testlapack
|
||||
import (
|
||||
"fmt"
|
||||
"math"
|
||||
"math/rand/v2"
|
||||
"testing"
|
||||
|
||||
"gonum.org/v1/gonum/blas"
|
||||
"gonum.org/v1/gonum/blas/blas64"
|
||||
"gonum.org/v1/gonum/internal/rand"
|
||||
"gonum.org/v1/gonum/lapack"
|
||||
)
|
||||
|
||||
@@ -22,7 +22,7 @@ type Dgesver interface {
|
||||
}
|
||||
|
||||
func DgesvTest(t *testing.T, impl Dgesver) {
|
||||
rnd := rand.New(rand.NewSource(1))
|
||||
rnd := rand.New(rand.NewPCG(1, 1))
|
||||
for _, n := range []int{0, 1, 2, 3, 4, 5, 10, 50, 100} {
|
||||
for _, nrhs := range []int{0, 1, 2, 5} {
|
||||
for _, lda := range []int{max(1, n), n + 5} {
|
||||
|
@@ -7,13 +7,13 @@ package testlapack
|
||||
import (
|
||||
"fmt"
|
||||
"math"
|
||||
"math/rand/v2"
|
||||
"sort"
|
||||
"testing"
|
||||
|
||||
"gonum.org/v1/gonum/blas"
|
||||
"gonum.org/v1/gonum/blas/blas64"
|
||||
"gonum.org/v1/gonum/floats"
|
||||
"gonum.org/v1/gonum/internal/rand"
|
||||
"gonum.org/v1/gonum/lapack"
|
||||
)
|
||||
|
||||
@@ -47,7 +47,7 @@ func DgesvdTest(t *testing.T, impl Dgesvder, tol float64) {
|
||||
func dgesvdTest(t *testing.T, impl Dgesvder, m, n, mtype int, tol float64) {
|
||||
const tolOrtho = 1e-15
|
||||
|
||||
rnd := rand.New(rand.NewSource(1))
|
||||
rnd := rand.New(rand.NewPCG(1, 1))
|
||||
|
||||
// Use a fixed leading dimension to reduce testing time.
|
||||
lda := n + 3
|
||||
|
@@ -7,11 +7,11 @@ package testlapack
|
||||
import (
|
||||
"fmt"
|
||||
"math"
|
||||
"math/rand/v2"
|
||||
"testing"
|
||||
|
||||
"gonum.org/v1/gonum/blas"
|
||||
"gonum.org/v1/gonum/blas/blas64"
|
||||
"gonum.org/v1/gonum/internal/rand"
|
||||
"gonum.org/v1/gonum/lapack"
|
||||
)
|
||||
|
||||
@@ -20,7 +20,7 @@ type Dgetc2er interface {
|
||||
}
|
||||
|
||||
func Dgetc2Test(t *testing.T, impl Dgetc2er) {
|
||||
rnd := rand.New(rand.NewSource(1))
|
||||
rnd := rand.New(rand.NewPCG(1, 1))
|
||||
for _, n := range []int{0, 1, 2, 3, 4, 5, 10, 20} {
|
||||
for _, lda := range []int{n, n + 5} {
|
||||
dgetc2Test(t, impl, rnd, n, lda, false)
|
||||
@@ -52,7 +52,7 @@ func dgetc2Test(t *testing.T, impl Dgetc2er, rnd *rand.Rand, n, lda int, perturb
|
||||
}
|
||||
if perturb && n > 0 {
|
||||
// Make U singular by randomly placing a zero on the diagonal.
|
||||
i := rnd.Intn(n)
|
||||
i := rnd.IntN(n)
|
||||
u.Data[i*u.Stride+i] = 0
|
||||
}
|
||||
|
||||
|
@@ -5,12 +5,12 @@
|
||||
package testlapack
|
||||
|
||||
import (
|
||||
"math/rand/v2"
|
||||
"testing"
|
||||
|
||||
"gonum.org/v1/gonum/blas"
|
||||
"gonum.org/v1/gonum/blas/blas64"
|
||||
"gonum.org/v1/gonum/floats"
|
||||
"gonum.org/v1/gonum/internal/rand"
|
||||
)
|
||||
|
||||
type Dgetf2er interface {
|
||||
@@ -18,7 +18,7 @@ type Dgetf2er interface {
|
||||
}
|
||||
|
||||
func Dgetf2Test(t *testing.T, impl Dgetf2er) {
|
||||
rnd := rand.New(rand.NewSource(1))
|
||||
rnd := rand.New(rand.NewPCG(1, 1))
|
||||
for _, test := range []struct {
|
||||
m, n, lda int
|
||||
}{
|
||||
|
@@ -5,9 +5,8 @@
|
||||
package testlapack
|
||||
|
||||
import (
|
||||
"math/rand/v2"
|
||||
"testing"
|
||||
|
||||
"gonum.org/v1/gonum/internal/rand"
|
||||
)
|
||||
|
||||
type Dgetrfer interface {
|
||||
@@ -15,7 +14,7 @@ type Dgetrfer interface {
|
||||
}
|
||||
|
||||
func DgetrfTest(t *testing.T, impl Dgetrfer) {
|
||||
rnd := rand.New(rand.NewSource(1))
|
||||
rnd := rand.New(rand.NewPCG(1, 1))
|
||||
for _, test := range []struct {
|
||||
m, n, lda int
|
||||
}{
|
||||
|
@@ -5,11 +5,11 @@
|
||||
package testlapack
|
||||
|
||||
import (
|
||||
"math/rand/v2"
|
||||
"testing"
|
||||
|
||||
"gonum.org/v1/gonum/blas"
|
||||
"gonum.org/v1/gonum/blas/blas64"
|
||||
"gonum.org/v1/gonum/internal/rand"
|
||||
)
|
||||
|
||||
type Dgetrier interface {
|
||||
@@ -19,7 +19,7 @@ type Dgetrier interface {
|
||||
|
||||
func DgetriTest(t *testing.T, impl Dgetrier) {
|
||||
const tol = 1e-13
|
||||
rnd := rand.New(rand.NewSource(1))
|
||||
rnd := rand.New(rand.NewPCG(1, 1))
|
||||
bi := blas64.Implementation()
|
||||
for _, test := range []struct {
|
||||
n, lda int
|
||||
|
@@ -5,12 +5,12 @@
|
||||
package testlapack
|
||||
|
||||
import (
|
||||
"math/rand/v2"
|
||||
"testing"
|
||||
|
||||
"gonum.org/v1/gonum/blas"
|
||||
"gonum.org/v1/gonum/blas/blas64"
|
||||
"gonum.org/v1/gonum/floats"
|
||||
"gonum.org/v1/gonum/internal/rand"
|
||||
)
|
||||
|
||||
type Dgetrser interface {
|
||||
@@ -19,7 +19,7 @@ type Dgetrser interface {
|
||||
}
|
||||
|
||||
func DgetrsTest(t *testing.T, impl Dgetrser) {
|
||||
rnd := rand.New(rand.NewSource(1))
|
||||
rnd := rand.New(rand.NewPCG(1, 1))
|
||||
// TODO(btracey): Put more thought into creating more regularized matrices
|
||||
// and what correct tolerances should be. Consider also seeding the random
|
||||
// number in this test to make it more robust to code changes in other
|
||||
|
@@ -6,11 +6,11 @@ package testlapack
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"math/rand/v2"
|
||||
"testing"
|
||||
|
||||
"gonum.org/v1/gonum/blas"
|
||||
"gonum.org/v1/gonum/blas/blas64"
|
||||
"gonum.org/v1/gonum/internal/rand"
|
||||
"gonum.org/v1/gonum/lapack"
|
||||
)
|
||||
|
||||
@@ -19,7 +19,7 @@ type Dgghrder interface {
|
||||
}
|
||||
|
||||
func DgghrdTest(t *testing.T, impl Dgghrder) {
|
||||
rnd := rand.New(rand.NewSource(1))
|
||||
rnd := rand.New(rand.NewPCG(1, 1))
|
||||
comps := []lapack.OrthoComp{lapack.OrthoExplicit, lapack.OrthoNone, lapack.OrthoPostmul}
|
||||
for _, compq := range comps {
|
||||
for _, compz := range comps {
|
||||
|
@@ -5,12 +5,12 @@
|
||||
package testlapack
|
||||
|
||||
import (
|
||||
"math/rand/v2"
|
||||
"testing"
|
||||
|
||||
"gonum.org/v1/gonum/blas"
|
||||
"gonum.org/v1/gonum/blas/blas64"
|
||||
"gonum.org/v1/gonum/floats/scalar"
|
||||
"gonum.org/v1/gonum/internal/rand"
|
||||
"gonum.org/v1/gonum/lapack"
|
||||
)
|
||||
|
||||
@@ -21,7 +21,7 @@ type Dggsvd3er interface {
|
||||
func Dggsvd3Test(t *testing.T, impl Dggsvd3er) {
|
||||
const tol = 1e-13
|
||||
|
||||
rnd := rand.New(rand.NewSource(1))
|
||||
rnd := rand.New(rand.NewPCG(1, 1))
|
||||
for cas, test := range []struct {
|
||||
m, p, n, lda, ldb, ldu, ldv, ldq int
|
||||
|
||||
|
@@ -5,11 +5,11 @@
|
||||
package testlapack
|
||||
|
||||
import (
|
||||
"math/rand/v2"
|
||||
"testing"
|
||||
|
||||
"gonum.org/v1/gonum/blas"
|
||||
"gonum.org/v1/gonum/blas/blas64"
|
||||
"gonum.org/v1/gonum/internal/rand"
|
||||
"gonum.org/v1/gonum/lapack"
|
||||
)
|
||||
|
||||
@@ -21,7 +21,7 @@ type Dggsvp3er interface {
|
||||
func Dggsvp3Test(t *testing.T, impl Dggsvp3er) {
|
||||
const tol = 1e-14
|
||||
|
||||
rnd := rand.New(rand.NewSource(1))
|
||||
rnd := rand.New(rand.NewPCG(1, 1))
|
||||
for cas, test := range []struct {
|
||||
m, p, n, lda, ldb, ldu, ldv, ldq int
|
||||
}{
|
||||
|
@@ -7,11 +7,11 @@ package testlapack
|
||||
import (
|
||||
"fmt"
|
||||
"math"
|
||||
"math/rand/v2"
|
||||
"testing"
|
||||
|
||||
"gonum.org/v1/gonum/blas"
|
||||
"gonum.org/v1/gonum/blas/blas64"
|
||||
"gonum.org/v1/gonum/internal/rand"
|
||||
"gonum.org/v1/gonum/lapack"
|
||||
)
|
||||
|
||||
@@ -20,7 +20,7 @@ type Dgtsver interface {
|
||||
}
|
||||
|
||||
func DgtsvTest(t *testing.T, impl Dgtsver) {
|
||||
rnd := rand.New(rand.NewSource(1))
|
||||
rnd := rand.New(rand.NewPCG(1, 1))
|
||||
for _, n := range []int{0, 1, 2, 3, 4, 5, 10, 25, 50} {
|
||||
for _, nrhs := range []int{0, 1, 2, 3, 4, 10} {
|
||||
for _, ldb := range []int{max(1, nrhs), nrhs + 3} {
|
||||
|
@@ -6,9 +6,8 @@ package testlapack
|
||||
|
||||
import (
|
||||
"math"
|
||||
"math/rand/v2"
|
||||
"testing"
|
||||
|
||||
"gonum.org/v1/gonum/internal/rand"
|
||||
)
|
||||
|
||||
type Dlabrder interface {
|
||||
@@ -16,7 +15,7 @@ type Dlabrder interface {
|
||||
}
|
||||
|
||||
func DlabrdTest(t *testing.T, impl Dlabrder) {
|
||||
rnd := rand.New(rand.NewSource(1))
|
||||
rnd := rand.New(rand.NewPCG(1, 1))
|
||||
for _, test := range []struct {
|
||||
m, n, nb, lda, ldx, ldy int
|
||||
}{
|
||||
|
@@ -6,11 +6,11 @@ package testlapack
|
||||
|
||||
import (
|
||||
"math"
|
||||
"math/rand/v2"
|
||||
"testing"
|
||||
|
||||
"gonum.org/v1/gonum/blas"
|
||||
"gonum.org/v1/gonum/blas/blas64"
|
||||
"gonum.org/v1/gonum/internal/rand"
|
||||
)
|
||||
|
||||
type Dlacn2er interface {
|
||||
@@ -18,7 +18,7 @@ type Dlacn2er interface {
|
||||
}
|
||||
|
||||
func Dlacn2Test(t *testing.T, impl Dlacn2er) {
|
||||
rnd := rand.New(rand.NewSource(1))
|
||||
rnd := rand.New(rand.NewPCG(1, 1))
|
||||
for _, n := range []int{1, 2, 3, 4, 5, 7, 10, 15, 20, 100} {
|
||||
for cas := 0; cas < 10; cas++ {
|
||||
a := randomGeneral(n, n, n, rnd)
|
||||
|
@@ -6,10 +6,10 @@ package testlapack
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"math/rand/v2"
|
||||
"testing"
|
||||
|
||||
"gonum.org/v1/gonum/blas"
|
||||
"gonum.org/v1/gonum/internal/rand"
|
||||
)
|
||||
|
||||
type Dlacpyer interface {
|
||||
@@ -17,7 +17,7 @@ type Dlacpyer interface {
|
||||
}
|
||||
|
||||
func DlacpyTest(t *testing.T, impl Dlacpyer) {
|
||||
rnd := rand.New(rand.NewSource(1))
|
||||
rnd := rand.New(rand.NewPCG(1, 1))
|
||||
for _, uplo := range []blas.Uplo{blas.Upper, blas.Lower, blas.All} {
|
||||
for _, test := range []struct {
|
||||
m, n, lda, ldb int
|
||||
|
@@ -6,9 +6,8 @@ package testlapack
|
||||
|
||||
import (
|
||||
"math"
|
||||
"math/rand/v2"
|
||||
"testing"
|
||||
|
||||
"gonum.org/v1/gonum/internal/rand"
|
||||
)
|
||||
|
||||
type Dlaev2er interface {
|
||||
@@ -16,7 +15,7 @@ type Dlaev2er interface {
|
||||
}
|
||||
|
||||
func Dlaev2Test(t *testing.T, impl Dlaev2er) {
|
||||
rnd := rand.New(rand.NewSource(1))
|
||||
rnd := rand.New(rand.NewPCG(1, 1))
|
||||
for trial := 0; trial < 100; trial++ {
|
||||
a := rnd.NormFloat64()
|
||||
b := rnd.NormFloat64()
|
||||
|
@@ -6,11 +6,11 @@ package testlapack
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"math/rand/v2"
|
||||
"testing"
|
||||
|
||||
"gonum.org/v1/gonum/blas"
|
||||
"gonum.org/v1/gonum/blas/blas64"
|
||||
"gonum.org/v1/gonum/internal/rand"
|
||||
"gonum.org/v1/gonum/lapack"
|
||||
)
|
||||
|
||||
@@ -19,7 +19,7 @@ type Dlaexcer interface {
|
||||
}
|
||||
|
||||
func DlaexcTest(t *testing.T, impl Dlaexcer) {
|
||||
rnd := rand.New(rand.NewSource(1))
|
||||
rnd := rand.New(rand.NewPCG(1, 1))
|
||||
|
||||
for _, n := range []int{1, 2, 3, 4, 5, 6, 10, 18, 31, 53} {
|
||||
for _, extra := range []int{0, 3} {
|
||||
@@ -38,7 +38,7 @@ func testDlaexc(t *testing.T, impl Dlaexcer, rnd *rand.Rand, n, extra int) {
|
||||
tmatCopy := cloneGeneral(tmat)
|
||||
|
||||
// Randomly pick the index of the first block.
|
||||
j1 := rnd.Intn(n)
|
||||
j1 := rnd.IntN(n)
|
||||
if j1 > 0 && tmat.Data[j1*tmat.Stride+j1-1] != 0 {
|
||||
// Adjust j1 if it points to the second row of a 2x2 block.
|
||||
j1--
|
||||
|
@@ -7,11 +7,11 @@ package testlapack
|
||||
import (
|
||||
"fmt"
|
||||
"math"
|
||||
"math/rand/v2"
|
||||
"testing"
|
||||
|
||||
"gonum.org/v1/gonum/blas/blas64"
|
||||
"gonum.org/v1/gonum/floats"
|
||||
"gonum.org/v1/gonum/internal/rand"
|
||||
)
|
||||
|
||||
type Dlag2er interface {
|
||||
@@ -19,7 +19,7 @@ type Dlag2er interface {
|
||||
}
|
||||
|
||||
func Dlag2Test(t *testing.T, impl Dlag2er) {
|
||||
rnd := rand.New(rand.NewSource(1))
|
||||
rnd := rand.New(rand.NewPCG(1, 1))
|
||||
for _, lda := range []int{2, 5} {
|
||||
for _, ldb := range []int{2, 5} {
|
||||
for aKind := 0; aKind <= 20; aKind++ {
|
||||
|
@@ -6,12 +6,12 @@ package testlapack
|
||||
|
||||
import (
|
||||
"math"
|
||||
"math/rand/v2"
|
||||
"testing"
|
||||
|
||||
"gonum.org/v1/gonum/blas"
|
||||
"gonum.org/v1/gonum/blas/blas64"
|
||||
"gonum.org/v1/gonum/floats/scalar"
|
||||
"gonum.org/v1/gonum/internal/rand"
|
||||
)
|
||||
|
||||
type Dlags2er interface {
|
||||
@@ -19,7 +19,7 @@ type Dlags2er interface {
|
||||
}
|
||||
|
||||
func Dlags2Test(t *testing.T, impl Dlags2er) {
|
||||
rnd := rand.New(rand.NewSource(1))
|
||||
rnd := rand.New(rand.NewPCG(1, 1))
|
||||
for _, upper := range []bool{true, false} {
|
||||
for i := 0; i < 100; i++ {
|
||||
// Generate randomly the elements of a 2×2 matrix A
|
||||
|
@@ -6,12 +6,12 @@ package testlapack
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"math/rand/v2"
|
||||
"testing"
|
||||
|
||||
"gonum.org/v1/gonum/blas"
|
||||
"gonum.org/v1/gonum/blas/blas64"
|
||||
"gonum.org/v1/gonum/floats"
|
||||
"gonum.org/v1/gonum/internal/rand"
|
||||
"gonum.org/v1/gonum/lapack"
|
||||
)
|
||||
|
||||
@@ -20,7 +20,7 @@ type Dlagtmer interface {
|
||||
}
|
||||
|
||||
func DlagtmTest(t *testing.T, impl Dlagtmer) {
|
||||
rnd := rand.New(rand.NewSource(1))
|
||||
rnd := rand.New(rand.NewPCG(1, 1))
|
||||
for _, trans := range []blas.Transpose{blas.NoTrans, blas.Trans, blas.ConjTrans} {
|
||||
t.Run(transToString(trans), func(t *testing.T) {
|
||||
for _, m := range []int{0, 1, 2, 3, 4, 5, 10} {
|
||||
|
@@ -7,11 +7,11 @@ package testlapack
|
||||
import (
|
||||
"fmt"
|
||||
"math"
|
||||
"math/rand/v2"
|
||||
"testing"
|
||||
|
||||
"gonum.org/v1/gonum/blas"
|
||||
"gonum.org/v1/gonum/blas/blas64"
|
||||
"gonum.org/v1/gonum/internal/rand"
|
||||
)
|
||||
|
||||
type Dlahqrer interface {
|
||||
@@ -28,7 +28,7 @@ type dlahqrTest struct {
|
||||
}
|
||||
|
||||
func DlahqrTest(t *testing.T, impl Dlahqrer) {
|
||||
rnd := rand.New(rand.NewSource(1))
|
||||
rnd := rand.New(rand.NewPCG(1, 1))
|
||||
|
||||
// Tests that choose the [ilo:ihi+1,ilo:ihi+1] and
|
||||
// [iloz:ihiz+1,ilo:ihi+1] blocks randomly.
|
||||
@@ -37,13 +37,13 @@ func DlahqrTest(t *testing.T, impl Dlahqrer) {
|
||||
for _, n := range []int{1, 2, 3, 4, 5, 6, 10, 18, 31, 53} {
|
||||
for _, extra := range []int{0, 1, 11} {
|
||||
for cas := 0; cas < 100; cas++ {
|
||||
ilo := rnd.Intn(n)
|
||||
ihi := rnd.Intn(n)
|
||||
ilo := rnd.IntN(n)
|
||||
ihi := rnd.IntN(n)
|
||||
if ilo > ihi {
|
||||
ilo, ihi = ihi, ilo
|
||||
}
|
||||
iloz := rnd.Intn(ilo + 1)
|
||||
ihiz := ihi + rnd.Intn(n-ihi)
|
||||
iloz := rnd.IntN(ilo + 1)
|
||||
ihiz := ihi + rnd.IntN(n-ihi)
|
||||
h := randomHessenberg(n, n+extra, rnd)
|
||||
if ilo-1 >= 0 {
|
||||
h.Data[ilo*h.Stride+ilo-1] = 0
|
||||
|
@@ -7,11 +7,11 @@ package testlapack
|
||||
import (
|
||||
"fmt"
|
||||
"math"
|
||||
"math/rand/v2"
|
||||
"testing"
|
||||
|
||||
"gonum.org/v1/gonum/blas"
|
||||
"gonum.org/v1/gonum/blas/blas64"
|
||||
"gonum.org/v1/gonum/internal/rand"
|
||||
)
|
||||
|
||||
type Dlahr2er interface {
|
||||
@@ -21,7 +21,7 @@ type Dlahr2er interface {
|
||||
func Dlahr2Test(t *testing.T, impl Dlahr2er) {
|
||||
const tol = 1e-14
|
||||
|
||||
rnd := rand.New(rand.NewSource(1))
|
||||
rnd := rand.New(rand.NewPCG(1, 1))
|
||||
for _, test := range []struct {
|
||||
n, k, nb int
|
||||
}{
|
||||
|
@@ -8,9 +8,8 @@ import (
|
||||
"fmt"
|
||||
"math"
|
||||
"math/cmplx"
|
||||
"math/rand/v2"
|
||||
"testing"
|
||||
|
||||
"gonum.org/v1/gonum/internal/rand"
|
||||
)
|
||||
|
||||
type Dlaln2er interface {
|
||||
@@ -18,7 +17,7 @@ type Dlaln2er interface {
|
||||
}
|
||||
|
||||
func Dlaln2Test(t *testing.T, impl Dlaln2er) {
|
||||
rnd := rand.New(rand.NewSource(1))
|
||||
rnd := rand.New(rand.NewPCG(1, 1))
|
||||
for _, trans := range []bool{true, false} {
|
||||
for _, na := range []int{1, 2} {
|
||||
for _, nw := range []int{1, 2} {
|
||||
|
@@ -7,10 +7,10 @@ package testlapack
|
||||
import (
|
||||
"fmt"
|
||||
"math"
|
||||
"math/rand/v2"
|
||||
"testing"
|
||||
|
||||
"gonum.org/v1/gonum/floats"
|
||||
"gonum.org/v1/gonum/internal/rand"
|
||||
"gonum.org/v1/gonum/lapack"
|
||||
)
|
||||
|
||||
@@ -19,7 +19,7 @@ type Dlangber interface {
|
||||
}
|
||||
|
||||
func DlangbTest(t *testing.T, impl Dlangber) {
|
||||
rnd := rand.New(rand.NewSource(1))
|
||||
rnd := rand.New(rand.NewPCG(1, 1))
|
||||
for _, norm := range []lapack.MatrixNorm{lapack.MaxAbs, lapack.MaxRowSum, lapack.MaxColumnSum, lapack.Frobenius} {
|
||||
t.Run(normToString(norm), func(t *testing.T) {
|
||||
for _, n := range []int{0, 1, 2, 3, 4, 5, 10} {
|
||||
@@ -46,7 +46,7 @@ func dlangbTest(t *testing.T, impl Dlangber, rnd *rand.Rand, norm lapack.MatrixN
|
||||
ab := randomSlice(m*ldab, rnd)
|
||||
// Sometimes put a NaN into the matrix.
|
||||
if m > 0 && n > 0 && rnd.Float64() < 0.5 {
|
||||
i := rnd.Intn(m)
|
||||
i := rnd.IntN(m)
|
||||
ab[i*ldab+kl] = math.NaN()
|
||||
}
|
||||
abCopy := make([]float64, len(ab))
|
||||
|
@@ -7,15 +7,15 @@ package testlapack
|
||||
import (
|
||||
"fmt"
|
||||
"math"
|
||||
"math/rand/v2"
|
||||
"testing"
|
||||
|
||||
"gonum.org/v1/gonum/internal/rand"
|
||||
"gonum.org/v1/gonum/lapack"
|
||||
)
|
||||
|
||||
func DlangbBenchmark(b *testing.B, impl Dlangber) {
|
||||
var result float64
|
||||
rnd := rand.New(rand.NewSource(1))
|
||||
rnd := rand.New(rand.NewPCG(1, 1))
|
||||
for _, bm := range []struct {
|
||||
n, k int
|
||||
}{
|
||||
|
@@ -6,10 +6,10 @@ package testlapack
|
||||
|
||||
import (
|
||||
"math"
|
||||
"math/rand/v2"
|
||||
"testing"
|
||||
|
||||
"gonum.org/v1/gonum/blas/blas64"
|
||||
"gonum.org/v1/gonum/internal/rand"
|
||||
"gonum.org/v1/gonum/lapack"
|
||||
)
|
||||
|
||||
@@ -18,7 +18,7 @@ type Dlanger interface {
|
||||
}
|
||||
|
||||
func DlangeTest(t *testing.T, impl Dlanger) {
|
||||
rnd := rand.New(rand.NewSource(1))
|
||||
rnd := rand.New(rand.NewPCG(1, 1))
|
||||
for _, test := range []struct {
|
||||
m, n, lda int
|
||||
}{
|
||||
|
@@ -7,10 +7,10 @@ package testlapack
|
||||
import (
|
||||
"fmt"
|
||||
"math"
|
||||
"math/rand/v2"
|
||||
"testing"
|
||||
|
||||
"gonum.org/v1/gonum/floats"
|
||||
"gonum.org/v1/gonum/internal/rand"
|
||||
"gonum.org/v1/gonum/lapack"
|
||||
)
|
||||
|
||||
@@ -19,7 +19,7 @@ type Dlangter interface {
|
||||
}
|
||||
|
||||
func DlangtTest(t *testing.T, impl Dlangter) {
|
||||
rnd := rand.New(rand.NewSource(1))
|
||||
rnd := rand.New(rand.NewPCG(1, 1))
|
||||
for _, norm := range []lapack.MatrixNorm{lapack.MaxAbs, lapack.MaxRowSum, lapack.MaxColumnSum, lapack.Frobenius} {
|
||||
t.Run(normToString(norm), func(t *testing.T) {
|
||||
for _, n := range []int{0, 1, 2, 3, 4, 5, 10} {
|
||||
@@ -47,7 +47,7 @@ func dlangtTest(t *testing.T, impl Dlangter, rnd *rand.Rand, norm lapack.MatrixN
|
||||
d := randomSlice(n+1+extra, rnd)
|
||||
// Sometimes put a NaN into the matrix.
|
||||
if n > 0 && rnd.Float64() < 0.5 {
|
||||
d[rnd.Intn(n)] = math.NaN()
|
||||
d[rnd.IntN(n)] = math.NaN()
|
||||
}
|
||||
dCopy := make([]float64, len(d))
|
||||
copy(dCopy, d)
|
||||
|
@@ -6,9 +6,9 @@ package testlapack
|
||||
|
||||
import (
|
||||
"math"
|
||||
"math/rand/v2"
|
||||
"testing"
|
||||
|
||||
"gonum.org/v1/gonum/internal/rand"
|
||||
"gonum.org/v1/gonum/lapack"
|
||||
)
|
||||
|
||||
@@ -18,7 +18,7 @@ type Dlanhser interface {
|
||||
|
||||
func DlanhsTest(t *testing.T, impl Dlanhser) {
|
||||
const tol = 1e-15
|
||||
rnd := rand.New(rand.NewSource(1))
|
||||
rnd := rand.New(rand.NewPCG(1, 1))
|
||||
for _, n := range []int{0, 1, 2, 4, 9} {
|
||||
for _, lda := range []int{max(1, n), n + 5} {
|
||||
a := randomGeneral(n, n, lda, rnd)
|
||||
|
@@ -7,11 +7,11 @@ package testlapack
|
||||
import (
|
||||
"fmt"
|
||||
"math"
|
||||
"math/rand/v2"
|
||||
"testing"
|
||||
|
||||
"gonum.org/v1/gonum/blas"
|
||||
"gonum.org/v1/gonum/floats"
|
||||
"gonum.org/v1/gonum/internal/rand"
|
||||
"gonum.org/v1/gonum/lapack"
|
||||
)
|
||||
|
||||
@@ -20,7 +20,7 @@ type Dlansber interface {
|
||||
}
|
||||
|
||||
func DlansbTest(t *testing.T, impl Dlansber) {
|
||||
rnd := rand.New(rand.NewSource(1))
|
||||
rnd := rand.New(rand.NewPCG(1, 1))
|
||||
for _, n := range []int{0, 1, 2, 3, 4, 5, 10} {
|
||||
for _, kd := range []int{0, (n + 1) / 4, (3*n - 1) / 4, (5*n + 1) / 4} {
|
||||
for _, uplo := range []blas.Uplo{blas.Upper, blas.Lower} {
|
||||
|
@@ -6,9 +6,9 @@ package testlapack
|
||||
|
||||
import (
|
||||
"math"
|
||||
"math/rand/v2"
|
||||
"testing"
|
||||
|
||||
"gonum.org/v1/gonum/internal/rand"
|
||||
"gonum.org/v1/gonum/lapack"
|
||||
)
|
||||
|
||||
@@ -18,7 +18,7 @@ type Dlanster interface {
|
||||
}
|
||||
|
||||
func DlanstTest(t *testing.T, impl Dlanster) {
|
||||
rnd := rand.New(rand.NewSource(1))
|
||||
rnd := rand.New(rand.NewPCG(1, 1))
|
||||
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++ {
|
||||
|
@@ -6,10 +6,10 @@ package testlapack
|
||||
|
||||
import (
|
||||
"math"
|
||||
"math/rand/v2"
|
||||
"testing"
|
||||
|
||||
"gonum.org/v1/gonum/blas"
|
||||
"gonum.org/v1/gonum/internal/rand"
|
||||
"gonum.org/v1/gonum/lapack"
|
||||
)
|
||||
|
||||
@@ -19,7 +19,7 @@ type Dlansyer interface {
|
||||
}
|
||||
|
||||
func DlansyTest(t *testing.T, impl Dlansyer) {
|
||||
rnd := rand.New(rand.NewSource(1))
|
||||
rnd := rand.New(rand.NewPCG(1, 1))
|
||||
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 {
|
||||
|
@@ -7,11 +7,11 @@ package testlapack
|
||||
import (
|
||||
"fmt"
|
||||
"math"
|
||||
"math/rand/v2"
|
||||
"testing"
|
||||
|
||||
"gonum.org/v1/gonum/blas"
|
||||
"gonum.org/v1/gonum/floats"
|
||||
"gonum.org/v1/gonum/internal/rand"
|
||||
"gonum.org/v1/gonum/lapack"
|
||||
)
|
||||
|
||||
@@ -20,7 +20,7 @@ type Dlantber interface {
|
||||
}
|
||||
|
||||
func DlantbTest(t *testing.T, impl Dlantber) {
|
||||
rnd := rand.New(rand.NewSource(1))
|
||||
rnd := rand.New(rand.NewPCG(1, 1))
|
||||
for _, norm := range []lapack.MatrixNorm{lapack.MaxAbs, lapack.MaxRowSum, lapack.MaxColumnSum, lapack.Frobenius} {
|
||||
for _, uplo := range []blas.Uplo{blas.Lower, blas.Upper} {
|
||||
for _, diag := range []blas.Diag{blas.NonUnit, blas.Unit} {
|
||||
@@ -71,7 +71,7 @@ func dlantbTest(t *testing.T, impl Dlantber, rnd *rand.Rand, norm lapack.MatrixN
|
||||
}
|
||||
// Sometimes put a NaN into A.
|
||||
if rnd.Float64() < 0.5 {
|
||||
a[rnd.Intn(len(a))] = math.NaN()
|
||||
a[rnd.IntN(len(a))] = math.NaN()
|
||||
}
|
||||
// Make a copy of A for later comparison.
|
||||
aCopy := make([]float64, len(a))
|
||||
|
@@ -7,16 +7,16 @@ package testlapack
|
||||
import (
|
||||
"fmt"
|
||||
"math"
|
||||
"math/rand/v2"
|
||||
"testing"
|
||||
|
||||
"gonum.org/v1/gonum/blas"
|
||||
"gonum.org/v1/gonum/internal/rand"
|
||||
"gonum.org/v1/gonum/lapack"
|
||||
)
|
||||
|
||||
func DlantbBenchmark(b *testing.B, impl Dlantber) {
|
||||
var result float64
|
||||
rnd := rand.New(rand.NewSource(1))
|
||||
rnd := rand.New(rand.NewPCG(1, 1))
|
||||
for _, bm := range []struct {
|
||||
n, k int
|
||||
}{
|
||||
|
@@ -7,11 +7,11 @@ package testlapack
|
||||
import (
|
||||
"fmt"
|
||||
"math"
|
||||
"math/rand/v2"
|
||||
"testing"
|
||||
|
||||
"gonum.org/v1/gonum/blas"
|
||||
"gonum.org/v1/gonum/floats"
|
||||
"gonum.org/v1/gonum/internal/rand"
|
||||
"gonum.org/v1/gonum/lapack"
|
||||
)
|
||||
|
||||
@@ -21,7 +21,7 @@ type Dlantrer interface {
|
||||
}
|
||||
|
||||
func DlantrTest(t *testing.T, impl Dlantrer) {
|
||||
rnd := rand.New(rand.NewSource(1))
|
||||
rnd := rand.New(rand.NewPCG(1, 1))
|
||||
for _, m := range []int{0, 1, 2, 3, 4, 5, 10} {
|
||||
for _, n := range []int{0, 1, 2, 3, 4, 5, 10} {
|
||||
for _, uplo := range []blas.Uplo{blas.Lower, blas.Upper} {
|
||||
|
@@ -7,9 +7,8 @@ package testlapack
|
||||
import (
|
||||
"fmt"
|
||||
"math"
|
||||
"math/rand/v2"
|
||||
"testing"
|
||||
|
||||
"gonum.org/v1/gonum/internal/rand"
|
||||
)
|
||||
|
||||
type Dlanv2er interface {
|
||||
@@ -17,7 +16,7 @@ type Dlanv2er interface {
|
||||
}
|
||||
|
||||
func Dlanv2Test(t *testing.T, impl Dlanv2er) {
|
||||
rnd := rand.New(rand.NewSource(1))
|
||||
rnd := rand.New(rand.NewPCG(1, 1))
|
||||
t.Run("UpperTriangular", func(t *testing.T) {
|
||||
for i := 0; i < 10; i++ {
|
||||
a := rnd.NormFloat64()
|
||||
|
@@ -5,10 +5,10 @@
|
||||
package testlapack
|
||||
|
||||
import (
|
||||
"math/rand/v2"
|
||||
"testing"
|
||||
|
||||
"gonum.org/v1/gonum/floats/scalar"
|
||||
"gonum.org/v1/gonum/internal/rand"
|
||||
"gonum.org/v1/gonum/lapack"
|
||||
)
|
||||
|
||||
@@ -18,7 +18,7 @@ type Dlapller interface {
|
||||
}
|
||||
|
||||
func DlapllTest(t *testing.T, impl Dlapller) {
|
||||
rnd := rand.New(rand.NewSource(1))
|
||||
rnd := rand.New(rand.NewPCG(1, 1))
|
||||
for i, m := range []int{5, 6, 9, 300, 400, 600} {
|
||||
n := 2
|
||||
lda := n
|
||||
|
@@ -6,11 +6,11 @@ package testlapack
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"math/rand/v2"
|
||||
"testing"
|
||||
|
||||
"gonum.org/v1/gonum/blas"
|
||||
"gonum.org/v1/gonum/blas/blas64"
|
||||
"gonum.org/v1/gonum/internal/rand"
|
||||
)
|
||||
|
||||
type Dlapmrer interface {
|
||||
@@ -18,7 +18,7 @@ type Dlapmrer interface {
|
||||
}
|
||||
|
||||
func DlapmrTest(t *testing.T, impl Dlapmrer) {
|
||||
rnd := rand.New(rand.NewSource(1))
|
||||
rnd := rand.New(rand.NewPCG(1, 1))
|
||||
for _, fwd := range []bool{true, false} {
|
||||
for _, m := range []int{0, 1, 2, 3, 4, 5, 10} {
|
||||
for _, n := range []int{0, 1, 4} {
|
||||
@@ -42,7 +42,7 @@ func dlapmrTest(t *testing.T, impl Dlapmrer, rnd *rand.Rand, fwd bool, m, n, ldx
|
||||
}
|
||||
p := eye(m, m)
|
||||
for i := 0; i < m-1; i++ {
|
||||
j := i + rnd.Intn(m-i)
|
||||
j := i + rnd.IntN(m-i)
|
||||
k[i], k[j] = k[j], k[i]
|
||||
bi.Dswap(m, p.Data[i*p.Stride:], 1, p.Data[j*p.Stride:], 1)
|
||||
}
|
||||
|
@@ -6,10 +6,10 @@ package testlapack
|
||||
|
||||
import (
|
||||
"math"
|
||||
"math/rand/v2"
|
||||
"testing"
|
||||
|
||||
"gonum.org/v1/gonum/floats/scalar"
|
||||
"gonum.org/v1/gonum/internal/rand"
|
||||
)
|
||||
|
||||
type Dlapy2er interface {
|
||||
@@ -17,7 +17,7 @@ type Dlapy2er interface {
|
||||
}
|
||||
|
||||
func Dlapy2Test(t *testing.T, impl Dlapy2er) {
|
||||
rnd := rand.New(rand.NewSource(1))
|
||||
rnd := rand.New(rand.NewPCG(1, 1))
|
||||
for i := 0; i < 10; i++ {
|
||||
x := math.Abs(1e200 * rnd.NormFloat64())
|
||||
y := math.Abs(1e200 * rnd.NormFloat64())
|
||||
|
@@ -6,11 +6,11 @@ package testlapack
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"math/rand/v2"
|
||||
"testing"
|
||||
|
||||
"gonum.org/v1/gonum/blas"
|
||||
"gonum.org/v1/gonum/blas/blas64"
|
||||
"gonum.org/v1/gonum/internal/rand"
|
||||
"gonum.org/v1/gonum/lapack"
|
||||
)
|
||||
|
||||
@@ -22,7 +22,7 @@ type Dlaqp2er interface {
|
||||
func Dlaqp2Test(t *testing.T, impl Dlaqp2er) {
|
||||
const tol = 1e-14
|
||||
|
||||
rnd := rand.New(rand.NewSource(1))
|
||||
rnd := rand.New(rand.NewPCG(1, 1))
|
||||
for ti, test := range []struct {
|
||||
m, n, offset int
|
||||
}{
|
||||
|
@@ -6,11 +6,11 @@ package testlapack
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"math/rand/v2"
|
||||
"testing"
|
||||
|
||||
"gonum.org/v1/gonum/blas"
|
||||
"gonum.org/v1/gonum/blas/blas64"
|
||||
"gonum.org/v1/gonum/internal/rand"
|
||||
"gonum.org/v1/gonum/lapack"
|
||||
)
|
||||
|
||||
@@ -22,7 +22,7 @@ type Dlaqpser interface {
|
||||
func DlaqpsTest(t *testing.T, impl Dlaqpser) {
|
||||
const tol = 1e-14
|
||||
|
||||
rnd := rand.New(rand.NewSource(1))
|
||||
rnd := rand.New(rand.NewPCG(1, 1))
|
||||
for ti, test := range []struct {
|
||||
m, n, nb, offset int
|
||||
}{
|
||||
|
@@ -7,11 +7,11 @@ package testlapack
|
||||
import (
|
||||
"fmt"
|
||||
"math"
|
||||
"math/rand/v2"
|
||||
"testing"
|
||||
|
||||
"gonum.org/v1/gonum/blas"
|
||||
"gonum.org/v1/gonum/blas/blas64"
|
||||
"gonum.org/v1/gonum/internal/rand"
|
||||
)
|
||||
|
||||
type Dlaqr04er interface {
|
||||
@@ -30,7 +30,7 @@ type dlaqr04Test struct {
|
||||
}
|
||||
|
||||
func Dlaqr04Test(t *testing.T, impl Dlaqr04er) {
|
||||
rnd := rand.New(rand.NewSource(1))
|
||||
rnd := rand.New(rand.NewPCG(1, 1))
|
||||
|
||||
// Tests for small matrices that choose the ilo,ihi and iloz,ihiz pairs
|
||||
// randomly.
|
||||
@@ -40,13 +40,13 @@ func Dlaqr04Test(t *testing.T, impl Dlaqr04er) {
|
||||
for _, extra := range []int{0, 11} {
|
||||
for recur := 0; recur <= 2; recur++ {
|
||||
for cas := 0; cas < n; cas++ {
|
||||
ilo := rnd.Intn(n)
|
||||
ihi := rnd.Intn(n)
|
||||
ilo := rnd.IntN(n)
|
||||
ihi := rnd.IntN(n)
|
||||
if ilo > ihi {
|
||||
ilo, ihi = ihi, ilo
|
||||
}
|
||||
iloz := rnd.Intn(ilo + 1)
|
||||
ihiz := ihi + rnd.Intn(n-ihi)
|
||||
iloz := rnd.IntN(ilo + 1)
|
||||
ihiz := ihi + rnd.IntN(n-ihi)
|
||||
h := randomHessenberg(n, n+extra, rnd)
|
||||
if ilo-1 >= 0 {
|
||||
h.Data[ilo*h.Stride+ilo-1] = 0
|
||||
|
@@ -6,10 +6,10 @@ package testlapack
|
||||
|
||||
import (
|
||||
"math"
|
||||
"math/rand/v2"
|
||||
"testing"
|
||||
|
||||
"gonum.org/v1/gonum/floats"
|
||||
"gonum.org/v1/gonum/internal/rand"
|
||||
)
|
||||
|
||||
type Dlaqr1er interface {
|
||||
@@ -17,7 +17,7 @@ type Dlaqr1er interface {
|
||||
}
|
||||
|
||||
func Dlaqr1Test(t *testing.T, impl Dlaqr1er) {
|
||||
rnd := rand.New(rand.NewSource(1))
|
||||
rnd := rand.New(rand.NewPCG(1, 1))
|
||||
|
||||
for _, n := range []int{2, 3} {
|
||||
for _, ldh := range []int{n, n + 1, n + 10} {
|
||||
|
@@ -6,11 +6,11 @@ package testlapack
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"math/rand/v2"
|
||||
"testing"
|
||||
|
||||
"gonum.org/v1/gonum/blas"
|
||||
"gonum.org/v1/gonum/blas/blas64"
|
||||
"gonum.org/v1/gonum/internal/rand"
|
||||
"gonum.org/v1/gonum/lapack"
|
||||
)
|
||||
|
||||
@@ -34,11 +34,11 @@ func newDlaqr23TestCase(wantt, wantz bool, n, ldh int, rnd *rand.Rand) dlaqr23Te
|
||||
if n <= 75 {
|
||||
// For small matrices any window size works because they will
|
||||
// always use Dlahrq inside Dlaqr23.
|
||||
nw = rnd.Intn(n) + 1
|
||||
nw = rnd.IntN(n) + 1
|
||||
} else {
|
||||
// For sufficiently large matrices generate a large enough
|
||||
// window to assure that the Dlaqr4 path is taken.
|
||||
nw = 76 + rnd.Intn(n-75)
|
||||
nw = 76 + rnd.IntN(n-75)
|
||||
}
|
||||
// Generate a random Hessenberg matrix.
|
||||
h := randomHessenberg(n, ldh, rnd)
|
||||
@@ -46,9 +46,9 @@ func newDlaqr23TestCase(wantt, wantz bool, n, ldh int, rnd *rand.Rand) dlaqr23Te
|
||||
// the restriction
|
||||
// 0 <= nw <= kbot-ktop+1
|
||||
// is satisfied.
|
||||
ktop := rnd.Intn(n - nw + 1)
|
||||
ktop := rnd.IntN(n - nw + 1)
|
||||
kbot := ktop + nw - 1
|
||||
kbot += rnd.Intn(n - kbot)
|
||||
kbot += rnd.IntN(n - kbot)
|
||||
// Make the block isolated by zeroing out the sub-diagonal elements.
|
||||
if ktop-1 >= 0 {
|
||||
h.Data[ktop*h.Stride+ktop-1] = 0
|
||||
@@ -58,8 +58,8 @@ func newDlaqr23TestCase(wantt, wantz bool, n, ldh int, rnd *rand.Rand) dlaqr23Te
|
||||
}
|
||||
// Generate the rows of Z to which transformations will be applied if
|
||||
// wantz is true.
|
||||
iloz := rnd.Intn(ktop + 1)
|
||||
ihiz := kbot + rnd.Intn(n-kbot)
|
||||
iloz := rnd.IntN(ktop + 1)
|
||||
ihiz := kbot + rnd.IntN(n-kbot)
|
||||
return dlaqr23Test{
|
||||
wantt: wantt,
|
||||
wantz: wantz,
|
||||
@@ -73,7 +73,7 @@ func newDlaqr23TestCase(wantt, wantz bool, n, ldh int, rnd *rand.Rand) dlaqr23Te
|
||||
}
|
||||
|
||||
func Dlaqr23Test(t *testing.T, impl Dlaqr23er) {
|
||||
rnd := rand.New(rand.NewSource(1))
|
||||
rnd := rand.New(rand.NewPCG(1, 1))
|
||||
|
||||
// Randomized tests.
|
||||
for _, wantt := range []bool{true, false} {
|
||||
@@ -267,12 +267,12 @@ func testDlaqr23(t *testing.T, impl Dlaqr23er, test dlaqr23Test, opt bool, recur
|
||||
v := randomGeneral(nw, nw, nw+extra, rnd)
|
||||
var nh int
|
||||
if nw > 0 {
|
||||
nh = nw + rnd.Intn(nw) // nh must be at least nw.
|
||||
nh = nw + rnd.IntN(nw) // nh must be at least nw.
|
||||
}
|
||||
tmat := randomGeneral(nw, nh, nh+extra, rnd)
|
||||
var nv int
|
||||
if nw > 0 {
|
||||
nv = rnd.Intn(nw) + 1
|
||||
nv = rnd.IntN(nw) + 1
|
||||
}
|
||||
wv := randomGeneral(nv, nw, nw+extra, rnd)
|
||||
|
||||
|
@@ -6,11 +6,11 @@ package testlapack
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"math/rand/v2"
|
||||
"testing"
|
||||
|
||||
"gonum.org/v1/gonum/blas"
|
||||
"gonum.org/v1/gonum/blas/blas64"
|
||||
"gonum.org/v1/gonum/internal/rand"
|
||||
"gonum.org/v1/gonum/lapack"
|
||||
)
|
||||
|
||||
@@ -19,7 +19,7 @@ type Dlaqr5er interface {
|
||||
}
|
||||
|
||||
func Dlaqr5Test(t *testing.T, impl Dlaqr5er) {
|
||||
rnd := rand.New(rand.NewSource(1))
|
||||
rnd := rand.New(rand.NewPCG(1, 1))
|
||||
for _, n := range []int{1, 2, 3, 4, 5, 6, 10, 30} {
|
||||
for _, extra := range []int{0, 1, 20} {
|
||||
for _, kacc22 := range []int{0, 1, 2} {
|
||||
@@ -52,8 +52,8 @@ func testDlaqr5(t *testing.T, impl Dlaqr5er, n, extra, kacc22 int, rnd *rand.Ran
|
||||
si[i], si[i+1] = im, -im
|
||||
i += 2
|
||||
}
|
||||
ktop := rnd.Intn(n)
|
||||
kbot := rnd.Intn(n)
|
||||
ktop := rnd.IntN(n)
|
||||
kbot := rnd.IntN(n)
|
||||
if kbot < ktop {
|
||||
ktop, kbot = kbot, ktop
|
||||
}
|
||||
|
@@ -6,9 +6,8 @@ package testlapack
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"math/rand/v2"
|
||||
"testing"
|
||||
|
||||
"gonum.org/v1/gonum/internal/rand"
|
||||
)
|
||||
|
||||
func Dlaqr5Benchmark(b *testing.B, impl Dlaqr5er) {
|
||||
@@ -17,7 +16,7 @@ func Dlaqr5Benchmark(b *testing.B, impl Dlaqr5er) {
|
||||
iplusj
|
||||
laplacian
|
||||
)
|
||||
rnd := rand.New(rand.NewSource(1))
|
||||
rnd := rand.New(rand.NewPCG(1, 1))
|
||||
for _, typ := range []int{random, iplusj, laplacian} {
|
||||
for _, n := range []int{100, 200, 500, 1000} {
|
||||
h := zeros(n, n, n)
|
||||
|
@@ -6,12 +6,12 @@ package testlapack
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"math/rand/v2"
|
||||
"testing"
|
||||
|
||||
"gonum.org/v1/gonum/blas"
|
||||
"gonum.org/v1/gonum/blas/blas64"
|
||||
"gonum.org/v1/gonum/floats"
|
||||
"gonum.org/v1/gonum/internal/rand"
|
||||
"gonum.org/v1/gonum/lapack"
|
||||
)
|
||||
|
||||
@@ -29,7 +29,7 @@ func DlarfTest(t *testing.T, impl Dlarfer) {
|
||||
}
|
||||
|
||||
func runDlarfTest(t *testing.T, impl Dlarfer, side blas.Side) {
|
||||
rnd := rand.New(rand.NewSource(1))
|
||||
rnd := rand.New(rand.NewPCG(1, 1))
|
||||
for _, m := range []int{0, 1, 2, 3, 4, 5, 10} {
|
||||
for _, n := range []int{0, 1, 2, 3, 4, 5, 10} {
|
||||
for _, incv := range []int{1, 4} {
|
||||
|
@@ -5,12 +5,12 @@
|
||||
package testlapack
|
||||
|
||||
import (
|
||||
"math/rand/v2"
|
||||
"testing"
|
||||
|
||||
"gonum.org/v1/gonum/blas"
|
||||
"gonum.org/v1/gonum/blas/blas64"
|
||||
"gonum.org/v1/gonum/floats"
|
||||
"gonum.org/v1/gonum/internal/rand"
|
||||
"gonum.org/v1/gonum/lapack"
|
||||
)
|
||||
|
||||
@@ -22,7 +22,7 @@ type Dlarfber interface {
|
||||
}
|
||||
|
||||
func DlarfbTest(t *testing.T, impl Dlarfber) {
|
||||
rnd := rand.New(rand.NewSource(1))
|
||||
rnd := rand.New(rand.NewPCG(1, 1))
|
||||
for _, store := range []lapack.StoreV{lapack.ColumnWise, lapack.RowWise} {
|
||||
for _, direct := range []lapack.Direct{lapack.Forward, lapack.Backward} {
|
||||
for _, side := range []blas.Side{blas.Left, blas.Right} {
|
||||
|
@@ -6,12 +6,12 @@ package testlapack
|
||||
|
||||
import (
|
||||
"math"
|
||||
"math/rand/v2"
|
||||
"testing"
|
||||
|
||||
"gonum.org/v1/gonum/blas"
|
||||
"gonum.org/v1/gonum/blas/blas64"
|
||||
"gonum.org/v1/gonum/floats"
|
||||
"gonum.org/v1/gonum/internal/rand"
|
||||
)
|
||||
|
||||
type Dlarfger interface {
|
||||
@@ -20,7 +20,7 @@ type Dlarfger interface {
|
||||
|
||||
func DlarfgTest(t *testing.T, impl Dlarfger) {
|
||||
const tol = 1e-14
|
||||
rnd := rand.New(rand.NewSource(1))
|
||||
rnd := rand.New(rand.NewPCG(1, 1))
|
||||
for i, test := range []struct {
|
||||
alpha float64
|
||||
n int
|
||||
|
@@ -5,12 +5,12 @@
|
||||
package testlapack
|
||||
|
||||
import (
|
||||
"math/rand/v2"
|
||||
"testing"
|
||||
|
||||
"gonum.org/v1/gonum/blas"
|
||||
"gonum.org/v1/gonum/blas/blas64"
|
||||
"gonum.org/v1/gonum/floats"
|
||||
"gonum.org/v1/gonum/internal/rand"
|
||||
"gonum.org/v1/gonum/lapack"
|
||||
)
|
||||
|
||||
@@ -20,7 +20,7 @@ type Dlarfter interface {
|
||||
}
|
||||
|
||||
func DlarftTest(t *testing.T, impl Dlarfter) {
|
||||
rnd := rand.New(rand.NewSource(1))
|
||||
rnd := rand.New(rand.NewPCG(1, 1))
|
||||
for _, store := range []lapack.StoreV{lapack.ColumnWise, lapack.RowWise} {
|
||||
for _, direct := range []lapack.Direct{lapack.Forward, lapack.Backward} {
|
||||
for _, test := range []struct {
|
||||
|
@@ -6,11 +6,11 @@ package testlapack
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"math/rand/v2"
|
||||
"testing"
|
||||
|
||||
"gonum.org/v1/gonum/blas"
|
||||
"gonum.org/v1/gonum/blas/blas64"
|
||||
"gonum.org/v1/gonum/internal/rand"
|
||||
)
|
||||
|
||||
type Dlarfxer interface {
|
||||
@@ -18,7 +18,7 @@ type Dlarfxer interface {
|
||||
}
|
||||
|
||||
func DlarfxTest(t *testing.T, impl Dlarfxer) {
|
||||
rnd := rand.New(rand.NewSource(1))
|
||||
rnd := rand.New(rand.NewPCG(1, 1))
|
||||
for _, side := range []blas.Side{blas.Right, blas.Left} {
|
||||
// For m and n greater than 10 we are testing Dlarf, so avoid unnecessary work.
|
||||
for m := 1; m < 12; m++ {
|
||||
|
@@ -7,9 +7,9 @@ package testlapack
|
||||
import (
|
||||
"fmt"
|
||||
"math"
|
||||
"math/rand/v2"
|
||||
"testing"
|
||||
|
||||
"gonum.org/v1/gonum/internal/rand"
|
||||
"gonum.org/v1/gonum/lapack"
|
||||
)
|
||||
|
||||
@@ -20,7 +20,7 @@ type Dlascler interface {
|
||||
func DlasclTest(t *testing.T, impl Dlascler) {
|
||||
const tol = 1e-15
|
||||
|
||||
rnd := rand.New(rand.NewSource(1))
|
||||
rnd := rand.New(rand.NewPCG(1, 1))
|
||||
for ti, test := range []struct {
|
||||
m, n int
|
||||
}{
|
||||
|
@@ -6,10 +6,10 @@ package testlapack
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"math/rand/v2"
|
||||
"testing"
|
||||
|
||||
"gonum.org/v1/gonum/blas"
|
||||
"gonum.org/v1/gonum/internal/rand"
|
||||
)
|
||||
|
||||
type Dlaseter interface {
|
||||
@@ -17,7 +17,7 @@ type Dlaseter interface {
|
||||
}
|
||||
|
||||
func DlasetTest(t *testing.T, impl Dlaseter) {
|
||||
rnd := rand.New(rand.NewSource(1))
|
||||
rnd := rand.New(rand.NewPCG(1, 1))
|
||||
for ti, test := range []struct {
|
||||
m, n int
|
||||
}{
|
||||
|
@@ -7,11 +7,11 @@ package testlapack
|
||||
import (
|
||||
"fmt"
|
||||
"math"
|
||||
"math/rand/v2"
|
||||
"sort"
|
||||
"testing"
|
||||
|
||||
"gonum.org/v1/gonum/floats"
|
||||
"gonum.org/v1/gonum/internal/rand"
|
||||
)
|
||||
|
||||
type Dlasq1er interface {
|
||||
@@ -22,7 +22,7 @@ type Dlasq1er interface {
|
||||
|
||||
func Dlasq1Test(t *testing.T, impl Dlasq1er) {
|
||||
const tol = 1e-14
|
||||
rnd := rand.New(rand.NewSource(1))
|
||||
rnd := rand.New(rand.NewPCG(1, 1))
|
||||
for _, n := range []int{0, 1, 2, 3, 4, 5, 8, 10, 30, 50} {
|
||||
for typ := 0; typ <= 7; typ++ {
|
||||
name := fmt.Sprintf("n=%v,typ=%v", n, typ)
|
||||
|
@@ -7,12 +7,12 @@ package testlapack
|
||||
import (
|
||||
"fmt"
|
||||
"math"
|
||||
"math/rand/v2"
|
||||
"sort"
|
||||
"testing"
|
||||
|
||||
"gonum.org/v1/gonum/blas"
|
||||
"gonum.org/v1/gonum/floats"
|
||||
"gonum.org/v1/gonum/internal/rand"
|
||||
"gonum.org/v1/gonum/lapack"
|
||||
)
|
||||
|
||||
@@ -25,7 +25,7 @@ type Dlasq2er interface {
|
||||
func Dlasq2Test(t *testing.T, impl Dlasq2er) {
|
||||
const tol = 1e-14
|
||||
|
||||
rnd := rand.New(rand.NewSource(1))
|
||||
rnd := rand.New(rand.NewPCG(1, 1))
|
||||
for _, n := range []int{0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 20, 25, 50} {
|
||||
for k := 0; k < 10; k++ {
|
||||
for typ := 0; typ <= 2; typ++ {
|
||||
|
@@ -6,12 +6,12 @@ package testlapack
|
||||
|
||||
import (
|
||||
"math"
|
||||
"math/rand/v2"
|
||||
"testing"
|
||||
|
||||
"gonum.org/v1/gonum/blas"
|
||||
"gonum.org/v1/gonum/blas/blas64"
|
||||
"gonum.org/v1/gonum/floats"
|
||||
"gonum.org/v1/gonum/internal/rand"
|
||||
"gonum.org/v1/gonum/lapack"
|
||||
)
|
||||
|
||||
@@ -20,7 +20,7 @@ type Dlasrer interface {
|
||||
}
|
||||
|
||||
func DlasrTest(t *testing.T, impl Dlasrer) {
|
||||
rnd := rand.New(rand.NewSource(1))
|
||||
rnd := rand.New(rand.NewPCG(1, 1))
|
||||
for _, side := range []blas.Side{blas.Left, blas.Right} {
|
||||
for _, pivot := range []lapack.Pivot{lapack.Variable, lapack.Top, lapack.Bottom} {
|
||||
for _, direct := range []lapack.Direct{lapack.Forward, lapack.Backward} {
|
||||
|
@@ -7,10 +7,10 @@ package testlapack
|
||||
import (
|
||||
"fmt"
|
||||
"math"
|
||||
"math/rand/v2"
|
||||
"testing"
|
||||
|
||||
"gonum.org/v1/gonum/floats"
|
||||
"gonum.org/v1/gonum/internal/rand"
|
||||
)
|
||||
|
||||
type Dlassqer interface {
|
||||
@@ -31,7 +31,7 @@ func DlassqTest(t *testing.T, impl Dlassqer) {
|
||||
math.NaN(),
|
||||
}
|
||||
|
||||
rnd := rand.New(rand.NewSource(1))
|
||||
rnd := rand.New(rand.NewPCG(1, 1))
|
||||
for _, n := range []int{0, 1, 2, 3, 4, 5, 10, 20, 30, 40} {
|
||||
for _, incx := range []int{1, 3} {
|
||||
for cas := 0; cas < 3; cas++ {
|
||||
|
@@ -5,10 +5,10 @@
|
||||
package testlapack
|
||||
|
||||
import (
|
||||
"math/rand/v2"
|
||||
"testing"
|
||||
|
||||
"gonum.org/v1/gonum/floats"
|
||||
"gonum.org/v1/gonum/internal/rand"
|
||||
)
|
||||
|
||||
type Dlasv2er interface {
|
||||
@@ -16,7 +16,7 @@ type Dlasv2er interface {
|
||||
}
|
||||
|
||||
func Dlasv2Test(t *testing.T, impl Dlasv2er) {
|
||||
rnd := rand.New(rand.NewSource(1))
|
||||
rnd := rand.New(rand.NewPCG(1, 1))
|
||||
for i := 0; i < 100; i++ {
|
||||
f := rnd.NormFloat64()
|
||||
g := rnd.NormFloat64()
|
||||
|
@@ -6,11 +6,11 @@ package testlapack
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"math/rand/v2"
|
||||
"testing"
|
||||
|
||||
"gonum.org/v1/gonum/blas"
|
||||
"gonum.org/v1/gonum/blas/blas64"
|
||||
"gonum.org/v1/gonum/internal/rand"
|
||||
"gonum.org/v1/gonum/lapack"
|
||||
)
|
||||
|
||||
@@ -19,7 +19,7 @@ type Dlasy2er interface {
|
||||
}
|
||||
|
||||
func Dlasy2Test(t *testing.T, impl Dlasy2er) {
|
||||
rnd := rand.New(rand.NewSource(1))
|
||||
rnd := rand.New(rand.NewPCG(1, 1))
|
||||
for _, tranl := range []bool{true, false} {
|
||||
for _, tranr := range []bool{true, false} {
|
||||
for _, isgn := range []int{1, -1} {
|
||||
|
@@ -7,12 +7,12 @@ package testlapack
|
||||
import (
|
||||
"fmt"
|
||||
"math"
|
||||
"math/rand/v2"
|
||||
"testing"
|
||||
|
||||
"gonum.org/v1/gonum/blas"
|
||||
"gonum.org/v1/gonum/blas/blas64"
|
||||
"gonum.org/v1/gonum/floats"
|
||||
"gonum.org/v1/gonum/internal/rand"
|
||||
)
|
||||
|
||||
type Dlatbser interface {
|
||||
@@ -22,7 +22,7 @@ type Dlatbser interface {
|
||||
// DlatbsTest tests Dlatbs by generating a random triangular band system and
|
||||
// checking that a residual for the computed solution is small.
|
||||
func DlatbsTest(t *testing.T, impl Dlatbser) {
|
||||
rnd := rand.New(rand.NewSource(1))
|
||||
rnd := rand.New(rand.NewPCG(1, 1))
|
||||
for _, n := range []int{0, 1, 2, 3, 4, 5, 10, 50} {
|
||||
for _, kd := range []int{0, (n + 1) / 4, (3*n - 1) / 4, (5*n + 1) / 4} {
|
||||
for _, uplo := range []blas.Uplo{blas.Upper, blas.Lower} {
|
||||
|
@@ -7,11 +7,11 @@ package testlapack
|
||||
import (
|
||||
"fmt"
|
||||
"math"
|
||||
"math/rand/v2"
|
||||
"testing"
|
||||
|
||||
"gonum.org/v1/gonum/blas"
|
||||
"gonum.org/v1/gonum/blas/blas64"
|
||||
"gonum.org/v1/gonum/internal/rand"
|
||||
)
|
||||
|
||||
type Dlatrder interface {
|
||||
@@ -21,7 +21,7 @@ type Dlatrder interface {
|
||||
func DlatrdTest(t *testing.T, impl Dlatrder) {
|
||||
const tol = 1e-14
|
||||
|
||||
rnd := rand.New(rand.NewSource(1))
|
||||
rnd := rand.New(rand.NewPCG(1, 1))
|
||||
for _, uplo := range []blas.Uplo{blas.Upper, blas.Lower} {
|
||||
for _, test := range []struct {
|
||||
n, nb, lda, ldw int
|
||||
|
@@ -7,11 +7,11 @@ package testlapack
|
||||
import (
|
||||
"fmt"
|
||||
"math"
|
||||
"math/rand/v2"
|
||||
"testing"
|
||||
|
||||
"gonum.org/v1/gonum/blas"
|
||||
"gonum.org/v1/gonum/blas/blas64"
|
||||
"gonum.org/v1/gonum/internal/rand"
|
||||
)
|
||||
|
||||
type Dlatrser interface {
|
||||
@@ -19,7 +19,7 @@ type Dlatrser interface {
|
||||
}
|
||||
|
||||
func DlatrsTest(t *testing.T, impl Dlatrser) {
|
||||
rnd := rand.New(rand.NewSource(1))
|
||||
rnd := rand.New(rand.NewPCG(1, 1))
|
||||
for _, uplo := range []blas.Uplo{blas.Upper, blas.Lower} {
|
||||
for _, trans := range []blas.Transpose{blas.Trans, blas.NoTrans} {
|
||||
for _, n := range []int{0, 1, 2, 3, 4, 5, 6, 7, 10, 20, 50, 100} {
|
||||
|
@@ -6,11 +6,11 @@ package testlapack
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"math/rand/v2"
|
||||
"testing"
|
||||
|
||||
"gonum.org/v1/gonum/blas"
|
||||
"gonum.org/v1/gonum/blas/blas64"
|
||||
"gonum.org/v1/gonum/internal/rand"
|
||||
"gonum.org/v1/gonum/lapack"
|
||||
)
|
||||
|
||||
@@ -32,7 +32,7 @@ func dlauuTest(t *testing.T, dlauu func(blas.Uplo, int, []float64, int), uplo bl
|
||||
const tol = 1e-13
|
||||
|
||||
bi := blas64.Implementation()
|
||||
rnd := rand.New(rand.NewSource(1))
|
||||
rnd := rand.New(rand.NewPCG(1, 1))
|
||||
|
||||
for _, n := range ns {
|
||||
for _, lda := range []int{max(1, n), n + 11} {
|
||||
|
@@ -5,10 +5,10 @@
|
||||
package testlapack
|
||||
|
||||
import (
|
||||
"math/rand/v2"
|
||||
"testing"
|
||||
|
||||
"gonum.org/v1/gonum/blas/blas64"
|
||||
"gonum.org/v1/gonum/internal/rand"
|
||||
)
|
||||
|
||||
type Dorg2ler interface {
|
||||
@@ -19,7 +19,7 @@ type Dorg2ler interface {
|
||||
func Dorg2lTest(t *testing.T, impl Dorg2ler) {
|
||||
const tol = 1e-14
|
||||
|
||||
rnd := rand.New(rand.NewSource(1))
|
||||
rnd := rand.New(rand.NewPCG(1, 1))
|
||||
for _, test := range []struct {
|
||||
m, n, k, lda int
|
||||
}{
|
||||
|
@@ -5,10 +5,10 @@
|
||||
package testlapack
|
||||
|
||||
import (
|
||||
"math/rand/v2"
|
||||
"testing"
|
||||
|
||||
"gonum.org/v1/gonum/floats/scalar"
|
||||
"gonum.org/v1/gonum/internal/rand"
|
||||
)
|
||||
|
||||
type Dorg2rer interface {
|
||||
@@ -17,7 +17,7 @@ type Dorg2rer interface {
|
||||
}
|
||||
|
||||
func Dorg2rTest(t *testing.T, impl Dorg2rer) {
|
||||
rnd := rand.New(rand.NewSource(1))
|
||||
rnd := rand.New(rand.NewPCG(1, 1))
|
||||
for ti, test := range []struct {
|
||||
m, n, k, lda int
|
||||
}{
|
||||
|
@@ -5,11 +5,11 @@
|
||||
package testlapack
|
||||
|
||||
import (
|
||||
"math/rand/v2"
|
||||
"testing"
|
||||
|
||||
"gonum.org/v1/gonum/blas/blas64"
|
||||
"gonum.org/v1/gonum/floats/scalar"
|
||||
"gonum.org/v1/gonum/internal/rand"
|
||||
"gonum.org/v1/gonum/lapack"
|
||||
)
|
||||
|
||||
@@ -19,7 +19,7 @@ type Dorgbrer interface {
|
||||
}
|
||||
|
||||
func DorgbrTest(t *testing.T, impl Dorgbrer) {
|
||||
rnd := rand.New(rand.NewSource(1))
|
||||
rnd := rand.New(rand.NewPCG(1, 1))
|
||||
for _, vect := range []lapack.GenOrtho{lapack.GenerateQ, lapack.GeneratePT} {
|
||||
for _, test := range []struct {
|
||||
m, n, k, lda int
|
||||
|
@@ -7,11 +7,11 @@ package testlapack
|
||||
import (
|
||||
"fmt"
|
||||
"math"
|
||||
"math/rand/v2"
|
||||
"testing"
|
||||
|
||||
"gonum.org/v1/gonum/blas"
|
||||
"gonum.org/v1/gonum/blas/blas64"
|
||||
"gonum.org/v1/gonum/internal/rand"
|
||||
)
|
||||
|
||||
type Dorghrer interface {
|
||||
@@ -21,14 +21,14 @@ type Dorghrer interface {
|
||||
}
|
||||
|
||||
func DorghrTest(t *testing.T, impl Dorghrer) {
|
||||
rnd := rand.New(rand.NewSource(1))
|
||||
rnd := rand.New(rand.NewPCG(1, 1))
|
||||
|
||||
for _, n := range []int{1, 2, 3, 4, 5, 6, 7, 8, 23, 34} {
|
||||
for _, extra := range []int{0, 1, 13} {
|
||||
for _, optwork := range []bool{true, false} {
|
||||
for cas := 0; cas < 100; cas++ {
|
||||
ilo := rnd.Intn(n)
|
||||
ihi := rnd.Intn(n)
|
||||
ilo := rnd.IntN(n)
|
||||
ihi := rnd.IntN(n)
|
||||
if ilo > ihi {
|
||||
ilo, ihi = ihi, ilo
|
||||
}
|
||||
|
@@ -5,10 +5,10 @@
|
||||
package testlapack
|
||||
|
||||
import (
|
||||
"math/rand/v2"
|
||||
"testing"
|
||||
|
||||
"gonum.org/v1/gonum/floats/scalar"
|
||||
"gonum.org/v1/gonum/internal/rand"
|
||||
)
|
||||
|
||||
type Dorgl2er interface {
|
||||
@@ -17,7 +17,7 @@ type Dorgl2er interface {
|
||||
}
|
||||
|
||||
func Dorgl2Test(t *testing.T, impl Dorgl2er) {
|
||||
rnd := rand.New(rand.NewSource(1))
|
||||
rnd := rand.New(rand.NewPCG(1, 1))
|
||||
for _, test := range []struct {
|
||||
m, n, lda int
|
||||
}{
|
||||
|
@@ -6,10 +6,10 @@ package testlapack
|
||||
|
||||
import (
|
||||
"math"
|
||||
"math/rand/v2"
|
||||
"testing"
|
||||
|
||||
"gonum.org/v1/gonum/floats"
|
||||
"gonum.org/v1/gonum/internal/rand"
|
||||
)
|
||||
|
||||
type Dorglqer interface {
|
||||
@@ -18,7 +18,7 @@ type Dorglqer interface {
|
||||
}
|
||||
|
||||
func DorglqTest(t *testing.T, impl Dorglqer) {
|
||||
rnd := rand.New(rand.NewSource(1))
|
||||
rnd := rand.New(rand.NewPCG(1, 1))
|
||||
// TODO(btracey): Base tests off of nb and nx.
|
||||
for _, test := range []struct{ m, n, k, lda int }{
|
||||
{10, 10, 10, 0},
|
||||
|
@@ -6,11 +6,11 @@ package testlapack
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"math/rand/v2"
|
||||
"testing"
|
||||
|
||||
"gonum.org/v1/gonum/blas"
|
||||
"gonum.org/v1/gonum/blas/blas64"
|
||||
"gonum.org/v1/gonum/internal/rand"
|
||||
)
|
||||
|
||||
type Dorgqler interface {
|
||||
@@ -27,7 +27,7 @@ func DorgqlTest(t *testing.T, impl Dorgqler) {
|
||||
}
|
||||
dorg2ler, hasDorg2l := impl.(Dorg2ler)
|
||||
|
||||
rnd := rand.New(rand.NewSource(1))
|
||||
rnd := rand.New(rand.NewPCG(1, 1))
|
||||
for _, m := range []int{0, 1, 2, 3, 4, 5, 7, 10, 15, 30, 50, 150} {
|
||||
for _, extra := range []int{0, 11} {
|
||||
for _, wl := range []worklen{minimumWork, mediumWork, optimumWork} {
|
||||
@@ -36,11 +36,11 @@ func DorgqlTest(t *testing.T, impl Dorgqler) {
|
||||
// For large matrices make sure that k
|
||||
// is large enough to trigger blocked
|
||||
// path.
|
||||
k = 129 + rnd.Intn(m-129+1)
|
||||
k = 129 + rnd.IntN(m-129+1)
|
||||
} else {
|
||||
k = rnd.Intn(m + 1)
|
||||
k = rnd.IntN(m + 1)
|
||||
}
|
||||
n := k + rnd.Intn(m-k+1)
|
||||
n := k + rnd.IntN(m-k+1)
|
||||
if m == 0 || n == 0 {
|
||||
m = 0
|
||||
n = 0
|
||||
|
@@ -6,10 +6,10 @@ package testlapack
|
||||
|
||||
import (
|
||||
"math"
|
||||
"math/rand/v2"
|
||||
"testing"
|
||||
|
||||
"gonum.org/v1/gonum/floats"
|
||||
"gonum.org/v1/gonum/internal/rand"
|
||||
)
|
||||
|
||||
type Dorgqrer interface {
|
||||
@@ -18,7 +18,7 @@ type Dorgqrer interface {
|
||||
}
|
||||
|
||||
func DorgqrTest(t *testing.T, impl Dorgqrer) {
|
||||
rnd := rand.New(rand.NewSource(1))
|
||||
rnd := rand.New(rand.NewPCG(1, 1))
|
||||
// TODO(btracey): Base tests off of nb and nx.
|
||||
for _, test := range []struct{ m, n, k, lda int }{
|
||||
{10, 10, 10, 0},
|
||||
|
@@ -7,12 +7,12 @@ package testlapack
|
||||
import (
|
||||
"fmt"
|
||||
"math"
|
||||
"math/rand/v2"
|
||||
"testing"
|
||||
|
||||
"gonum.org/v1/gonum/blas"
|
||||
"gonum.org/v1/gonum/blas/blas64"
|
||||
"gonum.org/v1/gonum/floats"
|
||||
"gonum.org/v1/gonum/internal/rand"
|
||||
"gonum.org/v1/gonum/lapack"
|
||||
)
|
||||
|
||||
@@ -23,7 +23,7 @@ type Dorgr2er interface {
|
||||
}
|
||||
|
||||
func Dorgr2Test(t *testing.T, impl Dorgr2er) {
|
||||
rnd := rand.New(rand.NewSource(1))
|
||||
rnd := rand.New(rand.NewPCG(1, 1))
|
||||
for _, k := range []int{0, 1, 2, 5} {
|
||||
for _, m := range []int{k, k + 1, k + 2, k + 4} {
|
||||
for _, n := range []int{m, m + 1, m + 2, m + 4, m + 7} {
|
||||
|
@@ -6,12 +6,12 @@ package testlapack
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"math/rand/v2"
|
||||
"testing"
|
||||
|
||||
"gonum.org/v1/gonum/blas"
|
||||
"gonum.org/v1/gonum/blas/blas64"
|
||||
"gonum.org/v1/gonum/floats"
|
||||
"gonum.org/v1/gonum/internal/rand"
|
||||
)
|
||||
|
||||
type Dorgtrer interface {
|
||||
@@ -22,7 +22,7 @@ type Dorgtrer interface {
|
||||
func DorgtrTest(t *testing.T, impl Dorgtrer) {
|
||||
const tol = 1e-13
|
||||
|
||||
rnd := rand.New(rand.NewSource(1))
|
||||
rnd := rand.New(rand.NewPCG(1, 1))
|
||||
for _, uplo := range []blas.Uplo{blas.Upper, blas.Lower} {
|
||||
for _, wl := range []worklen{minimumWork, mediumWork, optimumWork} {
|
||||
for _, test := range []struct {
|
||||
|
@@ -5,12 +5,12 @@
|
||||
package testlapack
|
||||
|
||||
import (
|
||||
"math/rand/v2"
|
||||
"testing"
|
||||
|
||||
"gonum.org/v1/gonum/blas"
|
||||
"gonum.org/v1/gonum/blas/blas64"
|
||||
"gonum.org/v1/gonum/floats"
|
||||
"gonum.org/v1/gonum/internal/rand"
|
||||
)
|
||||
|
||||
type Dorm2rer interface {
|
||||
@@ -19,7 +19,7 @@ type Dorm2rer interface {
|
||||
}
|
||||
|
||||
func Dorm2rTest(t *testing.T, impl Dorm2rer) {
|
||||
rnd := rand.New(rand.NewSource(1))
|
||||
rnd := rand.New(rand.NewPCG(1, 1))
|
||||
for _, side := range []blas.Side{blas.Left, blas.Right} {
|
||||
for _, trans := range []blas.Transpose{blas.NoTrans, blas.Trans} {
|
||||
for _, test := range []struct {
|
||||
|
@@ -5,12 +5,12 @@
|
||||
package testlapack
|
||||
|
||||
import (
|
||||
"math/rand/v2"
|
||||
"testing"
|
||||
|
||||
"gonum.org/v1/gonum/blas"
|
||||
"gonum.org/v1/gonum/blas/blas64"
|
||||
"gonum.org/v1/gonum/floats"
|
||||
"gonum.org/v1/gonum/internal/rand"
|
||||
"gonum.org/v1/gonum/lapack"
|
||||
)
|
||||
|
||||
@@ -20,7 +20,7 @@ type Dormbrer interface {
|
||||
}
|
||||
|
||||
func DormbrTest(t *testing.T, impl Dormbrer) {
|
||||
rnd := rand.New(rand.NewSource(1))
|
||||
rnd := rand.New(rand.NewPCG(1, 1))
|
||||
bi := blas64.Implementation()
|
||||
for _, vect := range []lapack.ApplyOrtho{lapack.ApplyQ, lapack.ApplyP} {
|
||||
for _, side := range []blas.Side{blas.Left, blas.Right} {
|
||||
|
@@ -7,11 +7,11 @@ package testlapack
|
||||
import (
|
||||
"fmt"
|
||||
"math"
|
||||
"math/rand/v2"
|
||||
"testing"
|
||||
|
||||
"gonum.org/v1/gonum/blas"
|
||||
"gonum.org/v1/gonum/blas/blas64"
|
||||
"gonum.org/v1/gonum/internal/rand"
|
||||
)
|
||||
|
||||
type Dormhrer interface {
|
||||
@@ -21,7 +21,7 @@ type Dormhrer interface {
|
||||
}
|
||||
|
||||
func DormhrTest(t *testing.T, impl Dormhrer) {
|
||||
rnd := rand.New(rand.NewSource(1))
|
||||
rnd := rand.New(rand.NewPCG(1, 1))
|
||||
|
||||
for _, side := range []blas.Side{blas.Left, blas.Right} {
|
||||
for _, trans := range []blas.Transpose{blas.NoTrans, blas.Trans} {
|
||||
@@ -33,8 +33,8 @@ func DormhrTest(t *testing.T, impl Dormhrer) {
|
||||
if side == blas.Right {
|
||||
nq = n
|
||||
}
|
||||
ilo := rnd.Intn(nq)
|
||||
ihi := rnd.Intn(nq)
|
||||
ilo := rnd.IntN(nq)
|
||||
ihi := rnd.IntN(nq)
|
||||
if ilo > ihi {
|
||||
ilo, ihi = ihi, ilo
|
||||
}
|
||||
|
@@ -5,12 +5,12 @@
|
||||
package testlapack
|
||||
|
||||
import (
|
||||
"math/rand/v2"
|
||||
"testing"
|
||||
|
||||
"gonum.org/v1/gonum/blas"
|
||||
"gonum.org/v1/gonum/blas/blas64"
|
||||
"gonum.org/v1/gonum/floats"
|
||||
"gonum.org/v1/gonum/internal/rand"
|
||||
)
|
||||
|
||||
type Dorml2er interface {
|
||||
@@ -19,7 +19,7 @@ type Dorml2er interface {
|
||||
}
|
||||
|
||||
func Dorml2Test(t *testing.T, impl Dorml2er) {
|
||||
rnd := rand.New(rand.NewSource(1))
|
||||
rnd := rand.New(rand.NewPCG(1, 1))
|
||||
// TODO(btracey): This test is not complete, because it
|
||||
// doesn't test individual values of m, n, and k, instead only testing
|
||||
// a specific subset of possible k values.
|
||||
|
@@ -5,11 +5,11 @@
|
||||
package testlapack
|
||||
|
||||
import (
|
||||
"math/rand/v2"
|
||||
"testing"
|
||||
|
||||
"gonum.org/v1/gonum/blas"
|
||||
"gonum.org/v1/gonum/floats"
|
||||
"gonum.org/v1/gonum/internal/rand"
|
||||
)
|
||||
|
||||
type Dormlqer interface {
|
||||
@@ -18,7 +18,7 @@ type Dormlqer interface {
|
||||
}
|
||||
|
||||
func DormlqTest(t *testing.T, impl Dormlqer) {
|
||||
rnd := rand.New(rand.NewSource(1))
|
||||
rnd := rand.New(rand.NewPCG(1, 1))
|
||||
for _, side := range []blas.Side{blas.Left, blas.Right} {
|
||||
for _, trans := range []blas.Transpose{blas.NoTrans, blas.Trans} {
|
||||
for _, wl := range []worklen{minimumWork, mediumWork, optimumWork} {
|
||||
|
@@ -6,11 +6,11 @@ package testlapack
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"math/rand/v2"
|
||||
"testing"
|
||||
|
||||
"gonum.org/v1/gonum/blas"
|
||||
"gonum.org/v1/gonum/floats"
|
||||
"gonum.org/v1/gonum/internal/rand"
|
||||
)
|
||||
|
||||
type Dormqrer interface {
|
||||
@@ -19,7 +19,7 @@ type Dormqrer interface {
|
||||
}
|
||||
|
||||
func DormqrTest(t *testing.T, impl Dormqrer) {
|
||||
rnd := rand.New(rand.NewSource(1))
|
||||
rnd := rand.New(rand.NewPCG(1, 1))
|
||||
for _, side := range []blas.Side{blas.Left, blas.Right} {
|
||||
for _, trans := range []blas.Transpose{blas.NoTrans, blas.Trans} {
|
||||
for _, test := range []struct {
|
||||
|
@@ -5,12 +5,12 @@
|
||||
package testlapack
|
||||
|
||||
import (
|
||||
"math/rand/v2"
|
||||
"testing"
|
||||
|
||||
"gonum.org/v1/gonum/blas"
|
||||
"gonum.org/v1/gonum/blas/blas64"
|
||||
"gonum.org/v1/gonum/floats"
|
||||
"gonum.org/v1/gonum/internal/rand"
|
||||
)
|
||||
|
||||
type Dormr2er interface {
|
||||
@@ -19,7 +19,7 @@ type Dormr2er interface {
|
||||
}
|
||||
|
||||
func Dormr2Test(t *testing.T, impl Dormr2er) {
|
||||
rnd := rand.New(rand.NewSource(1))
|
||||
rnd := rand.New(rand.NewPCG(1, 1))
|
||||
for _, side := range []blas.Side{blas.Left, blas.Right} {
|
||||
for _, trans := range []blas.Transpose{blas.NoTrans, blas.Trans} {
|
||||
for _, test := range []struct {
|
||||
|
@@ -7,11 +7,11 @@ package testlapack
|
||||
import (
|
||||
"fmt"
|
||||
"math"
|
||||
"math/rand/v2"
|
||||
"testing"
|
||||
|
||||
"gonum.org/v1/gonum/blas"
|
||||
"gonum.org/v1/gonum/floats"
|
||||
"gonum.org/v1/gonum/internal/rand"
|
||||
"gonum.org/v1/gonum/lapack"
|
||||
)
|
||||
|
||||
@@ -25,7 +25,7 @@ type Dpbconer interface {
|
||||
// checking that the estimated condition number is not too different from the
|
||||
// condition number computed via the explicit inverse of A.
|
||||
func DpbconTest(t *testing.T, impl Dpbconer) {
|
||||
rnd := rand.New(rand.NewSource(1))
|
||||
rnd := rand.New(rand.NewPCG(1, 1))
|
||||
for _, n := range []int{0, 1, 2, 3, 4, 5, 10, 50} {
|
||||
for _, kd := range []int{0, (n + 1) / 4, (3*n - 1) / 4, (5*n + 1) / 4} {
|
||||
for _, uplo := range []blas.Uplo{blas.Upper, blas.Lower} {
|
||||
|
@@ -6,10 +6,10 @@ package testlapack
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"math/rand/v2"
|
||||
"testing"
|
||||
|
||||
"gonum.org/v1/gonum/blas"
|
||||
"gonum.org/v1/gonum/internal/rand"
|
||||
)
|
||||
|
||||
type Dpbtf2er interface {
|
||||
@@ -20,7 +20,7 @@ type Dpbtf2er interface {
|
||||
// by checking that the Cholesky factors multiply back to the original matrix.
|
||||
func Dpbtf2Test(t *testing.T, impl Dpbtf2er) {
|
||||
// TODO(vladimir-ch): include expected-failure test case.
|
||||
rnd := rand.New(rand.NewSource(1))
|
||||
rnd := rand.New(rand.NewPCG(1, 1))
|
||||
for _, n := range []int{0, 1, 2, 3, 4, 5, 10, 20} {
|
||||
for _, kd := range []int{0, (n + 1) / 4, (3*n - 1) / 4, (5*n + 1) / 4} {
|
||||
for _, uplo := range []blas.Uplo{blas.Upper, blas.Lower} {
|
||||
|
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user