xref: /plan9/sys/src/cmd/unix/drawterm/libmp/mpveccmp.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 // prereq: alen >= blen
6*8ccd4a63SDavid du Colombier int
mpveccmp(mpdigit * a,int alen,mpdigit * b,int blen)7*8ccd4a63SDavid du Colombier mpveccmp(mpdigit *a, int alen, mpdigit *b, int blen)
8*8ccd4a63SDavid du Colombier {
9*8ccd4a63SDavid du Colombier 	mpdigit x;
10*8ccd4a63SDavid du Colombier 
11*8ccd4a63SDavid du Colombier 	while(alen > blen)
12*8ccd4a63SDavid du Colombier 		if(a[--alen] != 0)
13*8ccd4a63SDavid du Colombier 			return 1;
14*8ccd4a63SDavid du Colombier 	while(blen > alen)
15*8ccd4a63SDavid du Colombier 		if(b[--blen] != 0)
16*8ccd4a63SDavid du Colombier 			return -1;
17*8ccd4a63SDavid du Colombier 	while(alen > 0){
18*8ccd4a63SDavid du Colombier 		--alen;
19*8ccd4a63SDavid du Colombier 		x = a[alen] - b[alen];
20*8ccd4a63SDavid du Colombier 		if(x == 0)
21*8ccd4a63SDavid du Colombier 			continue;
22*8ccd4a63SDavid du Colombier 		if(x > a[alen])
23*8ccd4a63SDavid du Colombier 			return -1;
24*8ccd4a63SDavid du Colombier 		else
25*8ccd4a63SDavid du Colombier 			return 1;
26*8ccd4a63SDavid du Colombier 	}
27*8ccd4a63SDavid du Colombier 	return 0;
28*8ccd4a63SDavid du Colombier }
29