mptoi.c (580B)
1 #include "os.h" 2 #include <mp.h> 3 #include "dat.h" 4 5 /* 6 * this code assumes that mpdigit is at least as 7 * big as an int. 8 */ 9 10 mpint* 11 itomp(int i, mpint *b) 12 { 13 if(b == nil) 14 b = mpnew(0); 15 mpassign(mpzero, b); 16 if(i != 0) 17 b->top = 1; 18 if(i < 0){ 19 b->sign = -1; 20 *b->p = -i; 21 } else 22 *b->p = i; 23 return b; 24 } 25 26 int 27 mptoi(mpint *b) 28 { 29 uint x; 30 31 if(b->top==0) 32 return 0; 33 x = *b->p; 34 if(b->sign > 0){ 35 if(b->top > 1 || (x > MAXINT)) 36 x = (int)MAXINT; 37 else 38 x = (int)x; 39 } else { 40 if(b->top > 1 || x > MAXINT+1) 41 x = (int)MININT; 42 else 43 x = -(int)x; 44 } 45 return x; 46 }