36 lines
627 B
JavaScript
36 lines
627 B
JavaScript
'use strict';
|
|
|
|
"use strict";
|
|
function nextPow2(v) {
|
|
v += v === 0 ? 1 : 0;
|
|
--v;
|
|
v |= v >>> 1;
|
|
v |= v >>> 2;
|
|
v |= v >>> 4;
|
|
v |= v >>> 8;
|
|
v |= v >>> 16;
|
|
return v + 1;
|
|
}
|
|
function isPow2(v) {
|
|
return !(v & v - 1) && !!v;
|
|
}
|
|
function log2(v) {
|
|
let r = (v > 65535 ? 1 : 0) << 4;
|
|
v >>>= r;
|
|
let shift = (v > 255 ? 1 : 0) << 3;
|
|
v >>>= shift;
|
|
r |= shift;
|
|
shift = (v > 15 ? 1 : 0) << 2;
|
|
v >>>= shift;
|
|
r |= shift;
|
|
shift = (v > 3 ? 1 : 0) << 1;
|
|
v >>>= shift;
|
|
r |= shift;
|
|
return r | v >> 1;
|
|
}
|
|
|
|
exports.isPow2 = isPow2;
|
|
exports.log2 = log2;
|
|
exports.nextPow2 = nextPow2;
|
|
//# sourceMappingURL=pow2.js.map
|