OSDN Git Service

fix commands
[bytom/shuttle.git] / vendor / github.com / bytom / vendor / gonum.org / v1 / gonum / blas / gonum / level1doubleBench_auto_test.go
diff --git a/vendor/github.com/bytom/vendor/gonum.org/v1/gonum/blas/gonum/level1doubleBench_auto_test.go b/vendor/github.com/bytom/vendor/gonum.org/v1/gonum/blas/gonum/level1doubleBench_auto_test.go
new file mode 100644 (file)
index 0000000..95c7a92
--- /dev/null
@@ -0,0 +1,1686 @@
+// Code generated by "go run github.com/gonum/blas/testblas/benchautogen/autogen_bench_level1double.go"; DO NOT EDIT.
+
+// 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
+
+package gonum
+
+import (
+       "testing"
+
+       "golang.org/x/exp/rand"
+
+       "gonum.org/v1/gonum/blas"
+)
+
+const (
+       posInc1      = 5
+       posInc2      = 3
+       negInc1      = -3
+       negInc2      = -4
+       SMALL_SLICE  = 10
+       MEDIUM_SLICE = 1000
+       LARGE_SLICE  = 100000
+       HUGE_SLICE   = 10000000
+)
+
+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
+}
+
+func benchmarkDdot(b *testing.B, n int, x []float64, incX int, y []float64, incY int) {
+       b.ResetTimer()
+       for i := 0; i < b.N; i++ {
+               impl.Ddot(n, x, incX, y, incY)
+       }
+}
+
+func BenchmarkDdotSmallBothUnitary(b *testing.B) {
+       n := SMALL_SLICE
+       incX := 1
+       x := randomSlice(n, incX)
+       incY := 1
+       y := randomSlice(n, incY)
+
+       benchmarkDdot(b, n, x, incX, y, incY)
+}
+
+func BenchmarkDdotSmallIncUni(b *testing.B) {
+       n := SMALL_SLICE
+       incX := posInc1
+       x := randomSlice(n, incX)
+       incY := 1
+       y := randomSlice(n, incY)
+
+       benchmarkDdot(b, n, x, incX, y, incY)
+}
+
+func BenchmarkDdotSmallUniInc(b *testing.B) {
+       n := SMALL_SLICE
+       incX := 1
+       x := randomSlice(n, incX)
+       incY := negInc1
+       y := randomSlice(n, incY)
+
+       benchmarkDdot(b, n, x, incX, y, incY)
+}
+
+func BenchmarkDdotSmallBothInc(b *testing.B) {
+       n := SMALL_SLICE
+       incX := posInc1
+       x := randomSlice(n, incX)
+       incY := negInc1
+       y := randomSlice(n, incY)
+
+       benchmarkDdot(b, n, x, incX, y, incY)
+}
+
+func BenchmarkDdotMediumBothUnitary(b *testing.B) {
+       n := MEDIUM_SLICE
+       incX := 1
+       x := randomSlice(n, incX)
+       incY := 1
+       y := randomSlice(n, incY)
+
+       benchmarkDdot(b, n, x, incX, y, incY)
+}
+
+func BenchmarkDdotMediumIncUni(b *testing.B) {
+       n := MEDIUM_SLICE
+       incX := posInc1
+       x := randomSlice(n, incX)
+       incY := 1
+       y := randomSlice(n, incY)
+
+       benchmarkDdot(b, n, x, incX, y, incY)
+}
+
+func BenchmarkDdotMediumUniInc(b *testing.B) {
+       n := MEDIUM_SLICE
+       incX := 1
+       x := randomSlice(n, incX)
+       incY := negInc1
+       y := randomSlice(n, incY)
+
+       benchmarkDdot(b, n, x, incX, y, incY)
+}
+
+func BenchmarkDdotMediumBothInc(b *testing.B) {
+       n := MEDIUM_SLICE
+       incX := posInc1
+       x := randomSlice(n, incX)
+       incY := negInc1
+       y := randomSlice(n, incY)
+
+       benchmarkDdot(b, n, x, incX, y, incY)
+}
+
+func BenchmarkDdotLargeBothUnitary(b *testing.B) {
+       n := LARGE_SLICE
+       incX := 1
+       x := randomSlice(n, incX)
+       incY := 1
+       y := randomSlice(n, incY)
+
+       benchmarkDdot(b, n, x, incX, y, incY)
+}
+
+func BenchmarkDdotLargeIncUni(b *testing.B) {
+       n := LARGE_SLICE
+       incX := posInc1
+       x := randomSlice(n, incX)
+       incY := 1
+       y := randomSlice(n, incY)
+
+       benchmarkDdot(b, n, x, incX, y, incY)
+}
+
+func BenchmarkDdotLargeUniInc(b *testing.B) {
+       n := LARGE_SLICE
+       incX := 1
+       x := randomSlice(n, incX)
+       incY := negInc1
+       y := randomSlice(n, incY)
+
+       benchmarkDdot(b, n, x, incX, y, incY)
+}
+
+func BenchmarkDdotLargeBothInc(b *testing.B) {
+       n := LARGE_SLICE
+       incX := posInc1
+       x := randomSlice(n, incX)
+       incY := negInc1
+       y := randomSlice(n, incY)
+
+       benchmarkDdot(b, n, x, incX, y, incY)
+}
+
+func BenchmarkDdotHugeBothUnitary(b *testing.B) {
+       n := HUGE_SLICE
+       incX := 1
+       x := randomSlice(n, incX)
+       incY := 1
+       y := randomSlice(n, incY)
+
+       benchmarkDdot(b, n, x, incX, y, incY)
+}
+
+func BenchmarkDdotHugeIncUni(b *testing.B) {
+       n := HUGE_SLICE
+       incX := posInc1
+       x := randomSlice(n, incX)
+       incY := 1
+       y := randomSlice(n, incY)
+
+       benchmarkDdot(b, n, x, incX, y, incY)
+}
+
+func BenchmarkDdotHugeUniInc(b *testing.B) {
+       n := HUGE_SLICE
+       incX := 1
+       x := randomSlice(n, incX)
+       incY := negInc1
+       y := randomSlice(n, incY)
+
+       benchmarkDdot(b, n, x, incX, y, incY)
+}
+
+func BenchmarkDdotHugeBothInc(b *testing.B) {
+       n := HUGE_SLICE
+       incX := posInc1
+       x := randomSlice(n, incX)
+       incY := negInc1
+       y := randomSlice(n, incY)
+
+       benchmarkDdot(b, n, x, incX, y, incY)
+}
+
+/* ------------------ */
+func benchmarkDnrm2(b *testing.B, n int, x []float64, incX int) {
+       b.ResetTimer()
+       for i := 0; i < b.N; i++ {
+               impl.Dnrm2(n, x, incX)
+       }
+}
+
+func BenchmarkDnrm2SmallUnitaryInc(b *testing.B) {
+       n := SMALL_SLICE
+       incX := 1
+       x := randomSlice(n, incX)
+
+       benchmarkDnrm2(b, n, x, incX)
+}
+
+func BenchmarkDnrm2SmallPosInc(b *testing.B) {
+       n := SMALL_SLICE
+       incX := posInc1
+       x := randomSlice(n, incX)
+
+       benchmarkDnrm2(b, n, x, incX)
+}
+
+func BenchmarkDnrm2MediumUnitaryInc(b *testing.B) {
+       n := MEDIUM_SLICE
+       incX := 1
+       x := randomSlice(n, incX)
+
+       benchmarkDnrm2(b, n, x, incX)
+}
+
+func BenchmarkDnrm2MediumPosInc(b *testing.B) {
+       n := MEDIUM_SLICE
+       incX := posInc1
+       x := randomSlice(n, incX)
+
+       benchmarkDnrm2(b, n, x, incX)
+}
+
+func BenchmarkDnrm2LargeUnitaryInc(b *testing.B) {
+       n := LARGE_SLICE
+       incX := 1
+       x := randomSlice(n, incX)
+
+       benchmarkDnrm2(b, n, x, incX)
+}
+
+func BenchmarkDnrm2LargePosInc(b *testing.B) {
+       n := LARGE_SLICE
+       incX := posInc1
+       x := randomSlice(n, incX)
+
+       benchmarkDnrm2(b, n, x, incX)
+}
+
+func BenchmarkDnrm2HugeUnitaryInc(b *testing.B) {
+       n := HUGE_SLICE
+       incX := 1
+       x := randomSlice(n, incX)
+
+       benchmarkDnrm2(b, n, x, incX)
+}
+
+func BenchmarkDnrm2HugePosInc(b *testing.B) {
+       n := HUGE_SLICE
+       incX := posInc1
+       x := randomSlice(n, incX)
+
+       benchmarkDnrm2(b, n, x, incX)
+}
+
+/* ------------------ */
+func benchmarkDasum(b *testing.B, n int, x []float64, incX int) {
+       b.ResetTimer()
+       for i := 0; i < b.N; i++ {
+               impl.Dasum(n, x, incX)
+       }
+}
+
+func BenchmarkDasumSmallUnitaryInc(b *testing.B) {
+       n := SMALL_SLICE
+       incX := 1
+       x := randomSlice(n, incX)
+
+       benchmarkDasum(b, n, x, incX)
+}
+
+func BenchmarkDasumSmallPosInc(b *testing.B) {
+       n := SMALL_SLICE
+       incX := posInc1
+       x := randomSlice(n, incX)
+
+       benchmarkDasum(b, n, x, incX)
+}
+
+func BenchmarkDasumMediumUnitaryInc(b *testing.B) {
+       n := MEDIUM_SLICE
+       incX := 1
+       x := randomSlice(n, incX)
+
+       benchmarkDasum(b, n, x, incX)
+}
+
+func BenchmarkDasumMediumPosInc(b *testing.B) {
+       n := MEDIUM_SLICE
+       incX := posInc1
+       x := randomSlice(n, incX)
+
+       benchmarkDasum(b, n, x, incX)
+}
+
+func BenchmarkDasumLargeUnitaryInc(b *testing.B) {
+       n := LARGE_SLICE
+       incX := 1
+       x := randomSlice(n, incX)
+
+       benchmarkDasum(b, n, x, incX)
+}
+
+func BenchmarkDasumLargePosInc(b *testing.B) {
+       n := LARGE_SLICE
+       incX := posInc1
+       x := randomSlice(n, incX)
+
+       benchmarkDasum(b, n, x, incX)
+}
+
+func BenchmarkDasumHugeUnitaryInc(b *testing.B) {
+       n := HUGE_SLICE
+       incX := 1
+       x := randomSlice(n, incX)
+
+       benchmarkDasum(b, n, x, incX)
+}
+
+func BenchmarkDasumHugePosInc(b *testing.B) {
+       n := HUGE_SLICE
+       incX := posInc1
+       x := randomSlice(n, incX)
+
+       benchmarkDasum(b, n, x, incX)
+}
+
+/* ------------------ */
+func benchmarkIdamax(b *testing.B, n int, x []float64, incX int) {
+       b.ResetTimer()
+       for i := 0; i < b.N; i++ {
+               impl.Idamax(n, x, incX)
+       }
+}
+
+func BenchmarkIdamaxSmallUnitaryInc(b *testing.B) {
+       n := SMALL_SLICE
+       incX := 1
+       x := randomSlice(n, incX)
+
+       benchmarkIdamax(b, n, x, incX)
+}
+
+func BenchmarkIdamaxSmallPosInc(b *testing.B) {
+       n := SMALL_SLICE
+       incX := posInc1
+       x := randomSlice(n, incX)
+
+       benchmarkIdamax(b, n, x, incX)
+}
+
+func BenchmarkIdamaxMediumUnitaryInc(b *testing.B) {
+       n := MEDIUM_SLICE
+       incX := 1
+       x := randomSlice(n, incX)
+
+       benchmarkIdamax(b, n, x, incX)
+}
+
+func BenchmarkIdamaxMediumPosInc(b *testing.B) {
+       n := MEDIUM_SLICE
+       incX := posInc1
+       x := randomSlice(n, incX)
+
+       benchmarkIdamax(b, n, x, incX)
+}
+
+func BenchmarkIdamaxLargeUnitaryInc(b *testing.B) {
+       n := LARGE_SLICE
+       incX := 1
+       x := randomSlice(n, incX)
+
+       benchmarkIdamax(b, n, x, incX)
+}
+
+func BenchmarkIdamaxLargePosInc(b *testing.B) {
+       n := LARGE_SLICE
+       incX := posInc1
+       x := randomSlice(n, incX)
+
+       benchmarkIdamax(b, n, x, incX)
+}
+
+func BenchmarkIdamaxHugeUnitaryInc(b *testing.B) {
+       n := HUGE_SLICE
+       incX := 1
+       x := randomSlice(n, incX)
+
+       benchmarkIdamax(b, n, x, incX)
+}
+
+func BenchmarkIdamaxHugePosInc(b *testing.B) {
+       n := HUGE_SLICE
+       incX := posInc1
+       x := randomSlice(n, incX)
+
+       benchmarkIdamax(b, n, x, incX)
+}
+
+/* ------------------ */
+func benchmarkDswap(b *testing.B, n int, x []float64, incX int, y []float64, incY int) {
+       b.ResetTimer()
+       for i := 0; i < b.N; i++ {
+               impl.Dswap(n, x, incX, y, incY)
+       }
+}
+
+func BenchmarkDswapSmallBothUnitary(b *testing.B) {
+       n := SMALL_SLICE
+       incX := 1
+       x := randomSlice(n, incX)
+       incY := 1
+       y := randomSlice(n, incY)
+
+       benchmarkDswap(b, n, x, incX, y, incY)
+}
+
+func BenchmarkDswapSmallIncUni(b *testing.B) {
+       n := SMALL_SLICE
+       incX := posInc1
+       x := randomSlice(n, incX)
+       incY := 1
+       y := randomSlice(n, incY)
+
+       benchmarkDswap(b, n, x, incX, y, incY)
+}
+
+func BenchmarkDswapSmallUniInc(b *testing.B) {
+       n := SMALL_SLICE
+       incX := 1
+       x := randomSlice(n, incX)
+       incY := negInc1
+       y := randomSlice(n, incY)
+
+       benchmarkDswap(b, n, x, incX, y, incY)
+}
+
+func BenchmarkDswapSmallBothInc(b *testing.B) {
+       n := SMALL_SLICE
+       incX := posInc1
+       x := randomSlice(n, incX)
+       incY := negInc1
+       y := randomSlice(n, incY)
+
+       benchmarkDswap(b, n, x, incX, y, incY)
+}
+
+func BenchmarkDswapMediumBothUnitary(b *testing.B) {
+       n := MEDIUM_SLICE
+       incX := 1
+       x := randomSlice(n, incX)
+       incY := 1
+       y := randomSlice(n, incY)
+
+       benchmarkDswap(b, n, x, incX, y, incY)
+}
+
+func BenchmarkDswapMediumIncUni(b *testing.B) {
+       n := MEDIUM_SLICE
+       incX := posInc1
+       x := randomSlice(n, incX)
+       incY := 1
+       y := randomSlice(n, incY)
+
+       benchmarkDswap(b, n, x, incX, y, incY)
+}
+
+func BenchmarkDswapMediumUniInc(b *testing.B) {
+       n := MEDIUM_SLICE
+       incX := 1
+       x := randomSlice(n, incX)
+       incY := negInc1
+       y := randomSlice(n, incY)
+
+       benchmarkDswap(b, n, x, incX, y, incY)
+}
+
+func BenchmarkDswapMediumBothInc(b *testing.B) {
+       n := MEDIUM_SLICE
+       incX := posInc1
+       x := randomSlice(n, incX)
+       incY := negInc1
+       y := randomSlice(n, incY)
+
+       benchmarkDswap(b, n, x, incX, y, incY)
+}
+
+func BenchmarkDswapLargeBothUnitary(b *testing.B) {
+       n := LARGE_SLICE
+       incX := 1
+       x := randomSlice(n, incX)
+       incY := 1
+       y := randomSlice(n, incY)
+
+       benchmarkDswap(b, n, x, incX, y, incY)
+}
+
+func BenchmarkDswapLargeIncUni(b *testing.B) {
+       n := LARGE_SLICE
+       incX := posInc1
+       x := randomSlice(n, incX)
+       incY := 1
+       y := randomSlice(n, incY)
+
+       benchmarkDswap(b, n, x, incX, y, incY)
+}
+
+func BenchmarkDswapLargeUniInc(b *testing.B) {
+       n := LARGE_SLICE
+       incX := 1
+       x := randomSlice(n, incX)
+       incY := negInc1
+       y := randomSlice(n, incY)
+
+       benchmarkDswap(b, n, x, incX, y, incY)
+}
+
+func BenchmarkDswapLargeBothInc(b *testing.B) {
+       n := LARGE_SLICE
+       incX := posInc1
+       x := randomSlice(n, incX)
+       incY := negInc1
+       y := randomSlice(n, incY)
+
+       benchmarkDswap(b, n, x, incX, y, incY)
+}
+
+func BenchmarkDswapHugeBothUnitary(b *testing.B) {
+       n := HUGE_SLICE
+       incX := 1
+       x := randomSlice(n, incX)
+       incY := 1
+       y := randomSlice(n, incY)
+
+       benchmarkDswap(b, n, x, incX, y, incY)
+}
+
+func BenchmarkDswapHugeIncUni(b *testing.B) {
+       n := HUGE_SLICE
+       incX := posInc1
+       x := randomSlice(n, incX)
+       incY := 1
+       y := randomSlice(n, incY)
+
+       benchmarkDswap(b, n, x, incX, y, incY)
+}
+
+func BenchmarkDswapHugeUniInc(b *testing.B) {
+       n := HUGE_SLICE
+       incX := 1
+       x := randomSlice(n, incX)
+       incY := negInc1
+       y := randomSlice(n, incY)
+
+       benchmarkDswap(b, n, x, incX, y, incY)
+}
+
+func BenchmarkDswapHugeBothInc(b *testing.B) {
+       n := HUGE_SLICE
+       incX := posInc1
+       x := randomSlice(n, incX)
+       incY := negInc1
+       y := randomSlice(n, incY)
+
+       benchmarkDswap(b, n, x, incX, y, incY)
+}
+
+/* ------------------ */
+func benchmarkDcopy(b *testing.B, n int, x []float64, incX int, y []float64, incY int) {
+       b.ResetTimer()
+       for i := 0; i < b.N; i++ {
+               impl.Dcopy(n, x, incX, y, incY)
+       }
+}
+
+func BenchmarkDcopySmallBothUnitary(b *testing.B) {
+       n := SMALL_SLICE
+       incX := 1
+       x := randomSlice(n, incX)
+       incY := 1
+       y := randomSlice(n, incY)
+
+       benchmarkDcopy(b, n, x, incX, y, incY)
+}
+
+func BenchmarkDcopySmallIncUni(b *testing.B) {
+       n := SMALL_SLICE
+       incX := posInc1
+       x := randomSlice(n, incX)
+       incY := 1
+       y := randomSlice(n, incY)
+
+       benchmarkDcopy(b, n, x, incX, y, incY)
+}
+
+func BenchmarkDcopySmallUniInc(b *testing.B) {
+       n := SMALL_SLICE
+       incX := 1
+       x := randomSlice(n, incX)
+       incY := negInc1
+       y := randomSlice(n, incY)
+
+       benchmarkDcopy(b, n, x, incX, y, incY)
+}
+
+func BenchmarkDcopySmallBothInc(b *testing.B) {
+       n := SMALL_SLICE
+       incX := posInc1
+       x := randomSlice(n, incX)
+       incY := negInc1
+       y := randomSlice(n, incY)
+
+       benchmarkDcopy(b, n, x, incX, y, incY)
+}
+
+func BenchmarkDcopyMediumBothUnitary(b *testing.B) {
+       n := MEDIUM_SLICE
+       incX := 1
+       x := randomSlice(n, incX)
+       incY := 1
+       y := randomSlice(n, incY)
+
+       benchmarkDcopy(b, n, x, incX, y, incY)
+}
+
+func BenchmarkDcopyMediumIncUni(b *testing.B) {
+       n := MEDIUM_SLICE
+       incX := posInc1
+       x := randomSlice(n, incX)
+       incY := 1
+       y := randomSlice(n, incY)
+
+       benchmarkDcopy(b, n, x, incX, y, incY)
+}
+
+func BenchmarkDcopyMediumUniInc(b *testing.B) {
+       n := MEDIUM_SLICE
+       incX := 1
+       x := randomSlice(n, incX)
+       incY := negInc1
+       y := randomSlice(n, incY)
+
+       benchmarkDcopy(b, n, x, incX, y, incY)
+}
+
+func BenchmarkDcopyMediumBothInc(b *testing.B) {
+       n := MEDIUM_SLICE
+       incX := posInc1
+       x := randomSlice(n, incX)
+       incY := negInc1
+       y := randomSlice(n, incY)
+
+       benchmarkDcopy(b, n, x, incX, y, incY)
+}
+
+func BenchmarkDcopyLargeBothUnitary(b *testing.B) {
+       n := LARGE_SLICE
+       incX := 1
+       x := randomSlice(n, incX)
+       incY := 1
+       y := randomSlice(n, incY)
+
+       benchmarkDcopy(b, n, x, incX, y, incY)
+}
+
+func BenchmarkDcopyLargeIncUni(b *testing.B) {
+       n := LARGE_SLICE
+       incX := posInc1
+       x := randomSlice(n, incX)
+       incY := 1
+       y := randomSlice(n, incY)
+
+       benchmarkDcopy(b, n, x, incX, y, incY)
+}
+
+func BenchmarkDcopyLargeUniInc(b *testing.B) {
+       n := LARGE_SLICE
+       incX := 1
+       x := randomSlice(n, incX)
+       incY := negInc1
+       y := randomSlice(n, incY)
+
+       benchmarkDcopy(b, n, x, incX, y, incY)
+}
+
+func BenchmarkDcopyLargeBothInc(b *testing.B) {
+       n := LARGE_SLICE
+       incX := posInc1
+       x := randomSlice(n, incX)
+       incY := negInc1
+       y := randomSlice(n, incY)
+
+       benchmarkDcopy(b, n, x, incX, y, incY)
+}
+
+func BenchmarkDcopyHugeBothUnitary(b *testing.B) {
+       n := HUGE_SLICE
+       incX := 1
+       x := randomSlice(n, incX)
+       incY := 1
+       y := randomSlice(n, incY)
+
+       benchmarkDcopy(b, n, x, incX, y, incY)
+}
+
+func BenchmarkDcopyHugeIncUni(b *testing.B) {
+       n := HUGE_SLICE
+       incX := posInc1
+       x := randomSlice(n, incX)
+       incY := 1
+       y := randomSlice(n, incY)
+
+       benchmarkDcopy(b, n, x, incX, y, incY)
+}
+
+func BenchmarkDcopyHugeUniInc(b *testing.B) {
+       n := HUGE_SLICE
+       incX := 1
+       x := randomSlice(n, incX)
+       incY := negInc1
+       y := randomSlice(n, incY)
+
+       benchmarkDcopy(b, n, x, incX, y, incY)
+}
+
+func BenchmarkDcopyHugeBothInc(b *testing.B) {
+       n := HUGE_SLICE
+       incX := posInc1
+       x := randomSlice(n, incX)
+       incY := negInc1
+       y := randomSlice(n, incY)
+
+       benchmarkDcopy(b, n, x, incX, y, incY)
+}
+
+/* ------------------ */
+func benchmarkDaxpy(b *testing.B, n int, alpha float64, x []float64, incX int, y []float64, incY int) {
+       b.ResetTimer()
+       for i := 0; i < b.N; i++ {
+               impl.Daxpy(n, alpha, x, incX, y, incY)
+       }
+}
+
+func BenchmarkDaxpySmallBothUnitary(b *testing.B) {
+       n := SMALL_SLICE
+       incX := 1
+       x := randomSlice(n, incX)
+       incY := 1
+       y := randomSlice(n, incY)
+       alpha := 2.4
+       benchmarkDaxpy(b, n, alpha, x, incX, y, incY)
+}
+
+func BenchmarkDaxpySmallIncUni(b *testing.B) {
+       n := SMALL_SLICE
+       incX := posInc1
+       x := randomSlice(n, incX)
+       incY := 1
+       y := randomSlice(n, incY)
+       alpha := 2.4
+       benchmarkDaxpy(b, n, alpha, x, incX, y, incY)
+}
+
+func BenchmarkDaxpySmallUniInc(b *testing.B) {
+       n := SMALL_SLICE
+       incX := 1
+       x := randomSlice(n, incX)
+       incY := negInc1
+       y := randomSlice(n, incY)
+       alpha := 2.4
+       benchmarkDaxpy(b, n, alpha, x, incX, y, incY)
+}
+
+func BenchmarkDaxpySmallBothInc(b *testing.B) {
+       n := SMALL_SLICE
+       incX := posInc1
+       x := randomSlice(n, incX)
+       incY := negInc1
+       y := randomSlice(n, incY)
+       alpha := 2.4
+       benchmarkDaxpy(b, n, alpha, x, incX, y, incY)
+}
+
+func BenchmarkDaxpyMediumBothUnitary(b *testing.B) {
+       n := MEDIUM_SLICE
+       incX := 1
+       x := randomSlice(n, incX)
+       incY := 1
+       y := randomSlice(n, incY)
+       alpha := 2.4
+       benchmarkDaxpy(b, n, alpha, x, incX, y, incY)
+}
+
+func BenchmarkDaxpyMediumIncUni(b *testing.B) {
+       n := MEDIUM_SLICE
+       incX := posInc1
+       x := randomSlice(n, incX)
+       incY := 1
+       y := randomSlice(n, incY)
+       alpha := 2.4
+       benchmarkDaxpy(b, n, alpha, x, incX, y, incY)
+}
+
+func BenchmarkDaxpyMediumUniInc(b *testing.B) {
+       n := MEDIUM_SLICE
+       incX := 1
+       x := randomSlice(n, incX)
+       incY := negInc1
+       y := randomSlice(n, incY)
+       alpha := 2.4
+       benchmarkDaxpy(b, n, alpha, x, incX, y, incY)
+}
+
+func BenchmarkDaxpyMediumBothInc(b *testing.B) {
+       n := MEDIUM_SLICE
+       incX := posInc1
+       x := randomSlice(n, incX)
+       incY := negInc1
+       y := randomSlice(n, incY)
+       alpha := 2.4
+       benchmarkDaxpy(b, n, alpha, x, incX, y, incY)
+}
+
+func BenchmarkDaxpyLargeBothUnitary(b *testing.B) {
+       n := LARGE_SLICE
+       incX := 1
+       x := randomSlice(n, incX)
+       incY := 1
+       y := randomSlice(n, incY)
+       alpha := 2.4
+       benchmarkDaxpy(b, n, alpha, x, incX, y, incY)
+}
+
+func BenchmarkDaxpyLargeIncUni(b *testing.B) {
+       n := LARGE_SLICE
+       incX := posInc1
+       x := randomSlice(n, incX)
+       incY := 1
+       y := randomSlice(n, incY)
+       alpha := 2.4
+       benchmarkDaxpy(b, n, alpha, x, incX, y, incY)
+}
+
+func BenchmarkDaxpyLargeUniInc(b *testing.B) {
+       n := LARGE_SLICE
+       incX := 1
+       x := randomSlice(n, incX)
+       incY := negInc1
+       y := randomSlice(n, incY)
+       alpha := 2.4
+       benchmarkDaxpy(b, n, alpha, x, incX, y, incY)
+}
+
+func BenchmarkDaxpyLargeBothInc(b *testing.B) {
+       n := LARGE_SLICE
+       incX := posInc1
+       x := randomSlice(n, incX)
+       incY := negInc1
+       y := randomSlice(n, incY)
+       alpha := 2.4
+       benchmarkDaxpy(b, n, alpha, x, incX, y, incY)
+}
+
+func BenchmarkDaxpyHugeBothUnitary(b *testing.B) {
+       n := HUGE_SLICE
+       incX := 1
+       x := randomSlice(n, incX)
+       incY := 1
+       y := randomSlice(n, incY)
+       alpha := 2.4
+       benchmarkDaxpy(b, n, alpha, x, incX, y, incY)
+}
+
+func BenchmarkDaxpyHugeIncUni(b *testing.B) {
+       n := HUGE_SLICE
+       incX := posInc1
+       x := randomSlice(n, incX)
+       incY := 1
+       y := randomSlice(n, incY)
+       alpha := 2.4
+       benchmarkDaxpy(b, n, alpha, x, incX, y, incY)
+}
+
+func BenchmarkDaxpyHugeUniInc(b *testing.B) {
+       n := HUGE_SLICE
+       incX := 1
+       x := randomSlice(n, incX)
+       incY := negInc1
+       y := randomSlice(n, incY)
+       alpha := 2.4
+       benchmarkDaxpy(b, n, alpha, x, incX, y, incY)
+}
+
+func BenchmarkDaxpyHugeBothInc(b *testing.B) {
+       n := HUGE_SLICE
+       incX := posInc1
+       x := randomSlice(n, incX)
+       incY := negInc1
+       y := randomSlice(n, incY)
+       alpha := 2.4
+       benchmarkDaxpy(b, n, alpha, x, incX, y, incY)
+}
+
+/* ------------------ */
+func benchmarkDrot(b *testing.B, n int, x []float64, incX int, y []float64, incY int, c, s float64) {
+       b.ResetTimer()
+       for i := 0; i < b.N; i++ {
+               impl.Drot(n, x, incX, y, incY, c, s)
+       }
+}
+
+func BenchmarkDrotSmallBothUnitary(b *testing.B) {
+       n := SMALL_SLICE
+       incX := 1
+       x := randomSlice(n, incX)
+       incY := 1
+       y := randomSlice(n, incY)
+       c := 0.89725836967
+       s := 0.44150585279
+       benchmarkDrot(b, n, x, incX, y, incY, c, s)
+}
+
+func BenchmarkDrotSmallIncUni(b *testing.B) {
+       n := SMALL_SLICE
+       incX := posInc1
+       x := randomSlice(n, incX)
+       incY := 1
+       y := randomSlice(n, incY)
+       c := 0.89725836967
+       s := 0.44150585279
+       benchmarkDrot(b, n, x, incX, y, incY, c, s)
+}
+
+func BenchmarkDrotSmallUniInc(b *testing.B) {
+       n := SMALL_SLICE
+       incX := 1
+       x := randomSlice(n, incX)
+       incY := negInc1
+       y := randomSlice(n, incY)
+       c := 0.89725836967
+       s := 0.44150585279
+       benchmarkDrot(b, n, x, incX, y, incY, c, s)
+}
+
+func BenchmarkDrotSmallBothInc(b *testing.B) {
+       n := SMALL_SLICE
+       incX := posInc1
+       x := randomSlice(n, incX)
+       incY := negInc1
+       y := randomSlice(n, incY)
+       c := 0.89725836967
+       s := 0.44150585279
+       benchmarkDrot(b, n, x, incX, y, incY, c, s)
+}
+
+func BenchmarkDrotMediumBothUnitary(b *testing.B) {
+       n := MEDIUM_SLICE
+       incX := 1
+       x := randomSlice(n, incX)
+       incY := 1
+       y := randomSlice(n, incY)
+       c := 0.89725836967
+       s := 0.44150585279
+       benchmarkDrot(b, n, x, incX, y, incY, c, s)
+}
+
+func BenchmarkDrotMediumIncUni(b *testing.B) {
+       n := MEDIUM_SLICE
+       incX := posInc1
+       x := randomSlice(n, incX)
+       incY := 1
+       y := randomSlice(n, incY)
+       c := 0.89725836967
+       s := 0.44150585279
+       benchmarkDrot(b, n, x, incX, y, incY, c, s)
+}
+
+func BenchmarkDrotMediumUniInc(b *testing.B) {
+       n := MEDIUM_SLICE
+       incX := 1
+       x := randomSlice(n, incX)
+       incY := negInc1
+       y := randomSlice(n, incY)
+       c := 0.89725836967
+       s := 0.44150585279
+       benchmarkDrot(b, n, x, incX, y, incY, c, s)
+}
+
+func BenchmarkDrotMediumBothInc(b *testing.B) {
+       n := MEDIUM_SLICE
+       incX := posInc1
+       x := randomSlice(n, incX)
+       incY := negInc1
+       y := randomSlice(n, incY)
+       c := 0.89725836967
+       s := 0.44150585279
+       benchmarkDrot(b, n, x, incX, y, incY, c, s)
+}
+
+func BenchmarkDrotLargeBothUnitary(b *testing.B) {
+       n := LARGE_SLICE
+       incX := 1
+       x := randomSlice(n, incX)
+       incY := 1
+       y := randomSlice(n, incY)
+       c := 0.89725836967
+       s := 0.44150585279
+       benchmarkDrot(b, n, x, incX, y, incY, c, s)
+}
+
+func BenchmarkDrotLargeIncUni(b *testing.B) {
+       n := LARGE_SLICE
+       incX := posInc1
+       x := randomSlice(n, incX)
+       incY := 1
+       y := randomSlice(n, incY)
+       c := 0.89725836967
+       s := 0.44150585279
+       benchmarkDrot(b, n, x, incX, y, incY, c, s)
+}
+
+func BenchmarkDrotLargeUniInc(b *testing.B) {
+       n := LARGE_SLICE
+       incX := 1
+       x := randomSlice(n, incX)
+       incY := negInc1
+       y := randomSlice(n, incY)
+       c := 0.89725836967
+       s := 0.44150585279
+       benchmarkDrot(b, n, x, incX, y, incY, c, s)
+}
+
+func BenchmarkDrotLargeBothInc(b *testing.B) {
+       n := LARGE_SLICE
+       incX := posInc1
+       x := randomSlice(n, incX)
+       incY := negInc1
+       y := randomSlice(n, incY)
+       c := 0.89725836967
+       s := 0.44150585279
+       benchmarkDrot(b, n, x, incX, y, incY, c, s)
+}
+
+func BenchmarkDrotHugeBothUnitary(b *testing.B) {
+       n := HUGE_SLICE
+       incX := 1
+       x := randomSlice(n, incX)
+       incY := 1
+       y := randomSlice(n, incY)
+       c := 0.89725836967
+       s := 0.44150585279
+       benchmarkDrot(b, n, x, incX, y, incY, c, s)
+}
+
+func BenchmarkDrotHugeIncUni(b *testing.B) {
+       n := HUGE_SLICE
+       incX := posInc1
+       x := randomSlice(n, incX)
+       incY := 1
+       y := randomSlice(n, incY)
+       c := 0.89725836967
+       s := 0.44150585279
+       benchmarkDrot(b, n, x, incX, y, incY, c, s)
+}
+
+func BenchmarkDrotHugeUniInc(b *testing.B) {
+       n := HUGE_SLICE
+       incX := 1
+       x := randomSlice(n, incX)
+       incY := negInc1
+       y := randomSlice(n, incY)
+       c := 0.89725836967
+       s := 0.44150585279
+       benchmarkDrot(b, n, x, incX, y, incY, c, s)
+}
+
+func BenchmarkDrotHugeBothInc(b *testing.B) {
+       n := HUGE_SLICE
+       incX := posInc1
+       x := randomSlice(n, incX)
+       incY := negInc1
+       y := randomSlice(n, incY)
+       c := 0.89725836967
+       s := 0.44150585279
+       benchmarkDrot(b, n, x, incX, y, incY, c, s)
+}
+
+/* ------------------ */
+func benchmarkDrotmOffDia(b *testing.B, n int, x []float64, incX int, y []float64, incY int, p blas.DrotmParams) {
+       b.ResetTimer()
+       for i := 0; i < b.N; i++ {
+               impl.Drotm(n, x, incX, y, incY, p)
+       }
+}
+
+func BenchmarkDrotmOffDiaSmallBothUnitary(b *testing.B) {
+       n := SMALL_SLICE
+       incX := 1
+       x := randomSlice(n, incX)
+       incY := 1
+       y := randomSlice(n, incY)
+       p := blas.DrotmParams{Flag: blas.OffDiagonal, H: [4]float64{0, -0.625, 0.9375, 0}}
+       benchmarkDrotmOffDia(b, n, x, incX, y, incY, p)
+}
+
+func BenchmarkDrotmOffDiaSmallIncUni(b *testing.B) {
+       n := SMALL_SLICE
+       incX := posInc1
+       x := randomSlice(n, incX)
+       incY := 1
+       y := randomSlice(n, incY)
+       p := blas.DrotmParams{Flag: blas.OffDiagonal, H: [4]float64{0, -0.625, 0.9375, 0}}
+       benchmarkDrotmOffDia(b, n, x, incX, y, incY, p)
+}
+
+func BenchmarkDrotmOffDiaSmallUniInc(b *testing.B) {
+       n := SMALL_SLICE
+       incX := 1
+       x := randomSlice(n, incX)
+       incY := negInc1
+       y := randomSlice(n, incY)
+       p := blas.DrotmParams{Flag: blas.OffDiagonal, H: [4]float64{0, -0.625, 0.9375, 0}}
+       benchmarkDrotmOffDia(b, n, x, incX, y, incY, p)
+}
+
+func BenchmarkDrotmOffDiaSmallBothInc(b *testing.B) {
+       n := SMALL_SLICE
+       incX := posInc1
+       x := randomSlice(n, incX)
+       incY := negInc1
+       y := randomSlice(n, incY)
+       p := blas.DrotmParams{Flag: blas.OffDiagonal, H: [4]float64{0, -0.625, 0.9375, 0}}
+       benchmarkDrotmOffDia(b, n, x, incX, y, incY, p)
+}
+
+func BenchmarkDrotmOffDiaMediumBothUnitary(b *testing.B) {
+       n := MEDIUM_SLICE
+       incX := 1
+       x := randomSlice(n, incX)
+       incY := 1
+       y := randomSlice(n, incY)
+       p := blas.DrotmParams{Flag: blas.OffDiagonal, H: [4]float64{0, -0.625, 0.9375, 0}}
+       benchmarkDrotmOffDia(b, n, x, incX, y, incY, p)
+}
+
+func BenchmarkDrotmOffDiaMediumIncUni(b *testing.B) {
+       n := MEDIUM_SLICE
+       incX := posInc1
+       x := randomSlice(n, incX)
+       incY := 1
+       y := randomSlice(n, incY)
+       p := blas.DrotmParams{Flag: blas.OffDiagonal, H: [4]float64{0, -0.625, 0.9375, 0}}
+       benchmarkDrotmOffDia(b, n, x, incX, y, incY, p)
+}
+
+func BenchmarkDrotmOffDiaMediumUniInc(b *testing.B) {
+       n := MEDIUM_SLICE
+       incX := 1
+       x := randomSlice(n, incX)
+       incY := negInc1
+       y := randomSlice(n, incY)
+       p := blas.DrotmParams{Flag: blas.OffDiagonal, H: [4]float64{0, -0.625, 0.9375, 0}}
+       benchmarkDrotmOffDia(b, n, x, incX, y, incY, p)
+}
+
+func BenchmarkDrotmOffDiaMediumBothInc(b *testing.B) {
+       n := MEDIUM_SLICE
+       incX := posInc1
+       x := randomSlice(n, incX)
+       incY := negInc1
+       y := randomSlice(n, incY)
+       p := blas.DrotmParams{Flag: blas.OffDiagonal, H: [4]float64{0, -0.625, 0.9375, 0}}
+       benchmarkDrotmOffDia(b, n, x, incX, y, incY, p)
+}
+
+func BenchmarkDrotmOffDiaLargeBothUnitary(b *testing.B) {
+       n := LARGE_SLICE
+       incX := 1
+       x := randomSlice(n, incX)
+       incY := 1
+       y := randomSlice(n, incY)
+       p := blas.DrotmParams{Flag: blas.OffDiagonal, H: [4]float64{0, -0.625, 0.9375, 0}}
+       benchmarkDrotmOffDia(b, n, x, incX, y, incY, p)
+}
+
+func BenchmarkDrotmOffDiaLargeIncUni(b *testing.B) {
+       n := LARGE_SLICE
+       incX := posInc1
+       x := randomSlice(n, incX)
+       incY := 1
+       y := randomSlice(n, incY)
+       p := blas.DrotmParams{Flag: blas.OffDiagonal, H: [4]float64{0, -0.625, 0.9375, 0}}
+       benchmarkDrotmOffDia(b, n, x, incX, y, incY, p)
+}
+
+func BenchmarkDrotmOffDiaLargeUniInc(b *testing.B) {
+       n := LARGE_SLICE
+       incX := 1
+       x := randomSlice(n, incX)
+       incY := negInc1
+       y := randomSlice(n, incY)
+       p := blas.DrotmParams{Flag: blas.OffDiagonal, H: [4]float64{0, -0.625, 0.9375, 0}}
+       benchmarkDrotmOffDia(b, n, x, incX, y, incY, p)
+}
+
+func BenchmarkDrotmOffDiaLargeBothInc(b *testing.B) {
+       n := LARGE_SLICE
+       incX := posInc1
+       x := randomSlice(n, incX)
+       incY := negInc1
+       y := randomSlice(n, incY)
+       p := blas.DrotmParams{Flag: blas.OffDiagonal, H: [4]float64{0, -0.625, 0.9375, 0}}
+       benchmarkDrotmOffDia(b, n, x, incX, y, incY, p)
+}
+
+func BenchmarkDrotmOffDiaHugeBothUnitary(b *testing.B) {
+       n := HUGE_SLICE
+       incX := 1
+       x := randomSlice(n, incX)
+       incY := 1
+       y := randomSlice(n, incY)
+       p := blas.DrotmParams{Flag: blas.OffDiagonal, H: [4]float64{0, -0.625, 0.9375, 0}}
+       benchmarkDrotmOffDia(b, n, x, incX, y, incY, p)
+}
+
+func BenchmarkDrotmOffDiaHugeIncUni(b *testing.B) {
+       n := HUGE_SLICE
+       incX := posInc1
+       x := randomSlice(n, incX)
+       incY := 1
+       y := randomSlice(n, incY)
+       p := blas.DrotmParams{Flag: blas.OffDiagonal, H: [4]float64{0, -0.625, 0.9375, 0}}
+       benchmarkDrotmOffDia(b, n, x, incX, y, incY, p)
+}
+
+func BenchmarkDrotmOffDiaHugeUniInc(b *testing.B) {
+       n := HUGE_SLICE
+       incX := 1
+       x := randomSlice(n, incX)
+       incY := negInc1
+       y := randomSlice(n, incY)
+       p := blas.DrotmParams{Flag: blas.OffDiagonal, H: [4]float64{0, -0.625, 0.9375, 0}}
+       benchmarkDrotmOffDia(b, n, x, incX, y, incY, p)
+}
+
+func BenchmarkDrotmOffDiaHugeBothInc(b *testing.B) {
+       n := HUGE_SLICE
+       incX := posInc1
+       x := randomSlice(n, incX)
+       incY := negInc1
+       y := randomSlice(n, incY)
+       p := blas.DrotmParams{Flag: blas.OffDiagonal, H: [4]float64{0, -0.625, 0.9375, 0}}
+       benchmarkDrotmOffDia(b, n, x, incX, y, incY, p)
+}
+
+/* ------------------ */
+func benchmarkDrotmDia(b *testing.B, n int, x []float64, incX int, y []float64, incY int, p blas.DrotmParams) {
+       b.ResetTimer()
+       for i := 0; i < b.N; i++ {
+               impl.Drotm(n, x, incX, y, incY, p)
+       }
+}
+
+func BenchmarkDrotmDiaSmallBothUnitary(b *testing.B) {
+       n := SMALL_SLICE
+       incX := 1
+       x := randomSlice(n, incX)
+       incY := 1
+       y := randomSlice(n, incY)
+       p := blas.DrotmParams{Flag: blas.OffDiagonal, H: [4]float64{5.0 / 12, 0, 0, 0.625}}
+       benchmarkDrotmDia(b, n, x, incX, y, incY, p)
+}
+
+func BenchmarkDrotmDiaSmallIncUni(b *testing.B) {
+       n := SMALL_SLICE
+       incX := posInc1
+       x := randomSlice(n, incX)
+       incY := 1
+       y := randomSlice(n, incY)
+       p := blas.DrotmParams{Flag: blas.OffDiagonal, H: [4]float64{5.0 / 12, 0, 0, 0.625}}
+       benchmarkDrotmDia(b, n, x, incX, y, incY, p)
+}
+
+func BenchmarkDrotmDiaSmallUniInc(b *testing.B) {
+       n := SMALL_SLICE
+       incX := 1
+       x := randomSlice(n, incX)
+       incY := negInc1
+       y := randomSlice(n, incY)
+       p := blas.DrotmParams{Flag: blas.OffDiagonal, H: [4]float64{5.0 / 12, 0, 0, 0.625}}
+       benchmarkDrotmDia(b, n, x, incX, y, incY, p)
+}
+
+func BenchmarkDrotmDiaSmallBothInc(b *testing.B) {
+       n := SMALL_SLICE
+       incX := posInc1
+       x := randomSlice(n, incX)
+       incY := negInc1
+       y := randomSlice(n, incY)
+       p := blas.DrotmParams{Flag: blas.OffDiagonal, H: [4]float64{5.0 / 12, 0, 0, 0.625}}
+       benchmarkDrotmDia(b, n, x, incX, y, incY, p)
+}
+
+func BenchmarkDrotmDiaMediumBothUnitary(b *testing.B) {
+       n := MEDIUM_SLICE
+       incX := 1
+       x := randomSlice(n, incX)
+       incY := 1
+       y := randomSlice(n, incY)
+       p := blas.DrotmParams{Flag: blas.OffDiagonal, H: [4]float64{5.0 / 12, 0, 0, 0.625}}
+       benchmarkDrotmDia(b, n, x, incX, y, incY, p)
+}
+
+func BenchmarkDrotmDiaMediumIncUni(b *testing.B) {
+       n := MEDIUM_SLICE
+       incX := posInc1
+       x := randomSlice(n, incX)
+       incY := 1
+       y := randomSlice(n, incY)
+       p := blas.DrotmParams{Flag: blas.OffDiagonal, H: [4]float64{5.0 / 12, 0, 0, 0.625}}
+       benchmarkDrotmDia(b, n, x, incX, y, incY, p)
+}
+
+func BenchmarkDrotmDiaMediumUniInc(b *testing.B) {
+       n := MEDIUM_SLICE
+       incX := 1
+       x := randomSlice(n, incX)
+       incY := negInc1
+       y := randomSlice(n, incY)
+       p := blas.DrotmParams{Flag: blas.OffDiagonal, H: [4]float64{5.0 / 12, 0, 0, 0.625}}
+       benchmarkDrotmDia(b, n, x, incX, y, incY, p)
+}
+
+func BenchmarkDrotmDiaMediumBothInc(b *testing.B) {
+       n := MEDIUM_SLICE
+       incX := posInc1
+       x := randomSlice(n, incX)
+       incY := negInc1
+       y := randomSlice(n, incY)
+       p := blas.DrotmParams{Flag: blas.OffDiagonal, H: [4]float64{5.0 / 12, 0, 0, 0.625}}
+       benchmarkDrotmDia(b, n, x, incX, y, incY, p)
+}
+
+func BenchmarkDrotmDiaLargeBothUnitary(b *testing.B) {
+       n := LARGE_SLICE
+       incX := 1
+       x := randomSlice(n, incX)
+       incY := 1
+       y := randomSlice(n, incY)
+       p := blas.DrotmParams{Flag: blas.OffDiagonal, H: [4]float64{5.0 / 12, 0, 0, 0.625}}
+       benchmarkDrotmDia(b, n, x, incX, y, incY, p)
+}
+
+func BenchmarkDrotmDiaLargeIncUni(b *testing.B) {
+       n := LARGE_SLICE
+       incX := posInc1
+       x := randomSlice(n, incX)
+       incY := 1
+       y := randomSlice(n, incY)
+       p := blas.DrotmParams{Flag: blas.OffDiagonal, H: [4]float64{5.0 / 12, 0, 0, 0.625}}
+       benchmarkDrotmDia(b, n, x, incX, y, incY, p)
+}
+
+func BenchmarkDrotmDiaLargeUniInc(b *testing.B) {
+       n := LARGE_SLICE
+       incX := 1
+       x := randomSlice(n, incX)
+       incY := negInc1
+       y := randomSlice(n, incY)
+       p := blas.DrotmParams{Flag: blas.OffDiagonal, H: [4]float64{5.0 / 12, 0, 0, 0.625}}
+       benchmarkDrotmDia(b, n, x, incX, y, incY, p)
+}
+
+func BenchmarkDrotmDiaLargeBothInc(b *testing.B) {
+       n := LARGE_SLICE
+       incX := posInc1
+       x := randomSlice(n, incX)
+       incY := negInc1
+       y := randomSlice(n, incY)
+       p := blas.DrotmParams{Flag: blas.OffDiagonal, H: [4]float64{5.0 / 12, 0, 0, 0.625}}
+       benchmarkDrotmDia(b, n, x, incX, y, incY, p)
+}
+
+func BenchmarkDrotmDiaHugeBothUnitary(b *testing.B) {
+       n := HUGE_SLICE
+       incX := 1
+       x := randomSlice(n, incX)
+       incY := 1
+       y := randomSlice(n, incY)
+       p := blas.DrotmParams{Flag: blas.OffDiagonal, H: [4]float64{5.0 / 12, 0, 0, 0.625}}
+       benchmarkDrotmDia(b, n, x, incX, y, incY, p)
+}
+
+func BenchmarkDrotmDiaHugeIncUni(b *testing.B) {
+       n := HUGE_SLICE
+       incX := posInc1
+       x := randomSlice(n, incX)
+       incY := 1
+       y := randomSlice(n, incY)
+       p := blas.DrotmParams{Flag: blas.OffDiagonal, H: [4]float64{5.0 / 12, 0, 0, 0.625}}
+       benchmarkDrotmDia(b, n, x, incX, y, incY, p)
+}
+
+func BenchmarkDrotmDiaHugeUniInc(b *testing.B) {
+       n := HUGE_SLICE
+       incX := 1
+       x := randomSlice(n, incX)
+       incY := negInc1
+       y := randomSlice(n, incY)
+       p := blas.DrotmParams{Flag: blas.OffDiagonal, H: [4]float64{5.0 / 12, 0, 0, 0.625}}
+       benchmarkDrotmDia(b, n, x, incX, y, incY, p)
+}
+
+func BenchmarkDrotmDiaHugeBothInc(b *testing.B) {
+       n := HUGE_SLICE
+       incX := posInc1
+       x := randomSlice(n, incX)
+       incY := negInc1
+       y := randomSlice(n, incY)
+       p := blas.DrotmParams{Flag: blas.OffDiagonal, H: [4]float64{5.0 / 12, 0, 0, 0.625}}
+       benchmarkDrotmDia(b, n, x, incX, y, incY, p)
+}
+
+/* ------------------ */
+func benchmarkDrotmResc(b *testing.B, n int, x []float64, incX int, y []float64, incY int, p blas.DrotmParams) {
+       b.ResetTimer()
+       for i := 0; i < b.N; i++ {
+               impl.Drotm(n, x, incX, y, incY, p)
+       }
+}
+
+func BenchmarkDrotmRescSmallBothUnitary(b *testing.B) {
+       n := SMALL_SLICE
+       incX := 1
+       x := randomSlice(n, incX)
+       incY := 1
+       y := randomSlice(n, incY)
+       p := blas.DrotmParams{Flag: blas.OffDiagonal, H: [4]float64{4096, -3584, 1792, 4096}}
+       benchmarkDrotmResc(b, n, x, incX, y, incY, p)
+}
+
+func BenchmarkDrotmRescSmallIncUni(b *testing.B) {
+       n := SMALL_SLICE
+       incX := posInc1
+       x := randomSlice(n, incX)
+       incY := 1
+       y := randomSlice(n, incY)
+       p := blas.DrotmParams{Flag: blas.OffDiagonal, H: [4]float64{4096, -3584, 1792, 4096}}
+       benchmarkDrotmResc(b, n, x, incX, y, incY, p)
+}
+
+func BenchmarkDrotmRescSmallUniInc(b *testing.B) {
+       n := SMALL_SLICE
+       incX := 1
+       x := randomSlice(n, incX)
+       incY := negInc1
+       y := randomSlice(n, incY)
+       p := blas.DrotmParams{Flag: blas.OffDiagonal, H: [4]float64{4096, -3584, 1792, 4096}}
+       benchmarkDrotmResc(b, n, x, incX, y, incY, p)
+}
+
+func BenchmarkDrotmRescSmallBothInc(b *testing.B) {
+       n := SMALL_SLICE
+       incX := posInc1
+       x := randomSlice(n, incX)
+       incY := negInc1
+       y := randomSlice(n, incY)
+       p := blas.DrotmParams{Flag: blas.OffDiagonal, H: [4]float64{4096, -3584, 1792, 4096}}
+       benchmarkDrotmResc(b, n, x, incX, y, incY, p)
+}
+
+func BenchmarkDrotmRescMediumBothUnitary(b *testing.B) {
+       n := MEDIUM_SLICE
+       incX := 1
+       x := randomSlice(n, incX)
+       incY := 1
+       y := randomSlice(n, incY)
+       p := blas.DrotmParams{Flag: blas.OffDiagonal, H: [4]float64{4096, -3584, 1792, 4096}}
+       benchmarkDrotmResc(b, n, x, incX, y, incY, p)
+}
+
+func BenchmarkDrotmRescMediumIncUni(b *testing.B) {
+       n := MEDIUM_SLICE
+       incX := posInc1
+       x := randomSlice(n, incX)
+       incY := 1
+       y := randomSlice(n, incY)
+       p := blas.DrotmParams{Flag: blas.OffDiagonal, H: [4]float64{4096, -3584, 1792, 4096}}
+       benchmarkDrotmResc(b, n, x, incX, y, incY, p)
+}
+
+func BenchmarkDrotmRescMediumUniInc(b *testing.B) {
+       n := MEDIUM_SLICE
+       incX := 1
+       x := randomSlice(n, incX)
+       incY := negInc1
+       y := randomSlice(n, incY)
+       p := blas.DrotmParams{Flag: blas.OffDiagonal, H: [4]float64{4096, -3584, 1792, 4096}}
+       benchmarkDrotmResc(b, n, x, incX, y, incY, p)
+}
+
+func BenchmarkDrotmRescMediumBothInc(b *testing.B) {
+       n := MEDIUM_SLICE
+       incX := posInc1
+       x := randomSlice(n, incX)
+       incY := negInc1
+       y := randomSlice(n, incY)
+       p := blas.DrotmParams{Flag: blas.OffDiagonal, H: [4]float64{4096, -3584, 1792, 4096}}
+       benchmarkDrotmResc(b, n, x, incX, y, incY, p)
+}
+
+func BenchmarkDrotmRescLargeBothUnitary(b *testing.B) {
+       n := LARGE_SLICE
+       incX := 1
+       x := randomSlice(n, incX)
+       incY := 1
+       y := randomSlice(n, incY)
+       p := blas.DrotmParams{Flag: blas.OffDiagonal, H: [4]float64{4096, -3584, 1792, 4096}}
+       benchmarkDrotmResc(b, n, x, incX, y, incY, p)
+}
+
+func BenchmarkDrotmRescLargeIncUni(b *testing.B) {
+       n := LARGE_SLICE
+       incX := posInc1
+       x := randomSlice(n, incX)
+       incY := 1
+       y := randomSlice(n, incY)
+       p := blas.DrotmParams{Flag: blas.OffDiagonal, H: [4]float64{4096, -3584, 1792, 4096}}
+       benchmarkDrotmResc(b, n, x, incX, y, incY, p)
+}
+
+func BenchmarkDrotmRescLargeUniInc(b *testing.B) {
+       n := LARGE_SLICE
+       incX := 1
+       x := randomSlice(n, incX)
+       incY := negInc1
+       y := randomSlice(n, incY)
+       p := blas.DrotmParams{Flag: blas.OffDiagonal, H: [4]float64{4096, -3584, 1792, 4096}}
+       benchmarkDrotmResc(b, n, x, incX, y, incY, p)
+}
+
+func BenchmarkDrotmRescLargeBothInc(b *testing.B) {
+       n := LARGE_SLICE
+       incX := posInc1
+       x := randomSlice(n, incX)
+       incY := negInc1
+       y := randomSlice(n, incY)
+       p := blas.DrotmParams{Flag: blas.OffDiagonal, H: [4]float64{4096, -3584, 1792, 4096}}
+       benchmarkDrotmResc(b, n, x, incX, y, incY, p)
+}
+
+func BenchmarkDrotmRescHugeBothUnitary(b *testing.B) {
+       n := HUGE_SLICE
+       incX := 1
+       x := randomSlice(n, incX)
+       incY := 1
+       y := randomSlice(n, incY)
+       p := blas.DrotmParams{Flag: blas.OffDiagonal, H: [4]float64{4096, -3584, 1792, 4096}}
+       benchmarkDrotmResc(b, n, x, incX, y, incY, p)
+}
+
+func BenchmarkDrotmRescHugeIncUni(b *testing.B) {
+       n := HUGE_SLICE
+       incX := posInc1
+       x := randomSlice(n, incX)
+       incY := 1
+       y := randomSlice(n, incY)
+       p := blas.DrotmParams{Flag: blas.OffDiagonal, H: [4]float64{4096, -3584, 1792, 4096}}
+       benchmarkDrotmResc(b, n, x, incX, y, incY, p)
+}
+
+func BenchmarkDrotmRescHugeUniInc(b *testing.B) {
+       n := HUGE_SLICE
+       incX := 1
+       x := randomSlice(n, incX)
+       incY := negInc1
+       y := randomSlice(n, incY)
+       p := blas.DrotmParams{Flag: blas.OffDiagonal, H: [4]float64{4096, -3584, 1792, 4096}}
+       benchmarkDrotmResc(b, n, x, incX, y, incY, p)
+}
+
+func BenchmarkDrotmRescHugeBothInc(b *testing.B) {
+       n := HUGE_SLICE
+       incX := posInc1
+       x := randomSlice(n, incX)
+       incY := negInc1
+       y := randomSlice(n, incY)
+       p := blas.DrotmParams{Flag: blas.OffDiagonal, H: [4]float64{4096, -3584, 1792, 4096}}
+       benchmarkDrotmResc(b, n, x, incX, y, incY, p)
+}
+
+/* ------------------ */
+func benchmarkDscal(b *testing.B, n int, alpha float64, x []float64, incX int) {
+       b.ResetTimer()
+       for i := 0; i < b.N; i++ {
+               impl.Dscal(n, alpha, x, incX)
+       }
+}
+
+func BenchmarkDscalSmallUnitaryInc(b *testing.B) {
+       n := SMALL_SLICE
+       incX := 1
+       x := randomSlice(n, incX)
+       alpha := 2.4
+       benchmarkDscal(b, n, alpha, x, incX)
+}
+
+func BenchmarkDscalSmallPosInc(b *testing.B) {
+       n := SMALL_SLICE
+       incX := posInc1
+       x := randomSlice(n, incX)
+       alpha := 2.4
+       benchmarkDscal(b, n, alpha, x, incX)
+}
+
+func BenchmarkDscalMediumUnitaryInc(b *testing.B) {
+       n := MEDIUM_SLICE
+       incX := 1
+       x := randomSlice(n, incX)
+       alpha := 2.4
+       benchmarkDscal(b, n, alpha, x, incX)
+}
+
+func BenchmarkDscalMediumPosInc(b *testing.B) {
+       n := MEDIUM_SLICE
+       incX := posInc1
+       x := randomSlice(n, incX)
+       alpha := 2.4
+       benchmarkDscal(b, n, alpha, x, incX)
+}
+
+func BenchmarkDscalLargeUnitaryInc(b *testing.B) {
+       n := LARGE_SLICE
+       incX := 1
+       x := randomSlice(n, incX)
+       alpha := 2.4
+       benchmarkDscal(b, n, alpha, x, incX)
+}
+
+func BenchmarkDscalLargePosInc(b *testing.B) {
+       n := LARGE_SLICE
+       incX := posInc1
+       x := randomSlice(n, incX)
+       alpha := 2.4
+       benchmarkDscal(b, n, alpha, x, incX)
+}
+
+func BenchmarkDscalHugeUnitaryInc(b *testing.B) {
+       n := HUGE_SLICE
+       incX := 1
+       x := randomSlice(n, incX)
+       alpha := 2.4
+       benchmarkDscal(b, n, alpha, x, incX)
+}
+
+func BenchmarkDscalHugePosInc(b *testing.B) {
+       n := HUGE_SLICE
+       incX := posInc1
+       x := randomSlice(n, incX)
+       alpha := 2.4
+       benchmarkDscal(b, n, alpha, x, incX)
+}
+
+/* ------------------ */