Blob
1 #include "os.h"2 #include <mp.h>3 #include "dat.h"5 /*6 * this code assumes that mpdigit is at least as7 * big as an int.8 */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 } else22 *b->p = i;23 return b;24 }26 int27 mptoi(mpint *b)28 {29 uint x;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 else38 x = (int)x;39 } else {40 if(b->top > 1 || x > MAXINT+1)41 x = (int)MININT;42 else43 x = -(int)x;44 }45 return x;46 }