1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
use crate::util::*;
pub trait Mantissa: UnsignedInteger {
const NORMALIZED_MASK: Self;
const HIMASK: Self;
const LOMASK: Self;
const FULL: i32 = Self::BITS as i32;
const HALF: i32 = Self::FULL / 2;
}
impl Mantissa for u8 {
const NORMALIZED_MASK: u8 = 0x80;
const HIMASK: u8 = 0xF0;
const LOMASK: u8 = 0x0F;
}
impl Mantissa for u16 {
const NORMALIZED_MASK: u16 = 0x8000;
const HIMASK: u16 = 0xFF00;
const LOMASK: u16 = 0x00FF;
}
impl Mantissa for u32 {
const NORMALIZED_MASK: u32 = 0x80000000;
const HIMASK: u32 = 0xFFFF0000;
const LOMASK: u32 = 0x0000FFFF;
}
impl Mantissa for u64 {
const NORMALIZED_MASK: u64 = 0x8000000000000000;
const HIMASK: u64 = 0xFFFFFFFF00000000;
const LOMASK: u64 = 0x00000000FFFFFFFF;
}
impl Mantissa for u128 {
const NORMALIZED_MASK: u128 = 0x80000000000000000000000000000000;
const HIMASK: u128 = 0xFFFFFFFFFFFFFFFF0000000000000000;
const LOMASK: u128 = 0x0000000000000000FFFFFFFFFFFFFFFF;
}