func NewVecDense(n int, data []float64) *VecDense {
	if n <= 0 {
		if n == 0 {
			panic(ErrZeroLength)
		}
		panic("mat: negative dimension")
	}
	if len(data) != n && data != nil {
		panic(ErrShape)
	}
	if data == nil {
		data = make([]float64, n)
	}
	return &VecDense{
		mat: blas64.Vector{
			N:    n,
			Inc:  1,
			Data: data,
		},
	}
}
NewVecDense creates a new VecDense of length n. If data == nil,
a new slice is allocated for the backing slice. If len(data) == n, data is
used as the backing slice, and changes to the elements of the returned VecDense
will be reflected in data. If neither of these is true, NewVecDense will panic.
NewVecDense will panic if n is zero.
package mat
import (
	"gonum.org/v1/gonum/blas"
	"gonum.org/v1/gonum/blas/blas64"
	"gonum.org/v1/gonum/internal/asm/f64"
)
var (
	vector *VecDense
	_ Matrix  = vector
	_ Vector  = vector
	_ Reseter = vector
)
type Vector interface {
	Matrix
	AtVec(int) float64
	Len() int
}
type TransposeVec struct {
	Vector Vector
}
func (t TransposeVec) At(i, j int) float64 {
	return t.Vector.At(j, i)
}
func (t TransposeVec) AtVec(i int) float64 {
	return t.Vector.AtVec(i)
}
func (t TransposeVec) Dims() (r, c int) {
	c, r = t.Vector.Dims()
	return r, c
}
func (t TransposeVec) T() Matrix {
	return t.Vector
}
func (t TransposeVec) Len() int {
	return t.Vector.Len()
}
func (t TransposeVec) TVec() Vector {
	return t.Vector
}
func (t TransposeVec) Untranspose() Matrix {
	return t.Vector
}
func (t TransposeVec) UntransposeVec() Vector {
	return t.Vector
}
type VecDense struct {
	mat blas64.Vector
}