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* itomp(int i,mpint * b)11itomp(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 mptoi(mpint * b)27mptoi(mpint *b) 28 { 29 uint x; 30 31 x = *b->p; 32 if(b->sign > 0){ 33 if(b->top > 1 || (x > MAXINT)) 34 x = (int)MAXINT; 35 else 36 x = (int)x; 37 } else { 38 if(b->top > 1 || x > MAXINT+1) 39 x = (int)MININT; 40 else 41 x = -(int)x; 42 } 43 return x; 44 } 45