diff options
Diffstat (limited to 'src/iter.rs')
-rw-r--r-- | src/iter.rs | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/src/iter.rs b/src/iter.rs new file mode 100644 index 0000000..f8aa6cb --- /dev/null +++ b/src/iter.rs @@ -0,0 +1,10 @@ +use num::BigInt; + +pub fn next(v: &BigInt) -> BigInt +{ + /*let t: BigUint = v | (v - 1); + (t + 1) | (((!t & -!t) - 1) >> (v.trailing_zeros() + 1))*/ + + let t: BigInt = (v | (v - 1u32)) + 1u32; + &t | ((((&t & -&t) / (v & -v)) >> 1) - 1u32) +} |