in packed.go [69:93]
func (p *packed) Set(ix uint64, val uint64) {
if val&p.forbiddenMask != 0 {
panic(fmt.Sprintf("attempt to store out of range value. numeric overflow: %x (%x)", (val & p.forbiddenMask), val))
}
bitstart := ix * uint64(p.bits)
word := bitstart / 64
bitoff := bitstart % 64
getbits := 64 - (bitoff)
if getbits > uint64(p.bits) {
getbits = uint64(p.bits)
}
// zero
p.space[word] =
((p.space[word] >> (bitoff + getbits)) << (bitoff + getbits)) |
(p.space[word] << (64 - bitoff) >> (64 - bitoff))
// or in val
p.space[word] |= (val << bitoff)
if uint(getbits) < p.bits {
remainder := p.bits - uint(getbits)
p.space[word+1] = ((p.space[word+1] >> remainder) << remainder) | val>>getbits
}
return
}