aboutsummaryrefslogtreecommitdiff
path: root/bigint.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'bigint.cpp')
-rw-r--r--bigint.cpp10
1 files changed, 10 insertions, 0 deletions
diff --git a/bigint.cpp b/bigint.cpp
index 0d2a72b..83d00c1 100644
--- a/bigint.cpp
+++ b/bigint.cpp
@@ -542,6 +542,16 @@ bool Bigint::odd() const {
return !even();
}
+int Bigint::trailingZeros() const {
+ if(digits.size()==0)throw domain_error("trailingZeros called on zero bigint");
+ int res=0;
+ for(digit_t dig : digits){
+ if(dig==0)res+=digit_bits;
+ else return res+__builtin_ctz(dig);
+ }
+ assert(false); //bigint is not consistent: zero while digits is not empty!
+}
+
//Produces a string with the bytes of the mantissa in little-endian order.
string Bigint::serialiseMantissa() const {
string s;