use std::mem::size_of;
pub(crate) const BITS_PER_BYTE: usize = 8;
pub(crate) const BITS_U64: usize = 64;
pub(crate) const BYTES_U64: usize = size_of::<u64>();
pub const TYPE_F64: u8 = 1;
pub const TYPE_F32: u8 = 2;
pub const TYPE_F64_RAW: u8 = 3;
pub const TYPE_F32_RAW: u8 = 4;
pub const TYPE_F64_DELTA: u8 = 5;
pub const TYPE_F32_DELTA: u8 = 6;
pub const TYPE_F64_DEC: u8 = 7;
pub const TYPE_F32_DEC: u8 = 8;
pub const TYPE_F64_DEC_DELTA: u8 = 9;
pub const TYPE_F32_DEC_DELTA: u8 = 10;
pub const MAX_TYPE_BYTE: u8 = TYPE_F32_DEC_DELTA;
pub(crate) const MAX_EXPONENT_F64: u8 = 18;
pub(crate) const MAX_EXPONENT_F32: u8 = 10;
pub(crate) const MAX_FAC_F64: u8 = 8;
pub(crate) const MAX_FAC_F32: u8 = 4;
pub(crate) const ENCODING_UPPER_LIMIT_F64: f64 = 9223372036854774784.0;
pub(crate) const ENCODING_UPPER_LIMIT_F32: f32 = 2147483520.0;
pub const CHUNK_SIZE: usize = 1024;
pub const CHUNK_SIZE_1024: usize = CHUNK_SIZE;
pub const TYPE_MASK: u8 = 0x0F;
pub const LEN_TAG_SHIFT: u8 = 4;
pub const LEN_TAG_MASK: u8 = 0x03;
pub const LEN_TAG_U8: u8 = 0b00;
pub const LEN_TAG_U16: u8 = 0b01;
pub const LEN_TAG_U32: u8 = 0b10;
pub const LEN_TAG_1024: u8 = 0b11;
pub(crate) const MAX_EXCEPTIONS: usize = 128;
pub(crate) const EXC_COUNT_LEN: usize = size_of::<u16>();
pub(crate) const EXC_POS_LEN: usize = size_of::<u16>();
pub(crate) const EXC_COUNT_LEN_U32: usize = size_of::<u32>();
pub(crate) const EXC_POS_LEN_U32: usize = size_of::<u32>();
pub(crate) const SAMPLES_COUNT: usize = 32;
pub(crate) const EARLY_EXIT_BIT_WIDTH: usize = 8;
pub(crate) const LUT_SIZE_1BIT: usize = 2;
pub(crate) const LUT_SIZE_2BIT: usize = 4;
pub(crate) const LUT_SIZE_4BIT: usize = 16;
pub(crate) const EXP_ARR_F64: [f64; 19] = [
1.0,
10.0,
100.0,
1_000.0,
10_000.0,
100_000.0,
1_000_000.0,
10_000_000.0,
100_000_000.0,
1_000_000_000.0,
10_000_000_000.0,
100_000_000_000.0,
1_000_000_000_000.0,
10_000_000_000_000.0,
100_000_000_000_000.0,
1_000_000_000_000_000.0,
10_000_000_000_000_000.0,
100_000_000_000_000_000.0,
1_000_000_000_000_000_000.0,
];
pub(crate) const FRAC_ARR_F64: [f64; 19] = [
1.0,
0.1,
0.01,
0.001,
0.0001,
0.00001,
0.000001,
0.0000001,
0.00000001,
0.000000001,
0.0000000001,
0.00000000001,
0.000000000001,
0.0000000000001,
0.00000000000001,
0.000000000000001,
0.0000000000000001,
0.00000000000000001,
0.000000000000000001,
];
pub(crate) const FACT_ARR_F64: [i64; 19] = [
1,
10,
100,
1_000,
10_000,
100_000,
1_000_000,
10_000_000,
100_000_000,
1_000_000_000,
10_000_000_000,
100_000_000_000,
1_000_000_000_000,
10_000_000_000_000,
100_000_000_000_000,
1_000_000_000_000_000,
10_000_000_000_000_000,
100_000_000_000_000_000,
1_000_000_000_000_000_000,
];
pub(crate) const EXP_ARR_F32: [f32; 11] = [
1.0,
10.0,
100.0,
1_000.0,
10_000.0,
100_000.0,
1_000_000.0,
10_000_000.0,
100_000_000.0,
1_000_000_000.0,
10_000_000_000.0,
];
pub(crate) const FRAC_ARR_F32: [f32; 11] = [
1.0,
0.1,
0.01,
0.001,
0.0001,
0.00001,
0.000001,
0.0000001,
0.00000001,
0.000000001,
0.0000000001,
];
pub(crate) const FACT_ARR_F32: [i64; 11] = [
1,
10,
100,
1_000,
10_000,
100_000,
1_000_000,
10_000_000,
100_000_000,
1_000_000_000,
10_000_000_000,
];