...
1import { BitWidth } from './bit-width.js'
2
3export function toByteWidth(bitWidth: BitWidth): number {
4 return 1 << bitWidth;
5}
6
7export function iwidth(value: number | bigint): BitWidth {
8 if (value >= -128 && value <= 127) return BitWidth.WIDTH8;
9 if (value >= -32768 && value <= 32767) return BitWidth.WIDTH16;
10 if (value >= -2147483648 && value <= 2147483647) return BitWidth.WIDTH32;
11 return BitWidth.WIDTH64;
12}
13
14export function fwidth(value: number): BitWidth {
15 return value === Math.fround(value) ? BitWidth.WIDTH32 : BitWidth.WIDTH64;
16}
17
18export function uwidth(value: number): BitWidth {
19 if (value <= 255) return BitWidth.WIDTH8;
20 if (value <= 65535) return BitWidth.WIDTH16;
21 if (value <= 4294967295) return BitWidth.WIDTH32;
22 return BitWidth.WIDTH64;
23}
24
25export function fromByteWidth(value: number): BitWidth {
26 if (value === 1) return BitWidth.WIDTH8;
27 if (value === 2) return BitWidth.WIDTH16;
28 if (value === 4) return BitWidth.WIDTH32;
29 return BitWidth.WIDTH64;
30}
31
32export function paddingSize(bufSize: number, scalarSize: number): number {
33 return (~bufSize + 1) & (scalarSize - 1);
34}
View as plain text