+uint32_t bigint_get_first_set_bit(bigint_t* a){
+ if(a->length_B==0){
+ return (uint32_t)(-1);
+ }
+ return (a->length_B-1)*sizeof(bigint_word_t)*8+GET_FBS(a);
+}
+
+
+/******************************************************************************/
+
+uint32_t bigint_get_last_set_bit(bigint_t* a){
+ uint32_t r=0;
+ uint8_t b=0;
+ bigint_word_t x=1;
+ if(a->length_B==0){
+ return (uint32_t)(-1);
+ }
+ while(a->wordv[r]==0 && r<a->length_B){
+ ++r;
+ }
+ if(a->wordv[r] == 0){
+ return (uint32_t)(-1);
+ }
+ while((x&a->wordv[r])==0){
+ ++b;
+ x <<= 1;
+ }
+ return r*BIGINT_WORD_SIZE+b;
+}
+
+/******************************************************************************/
+