{"version":3,"file":"pow2.mjs","sources":["../../../src/maths/misc/pow2.ts"],"sourcesContent":["// Taken from the bit-twiddle package\n\n/**\n * Rounds to next power of two.\n * @function nextPow2\n * @param {number} v - input value\n * @returns {number} - next rounded power of two\n * @category maths\n * @advanced\n */\nexport function nextPow2(v: number): number\n{\n    v += v === 0 ? 1 : 0;\n    --v;\n    v |= v >>> 1;\n    v |= v >>> 2;\n    v |= v >>> 4;\n    v |= v >>> 8;\n    v |= v >>> 16;\n\n    return v + 1;\n}\n\n/**\n * Checks if a number is a power of two.\n * @function isPow2\n * @param {number} v - input value\n * @returns {boolean} `true` if value is power of two\n * @category maths\n * @advanced\n */\nexport function isPow2(v: number): boolean\n{\n    return !(v & (v - 1)) && (!!v);\n}\n\n/**\n * Computes ceil of log base 2\n * @function log2\n * @param {number} v - input value\n * @returns {number} logarithm base 2\n * @category maths\n * @advanced\n */\nexport function log2(v: number): number\n{\n    let r = (v > 0xFFFF ? 1 : 0) << 4;\n\n    v >>>= r;\n\n    let shift = (v > 0xFF ? 1 : 0) << 3;\n\n    v >>>= shift; r |= shift;\n    shift = (v > 0xF ? 1 : 0) << 2;\n    v >>>= shift; r |= shift;\n    shift = (v > 0x3 ? 1 : 0) << 1;\n    v >>>= shift; r |= shift;\n\n    return r | (v >> 1);\n}\n"],"names":[],"mappings":";AAUO,SAAS,SAAS,CAAA,EACzB;AACI,EAAA,CAAA,IAAK,CAAA,KAAM,IAAI,CAAA,GAAI,CAAA;AACnB,EAAA,EAAE,CAAA;AACF,EAAA,CAAA,IAAK,CAAA,KAAM,CAAA;AACX,EAAA,CAAA,IAAK,CAAA,KAAM,CAAA;AACX,EAAA,CAAA,IAAK,CAAA,KAAM,CAAA;AACX,EAAA,CAAA,IAAK,CAAA,KAAM,CAAA;AACX,EAAA,CAAA,IAAK,CAAA,KAAM,EAAA;AAEX,EAAA,OAAO,CAAA,GAAI,CAAA;AACf;AAUO,SAAS,OAAO,CAAA,EACvB;AACI,EAAA,OAAO,EAAE,CAAA,GAAK,CAAA,GAAI,CAAA,CAAA,IAAQ,CAAC,CAAC,CAAA;AAChC;AAUO,SAAS,KAAK,CAAA,EACrB;AACI,EAAA,IAAI,CAAA,GAAA,CAAK,CAAA,GAAI,KAAA,GAAS,CAAA,GAAI,CAAA,KAAM,CAAA;AAEhC,EAAA,CAAA,MAAO,CAAA;AAEP,EAAA,IAAI,KAAA,GAAA,CAAS,CAAA,GAAI,GAAA,GAAO,CAAA,GAAI,CAAA,KAAM,CAAA;AAElC,EAAA,CAAA,MAAO,KAAA;AAAO,EAAA,CAAA,IAAK,KAAA;AACnB,EAAA,KAAA,GAAA,CAAS,CAAA,GAAI,EAAA,GAAM,CAAA,GAAI,CAAA,KAAM,CAAA;AAC7B,EAAA,CAAA,MAAO,KAAA;AAAO,EAAA,CAAA,IAAK,KAAA;AACnB,EAAA,KAAA,GAAA,CAAS,CAAA,GAAI,CAAA,GAAM,CAAA,GAAI,CAAA,KAAM,CAAA;AAC7B,EAAA,CAAA,MAAO,KAAA;AAAO,EAAA,CAAA,IAAK,KAAA;AAEnB,EAAA,OAAO,IAAK,CAAA,IAAK,CAAA;AACrB;;;;"}