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