Advertisement
Guest User

Untitled

a guest
Sep 23rd, 2018
68
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.52 KB | None | 0 0
  1.  
  2. int exponentiate(bn_t base,bn_t exponent,bn_t result){
  3.   int size=get_bn_size(exponent);
  4.   char buffer[size];
  5.   bn_t tempRemainder = bn_alloc();
  6.   bn_t tempDenominator=bn_alloc();
  7.   bn_t tempRes=bn_alloc();
  8.   bn_t tempExponent=bn_alloc();
  9.   bn_fromString(tempDenominator,"2");
  10.   bn_t one=bn_alloc();
  11.   bn_fromString(one,"1");
  12.  
  13.   if(!strncmp(buffer, "0",size)){
  14.     return 0;
  15.   }
  16.  
  17.   else if(!strncmp(buffer,"1",size)){
  18.     bn_toString(base,buffer,size);
  19.     bn_fromString(result,buffer);
  20.     return 0;
  21.   }
  22.   else if(base->bn_data[0]%2==0){
  23.     //calculate for even bn
  24.     bn_mul(result, base, base);
  25.     bn_div(tempExponent,tempRemainder,exponent,tempDenominator);
  26.     printf("%s%d\n","EVEN NUMBER ",tempExponent->bn_data[0]);
  27.     bn_toString(tempExponent,buffer,size);
  28.     bn_fromString(exponent,buffer);
  29.     bn_free(tempDenominator);
  30.     bn_free(tempRemainder);
  31.     bn_free(tempExponent);
  32.     exponentiate(result,result,exponent);
  33.     return 0;
  34.  
  35.   }
  36.   else if(base->bn_data[0]%2==1){
  37.     bn_mul(tempRes, base, base);
  38.     bn_sub(tempExponent,exponent,one);
  39.     bn_div(tempExponent,tempRemainder,exponent,tempDenominator);
  40.     printf("%s%d\n","ODD NUMBER ",tempExponent->bn_data[0]);
  41.     bn_toString(tempExponent,buffer,size);
  42.     bn_fromString(exponent,buffer);
  43.     bn_free(tempDenominator);
  44.     bn_free(tempRemainder);
  45.     bn_free(one);
  46.     bn_free(tempExponent);
  47.     //calculate for odd bn
  48.     exponentiate(result,result,exponent);
  49.     bn_mul(result,tempRes,result);
  50.     return 0;
  51.   }
  52.  
  53.   return 0;
  54. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement