OSDN Git Service

Hulk did something
[bytom/vapor.git] / vendor / gonum.org / v1 / gonum / lapack / testlapack / dlasrt.go
diff --git a/vendor/gonum.org/v1/gonum/lapack/testlapack/dlasrt.go b/vendor/gonum.org/v1/gonum/lapack/testlapack/dlasrt.go
new file mode 100644 (file)
index 0000000..9fb5f9c
--- /dev/null
@@ -0,0 +1,80 @@
+// Copyright ©2016 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.
+
+package testlapack
+
+import (
+       "testing"
+
+       "gonum.org/v1/gonum/floats"
+       "gonum.org/v1/gonum/lapack"
+)
+
+type Dlasrter interface {
+       Dlasrt(s lapack.Sort, n int, d []float64)
+}
+
+func DlasrtTest(t *testing.T, impl Dlasrter) {
+       for ti, test := range []struct {
+               data    []float64
+               wantInc []float64
+               wantDec []float64
+       }{
+               {
+                       data:    nil,
+                       wantInc: nil,
+                       wantDec: nil,
+               },
+               {
+                       data:    []float64{},
+                       wantInc: []float64{},
+                       wantDec: []float64{},
+               },
+               {
+                       data:    []float64{1},
+                       wantInc: []float64{1},
+                       wantDec: []float64{1},
+               },
+               {
+                       data:    []float64{1, 2},
+                       wantInc: []float64{1, 2},
+                       wantDec: []float64{2, 1},
+               },
+               {
+                       data:    []float64{1, 2, -3},
+                       wantInc: []float64{-3, 1, 2},
+                       wantDec: []float64{2, 1, -3},
+               },
+               {
+                       data:    []float64{-5, -4, -3, -2, -1, 0, 1, 2, 3, 4, 5},
+                       wantInc: []float64{-5, -4, -3, -2, -1, 0, 1, 2, 3, 4, 5},
+                       wantDec: []float64{5, 4, 3, 2, 1, 0, -1, -2, -3, -4, -5},
+               },
+               {
+                       data:    []float64{5, 4, 3, 2, 1, 0, -1, -2, -3, -4, -5},
+                       wantInc: []float64{-5, -4, -3, -2, -1, 0, 1, 2, 3, 4, 5},
+                       wantDec: []float64{5, 4, 3, 2, 1, 0, -1, -2, -3, -4, -5},
+               },
+               {
+                       data:    []float64{-2, 4, -1, 2, -4, 0, 3, 5, -5, 1, -3},
+                       wantInc: []float64{-5, -4, -3, -2, -1, 0, 1, 2, 3, 4, 5},
+                       wantDec: []float64{5, 4, 3, 2, 1, 0, -1, -2, -3, -4, -5},
+               },
+       } {
+               n := len(test.data)
+               ds := make([]float64, n)
+
+               copy(ds, test.data)
+               impl.Dlasrt(lapack.SortIncreasing, n, ds)
+               if !floats.Equal(ds, test.wantInc) {
+                       t.Errorf("Case #%v: unexpected result of SortIncreasing", ti)
+               }
+
+               copy(ds, test.data)
+               impl.Dlasrt(lapack.SortDecreasing, n, ds)
+               if !floats.Equal(ds, test.wantDec) {
+                       t.Errorf("Case #%v: unexpected result of SortIncreasing", ti)
+               }
+       }
+}