OSDN Git Service

Merge pull request #201 from Bytom/v0.1
[bytom/vapor.git] / vendor / gonum.org / v1 / gonum / lapack / internal / testdata / dlaqr5test / main.go
diff --git a/vendor/gonum.org/v1/gonum/lapack/internal/testdata/dlaqr5test/main.go b/vendor/gonum.org/v1/gonum/lapack/internal/testdata/dlaqr5test/main.go
deleted file mode 100644 (file)
index 86c3323..0000000
+++ /dev/null
@@ -1,186 +0,0 @@
-// 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.
-
-// This program generates test data for Dlaqr5. Test cases are stored in
-// gzip-compressed JSON file testlapack/testdata/dlaqr5data.json.gz which is
-// read during testing by testlapack/dlaqr5.go.
-//
-// This program uses cgo to call Fortran version of DLAQR5. Therefore, matrices
-// passed to the Fortran routine are in column-major format but are written into
-// the output file in row-major format.
-package main
-
-import (
-       "compress/gzip"
-       "encoding/json"
-       "log"
-       "os"
-       "path/filepath"
-
-       "golang.org/x/exp/rand"
-
-       "gonum.org/v1/gonum/lapack/internal/testdata/netlib"
-)
-
-type Dlaqr5Test struct {
-       WantT          bool
-       N              int
-       NShifts        int
-       KTop, KBot     int
-       ShiftR, ShiftI []float64
-       H              []float64
-
-       HWant []float64
-       ZWant []float64
-}
-
-func main() {
-       file, err := os.Create(filepath.FromSlash("../../../testlapack/testdata/dlaqr5data.json.gz"))
-       if err != nil {
-               log.Fatal(err)
-       }
-       defer file.Close()
-       w := gzip.NewWriter(file)
-
-       rnd := rand.New(rand.NewSource(1))
-
-       var tests []Dlaqr5Test
-       for _, wantt := range []bool{true, false} {
-               for _, n := range []int{2, 3, 4, 5, 6, 7, 11} {
-                       for k := 0; k <= min(5, n); k++ {
-                               npairs := k
-                               if npairs == 0 {
-                                       npairs = 2 * n
-                               }
-                               for ktop := 0; ktop < n-1; ktop++ {
-                                       for kbot := ktop + 1; kbot < n; kbot++ {
-                                               sr, si := shiftpairs(npairs, rnd)
-                                               nshfts := len(sr)
-
-                                               v := genrand(nshfts/2, 3, rnd)
-                                               u := genrand(3*nshfts-3, 3*nshfts-3, rnd)
-                                               wh := genrand(3*nshfts-3, n, rnd)
-                                               nh := n
-                                               wv := genrand(n, 3*nshfts-3, rnd)
-                                               nv := n
-
-                                               h := hessrand(n, rnd)
-                                               if ktop > 0 {
-                                                       h[ktop+(ktop-1)*n] = 0
-                                               }
-                                               if kbot < n-1 {
-                                                       h[kbot+1+kbot*n] = 0
-                                               }
-                                               hin := make([]float64, len(h))
-                                               copy(hin, h)
-                                               z := eye(n)
-
-                                               netlib.Dlaqr5(wantt, true, 2,
-                                                       n, ktop+1, kbot+1,
-                                                       nshfts, sr, si,
-                                                       h, n,
-                                                       1, n, z, n,
-                                                       v, 3,
-                                                       u, 3*nshfts-3,
-                                                       nh, wh, nh,
-                                                       nv, wv, 3*nshfts-3)
-
-                                               tests = append(tests, Dlaqr5Test{
-                                                       WantT:   wantt,
-                                                       N:       n,
-                                                       NShifts: nshfts,
-                                                       KTop:    ktop,
-                                                       KBot:    kbot,
-                                                       ShiftR:  sr,
-                                                       ShiftI:  si,
-                                                       H:       rowMajor(n, n, hin),
-                                                       HWant:   rowMajor(n, n, h),
-                                                       ZWant:   rowMajor(n, n, z),
-                                               })
-                                       }
-                               }
-                       }
-               }
-       }
-       json.NewEncoder(w).Encode(tests)
-
-       err = w.Close()
-       if err != nil {
-               log.Fatal(err)
-       }
-}
-
-// genrand returns a general r×c matrix with random entries.
-func genrand(r, c int, rnd *rand.Rand) []float64 {
-       m := make([]float64, r*c)
-       for i := range m {
-               m[i] = rnd.NormFloat64()
-       }
-       return m
-}
-
-// eye returns an identity matrix of order n.
-func eye(n int) []float64 {
-       m := make([]float64, n*n)
-       for i := 0; i < n*n; i += n + 1 {
-               m[i] = 1
-       }
-       return m
-}
-
-// hessrand returns a Hessenberg matrix of order n with random non-zero entries
-// in column-major format.
-func hessrand(n int, rnd *rand.Rand) []float64 {
-       h := make([]float64, n*n)
-       for j := 0; j < n; j++ {
-               for i := 0; i <= min(j+1, n-1); i++ {
-                       h[i+j*n] = rnd.NormFloat64()
-               }
-       }
-       return h
-}
-
-// shiftpairs generates k real and complex conjugate shift pairs. That is, the
-// length of sr and si is 2*k.
-func shiftpairs(k int, rnd *rand.Rand) (sr, si []float64) {
-       sr = make([]float64, 2*k)
-       si = make([]float64, 2*k)
-       for i := 0; i < len(sr); {
-               if rnd.Float64() < 0.5 || i == len(sr)-1 {
-                       sr[i] = rnd.NormFloat64()
-                       i++
-                       continue
-               }
-               // Generate a complex conjugate pair.
-               r := rnd.NormFloat64()
-               c := rnd.NormFloat64()
-               sr[i] = r
-               si[i] = c
-               sr[i+1] = r
-               si[i+1] = -c
-               i += 2
-       }
-       return sr, si
-}
-
-// rowMajor returns the given r×c column-major matrix a in row-major format.
-func rowMajor(r, c int, a []float64) []float64 {
-       if len(a) != r*c {
-               panic("testdata: slice length mismatch")
-       }
-       m := make([]float64, len(a))
-       for i := 0; i < r; i++ {
-               for j := 0; j < c; j++ {
-                       m[i*c+j] = a[i+j*r]
-               }
-       }
-       return m
-}
-
-func min(a, b int) int {
-       if a < b {
-               return a
-       }
-       return b
-}