matrix/mat64: regroup functions and clean up docs

This commit is contained in:
kortschak
2017-06-07 10:55:04 +09:30
committed by Dan Kortschak
parent 8ca1ab32d2
commit cbf5612c67

View File

@@ -116,13 +116,14 @@ func getWorkspace(r, c int, clear bool) *Dense {
// putWorkspace replaces a used *Dense into the appropriate size // putWorkspace replaces a used *Dense into the appropriate size
// workspace pool. putWorkspace must not be called with a matrix // workspace pool. putWorkspace must not be called with a matrix
// where references to the underlying data slice has been kept. // where references to the underlying data slice have been kept.
func putWorkspace(w *Dense) { func putWorkspace(w *Dense) {
pool[bits(uint64(cap(w.mat.Data)))].Put(w) pool[bits(uint64(cap(w.mat.Data)))].Put(w)
} }
// getWorkspaceSym returns a *SymDense of size n and a cap that is less than 2*n. If clear is true, the // getWorkspaceSym returns a *SymDense of size n and a cap that
// data slice visible through the Matrix interface is zeroed. // is less than 2*n. If clear is true, the data slice visible
// through the Matrix interface is zeroed.
func getWorkspaceSym(n int, clear bool) *SymDense { func getWorkspaceSym(n int, clear bool) *SymDense {
l := uint64(n) l := uint64(n)
l *= l l *= l
@@ -137,8 +138,16 @@ func getWorkspaceSym(n int, clear bool) *SymDense {
return s return s
} }
// getWorkspaceTri returns a *TriDense of size n and a cap that is less than 2*n. // putWorkspaceSym replaces a used *SymDense into the appropriate size
// If clear is true, the data slice visible through the Matrix interface is zeroed. // workspace pool. putWorkspaceSym must not be called with a matrix
// where references to the underlying data slice have been kept.
func putWorkspaceSym(s *SymDense) {
poolSym[bits(uint64(cap(s.mat.Data)))].Put(s)
}
// getWorkspaceTri returns a *TriDense of size n and a cap that
// is less than 2*n. If clear is true, the data slice visible
// through the Matrix interface is zeroed.
func getWorkspaceTri(n int, kind matrix.TriKind, clear bool) *TriDense { func getWorkspaceTri(n int, kind matrix.TriKind, clear bool) *TriDense {
l := uint64(n) l := uint64(n)
l *= l l *= l
@@ -161,22 +170,16 @@ func getWorkspaceTri(n int, kind matrix.TriKind, clear bool) *TriDense {
return t return t
} }
// putWorkspaceSym replaces a used *SymDense into the appropriate size
// workspace pool. putWorkspaceSym must not be called with a matrix
// where references to the underlying data slice has been kept.
func putWorkspaceSym(s *SymDense) {
poolSym[bits(uint64(cap(s.mat.Data)))].Put(s)
}
// putWorkspaceTri replaces a used *TriDense into the appropriate size // putWorkspaceTri replaces a used *TriDense into the appropriate size
// workspace pool. putWorkspaceTri must not be called with a matrix // workspace pool. putWorkspaceTri must not be called with a matrix
// where references to the underlying data slice has been kept. // where references to the underlying data slice have been kept.
func putWorkspaceTri(t *TriDense) { func putWorkspaceTri(t *TriDense) {
poolTri[bits(uint64(cap(t.mat.Data)))].Put(t) poolTri[bits(uint64(cap(t.mat.Data)))].Put(t)
} }
// getWorkspaceVec returns a *Vector of length n and a cap that is less than 2*n. If clear is true, the // getWorkspaceVec returns a *Vector of length n and a cap that
// data slice visible through the Matrix interface is zeroed. // is less than 2*n. If clear is true, the data slice visible
// through the Matrix interface is zeroed.
func getWorkspaceVec(n int, clear bool) *Vector { func getWorkspaceVec(n int, clear bool) *Vector {
l := uint64(n) l := uint64(n)
v := poolVec[bits(l)].Get().(*Vector) v := poolVec[bits(l)].Get().(*Vector)
@@ -190,7 +193,7 @@ func getWorkspaceVec(n int, clear bool) *Vector {
// putWorkspaceVec replaces a used *Vector into the appropriate size // putWorkspaceVec replaces a used *Vector into the appropriate size
// workspace pool. putWorkspaceVec must not be called with a matrix // workspace pool. putWorkspaceVec must not be called with a matrix
// where references to the underlying data slice has been kept. // where references to the underlying data slice have been kept.
func putWorkspaceVec(v *Vector) { func putWorkspaceVec(v *Vector) {
poolVec[bits(uint64(cap(v.mat.Data)))].Put(v) poolVec[bits(uint64(cap(v.mat.Data)))].Put(v)
} }