Blob


1 #include "os.h"
2 #include <mp.h>
3 #include "dat.h"
5 /*
6 * this code assumes that mpdigit is at least as
7 * 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 } else
22 *b->p = i;
23 return b;
24 }
26 int
27 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 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 }