Michal Iskierko 6d31343205 feat: Waku v2 bridge
Issue #12610
2024-02-22 17:07:59 +01:00

28 lines
435 B
Go

package alias
// For details: https://en.wikipedia.org/wiki/Linear-feedback_shift_register
type LSFR struct {
data uint64
poly uint64
}
func newLSFR(poly uint64, seed uint64) *LSFR {
return &LSFR{data: seed, poly: poly}
}
func (f *LSFR) next() uint64 {
var bit uint64
var i uint64
for i = 0; i < 64; i++ {
if f.poly&(1<<i) != 0 {
bit ^= (f.data >> i)
}
}
bit &= 0x01
f.data = (f.data << 1) | bit
return f.data
}