diff --git a/blas/gonum/level1cmplx128_bench_test.go b/blas/gonum/level1cmplx128_bench_test.go index 3c21148c..c788c714 100644 --- a/blas/gonum/level1cmplx128_bench_test.go +++ b/blas/gonum/level1cmplx128_bench_test.go @@ -7,7 +7,7 @@ package gonum import ( "testing" - "golang.org/x/exp/rand" + "gonum.org/v1/gonum/internal/rand" ) func benchmarkZdscal(b *testing.B, n, inc int) { diff --git a/blas/gonum/level1float64_bench_test.go b/blas/gonum/level1float64_bench_test.go index 0b870a97..96810ab6 100644 --- a/blas/gonum/level1float64_bench_test.go +++ b/blas/gonum/level1float64_bench_test.go @@ -9,9 +9,8 @@ package gonum import ( "testing" - "golang.org/x/exp/rand" - "gonum.org/v1/gonum/blas" + "gonum.org/v1/gonum/internal/rand" ) const ( diff --git a/blas/gonum/level2cmplx128_bench_test.go b/blas/gonum/level2cmplx128_bench_test.go index 419d2968..5d1eaeab 100644 --- a/blas/gonum/level2cmplx128_bench_test.go +++ b/blas/gonum/level2cmplx128_bench_test.go @@ -8,9 +8,8 @@ import ( "fmt" "testing" - "golang.org/x/exp/rand" - "gonum.org/v1/gonum/blas" + "gonum.org/v1/gonum/internal/rand" ) var benchSinkZ []complex128 diff --git a/blas/gonum/pardgemm_test.go b/blas/gonum/pardgemm_test.go index 49b12764..4b82c821 100644 --- a/blas/gonum/pardgemm_test.go +++ b/blas/gonum/pardgemm_test.go @@ -7,10 +7,9 @@ package gonum import ( "testing" - "golang.org/x/exp/rand" - "gonum.org/v1/gonum/blas" "gonum.org/v1/gonum/floats" + "gonum.org/v1/gonum/internal/rand" ) func TestDgemmParallel(t *testing.T) { diff --git a/blas/testblas/benchautogen/autogen_bench_level1double.go b/blas/testblas/benchautogen/autogen_bench_level1double.go index b216bf0b..e7226866 100644 --- a/blas/testblas/benchautogen/autogen_bench_level1double.go +++ b/blas/testblas/benchautogen/autogen_bench_level1double.go @@ -24,9 +24,8 @@ var autogen = []byte("// Code generated by \"go run $GOPATH/src/gonum.org/v1/gon var imports = []byte(`import( "testing" - "golang.org/x/exp/rand" - "gonum.org/v1/gonum/blas" + "gonum.org/v1/gonum/internal/rand" )`) var randomSliceFunction = []byte(`func randomSlice(l, idx int) ([]float64) { diff --git a/blas/testblas/common.go b/blas/testblas/common.go index 0e809931..a308761c 100644 --- a/blas/testblas/common.go +++ b/blas/testblas/common.go @@ -9,10 +9,9 @@ import ( "math/cmplx" "testing" - "golang.org/x/exp/rand" - "gonum.org/v1/gonum/blas" "gonum.org/v1/gonum/floats/scalar" + "gonum.org/v1/gonum/internal/rand" ) // throwPanic will throw unexpected panics if true, or will just report them as errors if false diff --git a/blas/testblas/common_test.go b/blas/testblas/common_test.go index 9c88b21c..4a904e18 100644 --- a/blas/testblas/common_test.go +++ b/blas/testblas/common_test.go @@ -9,10 +9,9 @@ import ( "math/cmplx" "testing" - "golang.org/x/exp/rand" - "gonum.org/v1/gonum/blas" "gonum.org/v1/gonum/floats" + "gonum.org/v1/gonum/internal/rand" ) func TestFlattenBanded(t *testing.T) { diff --git a/blas/testblas/dgemmbench.go b/blas/testblas/dgemmbench.go index 7d51145e..99060028 100644 --- a/blas/testblas/dgemmbench.go +++ b/blas/testblas/dgemmbench.go @@ -7,9 +7,8 @@ package testblas import ( "testing" - "golang.org/x/exp/rand" - "gonum.org/v1/gonum/blas" + "gonum.org/v1/gonum/internal/rand" ) func DgemmBenchmark(b *testing.B, dgemm Dgemmer, m, n, k int, tA, tB blas.Transpose) { diff --git a/blas/testblas/dtrmvbench.go b/blas/testblas/dtrmvbench.go index f78e306b..df42ba21 100644 --- a/blas/testblas/dtrmvbench.go +++ b/blas/testblas/dtrmvbench.go @@ -7,9 +7,8 @@ package testblas import ( "testing" - "golang.org/x/exp/rand" - "gonum.org/v1/gonum/blas" + "gonum.org/v1/gonum/internal/rand" ) func DtrmvBenchmark(b *testing.B, dtrmv Dtrmver, n, lda, incX int, ul blas.Uplo, tA blas.Transpose, d blas.Diag) { diff --git a/blas/testblas/dtrsm.go b/blas/testblas/dtrsm.go index b404d310..9ab116e5 100644 --- a/blas/testblas/dtrsm.go +++ b/blas/testblas/dtrsm.go @@ -7,10 +7,9 @@ package testblas import ( "testing" - "golang.org/x/exp/rand" - "gonum.org/v1/gonum/blas" "gonum.org/v1/gonum/floats" + "gonum.org/v1/gonum/internal/rand" ) type Dtrsmer interface { diff --git a/blas/testblas/dzasum.go b/blas/testblas/dzasum.go index 50d51a12..fccde21c 100644 --- a/blas/testblas/dzasum.go +++ b/blas/testblas/dzasum.go @@ -7,9 +7,8 @@ package testblas import ( "testing" - "golang.org/x/exp/rand" - "gonum.org/v1/gonum/floats/scalar" + "gonum.org/v1/gonum/internal/rand" ) type Dzasumer interface { diff --git a/blas/testblas/dznrm2.go b/blas/testblas/dznrm2.go index 8beed143..c8672969 100644 --- a/blas/testblas/dznrm2.go +++ b/blas/testblas/dznrm2.go @@ -9,9 +9,8 @@ import ( "math" "testing" - "golang.org/x/exp/rand" - "gonum.org/v1/gonum/floats/scalar" + "gonum.org/v1/gonum/internal/rand" ) type Dznrm2er interface { diff --git a/blas/testblas/izamax.go b/blas/testblas/izamax.go index 85d8d949..cc44f7e1 100644 --- a/blas/testblas/izamax.go +++ b/blas/testblas/izamax.go @@ -7,7 +7,7 @@ package testblas import ( "testing" - "golang.org/x/exp/rand" + "gonum.org/v1/gonum/internal/rand" ) type Izamaxer interface { diff --git a/blas/testblas/level2bench.go b/blas/testblas/level2bench.go index 6d58c120..b5f20520 100644 --- a/blas/testblas/level2bench.go +++ b/blas/testblas/level2bench.go @@ -7,9 +7,8 @@ package testblas import ( "testing" - "golang.org/x/exp/rand" - "gonum.org/v1/gonum/blas" + "gonum.org/v1/gonum/internal/rand" ) func DgemvBenchmark(b *testing.B, impl Dgemver, tA blas.Transpose, m, n, incX, incY int) { diff --git a/blas/testblas/zcopy.go b/blas/testblas/zcopy.go index 0a58a847..e681baee 100644 --- a/blas/testblas/zcopy.go +++ b/blas/testblas/zcopy.go @@ -8,7 +8,7 @@ import ( "fmt" "testing" - "golang.org/x/exp/rand" + "gonum.org/v1/gonum/internal/rand" ) type Zcopyer interface { diff --git a/blas/testblas/zgbmv.go b/blas/testblas/zgbmv.go index 93f6c6cc..75d1f4ed 100644 --- a/blas/testblas/zgbmv.go +++ b/blas/testblas/zgbmv.go @@ -8,8 +8,8 @@ import ( "fmt" "testing" - "golang.org/x/exp/rand" "gonum.org/v1/gonum/blas" + "gonum.org/v1/gonum/internal/rand" ) type Zgbmver interface { diff --git a/blas/testblas/zgemm.go b/blas/testblas/zgemm.go index f119b207..16fa8fc8 100644 --- a/blas/testblas/zgemm.go +++ b/blas/testblas/zgemm.go @@ -8,8 +8,8 @@ import ( "fmt" "testing" - "golang.org/x/exp/rand" "gonum.org/v1/gonum/blas" + "gonum.org/v1/gonum/internal/rand" ) type Zgemmer interface { diff --git a/blas/testblas/zhbmv.go b/blas/testblas/zhbmv.go index a437217b..b808c781 100644 --- a/blas/testblas/zhbmv.go +++ b/blas/testblas/zhbmv.go @@ -9,8 +9,8 @@ import ( "math" "testing" - "golang.org/x/exp/rand" "gonum.org/v1/gonum/blas" + "gonum.org/v1/gonum/internal/rand" ) type Zhbmver interface { diff --git a/blas/testblas/zhemm.go b/blas/testblas/zhemm.go index 1744fd25..bc488aea 100644 --- a/blas/testblas/zhemm.go +++ b/blas/testblas/zhemm.go @@ -9,9 +9,8 @@ import ( "math/cmplx" "testing" - "golang.org/x/exp/rand" - "gonum.org/v1/gonum/blas" + "gonum.org/v1/gonum/internal/rand" ) type Zhemmer interface { diff --git a/blas/testblas/zher2k.go b/blas/testblas/zher2k.go index d219018c..d96901aa 100644 --- a/blas/testblas/zher2k.go +++ b/blas/testblas/zher2k.go @@ -9,8 +9,8 @@ import ( "math/cmplx" "testing" - "golang.org/x/exp/rand" "gonum.org/v1/gonum/blas" + "gonum.org/v1/gonum/internal/rand" ) type Zher2ker interface { diff --git a/blas/testblas/zherk.go b/blas/testblas/zherk.go index 7d986dea..68bd5085 100644 --- a/blas/testblas/zherk.go +++ b/blas/testblas/zherk.go @@ -9,9 +9,8 @@ import ( "math/cmplx" "testing" - "golang.org/x/exp/rand" - "gonum.org/v1/gonum/blas" + "gonum.org/v1/gonum/internal/rand" ) type Zherker interface { diff --git a/blas/testblas/zswap.go b/blas/testblas/zswap.go index ce1ab7a1..cbcf40b7 100644 --- a/blas/testblas/zswap.go +++ b/blas/testblas/zswap.go @@ -8,7 +8,7 @@ import ( "fmt" "testing" - "golang.org/x/exp/rand" + "gonum.org/v1/gonum/internal/rand" ) type Zswaper interface { diff --git a/blas/testblas/zsymm.go b/blas/testblas/zsymm.go index 455c96a0..6225dbf5 100644 --- a/blas/testblas/zsymm.go +++ b/blas/testblas/zsymm.go @@ -9,9 +9,8 @@ import ( "math/cmplx" "testing" - "golang.org/x/exp/rand" - "gonum.org/v1/gonum/blas" + "gonum.org/v1/gonum/internal/rand" ) type Zsymmer interface { diff --git a/blas/testblas/zsyr2k.go b/blas/testblas/zsyr2k.go index 45d3d822..e2aec618 100644 --- a/blas/testblas/zsyr2k.go +++ b/blas/testblas/zsyr2k.go @@ -8,9 +8,8 @@ import ( "fmt" "testing" - "golang.org/x/exp/rand" - "gonum.org/v1/gonum/blas" + "gonum.org/v1/gonum/internal/rand" ) type Zsyr2ker interface { diff --git a/blas/testblas/zsyrk.go b/blas/testblas/zsyrk.go index f8c74698..e07dcb9b 100644 --- a/blas/testblas/zsyrk.go +++ b/blas/testblas/zsyrk.go @@ -9,9 +9,8 @@ import ( "math/cmplx" "testing" - "golang.org/x/exp/rand" - "gonum.org/v1/gonum/blas" + "gonum.org/v1/gonum/internal/rand" ) type Zsyrker interface { diff --git a/blas/testblas/ztbmv.go b/blas/testblas/ztbmv.go index d55d90e3..0ba6b315 100644 --- a/blas/testblas/ztbmv.go +++ b/blas/testblas/ztbmv.go @@ -8,8 +8,8 @@ import ( "fmt" "testing" - "golang.org/x/exp/rand" "gonum.org/v1/gonum/blas" + "gonum.org/v1/gonum/internal/rand" ) type Ztbmver interface { diff --git a/blas/testblas/ztbsv.go b/blas/testblas/ztbsv.go index 4c3f8349..4c4bacb4 100644 --- a/blas/testblas/ztbsv.go +++ b/blas/testblas/ztbsv.go @@ -8,8 +8,8 @@ import ( "fmt" "testing" - "golang.org/x/exp/rand" "gonum.org/v1/gonum/blas" + "gonum.org/v1/gonum/internal/rand" ) type Ztbsver interface { diff --git a/blas/testblas/ztpsv.go b/blas/testblas/ztpsv.go index b405227e..ef775d94 100644 --- a/blas/testblas/ztpsv.go +++ b/blas/testblas/ztpsv.go @@ -8,8 +8,8 @@ import ( "fmt" "testing" - "golang.org/x/exp/rand" "gonum.org/v1/gonum/blas" + "gonum.org/v1/gonum/internal/rand" ) type Ztpsver interface { diff --git a/blas/testblas/ztrmm.go b/blas/testblas/ztrmm.go index 487c99b1..5072e170 100644 --- a/blas/testblas/ztrmm.go +++ b/blas/testblas/ztrmm.go @@ -8,9 +8,8 @@ import ( "fmt" "testing" - "golang.org/x/exp/rand" - "gonum.org/v1/gonum/blas" + "gonum.org/v1/gonum/internal/rand" ) type Ztrmmer interface { diff --git a/blas/testblas/ztrsm.go b/blas/testblas/ztrsm.go index 25e253b8..0aa896dc 100644 --- a/blas/testblas/ztrsm.go +++ b/blas/testblas/ztrsm.go @@ -8,9 +8,8 @@ import ( "fmt" "testing" - "golang.org/x/exp/rand" - "gonum.org/v1/gonum/blas" + "gonum.org/v1/gonum/internal/rand" ) type Ztrsmer interface { @@ -37,7 +36,7 @@ func ZtrsmTest(t *testing.T, impl Ztrsmer) { } func ztrsmTest(t *testing.T, impl Ztrsmer, side blas.Side, uplo blas.Uplo, trans blas.Transpose, diag blas.Diag, m, n int) { - const tol = 1e-13 + const tol = 1e-12 rnd := rand.New(rand.NewSource(1)) diff --git a/blas/testblas/ztrsv.go b/blas/testblas/ztrsv.go index c981cdd2..933844ad 100644 --- a/blas/testblas/ztrsv.go +++ b/blas/testblas/ztrsv.go @@ -8,8 +8,8 @@ import ( "fmt" "testing" - "golang.org/x/exp/rand" "gonum.org/v1/gonum/blas" + "gonum.org/v1/gonum/internal/rand" ) type Ztrsver interface { diff --git a/cmplxs/cmplxs_test.go b/cmplxs/cmplxs_test.go index 86ac2f61..cff4679e 100644 --- a/cmplxs/cmplxs_test.go +++ b/cmplxs/cmplxs_test.go @@ -11,10 +11,9 @@ import ( "strconv" "testing" - "golang.org/x/exp/rand" - "gonum.org/v1/gonum/cmplxs/cscalar" "gonum.org/v1/gonum/floats" + "gonum.org/v1/gonum/internal/rand" ) const ( diff --git a/diff/fd/gradient_test.go b/diff/fd/gradient_test.go index e32de1a2..4541e49d 100644 --- a/diff/fd/gradient_test.go +++ b/diff/fd/gradient_test.go @@ -8,9 +8,8 @@ import ( "math" "testing" - "golang.org/x/exp/rand" - "gonum.org/v1/gonum/floats" + "gonum.org/v1/gonum/internal/rand" ) type Rosenbrock struct { diff --git a/diff/fd/jacobian_test.go b/diff/fd/jacobian_test.go index 8d096f30..0fa97081 100644 --- a/diff/fd/jacobian_test.go +++ b/diff/fd/jacobian_test.go @@ -8,9 +8,8 @@ import ( "math" "testing" - "golang.org/x/exp/rand" - "gonum.org/v1/gonum/floats" + "gonum.org/v1/gonum/internal/rand" "gonum.org/v1/gonum/mat" ) diff --git a/dsp/fourier/fourier_test.go b/dsp/fourier/fourier_test.go index d52d3aaf..1244cdf5 100644 --- a/dsp/fourier/fourier_test.go +++ b/dsp/fourier/fourier_test.go @@ -9,9 +9,8 @@ import ( "reflect" "testing" - "golang.org/x/exp/rand" - "gonum.org/v1/gonum/floats" + "gonum.org/v1/gonum/internal/rand" ) func TestFFT(t *testing.T) { diff --git a/dsp/fourier/radix24_test.go b/dsp/fourier/radix24_test.go index 2b40d53c..49f02bc4 100644 --- a/dsp/fourier/radix24_test.go +++ b/dsp/fourier/radix24_test.go @@ -13,9 +13,8 @@ import ( "testing" "unsafe" - "golang.org/x/exp/rand" - "gonum.org/v1/gonum/cmplxs" + "gonum.org/v1/gonum/internal/rand" ) func TestCoefficients(t *testing.T) { diff --git a/floats/floats_test.go b/floats/floats_test.go index d9b65a8a..a6871f93 100644 --- a/floats/floats_test.go +++ b/floats/floats_test.go @@ -11,9 +11,8 @@ import ( "strconv" "testing" - "golang.org/x/exp/rand" - "gonum.org/v1/gonum/floats/scalar" + "gonum.org/v1/gonum/internal/rand" ) const ( diff --git a/graph/coloring/coloring.go b/graph/coloring/coloring.go index 2031b32a..dd7ba9f6 100644 --- a/graph/coloring/coloring.go +++ b/graph/coloring/coloring.go @@ -12,12 +12,11 @@ import ( "slices" "sort" - "golang.org/x/exp/rand" - "gonum.org/v1/gonum/graph" "gonum.org/v1/gonum/graph/internal/set" "gonum.org/v1/gonum/graph/iterator" "gonum.org/v1/gonum/graph/topo" + "gonum.org/v1/gonum/internal/rand" ) // ErrInvalidPartialColoring is returned when a partial coloring diff --git a/graph/coloring/coloring_test.go b/graph/coloring/coloring_test.go index 81d07b5c..5c4308cd 100644 --- a/graph/coloring/coloring_test.go +++ b/graph/coloring/coloring_test.go @@ -10,12 +10,11 @@ import ( "testing" "time" - "golang.org/x/exp/rand" - "gonum.org/v1/gonum/graph" "gonum.org/v1/gonum/graph/encoding/graph6" "gonum.org/v1/gonum/graph/internal/set" "gonum.org/v1/gonum/graph/simple" + "gonum.org/v1/gonum/internal/rand" ) var runLong = flag.Bool("color.long", false, "run long exact coloring tests") diff --git a/graph/community/bisect.go b/graph/community/bisect.go index 11d38eb9..4a20d5f7 100644 --- a/graph/community/bisect.go +++ b/graph/community/bisect.go @@ -9,9 +9,8 @@ import ( "fmt" "math" - "golang.org/x/exp/rand" - "gonum.org/v1/gonum/graph" + "gonum.org/v1/gonum/internal/rand" ) // Interval is an interval of resolutions with a common score. diff --git a/graph/community/bisect_example_test.go b/graph/community/bisect_example_test.go index 53e6f374..6692e777 100644 --- a/graph/community/bisect_example_test.go +++ b/graph/community/bisect_example_test.go @@ -8,11 +8,10 @@ import ( "fmt" "log" - "golang.org/x/exp/rand" - "gonum.org/v1/gonum/graph/community" "gonum.org/v1/gonum/graph/simple" "gonum.org/v1/gonum/internal/order" + "gonum.org/v1/gonum/internal/rand" ) func ExampleProfile_simple() { @@ -210,7 +209,7 @@ func ExampleProfile_multiplex() { // Low:0.1 High:0.72 Score:26 Communities:[[0] [1 7 9 12] [2 8 11] [3 4 5 10] [6]] Q=[24.7 1.97] // Low:0.72 High:1.1 Score:24 Communities:[[0 6] [1 7 9 12] [2 8 11] [3 4 5 10]] Q=[16.9 14.1] // Low:1.1 High:1.2 Score:18 Communities:[[0 2 6 11] [1 7 9 12] [3 4 5 8 10]] Q=[9.16 25.1] - // Low:1.2 High:1.6 Score:10 Communities:[[0 3 4 5 6 10] [1 7 9 12] [2 8 11]] Q=[10.5 26.7] + // Low:1.2 High:1.6 Score:10 Communities:[[0 3 4 5 6 10] [1 7 9 12] [2 8 11]] Q=[11 25.2] // Low:1.6 High:1.6 Score:8 Communities:[[0 1 6 7 9 12] [2 8 11] [3 4 5 10]] Q=[5.56 39.8] // Low:1.6 High:1.8 Score:2 Communities:[[0 2 3 4 5 6 10] [1 7 8 9 11 12]] Q=[-1.82 48.6] // Low:1.8 High:2.3 Score:-6 Communities:[[0 2 3 4 5 6 8 10 11] [1 7 9 12]] Q=[-5 57.5] diff --git a/graph/community/louvain_common.go b/graph/community/louvain_common.go index f9b68602..7d80459e 100644 --- a/graph/community/louvain_common.go +++ b/graph/community/louvain_common.go @@ -8,10 +8,9 @@ import ( "fmt" "slices" - "golang.org/x/exp/rand" - "gonum.org/v1/gonum/graph" "gonum.org/v1/gonum/graph/internal/set" + "gonum.org/v1/gonum/internal/rand" ) // Q returns the modularity Q score of the graph g subdivided into the diff --git a/graph/community/louvain_directed.go b/graph/community/louvain_directed.go index bc7c2169..3c5241ca 100644 --- a/graph/community/louvain_directed.go +++ b/graph/community/louvain_directed.go @@ -8,12 +8,11 @@ import ( "math" "slices" - "golang.org/x/exp/rand" - "gonum.org/v1/gonum/graph" "gonum.org/v1/gonum/graph/internal/set" "gonum.org/v1/gonum/graph/iterator" "gonum.org/v1/gonum/internal/order" + "gonum.org/v1/gonum/internal/rand" ) // qDirected returns the modularity Q score of the graph g subdivided into the diff --git a/graph/community/louvain_directed_multiplex.go b/graph/community/louvain_directed_multiplex.go index d8127af0..8d56f04b 100644 --- a/graph/community/louvain_directed_multiplex.go +++ b/graph/community/louvain_directed_multiplex.go @@ -8,12 +8,11 @@ import ( "fmt" "math" - "golang.org/x/exp/rand" - "gonum.org/v1/gonum/graph" "gonum.org/v1/gonum/graph/internal/set" "gonum.org/v1/gonum/graph/iterator" "gonum.org/v1/gonum/internal/order" + "gonum.org/v1/gonum/internal/rand" ) // DirectedMultiplex is a directed multiplex graph. diff --git a/graph/community/louvain_directed_multiplex_test.go b/graph/community/louvain_directed_multiplex_test.go index fe4175b6..3dd71bc8 100644 --- a/graph/community/louvain_directed_multiplex_test.go +++ b/graph/community/louvain_directed_multiplex_test.go @@ -11,13 +11,12 @@ import ( "slices" "testing" - "golang.org/x/exp/rand" - "gonum.org/v1/gonum/floats" "gonum.org/v1/gonum/floats/scalar" "gonum.org/v1/gonum/graph" "gonum.org/v1/gonum/graph/simple" "gonum.org/v1/gonum/internal/order" + "gonum.org/v1/gonum/internal/rand" ) var communityDirectedMultiplexQTests = []struct { diff --git a/graph/community/louvain_directed_test.go b/graph/community/louvain_directed_test.go index fdee1082..8f576444 100644 --- a/graph/community/louvain_directed_test.go +++ b/graph/community/louvain_directed_test.go @@ -10,12 +10,11 @@ import ( "slices" "testing" - "golang.org/x/exp/rand" - "gonum.org/v1/gonum/floats/scalar" "gonum.org/v1/gonum/graph" "gonum.org/v1/gonum/graph/simple" "gonum.org/v1/gonum/internal/order" + "gonum.org/v1/gonum/internal/rand" ) type communityDirectedQTest struct { @@ -167,11 +166,12 @@ var communityDirectedQTests = []communityDirectedQTest{ }, }, { - q: 0.36862244897959184, + q: 0.3405612244897959, communities: [][]graph.Node{ {simple.Node(0), simple.Node(1), simple.Node(2), simple.Node(4), simple.Node(5)}, {simple.Node(3), simple.Node(6), simple.Node(7)}, - {simple.Node(8), simple.Node(9), simple.Node(10), simple.Node(11), simple.Node(12), simple.Node(13), simple.Node(14), simple.Node(15)}, + {simple.Node(8), simple.Node(10), simple.Node(11), simple.Node(13), simple.Node(15)}, + {simple.Node(9), simple.Node(12), simple.Node(14)}, }, }, { @@ -212,7 +212,9 @@ func TestCommunityQDirected(t *testing.T) { } } - testCommunityQDirected(t, test, g) + t.Run(test.name, func(t *testing.T) { + testCommunityQDirected(t, test, g) + }) } } @@ -229,7 +231,9 @@ func TestCommunityQWeightedDirected(t *testing.T) { } } - testCommunityQDirected(t, test, g) + t.Run(test.name, func(t *testing.T) { + testCommunityQDirected(t, test, g) + }) } } @@ -265,7 +269,9 @@ func TestCommunityDeltaQDirected(t *testing.T) { } } - testCommunityDeltaQDirected(t, test, g) + t.Run(test.name, func(t *testing.T) { + testCommunityDeltaQDirected(t, test, g) + }) } } @@ -282,7 +288,9 @@ func TestCommunityDeltaQWeightedDirected(t *testing.T) { } } - testCommunityDeltaQDirected(t, test, g) + t.Run(test.name, func(t *testing.T) { + testCommunityDeltaQDirected(t, test, g) + }) } } @@ -390,7 +398,9 @@ func TestReduceQConsistencyDirected(t *testing.T) { } } - testReduceQConsistencyDirected(t, test, g) + t.Run(test.name, func(t *testing.T) { + testReduceQConsistencyDirected(t, test, g) + }) } } @@ -407,7 +417,9 @@ func TestReduceQConsistencyWeightedDirected(t *testing.T) { } } - testReduceQConsistencyDirected(t, test, g) + t.Run(test.name, func(t *testing.T) { + testReduceQConsistencyDirected(t, test, g) + }) } } @@ -508,7 +520,9 @@ func TestMoveLocalDirected(t *testing.T) { } } - testMoveLocalDirected(t, test, g) + t.Run(test.name, func(t *testing.T) { + testMoveLocalDirected(t, test, g) + }) } } @@ -525,7 +539,9 @@ func TestMoveLocalWeightedDirected(t *testing.T) { } } - testMoveLocalDirected(t, test, g) + t.Run(test.name, func(t *testing.T) { + testMoveLocalDirected(t, test, g) + }) } } @@ -570,7 +586,9 @@ func TestModularizeDirected(t *testing.T) { } } - testModularizeDirected(t, test, g) + t.Run(test.name, func(t *testing.T) { + testModularizeDirected(t, test, g) + }) } } @@ -587,7 +605,9 @@ func TestModularizeWeightedDirected(t *testing.T) { } } - testModularizeDirected(t, test, g) + t.Run(test.name, func(t *testing.T) { + testModularizeDirected(t, test, g) + }) } } diff --git a/graph/community/louvain_test.go b/graph/community/louvain_test.go index e03a48d9..cdf01dca 100644 --- a/graph/community/louvain_test.go +++ b/graph/community/louvain_test.go @@ -7,11 +7,10 @@ package community import ( "fmt" - "golang.org/x/exp/rand" - "gonum.org/v1/gonum/graph" "gonum.org/v1/gonum/graph/graphs/gen" "gonum.org/v1/gonum/graph/simple" + "gonum.org/v1/gonum/internal/rand" ) // intset is an integer set. diff --git a/graph/community/louvain_undirected.go b/graph/community/louvain_undirected.go index 169f978d..ad17cc52 100644 --- a/graph/community/louvain_undirected.go +++ b/graph/community/louvain_undirected.go @@ -8,12 +8,11 @@ import ( "math" "slices" - "golang.org/x/exp/rand" - "gonum.org/v1/gonum/graph" "gonum.org/v1/gonum/graph/internal/set" "gonum.org/v1/gonum/graph/iterator" "gonum.org/v1/gonum/internal/order" + "gonum.org/v1/gonum/internal/rand" ) // qUndirected returns the modularity Q score of the graph g subdivided into the diff --git a/graph/community/louvain_undirected_multiplex.go b/graph/community/louvain_undirected_multiplex.go index 509b17db..90e040a3 100644 --- a/graph/community/louvain_undirected_multiplex.go +++ b/graph/community/louvain_undirected_multiplex.go @@ -8,12 +8,11 @@ import ( "fmt" "math" - "golang.org/x/exp/rand" - "gonum.org/v1/gonum/graph" "gonum.org/v1/gonum/graph/internal/set" "gonum.org/v1/gonum/graph/iterator" "gonum.org/v1/gonum/internal/order" + "gonum.org/v1/gonum/internal/rand" ) // UndirectedMultiplex is an undirected multiplex graph. diff --git a/graph/community/louvain_undirected_multiplex_test.go b/graph/community/louvain_undirected_multiplex_test.go index fc1c3062..da3c18c3 100644 --- a/graph/community/louvain_undirected_multiplex_test.go +++ b/graph/community/louvain_undirected_multiplex_test.go @@ -11,13 +11,12 @@ import ( "slices" "testing" - "golang.org/x/exp/rand" - "gonum.org/v1/gonum/floats" "gonum.org/v1/gonum/floats/scalar" "gonum.org/v1/gonum/graph" "gonum.org/v1/gonum/graph/simple" "gonum.org/v1/gonum/internal/order" + "gonum.org/v1/gonum/internal/rand" ) var communityUndirectedMultiplexQTests = []struct { diff --git a/graph/community/louvain_undirected_test.go b/graph/community/louvain_undirected_test.go index a36493cb..82647ccf 100644 --- a/graph/community/louvain_undirected_test.go +++ b/graph/community/louvain_undirected_test.go @@ -10,12 +10,11 @@ import ( "slices" "testing" - "golang.org/x/exp/rand" - "gonum.org/v1/gonum/floats/scalar" "gonum.org/v1/gonum/graph" "gonum.org/v1/gonum/graph/simple" "gonum.org/v1/gonum/internal/order" + "gonum.org/v1/gonum/internal/rand" ) type communityUndirectedQTest struct { @@ -153,16 +152,15 @@ var communityUndirectedQTests = []communityUndirectedQTest{ }, }, { - q: 0.3496877054569362, + q: 0.3707264957264957, communities: [][]graph.Node{ {simple.Node(0), simple.Node(1), simple.Node(2), simple.Node(3), simple.Node(7), simple.Node(11), simple.Node(12), simple.Node(13), simple.Node(17), simple.Node(19), simple.Node(21)}, {simple.Node(4), simple.Node(10)}, {simple.Node(5), simple.Node(6), simple.Node(16)}, {simple.Node(8), simple.Node(9), simple.Node(14), simple.Node(15), simple.Node(18), simple.Node(20), simple.Node(22), simple.Node(30), simple.Node(32), simple.Node(33)}, - {simple.Node(23), simple.Node(25)}, - {simple.Node(24), simple.Node(27)}, + {simple.Node(23), simple.Node(27)}, + {simple.Node(24), simple.Node(25), simple.Node(28), simple.Node(31)}, {simple.Node(26), simple.Node(29)}, - {simple.Node(28), simple.Node(31)}, }, }, { @@ -275,7 +273,9 @@ func TestCommunityQUndirected(t *testing.T) { } } - testCommunityQUndirected(t, test, g) + t.Run(test.name, func(t *testing.T) { + testCommunityQUndirected(t, test, g) + }) } } @@ -292,7 +292,9 @@ func TestCommunityQWeightedUndirected(t *testing.T) { } } - testCommunityQUndirected(t, test, g) + t.Run(test.name, func(t *testing.T) { + testCommunityQUndirected(t, test, g) + }) } } @@ -328,7 +330,9 @@ func TestCommunityDeltaQUndirected(t *testing.T) { } } - testCommunityDeltaQUndirected(t, test, g) + t.Run(test.name, func(t *testing.T) { + testCommunityDeltaQUndirected(t, test, g) + }) } } @@ -345,7 +349,9 @@ func TestCommunityDeltaQWeightedUndirected(t *testing.T) { } } - testCommunityDeltaQUndirected(t, test, g) + t.Run(test.name, func(t *testing.T) { + testCommunityDeltaQUndirected(t, test, g) + }) } } @@ -453,7 +459,9 @@ func TestReduceQConsistencyUndirected(t *testing.T) { } } - testReduceQConsistencyUndirected(t, test, g) + t.Run(test.name, func(t *testing.T) { + testReduceQConsistencyUndirected(t, test, g) + }) } } @@ -470,7 +478,9 @@ func TestReduceQConsistencyWeightedUndirected(t *testing.T) { } } - testReduceQConsistencyUndirected(t, test, g) + t.Run(test.name, func(t *testing.T) { + testReduceQConsistencyUndirected(t, test, g) + }) } } @@ -571,7 +581,9 @@ func TestMoveLocalUndirected(t *testing.T) { } } - testMoveLocalUndirected(t, test, g) + t.Run(test.name, func(t *testing.T) { + testMoveLocalUndirected(t, test, g) + }) } } @@ -588,7 +600,9 @@ func TestMoveLocalWeightedUndirected(t *testing.T) { } } - testMoveLocalUndirected(t, test, g) + t.Run(test.name, func(t *testing.T) { + testMoveLocalUndirected(t, test, g) + }) } } @@ -633,7 +647,9 @@ func TestModularizeUndirected(t *testing.T) { } } - testModularizeUndirected(t, test, g) + t.Run(test.name, func(t *testing.T) { + testModularizeUndirected(t, test, g) + }) } } @@ -650,7 +666,9 @@ func TestModularizeWeightedUndirected(t *testing.T) { } } - testModularizeUndirected(t, test, g) + t.Run(test.name, func(t *testing.T) { + testModularizeUndirected(t, test, g) + }) } } diff --git a/graph/complement_test.go b/graph/complement_test.go index ab57138e..d8295f4f 100644 --- a/graph/complement_test.go +++ b/graph/complement_test.go @@ -8,12 +8,11 @@ import ( "fmt" "testing" - "golang.org/x/exp/rand" - "gonum.org/v1/gonum/graph" "gonum.org/v1/gonum/graph/graphs/gen" "gonum.org/v1/gonum/graph/iterator" "gonum.org/v1/gonum/graph/simple" + "gonum.org/v1/gonum/internal/rand" ) var complementTests = []struct { diff --git a/graph/encoding/dot/bench_test.go b/graph/encoding/dot/bench_test.go index 1ac21a32..b7a82a51 100644 --- a/graph/encoding/dot/bench_test.go +++ b/graph/encoding/dot/bench_test.go @@ -8,12 +8,11 @@ import ( "fmt" "testing" - "golang.org/x/exp/rand" - "gonum.org/v1/gonum/graph" "gonum.org/v1/gonum/graph/graphs/gen" "gonum.org/v1/gonum/graph/multi" "gonum.org/v1/gonum/graph/simple" + "gonum.org/v1/gonum/internal/rand" ) var ( diff --git a/graph/flow/control_flow_bench_test.go b/graph/flow/control_flow_bench_test.go index 3bf695d7..5ac8d0d1 100644 --- a/graph/flow/control_flow_bench_test.go +++ b/graph/flow/control_flow_bench_test.go @@ -13,8 +13,6 @@ import ( "strings" "testing" - "golang.org/x/exp/rand" - "gonum.org/v1/gonum/graph" "gonum.org/v1/gonum/graph/encoding" "gonum.org/v1/gonum/graph/encoding/dot" @@ -22,6 +20,7 @@ import ( "gonum.org/v1/gonum/graph/iterator" "gonum.org/v1/gonum/graph/simple" "gonum.org/v1/gonum/graph/topo" + "gonum.org/v1/gonum/internal/rand" ) var slta = flag.Bool("slta", false, "specify DominatorsSLT benchmark") diff --git a/graph/formats/rdf/graph_test.go b/graph/formats/rdf/graph_test.go index 6af24a0c..0cc2cb47 100644 --- a/graph/formats/rdf/graph_test.go +++ b/graph/formats/rdf/graph_test.go @@ -11,8 +11,6 @@ import ( "strings" "testing" - "golang.org/x/exp/rand" - "github.com/google/go-cmp/cmp" "gonum.org/v1/gonum/graph" @@ -21,6 +19,7 @@ import ( "gonum.org/v1/gonum/graph/iterator" "gonum.org/v1/gonum/graph/multi" "gonum.org/v1/gonum/graph/testgraph" + "gonum.org/v1/gonum/internal/rand" ) func graphBuilder(nodes []graph.Node, edges []testgraph.WeightedLine, _, _ float64) (g graph.Graph, n []graph.Node, e []testgraph.Edge, s, a float64, ok bool) { diff --git a/graph/formats/rdf/iso_canonical_test.go b/graph/formats/rdf/iso_canonical_test.go index b65b8a9b..ce68ae2d 100644 --- a/graph/formats/rdf/iso_canonical_test.go +++ b/graph/formats/rdf/iso_canonical_test.go @@ -20,7 +20,7 @@ import ( "text/tabwriter" "time" - "golang.org/x/exp/rand" + "gonum.org/v1/gonum/internal/rand" ) var ( diff --git a/graph/formats/rdf/query_test.go b/graph/formats/rdf/query_test.go index a8904f26..46b59267 100644 --- a/graph/formats/rdf/query_test.go +++ b/graph/formats/rdf/query_test.go @@ -10,9 +10,8 @@ import ( "strings" "testing" - "golang.org/x/exp/rand" - "gonum.org/v1/gonum/internal/order" + "gonum.org/v1/gonum/internal/rand" ) var andTests = []struct { diff --git a/graph/graphs/gen/batagelj_brandes.go b/graph/graphs/gen/batagelj_brandes.go index e637bbc3..af449bf0 100644 --- a/graph/graphs/gen/batagelj_brandes.go +++ b/graph/graphs/gen/batagelj_brandes.go @@ -11,9 +11,8 @@ import ( "fmt" "math" - "golang.org/x/exp/rand" - "gonum.org/v1/gonum/graph" + "gonum.org/v1/gonum/internal/rand" ) // Gnp constructs a Gilbert’s model subgraph in the destination, dst, of order n. Edges diff --git a/graph/graphs/gen/duplication.go b/graph/graphs/gen/duplication.go index 06ce3931..0efcd94c 100644 --- a/graph/graphs/gen/duplication.go +++ b/graph/graphs/gen/duplication.go @@ -8,10 +8,9 @@ import ( "fmt" "math" - "golang.org/x/exp/rand" - "gonum.org/v1/gonum/graph" "gonum.org/v1/gonum/internal/order" + "gonum.org/v1/gonum/internal/rand" ) // UndirectedMutator is an undirected graph builder that can remove edges. diff --git a/graph/graphs/gen/holme_kim.go b/graph/graphs/gen/holme_kim.go index 8f49995d..74500541 100644 --- a/graph/graphs/gen/holme_kim.go +++ b/graph/graphs/gen/holme_kim.go @@ -8,10 +8,9 @@ import ( "errors" "fmt" - "golang.org/x/exp/rand" - "gonum.org/v1/gonum/graph" "gonum.org/v1/gonum/graph/simple" + "gonum.org/v1/gonum/internal/rand" "gonum.org/v1/gonum/stat/sampleuv" ) diff --git a/graph/graphs/gen/small_world.go b/graph/graphs/gen/small_world.go index 1846ef10..404d9d31 100644 --- a/graph/graphs/gen/small_world.go +++ b/graph/graphs/gen/small_world.go @@ -9,9 +9,8 @@ import ( "fmt" "math" - "golang.org/x/exp/rand" - "gonum.org/v1/gonum/graph" + "gonum.org/v1/gonum/internal/rand" "gonum.org/v1/gonum/stat/sampleuv" ) diff --git a/graph/layout/eades.go b/graph/layout/eades.go index 7a83d165..ae14918a 100644 --- a/graph/layout/eades.go +++ b/graph/layout/eades.go @@ -7,9 +7,8 @@ package layout import ( "math" - "golang.org/x/exp/rand" - "gonum.org/v1/gonum/graph" + "gonum.org/v1/gonum/internal/rand" "gonum.org/v1/gonum/spatial/barneshut" "gonum.org/v1/gonum/spatial/r2" ) diff --git a/graph/layout/eades_test.go b/graph/layout/eades_test.go index 19c62cec..049f95f9 100644 --- a/graph/layout/eades_test.go +++ b/graph/layout/eades_test.go @@ -8,10 +8,9 @@ import ( "path/filepath" "testing" - "golang.org/x/exp/rand" - "gonum.org/v1/gonum/graph" "gonum.org/v1/gonum/graph/simple" + "gonum.org/v1/gonum/internal/rand" "gonum.org/v1/gonum/spatial/r2" "gonum.org/v1/plot" "gonum.org/v1/plot/vg" @@ -163,7 +162,7 @@ func TestEadesR2(t *testing.T) { return orderedGraph{g} }(), param: EadesR2{Repulsion: 1, Rate: 1, Updates: 100, Theta: 0.1, Src: rand.NewSource(1)}, - wantIters: 99, + wantIters: 96, }, { @@ -192,7 +191,7 @@ func TestEadesR2(t *testing.T) { } return orderedGraph{g} }(), - param: EadesR2{Repulsion: 1, Rate: 0.1, Updates: 100, Theta: 0.1, Src: rand.NewSource(1)}, + param: EadesR2{Repulsion: 1, Rate: 0.01, Updates: 100, Theta: 0.1, Src: rand.NewSource(1)}, wantIters: 100, }, } diff --git a/graph/layout/testdata/sheet_golden.png b/graph/layout/testdata/sheet_golden.png index 03540869..e39052ac 100644 Binary files a/graph/layout/testdata/sheet_golden.png and b/graph/layout/testdata/sheet_golden.png differ diff --git a/graph/layout/testdata/square_golden.png b/graph/layout/testdata/square_golden.png index dd97e3be..6fefc76c 100644 Binary files a/graph/layout/testdata/square_golden.png and b/graph/layout/testdata/square_golden.png differ diff --git a/graph/layout/testdata/tetrahedron_golden.png b/graph/layout/testdata/tetrahedron_golden.png index ec555a75..ae8b8dee 100644 Binary files a/graph/layout/testdata/tetrahedron_golden.png and b/graph/layout/testdata/tetrahedron_golden.png differ diff --git a/graph/layout/testdata/tube-steep_golden.png b/graph/layout/testdata/tube-steep_golden.png index bfa1ceab..2433d8f2 100644 Binary files a/graph/layout/testdata/tube-steep_golden.png and b/graph/layout/testdata/tube-steep_golden.png differ diff --git a/graph/layout/testdata/tube_golden.png b/graph/layout/testdata/tube_golden.png index 7154d9ad..59b58769 100644 Binary files a/graph/layout/testdata/tube_golden.png and b/graph/layout/testdata/tube_golden.png differ diff --git a/graph/layout/testdata/wp_page_golden.png b/graph/layout/testdata/wp_page_golden.png index 8ffa64f8..c1df2b1c 100644 Binary files a/graph/layout/testdata/wp_page_golden.png and b/graph/layout/testdata/wp_page_golden.png differ diff --git a/graph/multi/directed_test.go b/graph/multi/directed_test.go index e11631d9..73f79af4 100644 --- a/graph/multi/directed_test.go +++ b/graph/multi/directed_test.go @@ -8,13 +8,12 @@ import ( "math" "testing" - "golang.org/x/exp/rand" - "gonum.org/v1/gonum/graph" "gonum.org/v1/gonum/graph/internal/set" "gonum.org/v1/gonum/graph/iterator" "gonum.org/v1/gonum/graph/multi" "gonum.org/v1/gonum/graph/testgraph" + "gonum.org/v1/gonum/internal/rand" ) func directedBuilder(nodes []graph.Node, edges []testgraph.WeightedLine, _, _ float64) (g graph.Graph, n []graph.Node, e []testgraph.Edge, s, a float64, ok bool) { diff --git a/graph/multi/undirected_test.go b/graph/multi/undirected_test.go index e47a65f8..78c602b8 100644 --- a/graph/multi/undirected_test.go +++ b/graph/multi/undirected_test.go @@ -8,13 +8,12 @@ import ( "math" "testing" - "golang.org/x/exp/rand" - "gonum.org/v1/gonum/graph" "gonum.org/v1/gonum/graph/internal/set" "gonum.org/v1/gonum/graph/iterator" "gonum.org/v1/gonum/graph/multi" "gonum.org/v1/gonum/graph/testgraph" + "gonum.org/v1/gonum/internal/rand" ) const ( diff --git a/graph/multi/weighted_directed_test.go b/graph/multi/weighted_directed_test.go index 9e0be2ff..dec55d39 100644 --- a/graph/multi/weighted_directed_test.go +++ b/graph/multi/weighted_directed_test.go @@ -7,13 +7,12 @@ package multi_test import ( "testing" - "golang.org/x/exp/rand" - "gonum.org/v1/gonum/graph" "gonum.org/v1/gonum/graph/internal/set" "gonum.org/v1/gonum/graph/iterator" "gonum.org/v1/gonum/graph/multi" "gonum.org/v1/gonum/graph/testgraph" + "gonum.org/v1/gonum/internal/rand" ) func weightedDirectedBuilder(nodes []graph.Node, edges []testgraph.WeightedLine, self, absent float64) (g graph.Graph, n []graph.Node, e []testgraph.Edge, s, a float64, ok bool) { diff --git a/graph/multi/weighted_undirected_test.go b/graph/multi/weighted_undirected_test.go index 053c63c0..251a4a1c 100644 --- a/graph/multi/weighted_undirected_test.go +++ b/graph/multi/weighted_undirected_test.go @@ -7,13 +7,12 @@ package multi_test import ( "testing" - "golang.org/x/exp/rand" - "gonum.org/v1/gonum/graph" "gonum.org/v1/gonum/graph/internal/set" "gonum.org/v1/gonum/graph/iterator" "gonum.org/v1/gonum/graph/multi" "gonum.org/v1/gonum/graph/testgraph" + "gonum.org/v1/gonum/internal/rand" ) func weightedUndirectedBuilder(nodes []graph.Node, edges []testgraph.WeightedLine, self, absent float64) (g graph.Graph, n []graph.Node, e []testgraph.Edge, s, a float64, ok bool) { diff --git a/graph/network/page.go b/graph/network/page.go index 8c1634e6..34e1c6b0 100644 --- a/graph/network/page.go +++ b/graph/network/page.go @@ -7,10 +7,9 @@ package network import ( "math" - "golang.org/x/exp/rand" - "gonum.org/v1/gonum/floats" "gonum.org/v1/gonum/graph" + "gonum.org/v1/gonum/internal/rand" "gonum.org/v1/gonum/mat" ) diff --git a/graph/path/johnson_apsp.go b/graph/path/johnson_apsp.go index 9f54e051..2a3d03e3 100644 --- a/graph/path/johnson_apsp.go +++ b/graph/path/johnson_apsp.go @@ -7,10 +7,9 @@ package path import ( "math" - "golang.org/x/exp/rand" - "gonum.org/v1/gonum/graph" "gonum.org/v1/gonum/graph/simple" + "gonum.org/v1/gonum/internal/rand" ) // JohnsonAllPaths returns a shortest-path tree for shortest paths in the graph g. diff --git a/graph/path/shortest.go b/graph/path/shortest.go index 5b39db88..5de03a3a 100644 --- a/graph/path/shortest.go +++ b/graph/path/shortest.go @@ -8,11 +8,10 @@ import ( "math" "slices" - "golang.org/x/exp/rand" - "gonum.org/v1/gonum/floats/scalar" "gonum.org/v1/gonum/graph" "gonum.org/v1/gonum/graph/internal/set" + "gonum.org/v1/gonum/internal/rand" "gonum.org/v1/gonum/mat" ) diff --git a/graph/path/shortest_test.go b/graph/path/shortest_test.go index 41e8524a..7c3d204e 100644 --- a/graph/path/shortest_test.go +++ b/graph/path/shortest_test.go @@ -11,12 +11,11 @@ import ( "slices" "testing" - "golang.org/x/exp/rand" - "gonum.org/v1/gonum/graph" "gonum.org/v1/gonum/graph/graphs/gen" "gonum.org/v1/gonum/graph/simple" "gonum.org/v1/gonum/internal/order" + "gonum.org/v1/gonum/internal/rand" ) var shortestTests = []struct { diff --git a/graph/product/product_test.go b/graph/product/product_test.go index 81683fab..b1fa537f 100644 --- a/graph/product/product_test.go +++ b/graph/product/product_test.go @@ -9,12 +9,11 @@ import ( "fmt" "testing" - "golang.org/x/exp/rand" - "gonum.org/v1/gonum/graph" "gonum.org/v1/gonum/graph/encoding/dot" "gonum.org/v1/gonum/graph/graphs/gen" "gonum.org/v1/gonum/graph/simple" + "gonum.org/v1/gonum/internal/rand" ) func (n Node) DOTID() string { return fmt.Sprintf("(%d,%d)", n.A.ID(), n.B.ID()) } diff --git a/graph/set/uid/uid_test.go b/graph/set/uid/uid_test.go index f2122edb..3e247b83 100644 --- a/graph/set/uid/uid_test.go +++ b/graph/set/uid/uid_test.go @@ -9,7 +9,7 @@ import ( "math" "testing" - "golang.org/x/exp/rand" + "gonum.org/v1/gonum/internal/rand" ) func TestSetChurn(t *testing.T) { diff --git a/graph/simple/densegraph_test.go b/graph/simple/densegraph_test.go index 7f6275f7..8ad0d3dc 100644 --- a/graph/simple/densegraph_test.go +++ b/graph/simple/densegraph_test.go @@ -8,13 +8,12 @@ import ( "math" "testing" - "golang.org/x/exp/rand" - "gonum.org/v1/gonum/graph" "gonum.org/v1/gonum/graph/internal/set" "gonum.org/v1/gonum/graph/simple" "gonum.org/v1/gonum/graph/testgraph" "gonum.org/v1/gonum/internal/order" + "gonum.org/v1/gonum/internal/rand" ) func isZeroContiguousSet(nodes []graph.Node) bool { diff --git a/graph/simple/directed_test.go b/graph/simple/directed_test.go index 22d29a7d..f9d5436a 100644 --- a/graph/simple/directed_test.go +++ b/graph/simple/directed_test.go @@ -8,12 +8,11 @@ import ( "math" "testing" - "golang.org/x/exp/rand" - "gonum.org/v1/gonum/graph" "gonum.org/v1/gonum/graph/internal/set" "gonum.org/v1/gonum/graph/simple" "gonum.org/v1/gonum/graph/testgraph" + "gonum.org/v1/gonum/internal/rand" ) func directedBuilder(nodes []graph.Node, edges []testgraph.WeightedLine, _, _ float64) (g graph.Graph, n []graph.Node, e []testgraph.Edge, s, a float64, ok bool) { diff --git a/graph/simple/undirected_test.go b/graph/simple/undirected_test.go index e6df4184..ef5dcf42 100644 --- a/graph/simple/undirected_test.go +++ b/graph/simple/undirected_test.go @@ -8,12 +8,11 @@ import ( "math" "testing" - "golang.org/x/exp/rand" - "gonum.org/v1/gonum/graph" "gonum.org/v1/gonum/graph/internal/set" "gonum.org/v1/gonum/graph/simple" "gonum.org/v1/gonum/graph/testgraph" + "gonum.org/v1/gonum/internal/rand" ) const ( diff --git a/graph/simple/weighted_directed_test.go b/graph/simple/weighted_directed_test.go index 34bd6d41..78ae2783 100644 --- a/graph/simple/weighted_directed_test.go +++ b/graph/simple/weighted_directed_test.go @@ -8,12 +8,11 @@ import ( "math" "testing" - "golang.org/x/exp/rand" - "gonum.org/v1/gonum/graph" "gonum.org/v1/gonum/graph/internal/set" "gonum.org/v1/gonum/graph/simple" "gonum.org/v1/gonum/graph/testgraph" + "gonum.org/v1/gonum/internal/rand" ) func weightedDirectedBuilder(nodes []graph.Node, edges []testgraph.WeightedLine, self, absent float64) (g graph.Graph, n []graph.Node, e []testgraph.Edge, s, a float64, ok bool) { diff --git a/graph/simple/weighted_undirected_test.go b/graph/simple/weighted_undirected_test.go index 3eff1dff..d3556c8e 100644 --- a/graph/simple/weighted_undirected_test.go +++ b/graph/simple/weighted_undirected_test.go @@ -8,12 +8,11 @@ import ( "math" "testing" - "golang.org/x/exp/rand" - "gonum.org/v1/gonum/graph" "gonum.org/v1/gonum/graph/internal/set" "gonum.org/v1/gonum/graph/simple" "gonum.org/v1/gonum/graph/testgraph" + "gonum.org/v1/gonum/internal/rand" ) func weightedUndirectedBuilder(nodes []graph.Node, edges []testgraph.WeightedLine, self, absent float64) (g graph.Graph, n []graph.Node, e []testgraph.Edge, s, a float64, ok bool) { diff --git a/graph/testgraph/testgraph.go b/graph/testgraph/testgraph.go index 576cc806..cb7fab5c 100644 --- a/graph/testgraph/testgraph.go +++ b/graph/testgraph/testgraph.go @@ -13,12 +13,11 @@ import ( "slices" "testing" - "golang.org/x/exp/rand" - "gonum.org/v1/gonum/floats/scalar" "gonum.org/v1/gonum/graph" "gonum.org/v1/gonum/graph/internal/set" "gonum.org/v1/gonum/internal/order" + "gonum.org/v1/gonum/internal/rand" "gonum.org/v1/gonum/mat" ) @@ -1614,6 +1613,9 @@ func AddEdges(t *testing.T, n int, g EdgeAdder, newNode func(id int64) graph.Nod var v graph.Node for { v = newNode(rnd.Int63n(int64(n))) + if g.Edge(u.ID(), v.ID()) != nil { + continue + } if canLoop || u.ID() != v.ID() { break } @@ -1678,6 +1680,9 @@ func AddWeightedEdges(t *testing.T, n int, g WeightedEdgeAdder, w float64, newNo var v graph.Node for { v = newNode(rnd.Int63n(int64(n))) + if g.Edge(u.ID(), v.ID()) != nil { + continue + } if canLoop || u.ID() != v.ID() { break } diff --git a/graph/testgraph/testgraph_test.go b/graph/testgraph/testgraph_test.go index 54ccc22e..92ed8458 100644 --- a/graph/testgraph/testgraph_test.go +++ b/graph/testgraph/testgraph_test.go @@ -26,23 +26,23 @@ var randomNodesTests = []struct { n: 1, seed: 1, new: newSimpleNode, - want: []graph.Node{simple.Node(-106976941678315313)}, + want: []graph.Node{simple.Node(-1890700816702069259)}, }, { n: 1, seed: 2, new: newSimpleNode, - want: []graph.Node{simple.Node(6816453162648937526)}, + want: []graph.Node{simple.Node(-9080340245984136982)}, }, { n: 4, seed: 1, new: newSimpleNode, want: []graph.Node{ - simple.Node(-106976941678315313), - simple.Node(867649948573917593), - simple.Node(-4246677790793934368), - simple.Node(406519965772129914), + simple.Node(-1890700816702069259), + simple.Node(7618499319381327068), + simple.Node(-8006975346196781910), + simple.Node(1952627761515405933), }, }, { @@ -50,10 +50,10 @@ var randomNodesTests = []struct { seed: 2, new: newSimpleNode, want: []graph.Node{ - simple.Node(6816453162648937526), - simple.Node(-4921844272880608907), - simple.Node(159088832891557680), - simple.Node(-2611333848016927708), + simple.Node(-9080340245984136982), + simple.Node(8080303881793168789), + simple.Node(6742726861847166348), + simple.Node(-1570298006490451715), }, }, } diff --git a/graph/topo/bench_test.go b/graph/topo/bench_test.go index 337af078..57612577 100644 --- a/graph/topo/bench_test.go +++ b/graph/topo/bench_test.go @@ -8,11 +8,10 @@ import ( "fmt" "testing" - "golang.org/x/exp/rand" - "gonum.org/v1/gonum/graph" "gonum.org/v1/gonum/graph/graphs/gen" "gonum.org/v1/gonum/graph/simple" + "gonum.org/v1/gonum/internal/rand" ) var ( diff --git a/integrate/simpsons_test.go b/integrate/simpsons_test.go index 3b5e02e6..bb8ff0e9 100644 --- a/integrate/simpsons_test.go +++ b/integrate/simpsons_test.go @@ -8,9 +8,8 @@ import ( "math" "testing" - "golang.org/x/exp/rand" - "gonum.org/v1/gonum/integrate/testquad" + "gonum.org/v1/gonum/internal/rand" ) func TestSimpsons(t *testing.T) { diff --git a/integrate/trapezoidal_test.go b/integrate/trapezoidal_test.go index bda74518..0c0a2f8b 100644 --- a/integrate/trapezoidal_test.go +++ b/integrate/trapezoidal_test.go @@ -8,9 +8,8 @@ import ( "math" "testing" - "golang.org/x/exp/rand" - "gonum.org/v1/gonum/integrate/testquad" + "gonum.org/v1/gonum/internal/rand" ) func TestTrapezoidal(t *testing.T) { diff --git a/internal/asm/f64/asm_test.go b/internal/asm/f64/asm_test.go index 93b33826..bd7a9737 100644 --- a/internal/asm/f64/asm_test.go +++ b/internal/asm/f64/asm_test.go @@ -8,9 +8,8 @@ import ( "math" "testing" - "golang.org/x/exp/rand" - "gonum.org/v1/gonum/floats/scalar" + "gonum.org/v1/gonum/internal/rand" ) const ( diff --git a/internal/asm/f64/dot_test.go b/internal/asm/f64/dot_test.go index 28c08633..3a2dc8c1 100644 --- a/internal/asm/f64/dot_test.go +++ b/internal/asm/f64/dot_test.go @@ -9,9 +9,8 @@ import ( "math" "testing" - "golang.org/x/exp/rand" - . "gonum.org/v1/gonum/internal/asm/f64" + "gonum.org/v1/gonum/internal/rand" ) func TestDotUnitary(t *testing.T) { diff --git a/internal/asm/f64/scal_test.go b/internal/asm/f64/scal_test.go index fc4d7cfc..4ef6dc40 100644 --- a/internal/asm/f64/scal_test.go +++ b/internal/asm/f64/scal_test.go @@ -8,10 +8,9 @@ import ( "fmt" "testing" - "golang.org/x/exp/rand" - "gonum.org/v1/gonum/floats/scalar" . "gonum.org/v1/gonum/internal/asm/f64" + "gonum.org/v1/gonum/internal/rand" ) var scalTests = []struct { diff --git a/internal/rand/rand.go b/internal/rand/rand.go new file mode 100644 index 00000000..521d8f40 --- /dev/null +++ b/internal/rand/rand.go @@ -0,0 +1,393 @@ +// Copyright ©2024 The Gonum Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// Copyright 2009 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// Package rand implements pseudo-random number generators. +// +// Random numbers are generated by a Source. Top-level functions, such as +// Float64 and Int, use a default shared Source that produces a deterministic +// sequence of values each time a program is run. Use the Seed function to +// initialize the default Source if different behavior is required for each run. +// The default Source, a LockedSource, is safe for concurrent use by multiple +// goroutines, but Sources created by NewSource are not. However, Sources are small +// and it is reasonable to have a separate Source for each goroutine, seeded +// differently, to avoid locking. +// +// For random numbers suitable for security-sensitive work, see the crypto/rand +// package. +package rand + +import ( + "math/rand/v2" + "sync" +) + +// A Source represents a source of uniformly-distributed +// pseudo-random int64 values in the range [0, 1<<64). +type Source interface { + Uint64() uint64 + Seed(seed uint64) +} + +// NewSource returns a new pseudo-random Source seeded with the given value. +func NewSource(seed uint64) Source { + return &pcgShim{rand.NewPCG(seed, seed)} +} + +type pcgShim struct { + *rand.PCG +} + +func (p *pcgShim) Seed(seed uint64) { + p.PCG.Seed(seed, seed) +} + +// A Rand is a source of random numbers. +type Rand struct { + src Source + + // readVal contains remainder of 64-bit integer used for bytes + // generation during most recent Read call. + // It is saved so next Read call can start where the previous + // one finished. + readVal uint64 + // readPos indicates the number of low-order bytes of readVal + // that are still valid. + readPos int8 +} + +// New returns a new Rand that uses random values from src +// to generate other random values. +func New(src Source) *Rand { + return &Rand{src: src} +} + +func (r *Rand) NormFloat64() float64 { + return rand.New(r.src).NormFloat64() +} + +func (r *Rand) ExpFloat64() float64 { + return rand.New(r.src).ExpFloat64() +} + +// Seed uses the provided seed value to initialize the generator to a deterministic state. +// Seed should not be called concurrently with any other Rand method. +func (r *Rand) Seed(seed uint64) { + if lk, ok := r.src.(*LockedSource); ok { + lk.seedPos(seed, &r.readPos) + return + } + + r.src.Seed(seed) + r.readPos = 0 +} + +// Uint64 returns a pseudo-random 64-bit integer as a uint64. +func (r *Rand) Uint64() uint64 { return r.src.Uint64() } + +// Int63 returns a non-negative pseudo-random 63-bit integer as an int64. +func (r *Rand) Int63() int64 { return int64(r.src.Uint64() &^ (1 << 63)) } + +// Uint32 returns a pseudo-random 32-bit value as a uint32. +func (r *Rand) Uint32() uint32 { return uint32(r.Uint64() >> 32) } + +// Int31 returns a non-negative pseudo-random 31-bit integer as an int32. +func (r *Rand) Int31() int32 { return int32(r.Uint64() >> 33) } + +// Int returns a non-negative pseudo-random int. +func (r *Rand) Int() int { + u := uint(r.Uint64()) + return int(u << 1 >> 1) // clear sign bit. +} + +const maxUint64 = (1 << 64) - 1 + +// Uint64n returns, as a uint64, a pseudo-random number in [0,n). +// It is guaranteed more uniform than taking a Source value mod n +// for any n that is not a power of 2. +func (r *Rand) Uint64n(n uint64) uint64 { + if n&(n-1) == 0 { // n is power of two, can mask + if n == 0 { + panic("invalid argument to Uint64n") + } + return r.Uint64() & (n - 1) + } + // If n does not divide v, to avoid bias we must not use + // a v that is within maxUint64%n of the top of the range. + v := r.Uint64() + if v > maxUint64-n { // Fast check. + ceiling := maxUint64 - maxUint64%n + for v >= ceiling { + v = r.Uint64() + } + } + + return v % n +} + +// Int63n returns, as an int64, a non-negative pseudo-random number in [0,n). +// It panics if n <= 0. +func (r *Rand) Int63n(n int64) int64 { + if n <= 0 { + panic("invalid argument to Int63n") + } + return int64(r.Uint64n(uint64(n))) +} + +// Int31n returns, as an int32, a non-negative pseudo-random number in [0,n). +// It panics if n <= 0. +func (r *Rand) Int31n(n int32) int32 { + if n <= 0 { + panic("invalid argument to Int31n") + } + // TODO: Avoid some 64-bit ops to make it more efficient on 32-bit machines. + return int32(r.Uint64n(uint64(n))) +} + +// Intn returns, as an int, a non-negative pseudo-random number in [0,n). +// It panics if n <= 0. +func (r *Rand) Intn(n int) int { + if n <= 0 { + panic("invalid argument to Intn") + } + // TODO: Avoid some 64-bit ops to make it more efficient on 32-bit machines. + return int(r.Uint64n(uint64(n))) +} + +// Float64 returns, as a float64, a pseudo-random number in [0.0,1.0). +func (r *Rand) Float64() float64 { + // There is one bug in the value stream: r.Int63() may be so close + // to 1<<63 that the division rounds up to 1.0, and we've guaranteed + // that the result is always less than 1.0. + // + // We tried to fix this by mapping 1.0 back to 0.0, but since float64 + // values near 0 are much denser than near 1, mapping 1 to 0 caused + // a theoretically significant overshoot in the probability of returning 0. + // Instead of that, if we round up to 1, just try again. + // Getting 1 only happens 1/2⁵³ of the time, so most clients + // will not observe it anyway. +again: + f := float64(r.Uint64n(1<<53)) / (1 << 53) + if f == 1.0 { + goto again // resample; this branch is taken O(never) + } + return f +} + +// Float32 returns, as a float32, a pseudo-random number in [0.0,1.0). +func (r *Rand) Float32() float32 { + // We do not want to return 1.0. + // This only happens 1/2²⁴ of the time (plus the 1/2⁵³ of the time in Float64). +again: + f := float32(r.Float64()) + if f == 1 { + goto again // resample; this branch is taken O(very rarely) + } + return f +} + +// Perm returns, as a slice of n ints, a pseudo-random permutation of the integers [0,n). +func (r *Rand) Perm(n int) []int { + m := make([]int, n) + // In the following loop, the iteration when i=0 always swaps m[0] with m[0]. + // A change to remove this useless iteration is to assign 1 to i in the init + // statement. But Perm also effects r. Making this change will affect + // the final state of r. So this change can't be made for compatibility + // reasons for Go 1. + for i := 0; i < n; i++ { + j := r.Intn(i + 1) + m[i] = m[j] + m[j] = i + } + return m +} + +// Shuffle pseudo-randomizes the order of elements. +// n is the number of elements. Shuffle panics if n < 0. +// swap swaps the elements with indexes i and j. +func (r *Rand) Shuffle(n int, swap func(i, j int)) { + if n < 0 { + panic("invalid argument to Shuffle") + } + + // Fisher-Yates shuffle: https://en.wikipedia.org/wiki/Fisher%E2%80%93Yates_shuffle + // Shuffle really ought not be called with n that doesn't fit in 32 bits. + // Not only will it take a very long time, but with 2³¹! possible permutations, + // there's no way that any PRNG can have a big enough internal state to + // generate even a minuscule percentage of the possible permutations. + // Nevertheless, the right API signature accepts an int n, so handle it as best we can. + i := n - 1 + for ; i > 1<<31-1-1; i-- { + j := int(r.Int63n(int64(i + 1))) + swap(i, j) + } + for ; i > 0; i-- { + j := int(r.Int31n(int32(i + 1))) + swap(i, j) + } +} + +// Read generates len(p) random bytes and writes them into p. It +// always returns len(p) and a nil error. +// Read should not be called concurrently with any other Rand method unless +// the underlying source is a LockedSource. +func (r *Rand) Read(p []byte) (n int, err error) { + if lk, ok := r.src.(*LockedSource); ok { + return lk.Read(p, &r.readVal, &r.readPos) + } + return read(p, r.src, &r.readVal, &r.readPos) +} + +func read(p []byte, src Source, readVal *uint64, readPos *int8) (n int, err error) { + pos := *readPos + val := *readVal + rng, _ := src.(*pcgShim) + for n = 0; n < len(p); n++ { + if pos == 0 { + if rng != nil { + val = rng.Uint64() + } else { + val = src.Uint64() + } + pos = 8 + } + p[n] = byte(val) + val >>= 8 + pos-- + } + *readPos = pos + *readVal = val + return +} + +/* + * Top-level convenience functions + */ + +var globalRand = New(&LockedSource{src: *NewSource(1).(*pcgShim)}) + +// Type assert that globalRand's source is a LockedSource whose src is a PCGSource. +var _ pcgShim = globalRand.src.(*LockedSource).src + +// Seed uses the provided seed value to initialize the default Source to a +// deterministic state. If Seed is not called, the generator behaves as +// if seeded by Seed(1). +// Seed, unlike the Rand.Seed method, is safe for concurrent use. +func Seed(seed uint64) { globalRand.Seed(seed) } + +// Int63 returns a non-negative pseudo-random 63-bit integer as an int64 +// from the default Source. +func Int63() int64 { return globalRand.Int63() } + +// Uint32 returns a pseudo-random 32-bit value as a uint32 +// from the default Source. +func Uint32() uint32 { return globalRand.Uint32() } + +// Uint64 returns a pseudo-random 64-bit value as a uint64 +// from the default Source. +func Uint64() uint64 { return globalRand.Uint64() } + +// Int31 returns a non-negative pseudo-random 31-bit integer as an int32 +// from the default Source. +func Int31() int32 { return globalRand.Int31() } + +// Int returns a non-negative pseudo-random int from the default Source. +func Int() int { return globalRand.Int() } + +// Int63n returns, as an int64, a non-negative pseudo-random number in [0,n) +// from the default Source. +// It panics if n <= 0. +func Int63n(n int64) int64 { return globalRand.Int63n(n) } + +// Int31n returns, as an int32, a non-negative pseudo-random number in [0,n) +// from the default Source. +// It panics if n <= 0. +func Int31n(n int32) int32 { return globalRand.Int31n(n) } + +// Intn returns, as an int, a non-negative pseudo-random number in [0,n) +// from the default Source. +// It panics if n <= 0. +func Intn(n int) int { return globalRand.Intn(n) } + +// Float64 returns, as a float64, a pseudo-random number in [0.0,1.0) +// from the default Source. +func Float64() float64 { return globalRand.Float64() } + +// Float32 returns, as a float32, a pseudo-random number in [0.0,1.0) +// from the default Source. +func Float32() float32 { return globalRand.Float32() } + +// Perm returns, as a slice of n ints, a pseudo-random permutation of the integers [0,n) +// from the default Source. +func Perm(n int) []int { return globalRand.Perm(n) } + +// Shuffle pseudo-randomizes the order of elements using the default Source. +// n is the number of elements. Shuffle panics if n < 0. +// swap swaps the elements with indexes i and j. +func Shuffle(n int, swap func(i, j int)) { globalRand.Shuffle(n, swap) } + +// Read generates len(p) random bytes from the default Source and +// writes them into p. It always returns len(p) and a nil error. +// Read, unlike the Rand.Read method, is safe for concurrent use. +func Read(p []byte) (n int, err error) { return globalRand.Read(p) } + +// NormFloat64 returns a normally distributed float64 in the range +// [-math.MaxFloat64, +math.MaxFloat64] with +// standard normal distribution (mean = 0, stddev = 1) +// from the default Source. +// To produce a different normal distribution, callers can +// adjust the output using: +// +// sample = NormFloat64() * desiredStdDev + desiredMean +func NormFloat64() float64 { return globalRand.NormFloat64() } + +// ExpFloat64 returns an exponentially distributed float64 in the range +// (0, +math.MaxFloat64] with an exponential distribution whose rate parameter +// (lambda) is 1 and whose mean is 1/lambda (1) from the default Source. +// To produce a distribution with a different rate parameter, +// callers can adjust the output using: +// +// sample = ExpFloat64() / desiredRateParameter +func ExpFloat64() float64 { return globalRand.ExpFloat64() } + +// LockedSource is an implementation of Source that is concurrency-safe. +// A Rand using a LockedSource is safe for concurrent use. +// +// The zero value of LockedSource is valid, but should be seeded before use. +type LockedSource struct { + lk sync.Mutex + src pcgShim +} + +func (s *LockedSource) Uint64() (n uint64) { + s.lk.Lock() + n = s.src.Uint64() + s.lk.Unlock() + return +} + +func (s *LockedSource) Seed(seed uint64) { + s.lk.Lock() + s.src.Seed(seed) + s.lk.Unlock() +} + +// seedPos implements Seed for a LockedSource without a race condiiton. +func (s *LockedSource) seedPos(seed uint64, readPos *int8) { + s.lk.Lock() + s.src.Seed(seed) + *readPos = 0 + s.lk.Unlock() +} + +// Read implements Read for a LockedSource. +func (s *LockedSource) Read(p []byte, readVal *uint64, readPos *int8) (n int, err error) { + s.lk.Lock() + n, err = read(p, &s.src, readVal, readPos) + s.lk.Unlock() + return +} diff --git a/internal/rand/rand_test.go b/internal/rand/rand_test.go new file mode 100644 index 00000000..a528fc0e --- /dev/null +++ b/internal/rand/rand_test.go @@ -0,0 +1,368 @@ +// Copyright ©2024 The Gonum Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// Copyright 2009 The Go Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package rand + +import ( + "bytes" + "errors" + "fmt" + "io" + "math" + "os" + "runtime" + "strings" + "testing" + "testing/iotest" +) + +const ( + numTestSamples = 10000 +) + +type statsResults struct { + mean float64 + stddev float64 + closeEnough float64 + maxError float64 +} + +func nearEqual(a, b, closeEnough, maxError float64) bool { + absDiff := math.Abs(a - b) + if absDiff < closeEnough { // Necessary when one value is zero and one value is close to zero. + return true + } + return absDiff/max(math.Abs(a), math.Abs(b)) < maxError +} + +var testSeeds = []uint64{1, 1754801282, 1698661970, 1550503961} + +// checkSimilarDistribution returns success if the mean and stddev of the +// two statsResults are similar. +func (sr *statsResults) checkSimilarDistribution(expected *statsResults) error { + if !nearEqual(sr.mean, expected.mean, expected.closeEnough, expected.maxError) { + s := fmt.Sprintf("mean %v != %v (allowed error %v, %v)", sr.mean, expected.mean, expected.closeEnough, expected.maxError) + fmt.Println(s) + return errors.New(s) + } + if !nearEqual(sr.stddev, expected.stddev, expected.closeEnough, expected.maxError) { + s := fmt.Sprintf("stddev %v != %v (allowed error %v, %v)", sr.stddev, expected.stddev, expected.closeEnough, expected.maxError) + fmt.Println(s) + return errors.New(s) + } + return nil +} + +func getStatsResults(samples []float64) *statsResults { + res := new(statsResults) + var sum, squaresum float64 + for _, s := range samples { + sum += s + squaresum += s * s + } + res.mean = sum / float64(len(samples)) + res.stddev = math.Sqrt(squaresum/float64(len(samples)) - res.mean*res.mean) + return res +} + +func checkSampleDistribution(t *testing.T, samples []float64, expected *statsResults) { + t.Helper() + actual := getStatsResults(samples) + err := actual.checkSimilarDistribution(expected) + if err != nil { + t.Error(err) + } +} + +func checkSampleSliceDistributions(t *testing.T, samples []float64, nslices int, expected *statsResults) { + t.Helper() + chunk := len(samples) / nslices + for i := 0; i < nslices; i++ { + low := i * chunk + var high int + if i == nslices-1 { + high = len(samples) - 1 + } else { + high = (i + 1) * chunk + } + checkSampleDistribution(t, samples[low:high], expected) + } +} + +// +// Normal distribution tests +// + +func generateNormalSamples(nsamples int, mean, stddev float64, seed uint64) []float64 { + r := New(NewSource(seed)) + samples := make([]float64, nsamples) + for i := range samples { + samples[i] = r.NormFloat64()*stddev + mean + } + return samples +} + +func testNormalDistribution(t *testing.T, nsamples int, mean, stddev float64, seed uint64) { + //fmt.Printf("testing nsamples=%v mean=%v stddev=%v seed=%v\n", nsamples, mean, stddev, seed); + + samples := generateNormalSamples(nsamples, mean, stddev, seed) + errorScale := max(1.0, stddev) // Error scales with stddev + expected := &statsResults{mean, stddev, 0.10 * errorScale, 0.08 * errorScale} + + // Make sure that the entire set matches the expected distribution. + checkSampleDistribution(t, samples, expected) + + // Make sure that each half of the set matches the expected distribution. + checkSampleSliceDistributions(t, samples, 2, expected) + + // Make sure that each 7th of the set matches the expected distribution. + checkSampleSliceDistributions(t, samples, 7, expected) +} + +// Actual tests + +func TestStandardNormalValues(t *testing.T) { + for _, seed := range testSeeds { + testNormalDistribution(t, numTestSamples, 0, 1, seed) + } +} + +func TestNonStandardNormalValues(t *testing.T) { + sdmax := 1000.0 + mmax := 1000.0 + if testing.Short() { + sdmax = 5 + mmax = 5 + } + for sd := 0.5; sd < sdmax; sd *= 2 { + for m := 0.5; m < mmax; m *= 2 { + for _, seed := range testSeeds { + testNormalDistribution(t, numTestSamples, m, sd, seed) + if testing.Short() { + break + } + } + } + } +} + +// +// Exponential distribution tests +// + +func generateExponentialSamples(nsamples int, rate float64, seed uint64) []float64 { + r := New(NewSource(seed)) + samples := make([]float64, nsamples) + for i := range samples { + samples[i] = r.ExpFloat64() / rate + } + return samples +} + +func testExponentialDistribution(t *testing.T, nsamples int, rate float64, seed uint64) { + //fmt.Printf("testing nsamples=%v rate=%v seed=%v\n", nsamples, rate, seed) + + mean := 1 / rate + stddev := mean + + samples := generateExponentialSamples(nsamples, rate, seed) + errorScale := max(1.0, 1/rate) // Error scales with the inverse of the rate + expected := &statsResults{mean, stddev, 0.10 * errorScale, 0.20 * errorScale} + + // Make sure that the entire set matches the expected distribution. + checkSampleDistribution(t, samples, expected) + + // Make sure that each half of the set matches the expected distribution. + checkSampleSliceDistributions(t, samples, 2, expected) + + // Make sure that each 7th of the set matches the expected distribution. + checkSampleSliceDistributions(t, samples, 7, expected) +} + +// Actual tests + +func TestStandardExponentialValues(t *testing.T) { + for _, seed := range testSeeds { + testExponentialDistribution(t, numTestSamples, 1, seed) + } +} + +func TestNonStandardExponentialValues(t *testing.T) { + for rate := 0.05; rate < 10; rate *= 2 { + for _, seed := range testSeeds { + testExponentialDistribution(t, numTestSamples, rate, seed) + if testing.Short() { + break + } + } + } +} + +// compareUint32Slices returns the first index where the two slices +// disagree, or <0 if the lengths are the same and all elements +// are identical. +func compareUint32Slices(s1, s2 []uint32) int { + if len(s1) != len(s2) { + if len(s1) > len(s2) { + return len(s2) + 1 + } + return len(s1) + 1 + } + for i := range s1 { + if s1[i] != s2[i] { + return i + } + } + return -1 +} + +// compareFloat32Slices returns the first index where the two slices +// disagree, or <0 if the lengths are the same and all elements +// are identical. +func compareFloat32Slices(s1, s2 []float32) int { + if len(s1) != len(s2) { + if len(s1) > len(s2) { + return len(s2) + 1 + } + return len(s1) + 1 + } + for i := range s1 { + if !nearEqual(float64(s1[i]), float64(s2[i]), 0, 1e-7) { + return i + } + } + return -1 +} + +func hasSlowFloatingPoint() bool { + switch runtime.GOARCH { + case "arm": + return os.Getenv("GOARM") == "5" || strings.HasSuffix(os.Getenv("GOARM"), ",softfloat") + case "mips", "mipsle", "mips64", "mips64le": + // Be conservative and assume that all mips boards + // have emulated floating point. + // TODO: detect what it actually has. + return true + } + return false +} + +func TestFloat32(t *testing.T) { + // For issue 6721, the problem came after 7533753 calls, so check 10e6. + num := int(10e6) + // But do the full amount only on builders (not locally). + // But ARM5 floating point emulation is slow (Issue 10749), so + // do less for that builder: + if testing.Short() && hasSlowFloatingPoint() { // TODO: (testenv.Builder() == "" || hasSlowFloatingPoint()) + num /= 100 // 1.72 seconds instead of 172 seconds + } + + r := New(NewSource(1)) + for ct := 0; ct < num; ct++ { + f := r.Float32() + if f >= 1 { + t.Fatal("Float32() should be in range [0,1). ct:", ct, "f:", f) + } + } +} + +func testReadUniformity(t *testing.T, n int, seed uint64) { + r := New(NewSource(seed)) + buf := make([]byte, n) + nRead, err := r.Read(buf) + if err != nil { + t.Errorf("Read err %v", err) + } + if nRead != n { + t.Errorf("Read returned unexpected n; %d != %d", nRead, n) + } + + // Expect a uniform distribution of byte values, which lie in [0, 255]. + var ( + mean = 255.0 / 2 + stddev = 256.0 / math.Sqrt(12.0) + errorScale = stddev / math.Sqrt(float64(n)) + ) + + expected := &statsResults{mean, stddev, 0.10 * errorScale, 0.08 * errorScale} + + // Cast bytes as floats to use the common distribution-validity checks. + samples := make([]float64, n) + for i, val := range buf { + samples[i] = float64(val) + } + // Make sure that the entire set matches the expected distribution. + checkSampleDistribution(t, samples, expected) +} + +func TestReadUniformity(t *testing.T) { + testBufferSizes := []int{ + 2, 4, 7, 64, 1024, 1 << 16, 1 << 20, + } + for _, seed := range testSeeds { + for _, n := range testBufferSizes { + testReadUniformity(t, n, seed) + } + } +} + +func TestReadEmpty(t *testing.T) { + r := New(NewSource(1)) + buf := make([]byte, 0) + n, err := r.Read(buf) + if err != nil { + t.Errorf("Read err into empty buffer; %v", err) + } + if n != 0 { + t.Errorf("Read into empty buffer returned unexpected n of %d", n) + } +} + +func TestReadByOneByte(t *testing.T) { + r := New(NewSource(1)) + b1 := make([]byte, 100) + _, err := io.ReadFull(iotest.OneByteReader(r), b1) + if err != nil { + t.Errorf("read by one byte: %v", err) + } + r = New(NewSource(1)) + b2 := make([]byte, 100) + _, err = r.Read(b2) + if err != nil { + t.Errorf("read: %v", err) + } + if !bytes.Equal(b1, b2) { + t.Errorf("read by one byte vs single read:\n%x\n%x", b1, b2) + } +} + +func TestReadSeedReset(t *testing.T) { + r := New(NewSource(42)) + b1 := make([]byte, 128) + _, err := r.Read(b1) + if err != nil { + t.Errorf("read: %v", err) + } + r.Seed(42) + b2 := make([]byte, 128) + _, err = r.Read(b2) + if err != nil { + t.Errorf("read: %v", err) + } + if !bytes.Equal(b1, b2) { + t.Errorf("mismatch after re-seed:\n%x\n%x", b1, b2) + } +} + +func TestShuffleSmall(t *testing.T) { + // Check that Shuffle allows n=0 and n=1, but that swap is never called for them. + r := New(NewSource(1)) + for n := 0; n <= 1; n++ { + r.Shuffle(n, func(i, j int) { t.Fatalf("swap called, n=%d i=%d j=%d", n, i, j) }) + } +} diff --git a/internal/rand/staticcheck.conf b/internal/rand/staticcheck.conf new file mode 100644 index 00000000..d533ce21 --- /dev/null +++ b/internal/rand/staticcheck.conf @@ -0,0 +1 @@ +checks = ["inherit", "-U1000"] \ No newline at end of file diff --git a/internal/testrand/extreme.go b/internal/testrand/extreme.go index 6d1f96c0..67cec79f 100644 --- a/internal/testrand/extreme.go +++ b/internal/testrand/extreme.go @@ -7,7 +7,7 @@ package testrand import ( "math" - "golang.org/x/exp/rand" + "gonum.org/v1/gonum/internal/rand" ) // extreme is a pseudo-random number generator that has high probability of returning extreme values. diff --git a/internal/testrand/extreme_test.go b/internal/testrand/extreme_test.go index 415fd4f1..7f3ce755 100644 --- a/internal/testrand/extreme_test.go +++ b/internal/testrand/extreme_test.go @@ -8,7 +8,7 @@ import ( "math" "testing" - "golang.org/x/exp/rand" + "gonum.org/v1/gonum/internal/rand" ) func TestExtreme_NaN(t *testing.T) { diff --git a/internal/testrand/rand.go b/internal/testrand/rand.go index f2972a85..50845651 100644 --- a/internal/testrand/rand.go +++ b/internal/testrand/rand.go @@ -8,7 +8,7 @@ package testrand import ( "flag" - "golang.org/x/exp/rand" + "gonum.org/v1/gonum/internal/rand" ) var ( diff --git a/lapack/testlapack/dbdsqr.go b/lapack/testlapack/dbdsqr.go index af4e314e..711de72f 100644 --- a/lapack/testlapack/dbdsqr.go +++ b/lapack/testlapack/dbdsqr.go @@ -9,12 +9,11 @@ import ( "sort" "testing" - "golang.org/x/exp/rand" - "gonum.org/v1/gonum/blas" "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 { diff --git a/lapack/testlapack/dgebak.go b/lapack/testlapack/dgebak.go index 1803c7ac..f6369a07 100644 --- a/lapack/testlapack/dgebak.go +++ b/lapack/testlapack/dgebak.go @@ -8,10 +8,9 @@ import ( "fmt" "testing" - "golang.org/x/exp/rand" - "gonum.org/v1/gonum/blas" "gonum.org/v1/gonum/blas/blas64" + "gonum.org/v1/gonum/internal/rand" "gonum.org/v1/gonum/lapack" ) diff --git a/lapack/testlapack/dgebal.go b/lapack/testlapack/dgebal.go index c4fb76a6..4c2d196a 100644 --- a/lapack/testlapack/dgebal.go +++ b/lapack/testlapack/dgebal.go @@ -8,10 +8,9 @@ import ( "fmt" "testing" - "golang.org/x/exp/rand" - "gonum.org/v1/gonum/blas" "gonum.org/v1/gonum/blas/blas64" + "gonum.org/v1/gonum/internal/rand" "gonum.org/v1/gonum/lapack" ) diff --git a/lapack/testlapack/dgebd2.go b/lapack/testlapack/dgebd2.go index 5b8b5c42..e2d9c795 100644 --- a/lapack/testlapack/dgebd2.go +++ b/lapack/testlapack/dgebd2.go @@ -7,7 +7,7 @@ package testlapack import ( "testing" - "golang.org/x/exp/rand" + "gonum.org/v1/gonum/internal/rand" ) type Dgebd2er interface { diff --git a/lapack/testlapack/dgebrd.go b/lapack/testlapack/dgebrd.go index f9c1e821..179080bb 100644 --- a/lapack/testlapack/dgebrd.go +++ b/lapack/testlapack/dgebrd.go @@ -8,9 +8,8 @@ import ( "math" "testing" - "golang.org/x/exp/rand" - "gonum.org/v1/gonum/floats" + "gonum.org/v1/gonum/internal/rand" ) type Dgebrder interface { diff --git a/lapack/testlapack/dgecon.go b/lapack/testlapack/dgecon.go index a6679d3a..bc267051 100644 --- a/lapack/testlapack/dgecon.go +++ b/lapack/testlapack/dgecon.go @@ -9,9 +9,8 @@ import ( "math" "testing" - "golang.org/x/exp/rand" - "gonum.org/v1/gonum/floats" + "gonum.org/v1/gonum/internal/rand" "gonum.org/v1/gonum/lapack" ) diff --git a/lapack/testlapack/dgeev.go b/lapack/testlapack/dgeev.go index e098476d..e5f0db68 100644 --- a/lapack/testlapack/dgeev.go +++ b/lapack/testlapack/dgeev.go @@ -11,10 +11,9 @@ import ( "strconv" "testing" - "golang.org/x/exp/rand" - "gonum.org/v1/gonum/blas" "gonum.org/v1/gonum/blas/blas64" + "gonum.org/v1/gonum/internal/rand" "gonum.org/v1/gonum/lapack" ) diff --git a/lapack/testlapack/dgeev_bench.go b/lapack/testlapack/dgeev_bench.go index 1887d70b..03996c83 100644 --- a/lapack/testlapack/dgeev_bench.go +++ b/lapack/testlapack/dgeev_bench.go @@ -7,9 +7,8 @@ package testlapack import ( "testing" - "golang.org/x/exp/rand" - "gonum.org/v1/gonum/blas/blas64" + "gonum.org/v1/gonum/internal/rand" "gonum.org/v1/gonum/lapack" ) diff --git a/lapack/testlapack/dgehd2.go b/lapack/testlapack/dgehd2.go index 19731b3c..fad1bd01 100644 --- a/lapack/testlapack/dgehd2.go +++ b/lapack/testlapack/dgehd2.go @@ -9,10 +9,9 @@ import ( "math" "testing" - "golang.org/x/exp/rand" - "gonum.org/v1/gonum/blas" "gonum.org/v1/gonum/blas/blas64" + "gonum.org/v1/gonum/internal/rand" ) type Dgehd2er interface { diff --git a/lapack/testlapack/dgehrd.go b/lapack/testlapack/dgehrd.go index eb399b1f..3952e485 100644 --- a/lapack/testlapack/dgehrd.go +++ b/lapack/testlapack/dgehrd.go @@ -9,10 +9,9 @@ import ( "math" "testing" - "golang.org/x/exp/rand" - "gonum.org/v1/gonum/blas" "gonum.org/v1/gonum/blas/blas64" + "gonum.org/v1/gonum/internal/rand" ) type Dgehrder interface { diff --git a/lapack/testlapack/dgelq2.go b/lapack/testlapack/dgelq2.go index 5e29a600..bb9a27cb 100644 --- a/lapack/testlapack/dgelq2.go +++ b/lapack/testlapack/dgelq2.go @@ -7,11 +7,10 @@ package testlapack import ( "testing" - "golang.org/x/exp/rand" - "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 { diff --git a/lapack/testlapack/dgelqf.go b/lapack/testlapack/dgelqf.go index 7300b306..63dbfe64 100644 --- a/lapack/testlapack/dgelqf.go +++ b/lapack/testlapack/dgelqf.go @@ -7,9 +7,8 @@ package testlapack import ( "testing" - "golang.org/x/exp/rand" - "gonum.org/v1/gonum/floats" + "gonum.org/v1/gonum/internal/rand" ) type Dgelqfer interface { diff --git a/lapack/testlapack/dgels.go b/lapack/testlapack/dgels.go index 4e520d1a..3f2c9a29 100644 --- a/lapack/testlapack/dgels.go +++ b/lapack/testlapack/dgels.go @@ -7,11 +7,10 @@ package testlapack import ( "testing" - "golang.org/x/exp/rand" - "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 { diff --git a/lapack/testlapack/dgeql2.go b/lapack/testlapack/dgeql2.go index 9920b2fe..d90a71dc 100644 --- a/lapack/testlapack/dgeql2.go +++ b/lapack/testlapack/dgeql2.go @@ -7,11 +7,10 @@ package testlapack import ( "testing" - "golang.org/x/exp/rand" - "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 { diff --git a/lapack/testlapack/dgeqp3.go b/lapack/testlapack/dgeqp3.go index 4779a285..86313bf6 100644 --- a/lapack/testlapack/dgeqp3.go +++ b/lapack/testlapack/dgeqp3.go @@ -8,10 +8,9 @@ import ( "fmt" "testing" - "golang.org/x/exp/rand" - "gonum.org/v1/gonum/blas" "gonum.org/v1/gonum/blas/blas64" + "gonum.org/v1/gonum/internal/rand" "gonum.org/v1/gonum/lapack" ) diff --git a/lapack/testlapack/dgeqr2.go b/lapack/testlapack/dgeqr2.go index abe15e8a..87518a4a 100644 --- a/lapack/testlapack/dgeqr2.go +++ b/lapack/testlapack/dgeqr2.go @@ -8,10 +8,9 @@ import ( "fmt" "testing" - "golang.org/x/exp/rand" - "gonum.org/v1/gonum/blas" "gonum.org/v1/gonum/blas/blas64" + "gonum.org/v1/gonum/internal/rand" "gonum.org/v1/gonum/lapack" ) diff --git a/lapack/testlapack/dgeqrf.go b/lapack/testlapack/dgeqrf.go index 02218618..579076db 100644 --- a/lapack/testlapack/dgeqrf.go +++ b/lapack/testlapack/dgeqrf.go @@ -7,9 +7,8 @@ package testlapack import ( "testing" - "golang.org/x/exp/rand" - "gonum.org/v1/gonum/floats" + "gonum.org/v1/gonum/internal/rand" ) type Dgeqrfer interface { diff --git a/lapack/testlapack/dgerq2.go b/lapack/testlapack/dgerq2.go index 5062cf8c..a6f11197 100644 --- a/lapack/testlapack/dgerq2.go +++ b/lapack/testlapack/dgerq2.go @@ -8,10 +8,9 @@ import ( "fmt" "testing" - "golang.org/x/exp/rand" - "gonum.org/v1/gonum/blas" "gonum.org/v1/gonum/blas/blas64" + "gonum.org/v1/gonum/internal/rand" "gonum.org/v1/gonum/lapack" ) diff --git a/lapack/testlapack/dgerqf.go b/lapack/testlapack/dgerqf.go index 32f26fff..e63717e2 100644 --- a/lapack/testlapack/dgerqf.go +++ b/lapack/testlapack/dgerqf.go @@ -8,10 +8,9 @@ import ( "fmt" "testing" - "golang.org/x/exp/rand" - "gonum.org/v1/gonum/blas" "gonum.org/v1/gonum/blas/blas64" + "gonum.org/v1/gonum/internal/rand" "gonum.org/v1/gonum/lapack" ) diff --git a/lapack/testlapack/dgesc2.go b/lapack/testlapack/dgesc2.go index dd48ca90..485b6e4a 100644 --- a/lapack/testlapack/dgesc2.go +++ b/lapack/testlapack/dgesc2.go @@ -9,11 +9,10 @@ import ( "math" "testing" - "golang.org/x/exp/rand" - "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" ) diff --git a/lapack/testlapack/dgesv.go b/lapack/testlapack/dgesv.go index c41a37d1..5097a7ff 100644 --- a/lapack/testlapack/dgesv.go +++ b/lapack/testlapack/dgesv.go @@ -9,10 +9,9 @@ import ( "math" "testing" - "golang.org/x/exp/rand" - "gonum.org/v1/gonum/blas" "gonum.org/v1/gonum/blas/blas64" + "gonum.org/v1/gonum/internal/rand" "gonum.org/v1/gonum/lapack" ) diff --git a/lapack/testlapack/dgesvd.go b/lapack/testlapack/dgesvd.go index 7d9e2f26..16360464 100644 --- a/lapack/testlapack/dgesvd.go +++ b/lapack/testlapack/dgesvd.go @@ -10,11 +10,10 @@ import ( "sort" "testing" - "golang.org/x/exp/rand" - "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" ) diff --git a/lapack/testlapack/dgetc2.go b/lapack/testlapack/dgetc2.go index 46ed0c96..ba2c7f7b 100644 --- a/lapack/testlapack/dgetc2.go +++ b/lapack/testlapack/dgetc2.go @@ -9,10 +9,9 @@ import ( "math" "testing" - "golang.org/x/exp/rand" - "gonum.org/v1/gonum/blas" "gonum.org/v1/gonum/blas/blas64" + "gonum.org/v1/gonum/internal/rand" "gonum.org/v1/gonum/lapack" ) diff --git a/lapack/testlapack/dgetf2.go b/lapack/testlapack/dgetf2.go index 79a25b7d..6443bad1 100644 --- a/lapack/testlapack/dgetf2.go +++ b/lapack/testlapack/dgetf2.go @@ -7,11 +7,10 @@ package testlapack import ( "testing" - "golang.org/x/exp/rand" - "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 { diff --git a/lapack/testlapack/dgetrf.go b/lapack/testlapack/dgetrf.go index 42dc713c..efcc472e 100644 --- a/lapack/testlapack/dgetrf.go +++ b/lapack/testlapack/dgetrf.go @@ -7,7 +7,7 @@ package testlapack import ( "testing" - "golang.org/x/exp/rand" + "gonum.org/v1/gonum/internal/rand" ) type Dgetrfer interface { diff --git a/lapack/testlapack/dgetri.go b/lapack/testlapack/dgetri.go index 0c9bc281..28a6d17f 100644 --- a/lapack/testlapack/dgetri.go +++ b/lapack/testlapack/dgetri.go @@ -7,10 +7,9 @@ package testlapack import ( "testing" - "golang.org/x/exp/rand" - "gonum.org/v1/gonum/blas" "gonum.org/v1/gonum/blas/blas64" + "gonum.org/v1/gonum/internal/rand" ) type Dgetrier interface { diff --git a/lapack/testlapack/dgetrs.go b/lapack/testlapack/dgetrs.go index dab03341..00e242dc 100644 --- a/lapack/testlapack/dgetrs.go +++ b/lapack/testlapack/dgetrs.go @@ -7,11 +7,10 @@ package testlapack import ( "testing" - "golang.org/x/exp/rand" - "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 { diff --git a/lapack/testlapack/dgghrd.go b/lapack/testlapack/dgghrd.go index 606ade96..8ee6410c 100644 --- a/lapack/testlapack/dgghrd.go +++ b/lapack/testlapack/dgghrd.go @@ -8,10 +8,9 @@ import ( "fmt" "testing" - "golang.org/x/exp/rand" - "gonum.org/v1/gonum/blas" "gonum.org/v1/gonum/blas/blas64" + "gonum.org/v1/gonum/internal/rand" "gonum.org/v1/gonum/lapack" ) diff --git a/lapack/testlapack/dggsvd3.go b/lapack/testlapack/dggsvd3.go index 62f58d11..3bbfa097 100644 --- a/lapack/testlapack/dggsvd3.go +++ b/lapack/testlapack/dggsvd3.go @@ -7,11 +7,10 @@ package testlapack import ( "testing" - "golang.org/x/exp/rand" - "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" ) diff --git a/lapack/testlapack/dggsvp3.go b/lapack/testlapack/dggsvp3.go index 472116e0..56258f76 100644 --- a/lapack/testlapack/dggsvp3.go +++ b/lapack/testlapack/dggsvp3.go @@ -7,10 +7,9 @@ package testlapack import ( "testing" - "golang.org/x/exp/rand" - "gonum.org/v1/gonum/blas" "gonum.org/v1/gonum/blas/blas64" + "gonum.org/v1/gonum/internal/rand" "gonum.org/v1/gonum/lapack" ) diff --git a/lapack/testlapack/dgtsv.go b/lapack/testlapack/dgtsv.go index cdea4238..ee8488e7 100644 --- a/lapack/testlapack/dgtsv.go +++ b/lapack/testlapack/dgtsv.go @@ -9,10 +9,9 @@ import ( "math" "testing" - "golang.org/x/exp/rand" - "gonum.org/v1/gonum/blas" "gonum.org/v1/gonum/blas/blas64" + "gonum.org/v1/gonum/internal/rand" "gonum.org/v1/gonum/lapack" ) diff --git a/lapack/testlapack/dlabrd.go b/lapack/testlapack/dlabrd.go index 439ad47c..89d97813 100644 --- a/lapack/testlapack/dlabrd.go +++ b/lapack/testlapack/dlabrd.go @@ -8,7 +8,7 @@ import ( "math" "testing" - "golang.org/x/exp/rand" + "gonum.org/v1/gonum/internal/rand" ) type Dlabrder interface { diff --git a/lapack/testlapack/dlacn2.go b/lapack/testlapack/dlacn2.go index 00d288c8..162c64db 100644 --- a/lapack/testlapack/dlacn2.go +++ b/lapack/testlapack/dlacn2.go @@ -8,10 +8,9 @@ import ( "math" "testing" - "golang.org/x/exp/rand" - "gonum.org/v1/gonum/blas" "gonum.org/v1/gonum/blas/blas64" + "gonum.org/v1/gonum/internal/rand" ) type Dlacn2er interface { diff --git a/lapack/testlapack/dlacpy.go b/lapack/testlapack/dlacpy.go index 4a2becb4..1e3c2acd 100644 --- a/lapack/testlapack/dlacpy.go +++ b/lapack/testlapack/dlacpy.go @@ -8,9 +8,8 @@ import ( "fmt" "testing" - "golang.org/x/exp/rand" - "gonum.org/v1/gonum/blas" + "gonum.org/v1/gonum/internal/rand" ) type Dlacpyer interface { diff --git a/lapack/testlapack/dlaev2.go b/lapack/testlapack/dlaev2.go index 73de0e54..a3118b17 100644 --- a/lapack/testlapack/dlaev2.go +++ b/lapack/testlapack/dlaev2.go @@ -8,7 +8,7 @@ import ( "math" "testing" - "golang.org/x/exp/rand" + "gonum.org/v1/gonum/internal/rand" ) type Dlaev2er interface { diff --git a/lapack/testlapack/dlaexc.go b/lapack/testlapack/dlaexc.go index 002be5e7..453833cf 100644 --- a/lapack/testlapack/dlaexc.go +++ b/lapack/testlapack/dlaexc.go @@ -8,10 +8,9 @@ import ( "fmt" "testing" - "golang.org/x/exp/rand" - "gonum.org/v1/gonum/blas" "gonum.org/v1/gonum/blas/blas64" + "gonum.org/v1/gonum/internal/rand" "gonum.org/v1/gonum/lapack" ) diff --git a/lapack/testlapack/dlag2.go b/lapack/testlapack/dlag2.go index ee250b95..5bc87388 100644 --- a/lapack/testlapack/dlag2.go +++ b/lapack/testlapack/dlag2.go @@ -9,10 +9,9 @@ import ( "math" "testing" - "golang.org/x/exp/rand" - "gonum.org/v1/gonum/blas/blas64" "gonum.org/v1/gonum/floats" + "gonum.org/v1/gonum/internal/rand" ) type Dlag2er interface { diff --git a/lapack/testlapack/dlags2.go b/lapack/testlapack/dlags2.go index e26f03ba..04dd1dc1 100644 --- a/lapack/testlapack/dlags2.go +++ b/lapack/testlapack/dlags2.go @@ -8,11 +8,10 @@ import ( "math" "testing" - "golang.org/x/exp/rand" - "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 { diff --git a/lapack/testlapack/dlagtm.go b/lapack/testlapack/dlagtm.go index a149453a..22a0472f 100644 --- a/lapack/testlapack/dlagtm.go +++ b/lapack/testlapack/dlagtm.go @@ -8,11 +8,10 @@ import ( "fmt" "testing" - "golang.org/x/exp/rand" - "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" ) diff --git a/lapack/testlapack/dlahqr.go b/lapack/testlapack/dlahqr.go index be664891..267da311 100644 --- a/lapack/testlapack/dlahqr.go +++ b/lapack/testlapack/dlahqr.go @@ -9,10 +9,9 @@ import ( "math" "testing" - "golang.org/x/exp/rand" - "gonum.org/v1/gonum/blas" "gonum.org/v1/gonum/blas/blas64" + "gonum.org/v1/gonum/internal/rand" ) type Dlahqrer interface { diff --git a/lapack/testlapack/dlahr2.go b/lapack/testlapack/dlahr2.go index 22448d51..d5ea60c8 100644 --- a/lapack/testlapack/dlahr2.go +++ b/lapack/testlapack/dlahr2.go @@ -9,10 +9,9 @@ import ( "math" "testing" - "golang.org/x/exp/rand" - "gonum.org/v1/gonum/blas" "gonum.org/v1/gonum/blas/blas64" + "gonum.org/v1/gonum/internal/rand" ) type Dlahr2er interface { diff --git a/lapack/testlapack/dlaln2.go b/lapack/testlapack/dlaln2.go index 30c45956..a76db20c 100644 --- a/lapack/testlapack/dlaln2.go +++ b/lapack/testlapack/dlaln2.go @@ -10,7 +10,7 @@ import ( "math/cmplx" "testing" - "golang.org/x/exp/rand" + "gonum.org/v1/gonum/internal/rand" ) type Dlaln2er interface { diff --git a/lapack/testlapack/dlangb.go b/lapack/testlapack/dlangb.go index 574b785d..af86dcc9 100644 --- a/lapack/testlapack/dlangb.go +++ b/lapack/testlapack/dlangb.go @@ -9,9 +9,8 @@ import ( "math" "testing" - "golang.org/x/exp/rand" - "gonum.org/v1/gonum/floats" + "gonum.org/v1/gonum/internal/rand" "gonum.org/v1/gonum/lapack" ) diff --git a/lapack/testlapack/dlangb_bench.go b/lapack/testlapack/dlangb_bench.go index d77363f5..0419314b 100644 --- a/lapack/testlapack/dlangb_bench.go +++ b/lapack/testlapack/dlangb_bench.go @@ -9,8 +9,7 @@ import ( "math" "testing" - "golang.org/x/exp/rand" - + "gonum.org/v1/gonum/internal/rand" "gonum.org/v1/gonum/lapack" ) diff --git a/lapack/testlapack/dlange.go b/lapack/testlapack/dlange.go index b7776eea..20216786 100644 --- a/lapack/testlapack/dlange.go +++ b/lapack/testlapack/dlange.go @@ -8,9 +8,8 @@ import ( "math" "testing" - "golang.org/x/exp/rand" - "gonum.org/v1/gonum/blas/blas64" + "gonum.org/v1/gonum/internal/rand" "gonum.org/v1/gonum/lapack" ) diff --git a/lapack/testlapack/dlangt.go b/lapack/testlapack/dlangt.go index 7dc6daa3..26b0807c 100644 --- a/lapack/testlapack/dlangt.go +++ b/lapack/testlapack/dlangt.go @@ -9,9 +9,8 @@ import ( "math" "testing" - "golang.org/x/exp/rand" - "gonum.org/v1/gonum/floats" + "gonum.org/v1/gonum/internal/rand" "gonum.org/v1/gonum/lapack" ) diff --git a/lapack/testlapack/dlanhs.go b/lapack/testlapack/dlanhs.go index 2c5bb2e3..bf64114d 100644 --- a/lapack/testlapack/dlanhs.go +++ b/lapack/testlapack/dlanhs.go @@ -8,8 +8,7 @@ import ( "math" "testing" - "golang.org/x/exp/rand" - + "gonum.org/v1/gonum/internal/rand" "gonum.org/v1/gonum/lapack" ) diff --git a/lapack/testlapack/dlansb.go b/lapack/testlapack/dlansb.go index fe594ae8..f4881e37 100644 --- a/lapack/testlapack/dlansb.go +++ b/lapack/testlapack/dlansb.go @@ -9,10 +9,9 @@ import ( "math" "testing" - "golang.org/x/exp/rand" - "gonum.org/v1/gonum/blas" "gonum.org/v1/gonum/floats" + "gonum.org/v1/gonum/internal/rand" "gonum.org/v1/gonum/lapack" ) diff --git a/lapack/testlapack/dlanst.go b/lapack/testlapack/dlanst.go index 3aeb1f65..63016776 100644 --- a/lapack/testlapack/dlanst.go +++ b/lapack/testlapack/dlanst.go @@ -8,8 +8,7 @@ import ( "math" "testing" - "golang.org/x/exp/rand" - + "gonum.org/v1/gonum/internal/rand" "gonum.org/v1/gonum/lapack" ) diff --git a/lapack/testlapack/dlansy.go b/lapack/testlapack/dlansy.go index 6d6bf89c..74034cf1 100644 --- a/lapack/testlapack/dlansy.go +++ b/lapack/testlapack/dlansy.go @@ -8,9 +8,8 @@ import ( "math" "testing" - "golang.org/x/exp/rand" - "gonum.org/v1/gonum/blas" + "gonum.org/v1/gonum/internal/rand" "gonum.org/v1/gonum/lapack" ) diff --git a/lapack/testlapack/dlantb.go b/lapack/testlapack/dlantb.go index 6d37f3c4..0b641066 100644 --- a/lapack/testlapack/dlantb.go +++ b/lapack/testlapack/dlantb.go @@ -9,10 +9,9 @@ import ( "math" "testing" - "golang.org/x/exp/rand" - "gonum.org/v1/gonum/blas" "gonum.org/v1/gonum/floats" + "gonum.org/v1/gonum/internal/rand" "gonum.org/v1/gonum/lapack" ) diff --git a/lapack/testlapack/dlantb_bench.go b/lapack/testlapack/dlantb_bench.go index b05f81ab..e0e49de4 100644 --- a/lapack/testlapack/dlantb_bench.go +++ b/lapack/testlapack/dlantb_bench.go @@ -9,9 +9,8 @@ import ( "math" "testing" - "golang.org/x/exp/rand" - "gonum.org/v1/gonum/blas" + "gonum.org/v1/gonum/internal/rand" "gonum.org/v1/gonum/lapack" ) diff --git a/lapack/testlapack/dlantr.go b/lapack/testlapack/dlantr.go index e9a72bf0..c5b30746 100644 --- a/lapack/testlapack/dlantr.go +++ b/lapack/testlapack/dlantr.go @@ -9,10 +9,9 @@ import ( "math" "testing" - "golang.org/x/exp/rand" - "gonum.org/v1/gonum/blas" "gonum.org/v1/gonum/floats" + "gonum.org/v1/gonum/internal/rand" "gonum.org/v1/gonum/lapack" ) diff --git a/lapack/testlapack/dlanv2.go b/lapack/testlapack/dlanv2.go index 0b8b3588..e4d76ec8 100644 --- a/lapack/testlapack/dlanv2.go +++ b/lapack/testlapack/dlanv2.go @@ -9,7 +9,7 @@ import ( "math" "testing" - "golang.org/x/exp/rand" + "gonum.org/v1/gonum/internal/rand" ) type Dlanv2er interface { diff --git a/lapack/testlapack/dlapll.go b/lapack/testlapack/dlapll.go index c25588de..0f56e950 100644 --- a/lapack/testlapack/dlapll.go +++ b/lapack/testlapack/dlapll.go @@ -7,9 +7,8 @@ package testlapack import ( "testing" - "golang.org/x/exp/rand" - "gonum.org/v1/gonum/floats/scalar" + "gonum.org/v1/gonum/internal/rand" "gonum.org/v1/gonum/lapack" ) diff --git a/lapack/testlapack/dlapmr.go b/lapack/testlapack/dlapmr.go index c71ae030..ce98b808 100644 --- a/lapack/testlapack/dlapmr.go +++ b/lapack/testlapack/dlapmr.go @@ -8,9 +8,9 @@ import ( "fmt" "testing" - "golang.org/x/exp/rand" "gonum.org/v1/gonum/blas" "gonum.org/v1/gonum/blas/blas64" + "gonum.org/v1/gonum/internal/rand" ) type Dlapmrer interface { diff --git a/lapack/testlapack/dlapy2.go b/lapack/testlapack/dlapy2.go index caa872cb..279d60a7 100644 --- a/lapack/testlapack/dlapy2.go +++ b/lapack/testlapack/dlapy2.go @@ -8,9 +8,8 @@ import ( "math" "testing" - "golang.org/x/exp/rand" - "gonum.org/v1/gonum/floats/scalar" + "gonum.org/v1/gonum/internal/rand" ) type Dlapy2er interface { diff --git a/lapack/testlapack/dlaqp2.go b/lapack/testlapack/dlaqp2.go index 398318cd..9be86691 100644 --- a/lapack/testlapack/dlaqp2.go +++ b/lapack/testlapack/dlaqp2.go @@ -8,10 +8,9 @@ import ( "fmt" "testing" - "golang.org/x/exp/rand" - "gonum.org/v1/gonum/blas" "gonum.org/v1/gonum/blas/blas64" + "gonum.org/v1/gonum/internal/rand" "gonum.org/v1/gonum/lapack" ) diff --git a/lapack/testlapack/dlaqps.go b/lapack/testlapack/dlaqps.go index 1bd9a128..e9903297 100644 --- a/lapack/testlapack/dlaqps.go +++ b/lapack/testlapack/dlaqps.go @@ -8,10 +8,9 @@ import ( "fmt" "testing" - "golang.org/x/exp/rand" - "gonum.org/v1/gonum/blas" "gonum.org/v1/gonum/blas/blas64" + "gonum.org/v1/gonum/internal/rand" "gonum.org/v1/gonum/lapack" ) diff --git a/lapack/testlapack/dlaqr04.go b/lapack/testlapack/dlaqr04.go index 44b3944c..c4298a27 100644 --- a/lapack/testlapack/dlaqr04.go +++ b/lapack/testlapack/dlaqr04.go @@ -9,10 +9,9 @@ import ( "math" "testing" - "golang.org/x/exp/rand" - "gonum.org/v1/gonum/blas" "gonum.org/v1/gonum/blas/blas64" + "gonum.org/v1/gonum/internal/rand" ) type Dlaqr04er interface { diff --git a/lapack/testlapack/dlaqr1.go b/lapack/testlapack/dlaqr1.go index 3b3e0eb2..0a07e798 100644 --- a/lapack/testlapack/dlaqr1.go +++ b/lapack/testlapack/dlaqr1.go @@ -8,9 +8,8 @@ import ( "math" "testing" - "golang.org/x/exp/rand" - "gonum.org/v1/gonum/floats" + "gonum.org/v1/gonum/internal/rand" ) type Dlaqr1er interface { diff --git a/lapack/testlapack/dlaqr23.go b/lapack/testlapack/dlaqr23.go index 8b48bfe3..dfc92fc5 100644 --- a/lapack/testlapack/dlaqr23.go +++ b/lapack/testlapack/dlaqr23.go @@ -8,10 +8,9 @@ import ( "fmt" "testing" - "golang.org/x/exp/rand" - "gonum.org/v1/gonum/blas" "gonum.org/v1/gonum/blas/blas64" + "gonum.org/v1/gonum/internal/rand" "gonum.org/v1/gonum/lapack" ) diff --git a/lapack/testlapack/dlaqr5.go b/lapack/testlapack/dlaqr5.go index f38be8af..0d5b3c67 100644 --- a/lapack/testlapack/dlaqr5.go +++ b/lapack/testlapack/dlaqr5.go @@ -8,10 +8,9 @@ import ( "fmt" "testing" - "golang.org/x/exp/rand" - "gonum.org/v1/gonum/blas" "gonum.org/v1/gonum/blas/blas64" + "gonum.org/v1/gonum/internal/rand" "gonum.org/v1/gonum/lapack" ) diff --git a/lapack/testlapack/dlaqr5_bench.go b/lapack/testlapack/dlaqr5_bench.go index c6368c17..066483ff 100644 --- a/lapack/testlapack/dlaqr5_bench.go +++ b/lapack/testlapack/dlaqr5_bench.go @@ -8,7 +8,7 @@ import ( "fmt" "testing" - "golang.org/x/exp/rand" + "gonum.org/v1/gonum/internal/rand" ) func Dlaqr5Benchmark(b *testing.B, impl Dlaqr5er) { diff --git a/lapack/testlapack/dlarf.go b/lapack/testlapack/dlarf.go index 0af90ad7..be190fe8 100644 --- a/lapack/testlapack/dlarf.go +++ b/lapack/testlapack/dlarf.go @@ -8,11 +8,10 @@ import ( "fmt" "testing" - "golang.org/x/exp/rand" - "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" ) diff --git a/lapack/testlapack/dlarfb.go b/lapack/testlapack/dlarfb.go index 7f717b16..636517df 100644 --- a/lapack/testlapack/dlarfb.go +++ b/lapack/testlapack/dlarfb.go @@ -7,11 +7,10 @@ package testlapack import ( "testing" - "golang.org/x/exp/rand" - "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" ) diff --git a/lapack/testlapack/dlarfg.go b/lapack/testlapack/dlarfg.go index 2d0d14b5..32e0a175 100644 --- a/lapack/testlapack/dlarfg.go +++ b/lapack/testlapack/dlarfg.go @@ -8,11 +8,10 @@ import ( "math" "testing" - "golang.org/x/exp/rand" - "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 { diff --git a/lapack/testlapack/dlarft.go b/lapack/testlapack/dlarft.go index fe1bc22c..09e81d01 100644 --- a/lapack/testlapack/dlarft.go +++ b/lapack/testlapack/dlarft.go @@ -7,11 +7,10 @@ package testlapack import ( "testing" - "golang.org/x/exp/rand" - "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" ) diff --git a/lapack/testlapack/dlarfx.go b/lapack/testlapack/dlarfx.go index 85a277cd..5fd8ea66 100644 --- a/lapack/testlapack/dlarfx.go +++ b/lapack/testlapack/dlarfx.go @@ -8,10 +8,9 @@ import ( "fmt" "testing" - "golang.org/x/exp/rand" - "gonum.org/v1/gonum/blas" "gonum.org/v1/gonum/blas/blas64" + "gonum.org/v1/gonum/internal/rand" ) type Dlarfxer interface { diff --git a/lapack/testlapack/dlascl.go b/lapack/testlapack/dlascl.go index cec3e6e1..b9607a0e 100644 --- a/lapack/testlapack/dlascl.go +++ b/lapack/testlapack/dlascl.go @@ -9,8 +9,7 @@ import ( "math" "testing" - "golang.org/x/exp/rand" - + "gonum.org/v1/gonum/internal/rand" "gonum.org/v1/gonum/lapack" ) diff --git a/lapack/testlapack/dlaset.go b/lapack/testlapack/dlaset.go index f0135f4b..52cb75ae 100644 --- a/lapack/testlapack/dlaset.go +++ b/lapack/testlapack/dlaset.go @@ -8,9 +8,8 @@ import ( "fmt" "testing" - "golang.org/x/exp/rand" - "gonum.org/v1/gonum/blas" + "gonum.org/v1/gonum/internal/rand" ) type Dlaseter interface { diff --git a/lapack/testlapack/dlasq1.go b/lapack/testlapack/dlasq1.go index 3ee8cd06..71ef515b 100644 --- a/lapack/testlapack/dlasq1.go +++ b/lapack/testlapack/dlasq1.go @@ -10,9 +10,8 @@ import ( "sort" "testing" - "golang.org/x/exp/rand" - "gonum.org/v1/gonum/floats" + "gonum.org/v1/gonum/internal/rand" ) type Dlasq1er interface { diff --git a/lapack/testlapack/dlasq2.go b/lapack/testlapack/dlasq2.go index 18e62d69..4e618183 100644 --- a/lapack/testlapack/dlasq2.go +++ b/lapack/testlapack/dlasq2.go @@ -10,9 +10,9 @@ import ( "sort" "testing" - "golang.org/x/exp/rand" "gonum.org/v1/gonum/blas" "gonum.org/v1/gonum/floats" + "gonum.org/v1/gonum/internal/rand" "gonum.org/v1/gonum/lapack" ) diff --git a/lapack/testlapack/dlasr.go b/lapack/testlapack/dlasr.go index fa4fce0e..503cf07b 100644 --- a/lapack/testlapack/dlasr.go +++ b/lapack/testlapack/dlasr.go @@ -8,11 +8,10 @@ import ( "math" "testing" - "golang.org/x/exp/rand" - "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" ) diff --git a/lapack/testlapack/dlassq.go b/lapack/testlapack/dlassq.go index d3abb537..13c093ff 100644 --- a/lapack/testlapack/dlassq.go +++ b/lapack/testlapack/dlassq.go @@ -9,9 +9,8 @@ import ( "math" "testing" - "golang.org/x/exp/rand" - "gonum.org/v1/gonum/floats" + "gonum.org/v1/gonum/internal/rand" ) type Dlassqer interface { diff --git a/lapack/testlapack/dlasv2.go b/lapack/testlapack/dlasv2.go index ca62f679..e9d5608a 100644 --- a/lapack/testlapack/dlasv2.go +++ b/lapack/testlapack/dlasv2.go @@ -7,9 +7,8 @@ package testlapack import ( "testing" - "golang.org/x/exp/rand" - "gonum.org/v1/gonum/floats" + "gonum.org/v1/gonum/internal/rand" ) type Dlasv2er interface { diff --git a/lapack/testlapack/dlasy2.go b/lapack/testlapack/dlasy2.go index 6e1a1f6f..ad9192c2 100644 --- a/lapack/testlapack/dlasy2.go +++ b/lapack/testlapack/dlasy2.go @@ -8,10 +8,9 @@ import ( "fmt" "testing" - "golang.org/x/exp/rand" - "gonum.org/v1/gonum/blas" "gonum.org/v1/gonum/blas/blas64" + "gonum.org/v1/gonum/internal/rand" "gonum.org/v1/gonum/lapack" ) diff --git a/lapack/testlapack/dlatbs.go b/lapack/testlapack/dlatbs.go index df03ca11..314cb46a 100644 --- a/lapack/testlapack/dlatbs.go +++ b/lapack/testlapack/dlatbs.go @@ -9,10 +9,10 @@ import ( "math" "testing" - "golang.org/x/exp/rand" "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 { diff --git a/lapack/testlapack/dlatrd.go b/lapack/testlapack/dlatrd.go index 33209ecd..3940c1d5 100644 --- a/lapack/testlapack/dlatrd.go +++ b/lapack/testlapack/dlatrd.go @@ -9,10 +9,9 @@ import ( "math" "testing" - "golang.org/x/exp/rand" - "gonum.org/v1/gonum/blas" "gonum.org/v1/gonum/blas/blas64" + "gonum.org/v1/gonum/internal/rand" ) type Dlatrder interface { diff --git a/lapack/testlapack/dlatrs.go b/lapack/testlapack/dlatrs.go index 2ddf306a..cd925480 100644 --- a/lapack/testlapack/dlatrs.go +++ b/lapack/testlapack/dlatrs.go @@ -9,10 +9,9 @@ import ( "math" "testing" - "golang.org/x/exp/rand" - "gonum.org/v1/gonum/blas" "gonum.org/v1/gonum/blas/blas64" + "gonum.org/v1/gonum/internal/rand" ) type Dlatrser interface { diff --git a/lapack/testlapack/dlauu2.go b/lapack/testlapack/dlauu2.go index a1059b91..af2f642d 100644 --- a/lapack/testlapack/dlauu2.go +++ b/lapack/testlapack/dlauu2.go @@ -8,10 +8,9 @@ import ( "fmt" "testing" - "golang.org/x/exp/rand" - "gonum.org/v1/gonum/blas" "gonum.org/v1/gonum/blas/blas64" + "gonum.org/v1/gonum/internal/rand" "gonum.org/v1/gonum/lapack" ) diff --git a/lapack/testlapack/dorg2l.go b/lapack/testlapack/dorg2l.go index ec9ff38c..b8a9ad56 100644 --- a/lapack/testlapack/dorg2l.go +++ b/lapack/testlapack/dorg2l.go @@ -7,9 +7,8 @@ package testlapack import ( "testing" - "golang.org/x/exp/rand" - "gonum.org/v1/gonum/blas/blas64" + "gonum.org/v1/gonum/internal/rand" ) type Dorg2ler interface { diff --git a/lapack/testlapack/dorg2r.go b/lapack/testlapack/dorg2r.go index 74065265..bfbfbad6 100644 --- a/lapack/testlapack/dorg2r.go +++ b/lapack/testlapack/dorg2r.go @@ -7,9 +7,8 @@ package testlapack import ( "testing" - "golang.org/x/exp/rand" - "gonum.org/v1/gonum/floats/scalar" + "gonum.org/v1/gonum/internal/rand" ) type Dorg2rer interface { diff --git a/lapack/testlapack/dorgbr.go b/lapack/testlapack/dorgbr.go index d1090ae7..c2eddeab 100644 --- a/lapack/testlapack/dorgbr.go +++ b/lapack/testlapack/dorgbr.go @@ -7,10 +7,9 @@ package testlapack import ( "testing" - "golang.org/x/exp/rand" - "gonum.org/v1/gonum/blas/blas64" "gonum.org/v1/gonum/floats/scalar" + "gonum.org/v1/gonum/internal/rand" "gonum.org/v1/gonum/lapack" ) diff --git a/lapack/testlapack/dorghr.go b/lapack/testlapack/dorghr.go index ce4dc32f..0d6e3583 100644 --- a/lapack/testlapack/dorghr.go +++ b/lapack/testlapack/dorghr.go @@ -9,10 +9,9 @@ import ( "math" "testing" - "golang.org/x/exp/rand" - "gonum.org/v1/gonum/blas" "gonum.org/v1/gonum/blas/blas64" + "gonum.org/v1/gonum/internal/rand" ) type Dorghrer interface { diff --git a/lapack/testlapack/dorgl2.go b/lapack/testlapack/dorgl2.go index 062a8ce4..ef7a5ea8 100644 --- a/lapack/testlapack/dorgl2.go +++ b/lapack/testlapack/dorgl2.go @@ -7,9 +7,8 @@ package testlapack import ( "testing" - "golang.org/x/exp/rand" - "gonum.org/v1/gonum/floats/scalar" + "gonum.org/v1/gonum/internal/rand" ) type Dorgl2er interface { diff --git a/lapack/testlapack/dorglq.go b/lapack/testlapack/dorglq.go index 41cbc8a9..3c0817ba 100644 --- a/lapack/testlapack/dorglq.go +++ b/lapack/testlapack/dorglq.go @@ -8,9 +8,8 @@ import ( "math" "testing" - "golang.org/x/exp/rand" - "gonum.org/v1/gonum/floats" + "gonum.org/v1/gonum/internal/rand" ) type Dorglqer interface { diff --git a/lapack/testlapack/dorgql.go b/lapack/testlapack/dorgql.go index c8d2a4fa..ca227518 100644 --- a/lapack/testlapack/dorgql.go +++ b/lapack/testlapack/dorgql.go @@ -8,10 +8,9 @@ import ( "fmt" "testing" - "golang.org/x/exp/rand" - "gonum.org/v1/gonum/blas" "gonum.org/v1/gonum/blas/blas64" + "gonum.org/v1/gonum/internal/rand" ) type Dorgqler interface { diff --git a/lapack/testlapack/dorgqr.go b/lapack/testlapack/dorgqr.go index 2bbbc437..73c68292 100644 --- a/lapack/testlapack/dorgqr.go +++ b/lapack/testlapack/dorgqr.go @@ -8,9 +8,8 @@ import ( "math" "testing" - "golang.org/x/exp/rand" - "gonum.org/v1/gonum/floats" + "gonum.org/v1/gonum/internal/rand" ) type Dorgqrer interface { diff --git a/lapack/testlapack/dorgr2.go b/lapack/testlapack/dorgr2.go index 4f778d73..afc2c740 100644 --- a/lapack/testlapack/dorgr2.go +++ b/lapack/testlapack/dorgr2.go @@ -9,11 +9,10 @@ import ( "math" "testing" - "golang.org/x/exp/rand" - "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" ) diff --git a/lapack/testlapack/dorgtr.go b/lapack/testlapack/dorgtr.go index 4a308ae4..215e7658 100644 --- a/lapack/testlapack/dorgtr.go +++ b/lapack/testlapack/dorgtr.go @@ -8,11 +8,10 @@ import ( "fmt" "testing" - "golang.org/x/exp/rand" - "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 { @@ -21,7 +20,7 @@ type Dorgtrer interface { } func DorgtrTest(t *testing.T, impl Dorgtrer) { - const tol = 1e-14 + const tol = 1e-13 rnd := rand.New(rand.NewSource(1)) for _, uplo := range []blas.Uplo{blas.Upper, blas.Lower} { diff --git a/lapack/testlapack/dorm2r.go b/lapack/testlapack/dorm2r.go index d819f911..6fde1996 100644 --- a/lapack/testlapack/dorm2r.go +++ b/lapack/testlapack/dorm2r.go @@ -7,11 +7,10 @@ package testlapack import ( "testing" - "golang.org/x/exp/rand" - "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 { diff --git a/lapack/testlapack/dormbr.go b/lapack/testlapack/dormbr.go index f3baed92..5555ebf1 100644 --- a/lapack/testlapack/dormbr.go +++ b/lapack/testlapack/dormbr.go @@ -7,11 +7,10 @@ package testlapack import ( "testing" - "golang.org/x/exp/rand" - "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" ) diff --git a/lapack/testlapack/dormhr.go b/lapack/testlapack/dormhr.go index d3bdd139..422adcec 100644 --- a/lapack/testlapack/dormhr.go +++ b/lapack/testlapack/dormhr.go @@ -9,10 +9,9 @@ import ( "math" "testing" - "golang.org/x/exp/rand" - "gonum.org/v1/gonum/blas" "gonum.org/v1/gonum/blas/blas64" + "gonum.org/v1/gonum/internal/rand" ) type Dormhrer interface { diff --git a/lapack/testlapack/dorml2.go b/lapack/testlapack/dorml2.go index 17fc112d..6cabe5bd 100644 --- a/lapack/testlapack/dorml2.go +++ b/lapack/testlapack/dorml2.go @@ -7,11 +7,10 @@ package testlapack import ( "testing" - "golang.org/x/exp/rand" - "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 { diff --git a/lapack/testlapack/dormlq.go b/lapack/testlapack/dormlq.go index 5a84c6f3..0a7fa3aa 100644 --- a/lapack/testlapack/dormlq.go +++ b/lapack/testlapack/dormlq.go @@ -7,10 +7,9 @@ package testlapack import ( "testing" - "golang.org/x/exp/rand" - "gonum.org/v1/gonum/blas" "gonum.org/v1/gonum/floats" + "gonum.org/v1/gonum/internal/rand" ) type Dormlqer interface { diff --git a/lapack/testlapack/dormqr.go b/lapack/testlapack/dormqr.go index b3f03d6f..e09ef9e3 100644 --- a/lapack/testlapack/dormqr.go +++ b/lapack/testlapack/dormqr.go @@ -8,10 +8,9 @@ import ( "fmt" "testing" - "golang.org/x/exp/rand" - "gonum.org/v1/gonum/blas" "gonum.org/v1/gonum/floats" + "gonum.org/v1/gonum/internal/rand" ) type Dormqrer interface { diff --git a/lapack/testlapack/dormr2.go b/lapack/testlapack/dormr2.go index a05b0a18..ba20b0db 100644 --- a/lapack/testlapack/dormr2.go +++ b/lapack/testlapack/dormr2.go @@ -7,11 +7,10 @@ package testlapack import ( "testing" - "golang.org/x/exp/rand" - "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 { diff --git a/lapack/testlapack/dpbcon.go b/lapack/testlapack/dpbcon.go index 8fba1848..fc7b822e 100644 --- a/lapack/testlapack/dpbcon.go +++ b/lapack/testlapack/dpbcon.go @@ -9,9 +9,9 @@ import ( "math" "testing" - "golang.org/x/exp/rand" "gonum.org/v1/gonum/blas" "gonum.org/v1/gonum/floats" + "gonum.org/v1/gonum/internal/rand" "gonum.org/v1/gonum/lapack" ) diff --git a/lapack/testlapack/dpbtf2.go b/lapack/testlapack/dpbtf2.go index 89fba9ee..bc38b8ba 100644 --- a/lapack/testlapack/dpbtf2.go +++ b/lapack/testlapack/dpbtf2.go @@ -8,9 +8,8 @@ import ( "fmt" "testing" - "golang.org/x/exp/rand" - "gonum.org/v1/gonum/blas" + "gonum.org/v1/gonum/internal/rand" ) type Dpbtf2er interface { diff --git a/lapack/testlapack/dpbtrf.go b/lapack/testlapack/dpbtrf.go index 42487e50..1f25038d 100644 --- a/lapack/testlapack/dpbtrf.go +++ b/lapack/testlapack/dpbtrf.go @@ -8,10 +8,9 @@ import ( "fmt" "testing" - "golang.org/x/exp/rand" - "gonum.org/v1/gonum/blas" "gonum.org/v1/gonum/blas/blas64" + "gonum.org/v1/gonum/internal/rand" ) type Dpbtrfer interface { diff --git a/lapack/testlapack/dpbtrs.go b/lapack/testlapack/dpbtrs.go index d0ee2918..80e2f221 100644 --- a/lapack/testlapack/dpbtrs.go +++ b/lapack/testlapack/dpbtrs.go @@ -9,11 +9,10 @@ import ( "math" "testing" - "golang.org/x/exp/rand" - "gonum.org/v1/gonum/blas" "gonum.org/v1/gonum/blas/blas64" "gonum.org/v1/gonum/floats" + "gonum.org/v1/gonum/internal/rand" ) type Dpbtrser interface { diff --git a/lapack/testlapack/dpocon.go b/lapack/testlapack/dpocon.go index 7b19e8d8..6850a5f1 100644 --- a/lapack/testlapack/dpocon.go +++ b/lapack/testlapack/dpocon.go @@ -8,11 +8,10 @@ import ( "log" "testing" - "golang.org/x/exp/rand" - "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" ) diff --git a/lapack/testlapack/dpotrf.go b/lapack/testlapack/dpotrf.go index f8a952aa..473c626a 100644 --- a/lapack/testlapack/dpotrf.go +++ b/lapack/testlapack/dpotrf.go @@ -7,11 +7,10 @@ package testlapack import ( "testing" - "golang.org/x/exp/rand" - "gonum.org/v1/gonum/blas" "gonum.org/v1/gonum/blas/blas64" "gonum.org/v1/gonum/floats/scalar" + "gonum.org/v1/gonum/internal/rand" ) type Dpotrfer interface { diff --git a/lapack/testlapack/dpotri.go b/lapack/testlapack/dpotri.go index 2ed5f3fd..060762a9 100644 --- a/lapack/testlapack/dpotri.go +++ b/lapack/testlapack/dpotri.go @@ -8,10 +8,9 @@ import ( "fmt" "testing" - "golang.org/x/exp/rand" - "gonum.org/v1/gonum/blas" "gonum.org/v1/gonum/blas/blas64" + "gonum.org/v1/gonum/internal/rand" ) type Dpotrier interface { diff --git a/lapack/testlapack/dpotrs.go b/lapack/testlapack/dpotrs.go index e93619cf..fb3a5a92 100644 --- a/lapack/testlapack/dpotrs.go +++ b/lapack/testlapack/dpotrs.go @@ -8,10 +8,9 @@ import ( "fmt" "testing" - "golang.org/x/exp/rand" - "gonum.org/v1/gonum/blas" "gonum.org/v1/gonum/blas/blas64" + "gonum.org/v1/gonum/internal/rand" ) type Dpotrser interface { diff --git a/lapack/testlapack/dpstf2.go b/lapack/testlapack/dpstf2.go index 51fc5ede..dd4a9a2d 100644 --- a/lapack/testlapack/dpstf2.go +++ b/lapack/testlapack/dpstf2.go @@ -9,10 +9,9 @@ import ( "math" "testing" - "golang.org/x/exp/rand" - "gonum.org/v1/gonum/blas" "gonum.org/v1/gonum/blas/blas64" + "gonum.org/v1/gonum/internal/rand" ) type Dpstf2er interface { diff --git a/lapack/testlapack/dpstrf.go b/lapack/testlapack/dpstrf.go index a097b30a..b3c4cb23 100644 --- a/lapack/testlapack/dpstrf.go +++ b/lapack/testlapack/dpstrf.go @@ -9,10 +9,9 @@ import ( "math" "testing" - "golang.org/x/exp/rand" - "gonum.org/v1/gonum/blas" "gonum.org/v1/gonum/blas/blas64" + "gonum.org/v1/gonum/internal/rand" "gonum.org/v1/gonum/lapack" ) diff --git a/lapack/testlapack/dptcon.go b/lapack/testlapack/dptcon.go index d25ee50a..c9838a03 100644 --- a/lapack/testlapack/dptcon.go +++ b/lapack/testlapack/dptcon.go @@ -9,9 +9,8 @@ import ( "math" "testing" - "golang.org/x/exp/rand" - "gonum.org/v1/gonum/floats" + "gonum.org/v1/gonum/internal/rand" "gonum.org/v1/gonum/lapack" ) diff --git a/lapack/testlapack/dptsv.go b/lapack/testlapack/dptsv.go index 7a552d9f..5ad4201b 100644 --- a/lapack/testlapack/dptsv.go +++ b/lapack/testlapack/dptsv.go @@ -8,7 +8,7 @@ import ( "fmt" "testing" - "golang.org/x/exp/rand" + "gonum.org/v1/gonum/internal/rand" ) type Dptsver interface { diff --git a/lapack/testlapack/dpttrf.go b/lapack/testlapack/dpttrf.go index 4cd80184..9b8beda9 100644 --- a/lapack/testlapack/dpttrf.go +++ b/lapack/testlapack/dpttrf.go @@ -9,8 +9,7 @@ import ( "math" "testing" - "golang.org/x/exp/rand" - + "gonum.org/v1/gonum/internal/rand" "gonum.org/v1/gonum/lapack" ) diff --git a/lapack/testlapack/dpttrs.go b/lapack/testlapack/dpttrs.go index fc599624..e823876a 100644 --- a/lapack/testlapack/dpttrs.go +++ b/lapack/testlapack/dpttrs.go @@ -8,8 +8,8 @@ import ( "fmt" "testing" - "golang.org/x/exp/rand" "gonum.org/v1/gonum/blas/blas64" + "gonum.org/v1/gonum/internal/rand" "gonum.org/v1/gonum/lapack" ) diff --git a/lapack/testlapack/dsteqr.go b/lapack/testlapack/dsteqr.go index 8f9d45f4..156e2be5 100644 --- a/lapack/testlapack/dsteqr.go +++ b/lapack/testlapack/dsteqr.go @@ -7,11 +7,10 @@ package testlapack import ( "testing" - "golang.org/x/exp/rand" - "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" ) diff --git a/lapack/testlapack/dsterf.go b/lapack/testlapack/dsterf.go index ccd87973..40c2236c 100644 --- a/lapack/testlapack/dsterf.go +++ b/lapack/testlapack/dsterf.go @@ -10,11 +10,10 @@ import ( "sort" "testing" - "golang.org/x/exp/rand" - "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" ) diff --git a/lapack/testlapack/dsyev.go b/lapack/testlapack/dsyev.go index 65ccc886..5ce68f49 100644 --- a/lapack/testlapack/dsyev.go +++ b/lapack/testlapack/dsyev.go @@ -7,11 +7,10 @@ package testlapack import ( "testing" - "golang.org/x/exp/rand" - "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" ) diff --git a/lapack/testlapack/dsytd2.go b/lapack/testlapack/dsytd2.go index 586efa98..22a9bcf7 100644 --- a/lapack/testlapack/dsytd2.go +++ b/lapack/testlapack/dsytd2.go @@ -8,10 +8,9 @@ import ( "math" "testing" - "golang.org/x/exp/rand" - "gonum.org/v1/gonum/blas" "gonum.org/v1/gonum/blas/blas64" + "gonum.org/v1/gonum/internal/rand" ) type Dsytd2er interface { diff --git a/lapack/testlapack/dsytrd.go b/lapack/testlapack/dsytrd.go index 2b85ff3d..e151be32 100644 --- a/lapack/testlapack/dsytrd.go +++ b/lapack/testlapack/dsytrd.go @@ -8,10 +8,9 @@ import ( "fmt" "testing" - "golang.org/x/exp/rand" - "gonum.org/v1/gonum/blas" "gonum.org/v1/gonum/blas/blas64" + "gonum.org/v1/gonum/internal/rand" "gonum.org/v1/gonum/lapack" ) diff --git a/lapack/testlapack/dtbtrs.go b/lapack/testlapack/dtbtrs.go index 50b82246..b3d3f3d9 100644 --- a/lapack/testlapack/dtbtrs.go +++ b/lapack/testlapack/dtbtrs.go @@ -9,11 +9,10 @@ import ( "math" "testing" - "golang.org/x/exp/rand" - "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" ) diff --git a/lapack/testlapack/dtgsja.go b/lapack/testlapack/dtgsja.go index 88245c97..f2ad79ec 100644 --- a/lapack/testlapack/dtgsja.go +++ b/lapack/testlapack/dtgsja.go @@ -7,11 +7,10 @@ package testlapack import ( "testing" - "golang.org/x/exp/rand" - "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" ) diff --git a/lapack/testlapack/dtrcon.go b/lapack/testlapack/dtrcon.go index 11882dfe..403aee14 100644 --- a/lapack/testlapack/dtrcon.go +++ b/lapack/testlapack/dtrcon.go @@ -8,10 +8,9 @@ import ( "fmt" "testing" - "golang.org/x/exp/rand" - "gonum.org/v1/gonum/blas" "gonum.org/v1/gonum/floats" + "gonum.org/v1/gonum/internal/rand" "gonum.org/v1/gonum/lapack" ) diff --git a/lapack/testlapack/dtrevc3.go b/lapack/testlapack/dtrevc3.go index dce3d8c0..2b7a5c13 100644 --- a/lapack/testlapack/dtrevc3.go +++ b/lapack/testlapack/dtrevc3.go @@ -9,10 +9,9 @@ import ( "math" "testing" - "golang.org/x/exp/rand" - "gonum.org/v1/gonum/blas" "gonum.org/v1/gonum/blas/blas64" + "gonum.org/v1/gonum/internal/rand" "gonum.org/v1/gonum/lapack" ) diff --git a/lapack/testlapack/dtrexc.go b/lapack/testlapack/dtrexc.go index a5a025c1..33bc0bb5 100644 --- a/lapack/testlapack/dtrexc.go +++ b/lapack/testlapack/dtrexc.go @@ -8,10 +8,9 @@ import ( "fmt" "testing" - "golang.org/x/exp/rand" - "gonum.org/v1/gonum/blas" "gonum.org/v1/gonum/blas/blas64" + "gonum.org/v1/gonum/internal/rand" "gonum.org/v1/gonum/lapack" ) diff --git a/lapack/testlapack/dtrti2.go b/lapack/testlapack/dtrti2.go index bfaf8a97..dd71d844 100644 --- a/lapack/testlapack/dtrti2.go +++ b/lapack/testlapack/dtrti2.go @@ -7,11 +7,10 @@ package testlapack import ( "testing" - "golang.org/x/exp/rand" - "gonum.org/v1/gonum/blas" "gonum.org/v1/gonum/blas/blas64" "gonum.org/v1/gonum/floats" + "gonum.org/v1/gonum/internal/rand" ) type Dtrti2er interface { diff --git a/lapack/testlapack/dtrtri.go b/lapack/testlapack/dtrtri.go index 5483ef38..66d32714 100644 --- a/lapack/testlapack/dtrtri.go +++ b/lapack/testlapack/dtrtri.go @@ -7,10 +7,9 @@ package testlapack import ( "testing" - "golang.org/x/exp/rand" - "gonum.org/v1/gonum/blas" "gonum.org/v1/gonum/blas/blas64" + "gonum.org/v1/gonum/internal/rand" ) type Dtrtrier interface { diff --git a/lapack/testlapack/dtrtrs.go b/lapack/testlapack/dtrtrs.go index 3ea8f316..ccfe05e8 100644 --- a/lapack/testlapack/dtrtrs.go +++ b/lapack/testlapack/dtrtrs.go @@ -9,11 +9,10 @@ import ( "math" "testing" - "golang.org/x/exp/rand" - "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" ) diff --git a/lapack/testlapack/general.go b/lapack/testlapack/general.go index f532e1d2..cf100d34 100644 --- a/lapack/testlapack/general.go +++ b/lapack/testlapack/general.go @@ -10,10 +10,9 @@ import ( "math/cmplx" "testing" - "golang.org/x/exp/rand" - "gonum.org/v1/gonum/blas" "gonum.org/v1/gonum/blas/blas64" + "gonum.org/v1/gonum/internal/rand" "gonum.org/v1/gonum/lapack" ) diff --git a/lapack/testlapack/matgen.go b/lapack/testlapack/matgen.go index 5bc2deea..5ab1dc94 100644 --- a/lapack/testlapack/matgen.go +++ b/lapack/testlapack/matgen.go @@ -7,11 +7,10 @@ package testlapack import ( "math" - "golang.org/x/exp/rand" - "gonum.org/v1/gonum/blas" "gonum.org/v1/gonum/blas/blas64" "gonum.org/v1/gonum/floats" + "gonum.org/v1/gonum/internal/rand" ) // Dlatm1 computes the entries of dst as specified by mode, cond and rsign. diff --git a/lapack/testlapack/matgen_test.go b/lapack/testlapack/matgen_test.go index c9f5fc7a..a701ccbd 100644 --- a/lapack/testlapack/matgen_test.go +++ b/lapack/testlapack/matgen_test.go @@ -7,9 +7,8 @@ package testlapack import ( "testing" - "golang.org/x/exp/rand" - "gonum.org/v1/gonum/blas/blas64" + "gonum.org/v1/gonum/internal/rand" ) func TestDlagsy(t *testing.T) { diff --git a/lapack/testlapack/test_matrices.go b/lapack/testlapack/test_matrices.go index f6ce7fbe..2853572b 100644 --- a/lapack/testlapack/test_matrices.go +++ b/lapack/testlapack/test_matrices.go @@ -7,9 +7,8 @@ package testlapack import ( "math" - "golang.org/x/exp/rand" - "gonum.org/v1/gonum/blas/blas64" + "gonum.org/v1/gonum/internal/rand" ) // A123 is the non-symmetric singular matrix diff --git a/mat/cdense_test.go b/mat/cdense_test.go index d5440638..4b79888b 100644 --- a/mat/cdense_test.go +++ b/mat/cdense_test.go @@ -8,7 +8,7 @@ import ( "math/cmplx" "testing" - "golang.org/x/exp/rand" + "gonum.org/v1/gonum/internal/rand" ) func TestCDenseNewAtSet(t *testing.T) { diff --git a/mat/cholesky_test.go b/mat/cholesky_test.go index f938e891..8c5f5291 100644 --- a/mat/cholesky_test.go +++ b/mat/cholesky_test.go @@ -10,9 +10,8 @@ import ( "strconv" "testing" - "golang.org/x/exp/rand" - "gonum.org/v1/gonum/floats/scalar" + "gonum.org/v1/gonum/internal/rand" ) func TestCholesky(t *testing.T) { @@ -917,9 +916,8 @@ func TestBandCholeskyDet(t *testing.T) { want := cholDense.Det() got := chol.Det() - diff := math.Abs(got - want) - if diff > tol { - t.Errorf("%v: unexpected result; got=%v, want=%v (diff=%v)", name, got, want, diff) + if !scalar.EqualWithinRel(got, want, tol) { + t.Errorf("%v: unexpected result; got=%v, want=%v (diff=%v)", name, got, want, math.Abs(got-want)) } } } diff --git a/mat/dense_test.go b/mat/dense_test.go index 687d8222..a1ce8612 100644 --- a/mat/dense_test.go +++ b/mat/dense_test.go @@ -11,10 +11,9 @@ import ( "strings" "testing" - "golang.org/x/exp/rand" - "gonum.org/v1/gonum/blas/blas64" "gonum.org/v1/gonum/floats" + "gonum.org/v1/gonum/internal/rand" "gonum.org/v1/gonum/stat/combin" ) diff --git a/mat/diagonal_test.go b/mat/diagonal_test.go index 9c142b81..aca33d36 100644 --- a/mat/diagonal_test.go +++ b/mat/diagonal_test.go @@ -9,9 +9,8 @@ import ( "reflect" "testing" - "golang.org/x/exp/rand" - "gonum.org/v1/gonum/blas/blas64" + "gonum.org/v1/gonum/internal/rand" ) func TestNewDiagDense(t *testing.T) { diff --git a/mat/eigen_test.go b/mat/eigen_test.go index e1dd2dfa..00ce5527 100644 --- a/mat/eigen_test.go +++ b/mat/eigen_test.go @@ -9,9 +9,8 @@ import ( "sort" "testing" - "golang.org/x/exp/rand" - "gonum.org/v1/gonum/floats" + "gonum.org/v1/gonum/internal/rand" ) func TestEigen(t *testing.T) { diff --git a/mat/gsvd_test.go b/mat/gsvd_test.go index ec2f4e05..83225158 100644 --- a/mat/gsvd_test.go +++ b/mat/gsvd_test.go @@ -8,10 +8,9 @@ import ( "fmt" "testing" - "golang.org/x/exp/rand" - "gonum.org/v1/gonum/floats" "gonum.org/v1/gonum/floats/scalar" + "gonum.org/v1/gonum/internal/rand" ) func TestGSVD(t *testing.T) { diff --git a/mat/hogsvd_test.go b/mat/hogsvd_test.go index 07886ddd..d8f0dec8 100644 --- a/mat/hogsvd_test.go +++ b/mat/hogsvd_test.go @@ -7,7 +7,7 @@ package mat import ( "testing" - "golang.org/x/exp/rand" + "gonum.org/v1/gonum/internal/rand" ) func TestHOGSVD(t *testing.T) { diff --git a/mat/inner_test.go b/mat/inner_test.go index 269b2ea3..1a578c1a 100644 --- a/mat/inner_test.go +++ b/mat/inner_test.go @@ -8,10 +8,9 @@ import ( "math" "testing" - "golang.org/x/exp/rand" - "gonum.org/v1/gonum/blas/blas64" "gonum.org/v1/gonum/blas/testblas" + "gonum.org/v1/gonum/internal/rand" ) func TestInner(t *testing.T) { diff --git a/mat/list_test.go b/mat/list_test.go index 677f02e6..19577bd7 100644 --- a/mat/list_test.go +++ b/mat/list_test.go @@ -12,12 +12,11 @@ import ( "reflect" "testing" - "golang.org/x/exp/rand" - "gonum.org/v1/gonum/blas" "gonum.org/v1/gonum/blas/blas64" "gonum.org/v1/gonum/floats" "gonum.org/v1/gonum/floats/scalar" + "gonum.org/v1/gonum/internal/rand" ) // legalSizeSameRectangular returns whether the two matrices have the same rectangular shape. diff --git a/mat/lq_test.go b/mat/lq_test.go index 73986111..6b9b3796 100644 --- a/mat/lq_test.go +++ b/mat/lq_test.go @@ -7,7 +7,7 @@ package mat import ( "testing" - "golang.org/x/exp/rand" + "gonum.org/v1/gonum/internal/rand" ) func TestLQ(t *testing.T) { diff --git a/mat/lu_test.go b/mat/lu_test.go index 2ae13ea3..62d99b6f 100644 --- a/mat/lu_test.go +++ b/mat/lu_test.go @@ -7,7 +7,7 @@ package mat import ( "testing" - "golang.org/x/exp/rand" + "gonum.org/v1/gonum/internal/rand" ) func TestLU(t *testing.T) { diff --git a/mat/matrix_test.go b/mat/matrix_test.go index 8cc2d8c7..25fda0cd 100644 --- a/mat/matrix_test.go +++ b/mat/matrix_test.go @@ -10,10 +10,10 @@ import ( "reflect" "testing" - "golang.org/x/exp/rand" "gonum.org/v1/gonum/blas" "gonum.org/v1/gonum/blas/blas64" "gonum.org/v1/gonum/floats/scalar" + "gonum.org/v1/gonum/internal/rand" ) func panics(fn func()) (panicked bool, message string) { diff --git a/mat/mul_test.go b/mat/mul_test.go index 5897409c..8b95ca1c 100644 --- a/mat/mul_test.go +++ b/mat/mul_test.go @@ -7,11 +7,10 @@ package mat import ( "testing" - "golang.org/x/exp/rand" - "gonum.org/v1/gonum/blas" "gonum.org/v1/gonum/blas/blas64" "gonum.org/v1/gonum/floats" + "gonum.org/v1/gonum/internal/rand" ) // TODO: Need to add tests where one is overwritten. diff --git a/mat/pool_test.go b/mat/pool_test.go index 25ea5084..ef82fbb6 100644 --- a/mat/pool_test.go +++ b/mat/pool_test.go @@ -9,7 +9,7 @@ import ( "reflect" "testing" - "golang.org/x/exp/rand" + "gonum.org/v1/gonum/internal/rand" ) func TestPool(t *testing.T) { diff --git a/mat/product_test.go b/mat/product_test.go index 36f58783..a589a383 100644 --- a/mat/product_test.go +++ b/mat/product_test.go @@ -8,7 +8,7 @@ import ( "fmt" "testing" - "golang.org/x/exp/rand" + "gonum.org/v1/gonum/internal/rand" ) type dims struct{ r, c int } diff --git a/mat/qr_test.go b/mat/qr_test.go index e9ec26aa..3a7f9752 100644 --- a/mat/qr_test.go +++ b/mat/qr_test.go @@ -8,9 +8,8 @@ import ( "math" "testing" - "golang.org/x/exp/rand" - "gonum.org/v1/gonum/blas/blas64" + "gonum.org/v1/gonum/internal/rand" ) func TestQR(t *testing.T) { diff --git a/mat/shadow_test.go b/mat/shadow_test.go index 8c7b8475..d80332e9 100644 --- a/mat/shadow_test.go +++ b/mat/shadow_test.go @@ -7,7 +7,7 @@ package mat import ( "testing" - "golang.org/x/exp/rand" + "gonum.org/v1/gonum/internal/rand" ) func TestDenseOverlaps(t *testing.T) { diff --git a/mat/solve_test.go b/mat/solve_test.go index 043b3021..9c9034f4 100644 --- a/mat/solve_test.go +++ b/mat/solve_test.go @@ -7,7 +7,7 @@ package mat import ( "testing" - "golang.org/x/exp/rand" + "gonum.org/v1/gonum/internal/rand" ) func TestSolve(t *testing.T) { diff --git a/mat/svd_test.go b/mat/svd_test.go index b7129f95..c2c1dfa4 100644 --- a/mat/svd_test.go +++ b/mat/svd_test.go @@ -7,9 +7,8 @@ package mat import ( "testing" - "golang.org/x/exp/rand" - "gonum.org/v1/gonum/floats" + "gonum.org/v1/gonum/internal/rand" ) func TestSVD(t *testing.T) { diff --git a/mat/symmetric_test.go b/mat/symmetric_test.go index af95d763..61e03b7a 100644 --- a/mat/symmetric_test.go +++ b/mat/symmetric_test.go @@ -10,11 +10,10 @@ import ( "reflect" "testing" - "golang.org/x/exp/rand" - "gonum.org/v1/gonum/blas" "gonum.org/v1/gonum/blas/blas64" "gonum.org/v1/gonum/floats/scalar" + "gonum.org/v1/gonum/internal/rand" ) func TestNewSymmetric(t *testing.T) { diff --git a/mat/triangular_test.go b/mat/triangular_test.go index 2aca32a1..1ea4db2a 100644 --- a/mat/triangular_test.go +++ b/mat/triangular_test.go @@ -10,10 +10,9 @@ import ( "reflect" "testing" - "golang.org/x/exp/rand" - "gonum.org/v1/gonum/blas" "gonum.org/v1/gonum/blas/blas64" + "gonum.org/v1/gonum/internal/rand" ) func TestNewTriangular(t *testing.T) { diff --git a/mat/tridiag_test.go b/mat/tridiag_test.go index 4eeb7ff6..f50699b7 100644 --- a/mat/tridiag_test.go +++ b/mat/tridiag_test.go @@ -9,8 +9,7 @@ import ( "reflect" "testing" - "golang.org/x/exp/rand" - + "gonum.org/v1/gonum/internal/rand" "gonum.org/v1/gonum/lapack/lapack64" ) diff --git a/mat/vector_test.go b/mat/vector_test.go index 258cab7a..bedec6bc 100644 --- a/mat/vector_test.go +++ b/mat/vector_test.go @@ -8,9 +8,8 @@ import ( "reflect" "testing" - "golang.org/x/exp/rand" - "gonum.org/v1/gonum/blas/blas64" + "gonum.org/v1/gonum/internal/rand" "gonum.org/v1/gonum/stat/combin" ) diff --git a/mathext/ell_carlson_test.go b/mathext/ell_carlson_test.go index 6306ad5c..1cf1213f 100644 --- a/mathext/ell_carlson_test.go +++ b/mathext/ell_carlson_test.go @@ -8,7 +8,7 @@ import ( "math" "testing" - "golang.org/x/exp/rand" + "gonum.org/v1/gonum/internal/rand" ) // Testing EllipticF (and EllipticRF) using the addition theorems from http://dlmf.nist.gov/19.11.i diff --git a/mathext/internal/amos/amos_fortran_test.go b/mathext/internal/amos/amos_fortran_test.go index c9a90143..90bc58d9 100644 --- a/mathext/internal/amos/amos_fortran_test.go +++ b/mathext/internal/amos/amos_fortran_test.go @@ -12,8 +12,7 @@ import ( "runtime" "testing" - "golang.org/x/exp/rand" - + "gonum.org/v1/gonum/internal/rand" "gonum.org/v1/gonum/mathext/internal/amos/amoslib" ) diff --git a/mathext/internal/amos/amos_test.go b/mathext/internal/amos/amos_test.go index 3e6ba75e..f723b2fb 100644 --- a/mathext/internal/amos/amos_test.go +++ b/mathext/internal/amos/amos_test.go @@ -10,9 +10,8 @@ import ( "strconv" "testing" - "golang.org/x/exp/rand" - "gonum.org/v1/gonum/floats/scalar" + "gonum.org/v1/gonum/internal/rand" ) type input struct { diff --git a/mathext/internal/amos/origcode_test.go b/mathext/internal/amos/origcode_test.go index a45adddb..4fd03f5c 100644 --- a/mathext/internal/amos/origcode_test.go +++ b/mathext/internal/amos/origcode_test.go @@ -20,7 +20,6 @@ func iabs(a int) int { return -a } - func zairyOrig(ZR, ZI float64, ID, KODE int) (AIR, AII float64, NZ, IERR int) { // zairy is adapted from the original Netlib code by Donald Amos. // http://www.netlib.no/netlib/amos/zairy.f diff --git a/mathext/prng/mt19937_64_test.go b/mathext/prng/mt19937_64_test.go index d3de7a55..46738076 100644 --- a/mathext/prng/mt19937_64_test.go +++ b/mathext/prng/mt19937_64_test.go @@ -8,7 +8,7 @@ import ( "testing" "time" - "golang.org/x/exp/rand" + "gonum.org/v1/gonum/internal/rand" ) var _ rand.Source = (*MT19937_64)(nil) diff --git a/mathext/prng/mt19937_test.go b/mathext/prng/mt19937_test.go index 709e1b25..4e7e842e 100644 --- a/mathext/prng/mt19937_test.go +++ b/mathext/prng/mt19937_test.go @@ -8,7 +8,7 @@ import ( "testing" "time" - "golang.org/x/exp/rand" + "gonum.org/v1/gonum/internal/rand" ) var _ rand.Source = (*MT19937)(nil) diff --git a/mathext/prng/prng_di_unimi_test.go b/mathext/prng/prng_di_unimi_test.go index 21d5987a..078b3faf 100644 --- a/mathext/prng/prng_di_unimi_test.go +++ b/mathext/prng/prng_di_unimi_test.go @@ -8,7 +8,7 @@ import ( "testing" "time" - "golang.org/x/exp/rand" + "gonum.org/v1/gonum/internal/rand" ) // Random values in tests are produced by 40 iterations of the C code. diff --git a/optimize/cmaes.go b/optimize/cmaes.go index 70ead5a8..09904ec4 100644 --- a/optimize/cmaes.go +++ b/optimize/cmaes.go @@ -8,9 +8,8 @@ import ( "math" "sort" - "golang.org/x/exp/rand" - "gonum.org/v1/gonum/floats" + "gonum.org/v1/gonum/internal/rand" "gonum.org/v1/gonum/mat" "gonum.org/v1/gonum/stat/distmv" ) diff --git a/optimize/cmaes_test.go b/optimize/cmaes_test.go index 04ff14f9..23e0408b 100644 --- a/optimize/cmaes_test.go +++ b/optimize/cmaes_test.go @@ -9,9 +9,8 @@ import ( "math" "testing" - "golang.org/x/exp/rand" - "gonum.org/v1/gonum/floats" + "gonum.org/v1/gonum/internal/rand" "gonum.org/v1/gonum/mat" "gonum.org/v1/gonum/optimize/functions" ) @@ -156,7 +155,7 @@ func cmaTestCases() []cmaTestCase { Func: functions.Rastrigin{}.Func, }, method: &CmaEsChol{ - Population: 100, // Increase the population size to reduce noise. + Population: 200, // Increase the population size to reduce noise. }, settings: &Settings{ Converger: NeverTerminate{}, diff --git a/optimize/convex/lp/simplex_test.go b/optimize/convex/lp/simplex_test.go index b9307478..80bc6c46 100644 --- a/optimize/convex/lp/simplex_test.go +++ b/optimize/convex/lp/simplex_test.go @@ -7,9 +7,8 @@ package lp import ( "testing" - "golang.org/x/exp/rand" - "gonum.org/v1/gonum/floats/scalar" + "gonum.org/v1/gonum/internal/rand" "gonum.org/v1/gonum/mat" ) @@ -132,7 +131,7 @@ func TestSimplex(t *testing.T) { rnd := rand.New(rand.NewSource(1)) // Randomized tests - testRandomSimplex(t, 20000, 0.7, 10, rnd) + testRandomSimplex(t, 20000, 0.2, 10, rnd) testRandomSimplex(t, 20000, 0, 10, rnd) testRandomSimplex(t, 200, 0, 100, rnd) testRandomSimplex(t, 2, 0, 400, rnd) diff --git a/optimize/listsearch_test.go b/optimize/listsearch_test.go index 40137e2e..9631a7ed 100644 --- a/optimize/listsearch_test.go +++ b/optimize/listsearch_test.go @@ -7,9 +7,8 @@ package optimize import ( "testing" - "golang.org/x/exp/rand" - "gonum.org/v1/gonum/floats" + "gonum.org/v1/gonum/internal/rand" "gonum.org/v1/gonum/mat" "gonum.org/v1/gonum/optimize/functions" ) diff --git a/spatial/barneshut/barneshut2_test.go b/spatial/barneshut/barneshut2_test.go index 2bbb4303..a82949f9 100644 --- a/spatial/barneshut/barneshut2_test.go +++ b/spatial/barneshut/barneshut2_test.go @@ -10,9 +10,8 @@ import ( "reflect" "testing" - "golang.org/x/exp/rand" - "gonum.org/v1/gonum/floats/scalar" + "gonum.org/v1/gonum/internal/rand" "gonum.org/v1/gonum/spatial/r2" ) diff --git a/spatial/barneshut/barneshut3_test.go b/spatial/barneshut/barneshut3_test.go index 88dfca7c..0c9e0ad5 100644 --- a/spatial/barneshut/barneshut3_test.go +++ b/spatial/barneshut/barneshut3_test.go @@ -10,9 +10,8 @@ import ( "reflect" "testing" - "golang.org/x/exp/rand" - "gonum.org/v1/gonum/floats/scalar" + "gonum.org/v1/gonum/internal/rand" "gonum.org/v1/gonum/spatial/r3" ) diff --git a/spatial/barneshut/galaxy_example_test.go b/spatial/barneshut/galaxy_example_test.go index 0f7f9314..ad2e79fc 100644 --- a/spatial/barneshut/galaxy_example_test.go +++ b/spatial/barneshut/galaxy_example_test.go @@ -7,8 +7,7 @@ package barneshut_test import ( "log" - "golang.org/x/exp/rand" - + "gonum.org/v1/gonum/internal/rand" "gonum.org/v1/gonum/spatial/barneshut" "gonum.org/v1/gonum/spatial/r2" ) diff --git a/spatial/curve/hilbert_test.go b/spatial/curve/hilbert_test.go index b68b14ec..1237a2c3 100644 --- a/spatial/curve/hilbert_test.go +++ b/spatial/curve/hilbert_test.go @@ -12,7 +12,7 @@ import ( "strings" "testing" - "golang.org/x/exp/rand" + "gonum.org/v1/gonum/internal/rand" ) func ExampleHilbert2D_Pos() { diff --git a/spatial/kdtree/kdtree_test.go b/spatial/kdtree/kdtree_test.go index 8b0b4e2a..b5432339 100644 --- a/spatial/kdtree/kdtree_test.go +++ b/spatial/kdtree/kdtree_test.go @@ -16,7 +16,7 @@ import ( "testing" "unsafe" - "golang.org/x/exp/rand" + "gonum.org/v1/gonum/internal/rand" ) var ( diff --git a/spatial/kdtree/medians.go b/spatial/kdtree/medians.go index 607d4897..7e50c518 100644 --- a/spatial/kdtree/medians.go +++ b/spatial/kdtree/medians.go @@ -7,7 +7,7 @@ package kdtree import ( "sort" - "golang.org/x/exp/rand" + "gonum.org/v1/gonum/internal/rand" ) // Partition partitions list such that all elements less than the value at diff --git a/spatial/kdtree/medians_test.go b/spatial/kdtree/medians_test.go index f6936113..6e0d5790 100644 --- a/spatial/kdtree/medians_test.go +++ b/spatial/kdtree/medians_test.go @@ -8,7 +8,7 @@ import ( "sort" "testing" - "golang.org/x/exp/rand" + "gonum.org/v1/gonum/internal/rand" ) type ints []int diff --git a/spatial/r2/box_test.go b/spatial/r2/box_test.go index 0e0ea869..e524eb7b 100644 --- a/spatial/r2/box_test.go +++ b/spatial/r2/box_test.go @@ -7,7 +7,7 @@ package r2 import ( "testing" - "golang.org/x/exp/rand" + "gonum.org/v1/gonum/internal/rand" ) func TestBoxContains(t *testing.T) { diff --git a/spatial/r2/triangle_test.go b/spatial/r2/triangle_test.go index 423905dc..8e18d386 100644 --- a/spatial/r2/triangle_test.go +++ b/spatial/r2/triangle_test.go @@ -8,7 +8,7 @@ import ( "math" "testing" - "golang.org/x/exp/rand" + "gonum.org/v1/gonum/internal/rand" ) func TestTriangleDegenerate(t *testing.T) { diff --git a/spatial/r2/vector_test.go b/spatial/r2/vector_test.go index 05dbbf0f..aac09981 100644 --- a/spatial/r2/vector_test.go +++ b/spatial/r2/vector_test.go @@ -8,8 +8,8 @@ import ( "math" "testing" - "golang.org/x/exp/rand" "gonum.org/v1/gonum/floats/scalar" + "gonum.org/v1/gonum/internal/rand" ) func TestAdd(t *testing.T) { diff --git a/spatial/r3/box_test.go b/spatial/r3/box_test.go index 2424ae5c..b8380dfa 100644 --- a/spatial/r3/box_test.go +++ b/spatial/r3/box_test.go @@ -7,7 +7,7 @@ package r3 import ( "testing" - "golang.org/x/exp/rand" + "gonum.org/v1/gonum/internal/rand" ) func TestBoxContains(t *testing.T) { diff --git a/spatial/r3/mat_test.go b/spatial/r3/mat_test.go index 5e18d9ad..77659aeb 100644 --- a/spatial/r3/mat_test.go +++ b/spatial/r3/mat_test.go @@ -8,8 +8,7 @@ import ( "math" "testing" - "golang.org/x/exp/rand" - + "gonum.org/v1/gonum/internal/rand" "gonum.org/v1/gonum/mat" "gonum.org/v1/gonum/num/quat" ) @@ -284,7 +283,7 @@ var scalarFields = []struct { func TestMatHessian(t *testing.T) { const ( - tol = 1e-5 + tol = 3e-5 h = 8e-4 ) step := Vec{X: h, Y: h, Z: h} @@ -296,8 +295,9 @@ func TestMatHessian(t *testing.T) { got.Hessian(p, step, test.field) want := test.hessian(p) if !mat.EqualApprox(got, want, tol) { - t.Errorf("matrices not equal within tol\ngot: %v\nwant: %v", - mat.Formatted(got), mat.Formatted(want)) + t.Errorf("matrices not equal within tol\ngot: %v\nwant: %v", + mat.Formatted(got, mat.Prefix(" ")), + mat.Formatted(want, mat.Prefix(" "))) } } } diff --git a/spatial/r3/triangle_test.go b/spatial/r3/triangle_test.go index 689079cf..6c57d511 100644 --- a/spatial/r3/triangle_test.go +++ b/spatial/r3/triangle_test.go @@ -8,7 +8,7 @@ import ( "math" "testing" - "golang.org/x/exp/rand" + "gonum.org/v1/gonum/internal/rand" ) func TestTriangleDegenerate(t *testing.T) { diff --git a/spatial/r3/vector_test.go b/spatial/r3/vector_test.go index 72023e2b..5da34d66 100644 --- a/spatial/r3/vector_test.go +++ b/spatial/r3/vector_test.go @@ -8,9 +8,8 @@ import ( "math" "testing" - "golang.org/x/exp/rand" - "gonum.org/v1/gonum/floats/scalar" + "gonum.org/v1/gonum/internal/rand" "gonum.org/v1/gonum/mat" ) diff --git a/spatial/vptree/vptree.go b/spatial/vptree/vptree.go index 5c945199..e17d9d0e 100644 --- a/spatial/vptree/vptree.go +++ b/spatial/vptree/vptree.go @@ -10,8 +10,7 @@ import ( "math" "sort" - "golang.org/x/exp/rand" - + "gonum.org/v1/gonum/internal/rand" "gonum.org/v1/gonum/stat" ) diff --git a/spatial/vptree/vptree_test.go b/spatial/vptree/vptree_test.go index f20e7d2a..f80b4399 100644 --- a/spatial/vptree/vptree_test.go +++ b/spatial/vptree/vptree_test.go @@ -16,9 +16,8 @@ import ( "testing" "unsafe" - "golang.org/x/exp/rand" - "gonum.org/v1/gonum/internal/order" + "gonum.org/v1/gonum/internal/rand" ) var ( diff --git a/stat/card/card_test.go b/stat/card/card_test.go index c38c4719..b04d4c83 100644 --- a/stat/card/card_test.go +++ b/stat/card/card_test.go @@ -15,9 +15,8 @@ import ( "sync" "testing" - "golang.org/x/exp/rand" - "gonum.org/v1/gonum/floats/scalar" + "gonum.org/v1/gonum/internal/rand" ) // exact is an exact cardinality accumulator. @@ -51,16 +50,16 @@ var counterTests = []struct { {name: "HyperLogLog32-0-10-FNV-1a", count: 0, counter: func() counter { return mustCounter(NewHyperLogLog32(10, fnv.New32a())) }, tol: 0}, {name: "HyperLogLog64-0-10-FNV-1a", count: 0, counter: func() counter { return mustCounter(NewHyperLogLog64(10, fnv.New64a())) }, tol: 0}, {name: "HyperLogLog32-10-14-FNV-1a", count: 10, counter: func() counter { return mustCounter(NewHyperLogLog32(14, fnv.New32a())) }, tol: 0.0005}, - {name: "HyperLogLog32-1e3-4-FNV-1a", count: 1e3, counter: func() counter { return mustCounter(NewHyperLogLog32(4, fnv.New32a())) }, tol: 0.1}, - {name: "HyperLogLog32-1e4-6-FNV-1a", count: 1e4, counter: func() counter { return mustCounter(NewHyperLogLog32(6, fnv.New32a())) }, tol: 0.06}, - {name: "HyperLogLog32-1e7-8-FNV-1a", count: 1e7, counter: func() counter { return mustCounter(NewHyperLogLog32(8, fnv.New32a())) }, tol: 0.03}, + {name: "HyperLogLog32-1e3-4-FNV-1a", count: 1e3, counter: func() counter { return mustCounter(NewHyperLogLog32(4, fnv.New32a())) }, tol: 0.5}, + {name: "HyperLogLog32-1e4-6-FNV-1a", count: 1e4, counter: func() counter { return mustCounter(NewHyperLogLog32(6, fnv.New32a())) }, tol: 0.1}, + {name: "HyperLogLog32-1e7-8-FNV-1a", count: 1e7, counter: func() counter { return mustCounter(NewHyperLogLog32(8, fnv.New32a())) }, tol: 0.08}, {name: "HyperLogLog64-1e7-8-FNV-1a", count: 1e7, counter: func() counter { return mustCounter(NewHyperLogLog64(8, fnv.New64a())) }, tol: 0.07}, {name: "HyperLogLog32-1e7-10-FNV-1a", count: 1e7, counter: func() counter { return mustCounter(NewHyperLogLog32(10, fnv.New32a())) }, tol: 0.06}, - {name: "HyperLogLog64-1e7-10-FNV-1a", count: 1e7, counter: func() counter { return mustCounter(NewHyperLogLog64(10, fnv.New64a())) }, tol: 0.02}, - {name: "HyperLogLog32-1e7-14-FNV-1a", count: 1e7, counter: func() counter { return mustCounter(NewHyperLogLog32(14, fnv.New32a())) }, tol: 0.005}, - {name: "HyperLogLog64-1e7-14-FNV-1a", count: 1e7, counter: func() counter { return mustCounter(NewHyperLogLog64(14, fnv.New64a())) }, tol: 0.002}, + {name: "HyperLogLog64-1e7-10-FNV-1a", count: 1e7, counter: func() counter { return mustCounter(NewHyperLogLog64(10, fnv.New64a())) }, tol: 0.04}, + {name: "HyperLogLog32-1e7-14-FNV-1a", count: 1e7, counter: func() counter { return mustCounter(NewHyperLogLog32(14, fnv.New32a())) }, tol: 0.015}, + {name: "HyperLogLog64-1e7-14-FNV-1a", count: 1e7, counter: func() counter { return mustCounter(NewHyperLogLog64(14, fnv.New64a())) }, tol: 0.01}, {name: "HyperLogLog32-1e7-16-FNV-1a", count: 1e7, counter: func() counter { return mustCounter(NewHyperLogLog32(16, fnv.New32a())) }, tol: 0.005}, - {name: "HyperLogLog64-1e7-16-FNV-1a", count: 1e7, counter: func() counter { return mustCounter(NewHyperLogLog64(16, fnv.New64a())) }, tol: 0.002}, + {name: "HyperLogLog64-1e7-16-FNV-1a", count: 1e7, counter: func() counter { return mustCounter(NewHyperLogLog64(16, fnv.New64a())) }, tol: 0.008}, {name: "HyperLogLog64-1e7-20-FNV-1a", count: 1e7, counter: func() counter { return mustCounter(NewHyperLogLog64(20, fnv.New64a())) }, tol: 0.001}, {name: "HyperLogLog64-1e3-20-FNV-1a", count: 1e3, counter: func() counter { return mustCounter(NewHyperLogLog64(20, fnv.New64a())) }, tol: 0.001}, } diff --git a/stat/distmat/permutation.go b/stat/distmat/permutation.go index e1112646..d45e74e6 100644 --- a/stat/distmat/permutation.go +++ b/stat/distmat/permutation.go @@ -5,8 +5,7 @@ package distmat import ( - "golang.org/x/exp/rand" - + "gonum.org/v1/gonum/internal/rand" "gonum.org/v1/gonum/mat" ) diff --git a/stat/distmat/permutation_test.go b/stat/distmat/permutation_test.go index 206e2a8c..7c764395 100644 --- a/stat/distmat/permutation_test.go +++ b/stat/distmat/permutation_test.go @@ -7,8 +7,7 @@ package distmat import ( "testing" - "golang.org/x/exp/rand" - + "gonum.org/v1/gonum/internal/rand" "gonum.org/v1/gonum/mat" ) diff --git a/stat/distmat/unit_vector.go b/stat/distmat/unit_vector.go index 4f6bc5f4..87df26c1 100644 --- a/stat/distmat/unit_vector.go +++ b/stat/distmat/unit_vector.go @@ -5,8 +5,7 @@ package distmat import ( - "golang.org/x/exp/rand" - + "gonum.org/v1/gonum/internal/rand" "gonum.org/v1/gonum/mat" "gonum.org/v1/gonum/stat/distuv" ) diff --git a/stat/distmat/unit_vector_example_test.go b/stat/distmat/unit_vector_example_test.go index cd815fc1..f321a652 100644 --- a/stat/distmat/unit_vector_example_test.go +++ b/stat/distmat/unit_vector_example_test.go @@ -7,8 +7,7 @@ package distmat_test import ( "fmt" - "golang.org/x/exp/rand" - + "gonum.org/v1/gonum/internal/rand" "gonum.org/v1/gonum/mat" "gonum.org/v1/gonum/stat/distmat" ) @@ -39,5 +38,5 @@ func ExampleUnitVector() { distance := mat.Norm(position, 2) fmt.Printf("took %d steps in %d-space, walked %1.1f in total", nSteps, nDim, distance) // Output: - // took 22 steps in 52-space, walked 5.3 in total + // took 60 steps in 41-space, walked 7.8 in total } diff --git a/stat/distmat/unit_vector_test.go b/stat/distmat/unit_vector_test.go index 1b5e5b62..35d95fff 100644 --- a/stat/distmat/unit_vector_test.go +++ b/stat/distmat/unit_vector_test.go @@ -7,9 +7,8 @@ package distmat import ( "testing" - "golang.org/x/exp/rand" - "gonum.org/v1/gonum/floats/scalar" + "gonum.org/v1/gonum/internal/rand" "gonum.org/v1/gonum/mat" ) diff --git a/stat/distmat/wishart.go b/stat/distmat/wishart.go index 0f007dc1..02af6281 100644 --- a/stat/distmat/wishart.go +++ b/stat/distmat/wishart.go @@ -8,8 +8,7 @@ import ( "math" "sync" - "golang.org/x/exp/rand" - + "gonum.org/v1/gonum/internal/rand" "gonum.org/v1/gonum/mat" "gonum.org/v1/gonum/mathext" "gonum.org/v1/gonum/stat/distuv" diff --git a/stat/distmat/wishart_test.go b/stat/distmat/wishart_test.go index cc7e686c..bf9bdfe4 100644 --- a/stat/distmat/wishart_test.go +++ b/stat/distmat/wishart_test.go @@ -8,9 +8,8 @@ import ( "math" "testing" - "golang.org/x/exp/rand" - "gonum.org/v1/gonum/floats/scalar" + "gonum.org/v1/gonum/internal/rand" "gonum.org/v1/gonum/mat" ) diff --git a/stat/distmv/dirichlet.go b/stat/distmv/dirichlet.go index fec49ce4..3b89c5c5 100644 --- a/stat/distmv/dirichlet.go +++ b/stat/distmv/dirichlet.go @@ -7,9 +7,8 @@ package distmv import ( "math" - "golang.org/x/exp/rand" - "gonum.org/v1/gonum/floats" + "gonum.org/v1/gonum/internal/rand" "gonum.org/v1/gonum/mat" "gonum.org/v1/gonum/stat/distuv" ) diff --git a/stat/distmv/dirichlet_test.go b/stat/distmv/dirichlet_test.go index 24f69de9..a07ac532 100644 --- a/stat/distmv/dirichlet_test.go +++ b/stat/distmv/dirichlet_test.go @@ -8,8 +8,7 @@ import ( "math" "testing" - "golang.org/x/exp/rand" - + "gonum.org/v1/gonum/internal/rand" "gonum.org/v1/gonum/mat" ) diff --git a/stat/distmv/normal.go b/stat/distmv/normal.go index 8d6cc814..8d55bfeb 100644 --- a/stat/distmv/normal.go +++ b/stat/distmv/normal.go @@ -7,9 +7,8 @@ package distmv import ( "math" - "golang.org/x/exp/rand" - "gonum.org/v1/gonum/floats" + "gonum.org/v1/gonum/internal/rand" "gonum.org/v1/gonum/mat" "gonum.org/v1/gonum/stat" "gonum.org/v1/gonum/stat/distuv" diff --git a/stat/distmv/normal_test.go b/stat/distmv/normal_test.go index c358fd31..52573213 100644 --- a/stat/distmv/normal_test.go +++ b/stat/distmv/normal_test.go @@ -9,10 +9,9 @@ import ( "math" "testing" - "golang.org/x/exp/rand" - "gonum.org/v1/gonum/diff/fd" "gonum.org/v1/gonum/floats" + "gonum.org/v1/gonum/internal/rand" "gonum.org/v1/gonum/mat" "gonum.org/v1/gonum/stat" ) diff --git a/stat/distmv/normalbench_test.go b/stat/distmv/normalbench_test.go index d254e5b9..b2cf5cda 100644 --- a/stat/distmv/normalbench_test.go +++ b/stat/distmv/normalbench_test.go @@ -8,8 +8,7 @@ import ( "log" "testing" - "golang.org/x/exp/rand" - + "gonum.org/v1/gonum/internal/rand" "gonum.org/v1/gonum/mat" ) diff --git a/stat/distmv/statdist_test.go b/stat/distmv/statdist_test.go index 605a3ba1..c2623e33 100644 --- a/stat/distmv/statdist_test.go +++ b/stat/distmv/statdist_test.go @@ -8,10 +8,9 @@ import ( "math" "testing" - "golang.org/x/exp/rand" - "gonum.org/v1/gonum/floats" "gonum.org/v1/gonum/floats/scalar" + "gonum.org/v1/gonum/internal/rand" "gonum.org/v1/gonum/mat" "gonum.org/v1/gonum/spatial/r1" ) diff --git a/stat/distmv/studentst.go b/stat/distmv/studentst.go index 2ef71bec..c9c8b5e5 100644 --- a/stat/distmv/studentst.go +++ b/stat/distmv/studentst.go @@ -8,10 +8,10 @@ import ( "math" "sort" - "golang.org/x/exp/rand" "golang.org/x/tools/container/intsets" "gonum.org/v1/gonum/floats" + "gonum.org/v1/gonum/internal/rand" "gonum.org/v1/gonum/mat" "gonum.org/v1/gonum/stat" "gonum.org/v1/gonum/stat/distuv" diff --git a/stat/distmv/studentst_test.go b/stat/distmv/studentst_test.go index 324843c2..ad5fbcd6 100644 --- a/stat/distmv/studentst_test.go +++ b/stat/distmv/studentst_test.go @@ -8,10 +8,9 @@ import ( "math" "testing" - "golang.org/x/exp/rand" - "gonum.org/v1/gonum/floats" "gonum.org/v1/gonum/floats/scalar" + "gonum.org/v1/gonum/internal/rand" "gonum.org/v1/gonum/mat" "gonum.org/v1/gonum/stat" ) diff --git a/stat/distmv/uniform.go b/stat/distmv/uniform.go index 75082f7a..1d98f241 100644 --- a/stat/distmv/uniform.go +++ b/stat/distmv/uniform.go @@ -7,7 +7,7 @@ package distmv import ( "math" - "golang.org/x/exp/rand" + "gonum.org/v1/gonum/internal/rand" "gonum.org/v1/gonum/spatial/r1" ) diff --git a/stat/distuv/alphastable.go b/stat/distuv/alphastable.go index d23335d9..ee31dc36 100644 --- a/stat/distuv/alphastable.go +++ b/stat/distuv/alphastable.go @@ -7,7 +7,7 @@ package distuv import ( "math" - "golang.org/x/exp/rand" + "gonum.org/v1/gonum/internal/rand" ) // AlphaStable represents an α-stable distribution with four parameters. diff --git a/stat/distuv/alphastable_test.go b/stat/distuv/alphastable_test.go index c761f606..7923e8f7 100644 --- a/stat/distuv/alphastable_test.go +++ b/stat/distuv/alphastable_test.go @@ -9,7 +9,7 @@ import ( "sort" "testing" - "golang.org/x/exp/rand" + "gonum.org/v1/gonum/internal/rand" "gonum.org/v1/gonum/stat" ) @@ -38,7 +38,7 @@ func TestAlphaStable(t *testing.T) { func TestAlphaStability(t *testing.T) { t.Parallel() const ( - n = 10000 + n = 100000 ksTol = 2e-2 ) for i, test := range []struct { @@ -60,7 +60,7 @@ func TestAlphaStableGaussian(t *testing.T) { t.Parallel() src := rand.New(rand.NewSource(1)) d := AlphaStable{Alpha: 2, Beta: 0, C: 1.5, Mu: -0.4, Src: src} - n := 100000 + n := 1000000 x := make([]float64, n) for i := 0; i < n; i++ { x[i] = d.Rand() @@ -69,14 +69,14 @@ func TestAlphaStableGaussian(t *testing.T) { checkExKurtosis(t, 0, x, d, 1e-2) checkMean(t, 0, x, d, 1e-2) checkVarAndStd(t, 0, x, d, 1e-2) - checkMode(t, 0, x, d, 5e-2, 1e-1) + checkMode(t, 0, x, d, 5e-2, 3e-1) } func TestAlphaStableMean(t *testing.T) { t.Parallel() src := rand.New(rand.NewSource(1)) d := AlphaStable{Alpha: 1.75, Beta: 0.2, C: 1.2, Mu: 0.3, Src: src} - n := 100000 + n := 1000000 x := make([]float64, n) for i := 0; i < n; i++ { x[i] = d.Rand() @@ -166,6 +166,8 @@ func testAlphaStableAnalytic(t *testing.T, i int, dist AlphaStable) { } func testStability(t *testing.T, i, n int, alpha, beta1, beta2, c1, c2, mu1, mu2, ksTol float64) { + t.Helper() + src := rand.New(rand.NewSource(1)) d1 := AlphaStable{alpha, beta1, c1, mu1, src} d2 := AlphaStable{alpha, beta2, c2, mu2, src} diff --git a/stat/distuv/bernoulli.go b/stat/distuv/bernoulli.go index 47d6f0ad..8f06a952 100644 --- a/stat/distuv/bernoulli.go +++ b/stat/distuv/bernoulli.go @@ -7,7 +7,7 @@ package distuv import ( "math" - "golang.org/x/exp/rand" + "gonum.org/v1/gonum/internal/rand" ) // Bernoulli represents a random variable whose value is 1 with probability p and diff --git a/stat/distuv/bernoulli_test.go b/stat/distuv/bernoulli_test.go index a59553b1..0a5fe4e1 100644 --- a/stat/distuv/bernoulli_test.go +++ b/stat/distuv/bernoulli_test.go @@ -9,7 +9,7 @@ import ( "sort" "testing" - "golang.org/x/exp/rand" + "gonum.org/v1/gonum/internal/rand" ) func TestBernoulli(t *testing.T) { diff --git a/stat/distuv/beta.go b/stat/distuv/beta.go index e72c26e8..67acf7a1 100644 --- a/stat/distuv/beta.go +++ b/stat/distuv/beta.go @@ -7,8 +7,7 @@ package distuv import ( "math" - "golang.org/x/exp/rand" - + "gonum.org/v1/gonum/internal/rand" "gonum.org/v1/gonum/mathext" ) diff --git a/stat/distuv/beta_test.go b/stat/distuv/beta_test.go index 6e8a7435..b88e4249 100644 --- a/stat/distuv/beta_test.go +++ b/stat/distuv/beta_test.go @@ -9,9 +9,8 @@ import ( "sort" "testing" - "golang.org/x/exp/rand" - "gonum.org/v1/gonum/floats/scalar" + "gonum.org/v1/gonum/internal/rand" ) func TestBetaProb(t *testing.T) { diff --git a/stat/distuv/binomial.go b/stat/distuv/binomial.go index a7e67377..16be8e4f 100644 --- a/stat/distuv/binomial.go +++ b/stat/distuv/binomial.go @@ -7,8 +7,7 @@ package distuv import ( "math" - "golang.org/x/exp/rand" - + "gonum.org/v1/gonum/internal/rand" "gonum.org/v1/gonum/mathext" "gonum.org/v1/gonum/stat/combin" ) diff --git a/stat/distuv/binomial_test.go b/stat/distuv/binomial_test.go index 04b6119e..85dc530f 100644 --- a/stat/distuv/binomial_test.go +++ b/stat/distuv/binomial_test.go @@ -8,9 +8,8 @@ import ( "sort" "testing" - "golang.org/x/exp/rand" - "gonum.org/v1/gonum/floats/scalar" + "gonum.org/v1/gonum/internal/rand" ) func TestBinomialProb(t *testing.T) { @@ -145,7 +144,7 @@ func testBinomial(t *testing.T, b Binomial, i int) { checkMean(t, i, x, b, tol) checkVarAndStd(t, i, x, b, tol) checkExKurtosis(t, i, x, b, 7e-2) - checkSkewness(t, i, x, b, tol) + checkSkewness(t, i, x, b, 3e-2) if b.NumParameters() != 2 { t.Errorf("Wrong number of parameters") diff --git a/stat/distuv/categorical.go b/stat/distuv/categorical.go index 13a26b8e..0930d7d6 100644 --- a/stat/distuv/categorical.go +++ b/stat/distuv/categorical.go @@ -7,7 +7,7 @@ package distuv import ( "math" - "golang.org/x/exp/rand" + "gonum.org/v1/gonum/internal/rand" ) // Categorical is an extension of the Bernoulli distribution where x takes diff --git a/stat/distuv/categorical_test.go b/stat/distuv/categorical_test.go index 996560c4..103ae4a4 100644 --- a/stat/distuv/categorical_test.go +++ b/stat/distuv/categorical_test.go @@ -8,10 +8,9 @@ import ( "math" "testing" - "golang.org/x/exp/rand" - "gonum.org/v1/gonum/floats" "gonum.org/v1/gonum/floats/scalar" + "gonum.org/v1/gonum/internal/rand" ) const ( diff --git a/stat/distuv/chi.go b/stat/distuv/chi.go index 07efb284..4fb07ea9 100644 --- a/stat/distuv/chi.go +++ b/stat/distuv/chi.go @@ -7,8 +7,7 @@ package distuv import ( "math" - "golang.org/x/exp/rand" - + "gonum.org/v1/gonum/internal/rand" "gonum.org/v1/gonum/mathext" ) diff --git a/stat/distuv/chi_test.go b/stat/distuv/chi_test.go index 51b7a066..84a3f0cb 100644 --- a/stat/distuv/chi_test.go +++ b/stat/distuv/chi_test.go @@ -9,9 +9,8 @@ import ( "sort" "testing" - "golang.org/x/exp/rand" - "gonum.org/v1/gonum/floats/scalar" + "gonum.org/v1/gonum/internal/rand" ) func TestChiProb(t *testing.T) { diff --git a/stat/distuv/chisquared.go b/stat/distuv/chisquared.go index 000e19b3..708d975d 100644 --- a/stat/distuv/chisquared.go +++ b/stat/distuv/chisquared.go @@ -7,8 +7,7 @@ package distuv import ( "math" - "golang.org/x/exp/rand" - + "gonum.org/v1/gonum/internal/rand" "gonum.org/v1/gonum/mathext" ) diff --git a/stat/distuv/chisquared_test.go b/stat/distuv/chisquared_test.go index 6c8c0858..0bec319d 100644 --- a/stat/distuv/chisquared_test.go +++ b/stat/distuv/chisquared_test.go @@ -9,9 +9,8 @@ import ( "sort" "testing" - "golang.org/x/exp/rand" - "gonum.org/v1/gonum/floats/scalar" + "gonum.org/v1/gonum/internal/rand" ) func TestChiSquaredProb(t *testing.T) { diff --git a/stat/distuv/exponential.go b/stat/distuv/exponential.go index 9770c445..ce443041 100644 --- a/stat/distuv/exponential.go +++ b/stat/distuv/exponential.go @@ -7,9 +7,8 @@ package distuv import ( "math" - "golang.org/x/exp/rand" - "gonum.org/v1/gonum/floats" + "gonum.org/v1/gonum/internal/rand" "gonum.org/v1/gonum/stat" ) diff --git a/stat/distuv/exponential_test.go b/stat/distuv/exponential_test.go index 591adaef..be51d32e 100644 --- a/stat/distuv/exponential_test.go +++ b/stat/distuv/exponential_test.go @@ -9,7 +9,7 @@ import ( "sort" "testing" - "golang.org/x/exp/rand" + "gonum.org/v1/gonum/internal/rand" ) func TestExponentialProb(t *testing.T) { @@ -73,7 +73,7 @@ func testExponential(t *testing.T, dist Exponential, i int) { checkMean(t, i, x, dist, tol) checkVarAndStd(t, i, x, dist, tol) checkEntropy(t, i, x, dist, tol) - checkExKurtosis(t, i, x, dist, tol) + checkExKurtosis(t, i, x, dist, 3e-2) checkSkewness(t, i, x, dist, tol) checkMedian(t, i, x, dist, tol) checkQuantileCDFSurvival(t, i, x, dist, tol) diff --git a/stat/distuv/f.go b/stat/distuv/f.go index e7e6434d..139d375c 100644 --- a/stat/distuv/f.go +++ b/stat/distuv/f.go @@ -7,8 +7,7 @@ package distuv import ( "math" - "golang.org/x/exp/rand" - + "gonum.org/v1/gonum/internal/rand" "gonum.org/v1/gonum/mathext" ) diff --git a/stat/distuv/f_test.go b/stat/distuv/f_test.go index 75ea6b7f..b4f06794 100644 --- a/stat/distuv/f_test.go +++ b/stat/distuv/f_test.go @@ -9,9 +9,8 @@ import ( "sort" "testing" - "golang.org/x/exp/rand" - "gonum.org/v1/gonum/floats/scalar" + "gonum.org/v1/gonum/internal/rand" ) func TestFProb(t *testing.T) { @@ -88,10 +87,10 @@ func testF(t *testing.T, f F, i int) { checkProbContinuous(t, i, x, 0, math.Inf(1), f, 1e-4) checkMean(t, i, x, f, tol) checkVarAndStd(t, i, x, f, tol) - checkExKurtosis(t, i, x, f, 1e-1) + checkExKurtosis(t, i, x, f, 2e-1) checkSkewness(t, i, x, f, 5e-2) checkQuantileCDFSurvival(t, i, x, f, 5e-3) - checkMode(t, i, x, f, 2e-2, 3e-2) + checkMode(t, i, x, f, 2e-2, 1e-1) if f.NumParameters() != 2 { t.Errorf("Wrong number of parameters. Got %v, want 2", f.NumParameters()) diff --git a/stat/distuv/gamma.go b/stat/distuv/gamma.go index 556d1b53..88d986f5 100644 --- a/stat/distuv/gamma.go +++ b/stat/distuv/gamma.go @@ -7,8 +7,7 @@ package distuv import ( "math" - "golang.org/x/exp/rand" - + "gonum.org/v1/gonum/internal/rand" "gonum.org/v1/gonum/mathext" ) diff --git a/stat/distuv/gamma_test.go b/stat/distuv/gamma_test.go index 52196f1a..41d079be 100644 --- a/stat/distuv/gamma_test.go +++ b/stat/distuv/gamma_test.go @@ -10,9 +10,8 @@ import ( "sort" "testing" - "golang.org/x/exp/rand" - "gonum.org/v1/gonum/floats/scalar" + "gonum.org/v1/gonum/internal/rand" ) func TestGamma(t *testing.T) { diff --git a/stat/distuv/gumbel.go b/stat/distuv/gumbel.go index 1c25f4a1..9e620e5b 100644 --- a/stat/distuv/gumbel.go +++ b/stat/distuv/gumbel.go @@ -7,7 +7,7 @@ package distuv import ( "math" - "golang.org/x/exp/rand" + "gonum.org/v1/gonum/internal/rand" ) // GumbelRight implements the right-skewed Gumbel distribution, a two-parameter diff --git a/stat/distuv/gumbel_test.go b/stat/distuv/gumbel_test.go index dff8f97c..30f29c57 100644 --- a/stat/distuv/gumbel_test.go +++ b/stat/distuv/gumbel_test.go @@ -9,8 +9,8 @@ import ( "sort" "testing" - "golang.org/x/exp/rand" "gonum.org/v1/gonum/floats/scalar" + "gonum.org/v1/gonum/internal/rand" ) func TestGumbelRightProbCDF(t *testing.T) { diff --git a/stat/distuv/inversegamma.go b/stat/distuv/inversegamma.go index 672ccc2a..d9eb41f7 100644 --- a/stat/distuv/inversegamma.go +++ b/stat/distuv/inversegamma.go @@ -7,8 +7,7 @@ package distuv import ( "math" - "golang.org/x/exp/rand" - + "gonum.org/v1/gonum/internal/rand" "gonum.org/v1/gonum/mathext" ) diff --git a/stat/distuv/inversegamma_test.go b/stat/distuv/inversegamma_test.go index 51a018f4..9689151a 100644 --- a/stat/distuv/inversegamma_test.go +++ b/stat/distuv/inversegamma_test.go @@ -9,9 +9,8 @@ import ( "sort" "testing" - "golang.org/x/exp/rand" - "gonum.org/v1/gonum/floats/scalar" + "gonum.org/v1/gonum/internal/rand" ) func TestInverseGamma(t *testing.T) { diff --git a/stat/distuv/laplace.go b/stat/distuv/laplace.go index 09fdc2e4..813a3adc 100644 --- a/stat/distuv/laplace.go +++ b/stat/distuv/laplace.go @@ -8,7 +8,7 @@ import ( "math" "sort" - "golang.org/x/exp/rand" + "gonum.org/v1/gonum/internal/rand" "gonum.org/v1/gonum/stat" ) diff --git a/stat/distuv/laplace_test.go b/stat/distuv/laplace_test.go index a4cea928..1bb12cfb 100644 --- a/stat/distuv/laplace_test.go +++ b/stat/distuv/laplace_test.go @@ -9,8 +9,8 @@ import ( "sort" "testing" - "golang.org/x/exp/rand" "gonum.org/v1/gonum/floats/scalar" + "gonum.org/v1/gonum/internal/rand" ) func TestLaplaceProb(t *testing.T) { diff --git a/stat/distuv/lognormal.go b/stat/distuv/lognormal.go index cbfd48a2..32ea1d83 100644 --- a/stat/distuv/lognormal.go +++ b/stat/distuv/lognormal.go @@ -7,7 +7,7 @@ package distuv import ( "math" - "golang.org/x/exp/rand" + "gonum.org/v1/gonum/internal/rand" ) // LogNormal represents a random variable whose log is normally distributed. diff --git a/stat/distuv/lognormal_test.go b/stat/distuv/lognormal_test.go index fb47768d..7bb2ad34 100644 --- a/stat/distuv/lognormal_test.go +++ b/stat/distuv/lognormal_test.go @@ -9,7 +9,7 @@ import ( "sort" "testing" - "golang.org/x/exp/rand" + "gonum.org/v1/gonum/internal/rand" ) func TestLognormal(t *testing.T) { @@ -37,7 +37,7 @@ func TestLognormal(t *testing.T) { checkQuantileCDFSurvival(t, i, x, dist, tol) checkProbContinuous(t, i, x, 0, math.Inf(1), dist, 1e-10) checkProbQuantContinuous(t, i, x, dist, tol) - checkMode(t, i, x, dist, 1e-2, 1e-2) + checkMode(t, i, x, dist, 1e-2, 1e-1) logProb := dist.LogProb(-0.0001) if !math.IsInf(logProb, -1) { diff --git a/stat/distuv/norm.go b/stat/distuv/norm.go index dd709582..36b0bdeb 100644 --- a/stat/distuv/norm.go +++ b/stat/distuv/norm.go @@ -7,9 +7,8 @@ package distuv import ( "math" - "golang.org/x/exp/rand" - "gonum.org/v1/gonum/floats" + "gonum.org/v1/gonum/internal/rand" "gonum.org/v1/gonum/mathext" "gonum.org/v1/gonum/stat" ) diff --git a/stat/distuv/norm_test.go b/stat/distuv/norm_test.go index d4dd54a7..686b005f 100644 --- a/stat/distuv/norm_test.go +++ b/stat/distuv/norm_test.go @@ -9,10 +9,9 @@ import ( "sort" "testing" - "golang.org/x/exp/rand" - "gonum.org/v1/gonum/floats" "gonum.org/v1/gonum/floats/scalar" + "gonum.org/v1/gonum/internal/rand" ) // TestNormalProbs tests LogProb, Prob, CumProb, and Quantile diff --git a/stat/distuv/pareto.go b/stat/distuv/pareto.go index c3f0aa1f..e1eb0555 100644 --- a/stat/distuv/pareto.go +++ b/stat/distuv/pareto.go @@ -7,7 +7,7 @@ package distuv import ( "math" - "golang.org/x/exp/rand" + "gonum.org/v1/gonum/internal/rand" ) // Pareto implements the Pareto (Type I) distribution, a one parameter distribution diff --git a/stat/distuv/pareto_test.go b/stat/distuv/pareto_test.go index 6bc8805a..90051522 100644 --- a/stat/distuv/pareto_test.go +++ b/stat/distuv/pareto_test.go @@ -9,9 +9,8 @@ import ( "sort" "testing" - "golang.org/x/exp/rand" - "gonum.org/v1/gonum/floats/scalar" + "gonum.org/v1/gonum/internal/rand" ) func TestParetoProb(t *testing.T) { @@ -161,11 +160,11 @@ func testPareto(t *testing.T, p Pareto, i int) { generateSamples(x, p) sort.Float64s(x) - checkQuantileCDFSurvival(t, i, x, p, 1e-3) + checkQuantileCDFSurvival(t, i, x, p, 3e-3) testRandLogProbContinuous(t, i, 0, x, p, tol, bins) checkMean(t, i, x, p, tol) checkVarAndStd(t, i, x, p, tol) - checkExKurtosis(t, i, x, p, 7e-2) + checkExKurtosis(t, i, x, p, 3e-1) checkProbContinuous(t, i, x, p.Xm, math.Inf(1), p, 1e-10) checkEntropy(t, i, x, p, 1e-2) checkMedian(t, i, x, p, 1e-3) diff --git a/stat/distuv/poisson.go b/stat/distuv/poisson.go index 34e9c436..599c2801 100644 --- a/stat/distuv/poisson.go +++ b/stat/distuv/poisson.go @@ -7,8 +7,7 @@ package distuv import ( "math" - "golang.org/x/exp/rand" - + "gonum.org/v1/gonum/internal/rand" "gonum.org/v1/gonum/mathext" ) diff --git a/stat/distuv/poisson_test.go b/stat/distuv/poisson_test.go index 24670222..f4e107cc 100644 --- a/stat/distuv/poisson_test.go +++ b/stat/distuv/poisson_test.go @@ -10,9 +10,8 @@ import ( "sort" "testing" - "golang.org/x/exp/rand" - "gonum.org/v1/gonum/floats/scalar" + "gonum.org/v1/gonum/internal/rand" ) func TestPoissonProb(t *testing.T) { diff --git a/stat/distuv/statdist_test.go b/stat/distuv/statdist_test.go index 782b025a..d6f94008 100644 --- a/stat/distuv/statdist_test.go +++ b/stat/distuv/statdist_test.go @@ -8,10 +8,9 @@ import ( "math" "testing" - "golang.org/x/exp/rand" - "gonum.org/v1/gonum/floats" "gonum.org/v1/gonum/floats/scalar" + "gonum.org/v1/gonum/internal/rand" ) func TestBhattacharyyaBeta(t *testing.T) { diff --git a/stat/distuv/studentst.go b/stat/distuv/studentst.go index 26d305c2..39c963ba 100644 --- a/stat/distuv/studentst.go +++ b/stat/distuv/studentst.go @@ -7,8 +7,7 @@ package distuv import ( "math" - "golang.org/x/exp/rand" - + "gonum.org/v1/gonum/internal/rand" "gonum.org/v1/gonum/mathext" ) diff --git a/stat/distuv/studentst_test.go b/stat/distuv/studentst_test.go index 78666732..2a6f9c7f 100644 --- a/stat/distuv/studentst_test.go +++ b/stat/distuv/studentst_test.go @@ -9,10 +9,9 @@ import ( "sort" "testing" - "golang.org/x/exp/rand" - "gonum.org/v1/gonum/floats" "gonum.org/v1/gonum/floats/scalar" + "gonum.org/v1/gonum/internal/rand" ) func TestStudentsTProb(t *testing.T) { diff --git a/stat/distuv/triangle.go b/stat/distuv/triangle.go index 76e1227e..cac002d0 100644 --- a/stat/distuv/triangle.go +++ b/stat/distuv/triangle.go @@ -7,7 +7,7 @@ package distuv import ( "math" - "golang.org/x/exp/rand" + "gonum.org/v1/gonum/internal/rand" ) // Triangle represents a triangle distribution (https://en.wikipedia.org/wiki/Triangular_distribution). diff --git a/stat/distuv/triangle_test.go b/stat/distuv/triangle_test.go index 6cc95b16..2d3c62eb 100644 --- a/stat/distuv/triangle_test.go +++ b/stat/distuv/triangle_test.go @@ -9,7 +9,7 @@ import ( "sort" "testing" - "golang.org/x/exp/rand" + "gonum.org/v1/gonum/internal/rand" ) func TestTriangleConstraint(t *testing.T) { diff --git a/stat/distuv/uniform.go b/stat/distuv/uniform.go index 01415389..80ef56ea 100644 --- a/stat/distuv/uniform.go +++ b/stat/distuv/uniform.go @@ -7,7 +7,7 @@ package distuv import ( "math" - "golang.org/x/exp/rand" + "gonum.org/v1/gonum/internal/rand" ) // UnitUniform is an instantiation of the uniform distribution with Min = 0 diff --git a/stat/distuv/uniform_test.go b/stat/distuv/uniform_test.go index b5eed925..ece382d6 100644 --- a/stat/distuv/uniform_test.go +++ b/stat/distuv/uniform_test.go @@ -9,9 +9,8 @@ import ( "sort" "testing" - "golang.org/x/exp/rand" - "gonum.org/v1/gonum/floats/scalar" + "gonum.org/v1/gonum/internal/rand" ) func TestUniformProb(t *testing.T) { diff --git a/stat/distuv/weibull.go b/stat/distuv/weibull.go index bbf49271..80adbfb6 100644 --- a/stat/distuv/weibull.go +++ b/stat/distuv/weibull.go @@ -7,7 +7,7 @@ package distuv import ( "math" - "golang.org/x/exp/rand" + "gonum.org/v1/gonum/internal/rand" ) // Weibull distribution. Valid range for x is [0,+∞). diff --git a/stat/distuv/weibull_test.go b/stat/distuv/weibull_test.go index da2518ab..b89ac78b 100644 --- a/stat/distuv/weibull_test.go +++ b/stat/distuv/weibull_test.go @@ -9,7 +9,7 @@ import ( "sort" "testing" - "golang.org/x/exp/rand" + "gonum.org/v1/gonum/internal/rand" ) func TestHalfKStandardWeibullProb(t *testing.T) { @@ -254,7 +254,7 @@ func testWeibull(t *testing.T, dist Weibull, i int) { checkMean(t, i, x, dist, tol) checkVarAndStd(t, i, x, dist, tol) checkEntropy(t, i, x, dist, tol) - checkExKurtosis(t, i, x, dist, tol) + checkExKurtosis(t, i, x, dist, 3e-2) checkSkewness(t, i, x, dist, tol) checkMedian(t, i, x, dist, tol) checkQuantileCDFSurvival(t, i, x, dist, tol) diff --git a/stat/moments_bench_test.go b/stat/moments_bench_test.go index 8ccea8e0..22ea1167 100644 --- a/stat/moments_bench_test.go +++ b/stat/moments_bench_test.go @@ -14,7 +14,7 @@ package stat import ( "testing" - "golang.org/x/exp/rand" + "gonum.org/v1/gonum/internal/rand" ) const ( diff --git a/stat/samplemv/halton.go b/stat/samplemv/halton.go index 6acb7f1a..bb5bd6d1 100644 --- a/stat/samplemv/halton.go +++ b/stat/samplemv/halton.go @@ -7,8 +7,7 @@ package samplemv import ( "fmt" - "golang.org/x/exp/rand" - + "gonum.org/v1/gonum/internal/rand" "gonum.org/v1/gonum/mat" "gonum.org/v1/gonum/stat/distmv" ) diff --git a/stat/samplemv/halton_test.go b/stat/samplemv/halton_test.go index b2381950..0ae0da43 100644 --- a/stat/samplemv/halton_test.go +++ b/stat/samplemv/halton_test.go @@ -8,8 +8,7 @@ import ( "math" "testing" - "golang.org/x/exp/rand" - + "gonum.org/v1/gonum/internal/rand" "gonum.org/v1/gonum/mat" "gonum.org/v1/gonum/stat/distmv" ) diff --git a/stat/samplemv/metropolishastings.go b/stat/samplemv/metropolishastings.go index e784fc93..a98e895e 100644 --- a/stat/samplemv/metropolishastings.go +++ b/stat/samplemv/metropolishastings.go @@ -7,8 +7,7 @@ package samplemv import ( "math" - "golang.org/x/exp/rand" - + "gonum.org/v1/gonum/internal/rand" "gonum.org/v1/gonum/mat" "gonum.org/v1/gonum/stat/distmv" ) diff --git a/stat/samplemv/sample_test.go b/stat/samplemv/sample_test.go index eaf168f1..93dc1ca7 100644 --- a/stat/samplemv/sample_test.go +++ b/stat/samplemv/sample_test.go @@ -8,9 +8,8 @@ import ( "math" "testing" - "golang.org/x/exp/rand" - "gonum.org/v1/gonum/floats" + "gonum.org/v1/gonum/internal/rand" "gonum.org/v1/gonum/mat" "gonum.org/v1/gonum/spatial/r1" "gonum.org/v1/gonum/stat" diff --git a/stat/samplemv/samplemv.go b/stat/samplemv/samplemv.go index e2076282..8073703f 100644 --- a/stat/samplemv/samplemv.go +++ b/stat/samplemv/samplemv.go @@ -8,8 +8,7 @@ import ( "errors" "math" - "golang.org/x/exp/rand" - + "gonum.org/v1/gonum/internal/rand" "gonum.org/v1/gonum/mat" "gonum.org/v1/gonum/stat/distmv" ) diff --git a/stat/sampleuv/sample.go b/stat/sampleuv/sample.go index 38ee3a8e..a2899bed 100644 --- a/stat/sampleuv/sample.go +++ b/stat/sampleuv/sample.go @@ -8,8 +8,7 @@ import ( "errors" "math" - "golang.org/x/exp/rand" - + "gonum.org/v1/gonum/internal/rand" "gonum.org/v1/gonum/stat/distuv" ) diff --git a/stat/sampleuv/weighted.go b/stat/sampleuv/weighted.go index 9cf04dc0..3f4d8961 100644 --- a/stat/sampleuv/weighted.go +++ b/stat/sampleuv/weighted.go @@ -4,7 +4,7 @@ package sampleuv -import "golang.org/x/exp/rand" +import "gonum.org/v1/gonum/internal/rand" // Weighted provides sampling without replacement from a collection of items with // non-uniform probability. diff --git a/stat/sampleuv/weighted_test.go b/stat/sampleuv/weighted_test.go index a3d98a12..2c3abf23 100644 --- a/stat/sampleuv/weighted_test.go +++ b/stat/sampleuv/weighted_test.go @@ -10,9 +10,8 @@ import ( "testing" "time" - "golang.org/x/exp/rand" - "gonum.org/v1/gonum/floats" + "gonum.org/v1/gonum/internal/rand" ) var prob = flag.Bool("prob", false, "enables probabilistic testing of the random weighted sampler") @@ -25,7 +24,7 @@ var ( } exp = newExp() - obt = []float64{1020, 1909, 3937, 7881, 15687, 31486, 62310, 124632, 250453, 500685} + obt = []float64{980, 1945, 3929, 7835, 15473, 31322, 62602, 124937, 250815, 500162} ) func newTestWeighted() Weighted { diff --git a/stat/sampleuv/withoutreplacement.go b/stat/sampleuv/withoutreplacement.go index ec70da3b..9bd771f2 100644 --- a/stat/sampleuv/withoutreplacement.go +++ b/stat/sampleuv/withoutreplacement.go @@ -7,7 +7,7 @@ package sampleuv import ( "sort" - "golang.org/x/exp/rand" + "gonum.org/v1/gonum/internal/rand" ) // WithoutReplacement samples len(idxs) integers from [0, n) without replacement. diff --git a/stat/sampleuv/withoutreplacement_test.go b/stat/sampleuv/withoutreplacement_test.go index 7142f105..84941999 100644 --- a/stat/sampleuv/withoutreplacement_test.go +++ b/stat/sampleuv/withoutreplacement_test.go @@ -7,9 +7,8 @@ package sampleuv import ( "testing" - "golang.org/x/exp/rand" - "gonum.org/v1/gonum/floats" + "gonum.org/v1/gonum/internal/rand" ) func TestWithoutReplacement(t *testing.T) { @@ -28,7 +27,7 @@ func TestWithoutReplacement(t *testing.T) { { // Test without perm and with source. N: 10, K: 3, Src: rand.New(rand.NewSource(1)), - Trials: 100000, Tol: 1e-3, + Trials: 100000, Tol: 1.4e-3, }, } { dist := make([]float64, test.N) diff --git a/stat/spatial/spatial_test.go b/stat/spatial/spatial_test.go index 13289323..ef81630f 100644 --- a/stat/spatial/spatial_test.go +++ b/stat/spatial/spatial_test.go @@ -8,9 +8,8 @@ import ( "math" "testing" - "golang.org/x/exp/rand" - "gonum.org/v1/gonum/floats/scalar" + "gonum.org/v1/gonum/internal/rand" "gonum.org/v1/gonum/mat" ) @@ -72,8 +71,8 @@ var spatialTests = []struct { }, locality: simpleAdjacency, - wantMoranI: -0.04387221370785312, - wantZ: -1.3543515772206267, + wantMoranI: 0.008189938751264034, + wantZ: 0.2903525107058353, wantSegs: 0, }, { @@ -98,8 +97,8 @@ var spatialTests = []struct { }, locality: simpleAdjacency, - wantMoranI: 0.0259414094549987, - wantZ: 0.8511426395944303, + wantMoranI: 0.03230842429979648, + wantZ: 1.052284249349285, wantSegs: 0, }, { @@ -112,8 +111,8 @@ var spatialTests = []struct { }, locality: simpleAdjacency, - wantMoranI: -0.0003533345592575677, - wantZ: 0.0204605353504713, + wantMoranI: -0.020274625925858967, + wantZ: -0.6088762077902174, wantSegs: 0, }, { @@ -126,8 +125,8 @@ var spatialTests = []struct { }, locality: simpleAdjacency, - wantMoranI: -0.8587138204405251, - wantZ: -27.09614459007475, + wantMoranI: -0.8587390485358907, + wantZ: -27.096941353241128, wantSegs: 0, }, { @@ -150,8 +149,8 @@ var spatialTests = []struct { }, locality: simpleAdjacencyBand, - wantMoranI: -0.04387221370785312, - wantZ: -1.3543515772206267, + wantMoranI: 0.008189938751264034, + wantZ: 0.2903525107058353, wantSegs: 0, }, { @@ -176,8 +175,8 @@ var spatialTests = []struct { }, locality: simpleAdjacencyBand, - wantMoranI: 0.0259414094549987, - wantZ: 0.8511426395944303, + wantMoranI: 0.03230842429979648, + wantZ: 1.052284249349285, wantSegs: 0, }, { @@ -190,8 +189,8 @@ var spatialTests = []struct { }, locality: simpleAdjacencyBand, - wantMoranI: -0.0003533345592575677, - wantZ: 0.0204605353504713, + wantMoranI: -0.020274625925858967, + wantZ: -0.6088762077902174, wantSegs: 0, }, { @@ -204,8 +203,8 @@ var spatialTests = []struct { }, locality: simpleAdjacencyBand, - wantMoranI: -0.8587138204405251, - wantZ: -27.09614459007475, + wantMoranI: -0.8587390485358907, + wantZ: -27.096941353241128, wantSegs: 0, }, { diff --git a/stat/stat_example_test.go b/stat/stat_example_test.go index f1f7241a..cde522c2 100644 --- a/stat/stat_example_test.go +++ b/stat/stat_example_test.go @@ -7,8 +7,7 @@ package stat_test import ( "fmt" - "golang.org/x/exp/rand" - + "gonum.org/v1/gonum/internal/rand" "gonum.org/v1/gonum/stat" ) @@ -39,7 +38,7 @@ func ExampleLinearRegression() { fmt.Printf("R^2: %.6f\n", r2) // Output: - // Estimated offset is: 0.988572 - // Estimated slope is: 3.000154 + // Estimated offset is: 0.999675 + // Estimated slope is: 2.999971 // R^2: 0.999999 } diff --git a/stat/stat_test.go b/stat/stat_test.go index 0a0cbf67..2cc14e35 100644 --- a/stat/stat_test.go +++ b/stat/stat_test.go @@ -11,10 +11,9 @@ import ( "strconv" "testing" - "golang.org/x/exp/rand" - "gonum.org/v1/gonum/floats" "gonum.org/v1/gonum/floats/scalar" + "gonum.org/v1/gonum/internal/rand" ) func ExampleCircularMean() { diff --git a/stat/statmat_test.go b/stat/statmat_test.go index e70ed6f2..d5ad81e9 100644 --- a/stat/statmat_test.go +++ b/stat/statmat_test.go @@ -8,9 +8,8 @@ import ( "math" "testing" - "golang.org/x/exp/rand" - "gonum.org/v1/gonum/floats" + "gonum.org/v1/gonum/internal/rand" "gonum.org/v1/gonum/mat" )