func Nrm2(x Vector) float32 {
	if x.Inc < 0 {
		panic(negInc)
	}
	return blas32.Snrm2(x.N, x.Data, x.Inc)
}
Nrm2 computes the Euclidean norm of the vector x:
sqrt(\sum_i x[i]*x[i]).

Nrm2 will panic if the vector increment is negative.
package blas32
import (
	"gonum.org/v1/gonum/blas"
	"gonum.org/v1/gonum/blas/gonum"
)
var blas32 blas.Float32 = gonum.Implementation{}
func Use(b blas.Float32) {
	blas32 = b
}
func Implementation() blas.Float32 {
	return blas32
}
type Vector struct {
	N    int
	Inc  int
	Data []float32
}
type General struct {
	Rows, Cols int
	Stride     int
	Data       []float32
}
type Band struct {
	Rows, Cols int
	KL, KU     int
	Stride     int
	Data       []float32
}
type Triangular struct {
	N      int
	Stride int
	Data   []float32
	Uplo   blas.Uplo
	Diag   blas.Diag
}
type TriangularBand struct {
	N, K   int
	Stride int
	Data   []float32
	Uplo   blas.Uplo
	Diag   blas.Diag
}
type TriangularPacked struct {
	N    int
	Data []float32
	Uplo blas.Uplo
	Diag blas.Diag
}
type Symmetric struct {
	N      int
	Stride int
	Data   []float32
	Uplo   blas.Uplo
}
type SymmetricBand struct {
	N, K   int
	Stride int
	Data   []float32
	Uplo   blas.Uplo
}
type SymmetricPacked struct {
	N    int
	Data []float32
	Uplo blas.Uplo
}
const (
	negInc    = "blas32: negative vector increment"
	badLength = "blas32: vector length mismatch"
)
func Dot(x, y Vector) float32 {
	if x.N != y.N {
		panic(badLength)
	}
	return blas32.Sdot(x.N, x.Data, x.Inc, y.Data, y.Inc)
}
func DDot(x, y Vector) float64 {
	if x.N != y.N {
		panic(badLength)
	}
	return blas32.Dsdot(x.N, x.Data, x.Inc, y.Data, y.Inc)
}
func SDDot(alpha float32, x, y Vector) float32 {
	if x.N != y.N {
		panic(badLength)
	}
	return blas32.Sdsdot(x.N, alpha, x.Data, x.Inc, y.Data, y.Inc)
}