xref: /plan9/sys/src/libmp/port/mpveccmp.c (revision dc5a79c1208f0704eeb474acc990728f8b4854f5)
1*7dd7cddfSDavid du Colombier #include "os.h"
2*7dd7cddfSDavid du Colombier #include <mp.h>
3*7dd7cddfSDavid du Colombier #include "dat.h"
4*7dd7cddfSDavid du Colombier 
5*7dd7cddfSDavid du Colombier int
mpveccmp(mpdigit * a,int alen,mpdigit * b,int blen)6*7dd7cddfSDavid du Colombier mpveccmp(mpdigit *a, int alen, mpdigit *b, int blen)
7*7dd7cddfSDavid du Colombier {
8*7dd7cddfSDavid du Colombier 	mpdigit x;
9*7dd7cddfSDavid du Colombier 
10*7dd7cddfSDavid du Colombier 	while(alen > blen)
11*7dd7cddfSDavid du Colombier 		if(a[--alen] != 0)
12*7dd7cddfSDavid du Colombier 			return 1;
13*7dd7cddfSDavid du Colombier 	while(blen > alen)
14*7dd7cddfSDavid du Colombier 		if(b[--blen] != 0)
15*7dd7cddfSDavid du Colombier 			return -1;
16*7dd7cddfSDavid du Colombier 	while(alen > 0){
17*7dd7cddfSDavid du Colombier 		--alen;
18*7dd7cddfSDavid du Colombier 		x = a[alen] - b[alen];
19*7dd7cddfSDavid du Colombier 		if(x == 0)
20*7dd7cddfSDavid du Colombier 			continue;
21*7dd7cddfSDavid du Colombier 		if(x > a[alen])
22*7dd7cddfSDavid du Colombier 			return -1;
23*7dd7cddfSDavid du Colombier 		else
24*7dd7cddfSDavid du Colombier 			return 1;
25*7dd7cddfSDavid du Colombier 	}
26*7dd7cddfSDavid du Colombier 	return 0;
27*7dd7cddfSDavid du Colombier }
28