OSDN Git Service

Merge pull request #201 from Bytom/v0.1
[bytom/vapor.git] / vendor / gonum.org / v1 / gonum / blas / testblas / benchautogen / autogen_bench_level1double.go
diff --git a/vendor/gonum.org/v1/gonum/blas/testblas/benchautogen/autogen_bench_level1double.go b/vendor/gonum.org/v1/gonum/blas/testblas/benchautogen/autogen_bench_level1double.go
deleted file mode 100644 (file)
index 4f9e9e6..0000000
+++ /dev/null
@@ -1,292 +0,0 @@
-// Copyright 2014 The Gonum Authors. All rights reserved.
-// Use of this code is governed by a BSD-style
-// license that can be found in the LICENSE file
-
-// Script for automatic code generation of the benchmark routines.
-package main
-
-import (
-       "fmt"
-       "os"
-       "os/exec"
-       "path"
-       "path/filepath"
-       "strconv"
-)
-
-var gopath string
-
-var copyrightnotice = []byte(`// Copyright 2014 The Gonum Authors. All rights reserved.
-// Use of this code is governed by a BSD-style
-// license that can be found in the LICENSE file`)
-
-var autogen = []byte("// Code generated by \"go run gonum.org/v1/gonum/blas/testblas/benchautogen/autogen_bench_level1double.go\"; DO NOT EDIT.\n")
-
-var imports = []byte(`import(
-       "golang.org/x/exp/rand"
-       "testing"
-
-       "gonum.org/v1/gonum/blas"
-)`)
-
-var randomSliceFunction = []byte(`func randomSlice(l, idx int) ([]float64) {
-       if idx < 0{
-               idx = -idx
-       }
-       s := make([]float64, l * idx)
-       for i := range s {
-               s[i] = rand.Float64()
-       }
-       return s
-}`)
-
-const (
-       posInc1 = 5
-       posInc2 = 3
-       negInc1 = -3
-       negInc2 = -4
-)
-
-var level1Sizes = []struct {
-       lower string
-       upper string
-       camel string
-       size  int
-}{
-       {
-               lower: "small",
-               upper: "SMALL_SLICE",
-               camel: "Small",
-               size:  10,
-       },
-       {
-               lower: "medium",
-               upper: "MEDIUM_SLICE",
-               camel: "Medium",
-               size:  1000,
-       },
-       {
-               lower: "large",
-               upper: "LARGE_SLICE",
-               camel: "Large",
-               size:  100000,
-       },
-       {
-               lower: "huge",
-               upper: "HUGE_SLICE",
-               camel: "Huge",
-               size:  10000000,
-       },
-}
-
-type level1functionStruct struct {
-       camel      string
-       sig        string
-       call       string
-       extraSetup string
-       oneInput   bool
-       extraName  string // if have a couple different cases for the same function
-}
-
-var level1Functions = []level1functionStruct{
-       {
-               camel:    "Ddot",
-               sig:      "n int, x []float64, incX int, y []float64, incY int",
-               call:     "n, x, incX, y, incY",
-               oneInput: false,
-       },
-       {
-               camel:    "Dnrm2",
-               sig:      "n int, x []float64, incX int",
-               call:     "n, x, incX",
-               oneInput: true,
-       },
-       {
-               camel:    "Dasum",
-               sig:      "n int, x []float64, incX int",
-               call:     "n, x, incX",
-               oneInput: true,
-       },
-       {
-               camel:    "Idamax",
-               sig:      "n int, x []float64, incX int",
-               call:     "n, x, incX",
-               oneInput: true,
-       },
-       {
-               camel:    "Dswap",
-               sig:      "n int, x []float64, incX int, y []float64, incY int",
-               call:     "n, x, incX, y, incY",
-               oneInput: false,
-       },
-       {
-               camel:    "Dcopy",
-               sig:      "n int, x []float64, incX int, y []float64, incY int",
-               call:     "n, x, incX, y, incY",
-               oneInput: false,
-       },
-       {
-               camel:      "Daxpy",
-               sig:        "n int, alpha float64, x []float64, incX int, y []float64, incY int",
-               call:       "n, alpha, x, incX, y, incY",
-               extraSetup: "alpha := 2.4",
-               oneInput:   false,
-       },
-       {
-               camel:      "Drot",
-               sig:        "n int, x []float64, incX int, y []float64, incY int, c, s float64",
-               call:       "n, x, incX, y, incY, c, s",
-               extraSetup: "c := 0.89725836967\ns:= 0.44150585279",
-               oneInput:   false,
-       },
-       {
-               camel:      "Drotm",
-               sig:        "n int, x []float64, incX int, y []float64, incY int, p blas.DrotmParams",
-               call:       "n, x, incX, y, incY, p",
-               extraSetup: "p := blas.DrotmParams{Flag: blas.OffDiagonal, H: [4]float64{0, -0.625, 0.9375,0}}",
-               oneInput:   false,
-               extraName:  "OffDia",
-       },
-       {
-               camel:      "Drotm",
-               sig:        "n int, x []float64, incX int, y []float64, incY int, p blas.DrotmParams",
-               call:       "n, x, incX, y, incY, p",
-               extraSetup: "p := blas.DrotmParams{Flag: blas.OffDiagonal, H: [4]float64{5.0 / 12, 0, 0, 0.625}}",
-               oneInput:   false,
-               extraName:  "Dia",
-       },
-       {
-               camel:      "Drotm",
-               sig:        "n int, x []float64, incX int, y []float64, incY int, p blas.DrotmParams",
-               call:       "n, x, incX, y, incY, p",
-               extraSetup: "p := blas.DrotmParams{Flag: blas.OffDiagonal, H: [4]float64{4096, -3584, 1792, 4096}}",
-               oneInput:   false,
-               extraName:  "Resc",
-       },
-       {
-               camel:      "Dscal",
-               sig:        "n int, alpha float64, x []float64, incX int",
-               call:       "n, alpha, x, incX",
-               extraSetup: "alpha := 2.4",
-               oneInput:   true,
-       },
-}
-
-func init() {
-       gopath = os.Getenv("GOPATH")
-       if gopath == "" {
-               panic("gopath not set")
-       }
-}
-
-func main() {
-       blasPath := filepath.Join(gopath, "src", "gonum.org", "v1", "gonum", "blas")
-
-       pkgs := []struct{ name string }{{name: "native"}, {name: "cgo"}}
-
-       for _, pkg := range pkgs {
-               err := level1(filepath.Join(blasPath, pkg.name), pkg.name)
-               if err != nil {
-                       fmt.Println(err)
-                       os.Exit(1)
-               }
-
-               err = exec.Command("go", "fmt", path.Join("gonum.org", "v1", "gonum", "blas", pkg.name)).Run()
-               if err != nil {
-                       fmt.Println(err)
-                       os.Exit(1)
-               }
-       }
-}
-
-func printHeader(f *os.File, name string) error {
-       if _, err := f.Write(autogen); err != nil {
-               return err
-       }
-       f.WriteString("\n\n")
-       f.Write(copyrightnotice)
-       f.WriteString("\n\n")
-       f.WriteString("package " + name)
-       f.WriteString("\n\n")
-       f.Write(imports)
-       f.WriteString("\n\n")
-       return nil
-}
-
-// Generate the benchmark scripts for level1
-func level1(benchPath string, pkgname string) error {
-       // Generate level 1 benchmarks
-       level1Filepath := filepath.Join(benchPath, "level1doubleBench_auto_test.go")
-       f, err := os.Create(level1Filepath)
-       if err != nil {
-               fmt.Println(err)
-               os.Exit(1)
-       }
-       defer f.Close()
-       printHeader(f, pkgname)
-
-       // Print all of the constants
-       f.WriteString("const (\n")
-       f.WriteString("\tposInc1 = " + strconv.Itoa(posInc1) + "\n")
-       f.WriteString("\tposInc2 = " + strconv.Itoa(posInc2) + "\n")
-       f.WriteString("\tnegInc1 = " + strconv.Itoa(negInc1) + "\n")
-       f.WriteString("\tnegInc2 = " + strconv.Itoa(negInc2) + "\n")
-       for _, con := range level1Sizes {
-               f.WriteString("\t" + con.upper + " = " + strconv.Itoa(con.size) + "\n")
-       }
-       f.WriteString(")\n")
-       f.WriteString("\n")
-
-       // Write the randomSlice function
-       f.Write(randomSliceFunction)
-       f.WriteString("\n\n")
-
-       // Start writing the benchmarks
-       for _, fun := range level1Functions {
-               writeLevel1Benchmark(fun, f)
-               f.WriteString("\n/* ------------------ */ \n")
-       }
-
-       return nil
-}
-
-func writeLevel1Benchmark(fun level1functionStruct, f *os.File) {
-       // First, write the base benchmark file
-       f.WriteString("func benchmark" + fun.camel + fun.extraName + "(b *testing.B, ")
-       f.WriteString(fun.sig)
-       f.WriteString(") {\n")
-
-       f.WriteString("b.ResetTimer()\n")
-       f.WriteString("for i := 0; i < b.N; i++{\n")
-       f.WriteString("\timpl." + fun.camel + "(")
-
-       f.WriteString(fun.call)
-       f.WriteString(")\n}\n}\n")
-       f.WriteString("\n")
-
-       // Write all of the benchmarks to call it
-       for _, sz := range level1Sizes {
-               lambda := func(incX, incY, name string, twoInput bool) {
-                       f.WriteString("func Benchmark" + fun.camel + fun.extraName + sz.camel + name + "(b *testing.B){\n")
-                       f.WriteString("n := " + sz.upper + "\n")
-                       f.WriteString("incX := " + incX + "\n")
-                       f.WriteString("x := randomSlice(n, incX)\n")
-                       if twoInput {
-                               f.WriteString("incY := " + incY + "\n")
-                               f.WriteString("y := randomSlice(n, incY)\n")
-                       }
-                       f.WriteString(fun.extraSetup + "\n")
-                       f.WriteString("benchmark" + fun.camel + fun.extraName + "(b, " + fun.call + ")\n")
-                       f.WriteString("}\n\n")
-               }
-               if fun.oneInput {
-                       lambda("1", "", "UnitaryInc", false)
-                       lambda("posInc1", "", "PosInc", false)
-               } else {
-                       lambda("1", "1", "BothUnitary", true)
-                       lambda("posInc1", "1", "IncUni", true)
-                       lambda("1", "negInc1", "UniInc", true)
-                       lambda("posInc1", "negInc1", "BothInc", true)
-               }
-       }
-}