func (vn *VecN) SetBackingSlice(newSlice []float64) {
	vn.vec = newSlice
}
SetBackingSlice sets the vector's backing slice to the given
new one.
package mgl64
import (
	"math"
)
type VecN struct {
	vec []float64
}
func NewVecNFromData(initial []float64) *VecN {
	if initial == nil {
		return &VecN{}
	}
	var internal []float64
	if shouldPool {
		internal = grabFromPool(len(initial))
	} else {
		internal = make([]float64, len(initial))
	}
	copy(internal, initial)
	return &VecN{vec: internal}
}
func NewVecN(n int) *VecN {
	if shouldPool {
		return &VecN{vec: grabFromPool(n)}
	} else {
		return &VecN{vec: make([]float64, n)}
	}
}
func (vn VecN) Raw() []float64 {
	return vn.vec
}
func (vn VecN) Get(i int) float64 {
	return vn.vec[i]
}
func (vn *VecN) Set(i int, val float64) {
	vn.vec[i] = val
}
func (vn *VecN) destroy() {
	if vn == nil || vn.vec == nil {
		return
	}
	if shouldPool {
		returnToPool(vn.vec)
	}
	vn.vec = nil
}
func (vn *VecN) Resize(n int) *VecN {
	if vn == nil {
		return NewVecN(n)
	}
	if n <= cap(vn.vec) {
		if vn.vec != nil {
			vn.vec = vn.vec[:n]
		} else {
			vn.vec = []float64{}
		}
		return vn
	}
	if shouldPool && vn.vec != nil {
		returnToPool(vn.vec)
	}
	*vn = (*NewVecN(n))
	return vn
}