summaryrefslogtreecommitdiffstats
path: root/src/iter.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/iter.rs')
-rw-r--r--src/iter.rs10
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)
+}