summaryrefslogtreecommitdiffstats
path: root/src/fastfield/mod.rs
diff options
context:
space:
mode:
authorPaul Masurel <paul.masurel@gmail.com>2016-09-06 09:57:17 +0900
committerPaul Masurel <paul.masurel@gmail.com>2016-09-06 09:57:17 +0900
commit33aa15191644f02a9d097ae11aa05aef8f19b98f (patch)
treecca5abc870dae9390563d7a041d61fc3d0a22a68 /src/fastfield/mod.rs
parenta599614a94ed48bd33dc71a3303c8ea1e8775743 (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.rs18
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();