Subversion Repositories planix.SVN

Rev

Go to most recent revision | Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
2 - 1
#include "os.h"
2
#include <mp.h>
3
#include "dat.h"
4
 
5
/*
6
 *  this code assumes that mpdigit is at least as
7
 *  big as an int.
8
 */
9
 
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
}
25
 
26
int
27
mptoi(mpint *b)
28
{
29
	uint x;
30
 
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
}