diff options
author | Paul Masurel <paul.masurel@gmail.com> | 2016-09-06 09:57:17 +0900 |
---|---|---|
committer | Paul Masurel <paul.masurel@gmail.com> | 2016-09-06 09:57:17 +0900 |
commit | 33aa15191644f02a9d097ae11aa05aef8f19b98f (patch) | |
tree | cca5abc870dae9390563d7a041d61fc3d0a22a68 /src/fastfield/mod.rs | |
parent | a599614a94ed48bd33dc71a3303c8ea1e8775743 (diff) |
BUG-21 Remove useless 64 bits padding in fastfield.
Closes #21
Diffstat (limited to 'src/fastfield/mod.rs')
-rw-r--r-- | src/fastfield/mod.rs | 18 |
1 files changed, 13 insertions, 5 deletions
diff --git a/src/fastfield/mod.rs b/src/fastfield/mod.rs index 331ec96..8137d7f 100644 --- a/src/fastfield/mod.rs +++ b/src/fastfield/mod.rs @@ -1,15 +1,23 @@ -mod fastdivide; mod reader; mod writer; mod serializer; - -pub use self::fastdivide::DividerU32; pub use self::writer::{U32FastFieldsWriter, U32FastFieldWriter}; pub use self::reader::{U32FastFieldsReader, U32FastFieldReader}; pub use self::serializer::FastFieldSerializer; -use self::fastdivide::count_leading_zeros; +fn count_leading_zeros(mut val: u32) -> u8 { + if val == 0 { + return 32; + } + let mut result = 0u8; + while (val & (1u32 << 31)) == 0 { + val <<= 1; + result += 1; + } + return result; +} + fn compute_num_bits(amplitude: u32) -> u8 { 32u8 - count_leading_zeros(amplitude) @@ -111,7 +119,7 @@ mod tests { } let source = directory.open_read(&path).unwrap(); { - assert_eq!(source.len(), 58 as usize); + assert_eq!(source.len(), 50 as usize); } { let fast_field_readers = U32FastFieldsReader::open(source).unwrap(); |