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