xref: /plan9/sys/src/cmd/unix/drawterm/libmp/mptoi.c (revision 8ccd4a6360d974db7bd7bbd4f37e7018419ea908)
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 Colombier itomp(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 Colombier mptoi(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