gorgonia.org/tensor@v0.9.24/iterator_utils.go (about) 1 package tensor 2 3 import ( 4 "encoding/binary" 5 "hash/fnv" 6 ) 7 8 // hashIntArray uses fnv to generate an int 9 func hashIntArray(in []int) int { 10 tmp := make([]byte, 8*len(in)) 11 for i := 0; i < len(in); i++ { 12 binary.LittleEndian.PutUint64(tmp[i*8:i*8+8], uint64(in[i])) 13 } 14 h := fnv.New64a() 15 v, _ := h.Write(tmp) 16 return v 17 } 18 19 // func hashIntArrayPair(in1, in2 []int) int { 20 // n := len(in1) + len(in2) 21 // tmp := make([]byte, 8*n) 22 // i := 0 23 // for ; i < len(in1); i++ { 24 // binary.LittleEndian.PutUint64(tmp[i*8:i*8+8], uint64(in1[i])) 25 // } 26 // for j := 0; j < len(in2); j++ { 27 // binary.LittleEndian.PutUint64(tmp[i*8:i*8+8], uint64(in2[j])) 28 // i++ 29 // } 30 // h := fnv.New64a() 31 // v, _ := h.Write(tmp) 32 // return v 33 // }