Blame


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