veffect
Version:
powerful TypeScript validation library built on the robust foundation of Effect combining exceptional type safety, high performance, and developer experience. Taking inspiration from Effect's functional principles, VEffect delivers a balanced approach tha
33 lines (28 loc) • 626 B
text/typescript
import { MASK } from "./config.js"
/**
* Hamming weight.
*
* Taken from: http://jsperf.com/hamming-weight
*
* @internal
*/
export function popcount(x: number) {
x -= (x >> 1) & 0x55555555
x = (x & 0x33333333) + ((x >> 2) & 0x33333333)
x = (x + (x >> 4)) & 0x0f0f0f0f
x += x >> 8
x += x >> 16
return x & 0x7f
}
/** @internal */
export function hashFragment(shift: number, h: number) {
return (h >>> shift) & MASK
}
/** @internal */
export function toBitmap(x: number) {
return 1 << x
}
/** @internal */
export function fromBitmap(bitmap: number, bit: number) {
return popcount(bitmap & (bit - 1))
}