xref: /plan9/sys/src/libmp/port/mpcmp.c (revision dc5a79c1208f0704eeb474acc990728f8b4854f5)
17dd7cddfSDavid du Colombier #include "os.h"
27dd7cddfSDavid du Colombier #include <mp.h>
37dd7cddfSDavid du Colombier #include "dat.h"
47dd7cddfSDavid du Colombier 
5*dc5a79c1SDavid du Colombier // return neg, 0, pos as abs(b1)-abs(b2) is neg, 0, pos
67dd7cddfSDavid du Colombier int
mpmagcmp(mpint * b1,mpint * b2)77dd7cddfSDavid du Colombier mpmagcmp(mpint *b1, mpint *b2)
87dd7cddfSDavid du Colombier {
97dd7cddfSDavid du Colombier 	int i;
107dd7cddfSDavid du Colombier 
117dd7cddfSDavid du Colombier 	i = b1->top - b2->top;
127dd7cddfSDavid du Colombier 	if(i)
137dd7cddfSDavid du Colombier 		return i;
147dd7cddfSDavid du Colombier 
157dd7cddfSDavid du Colombier 	return mpveccmp(b1->p, b1->top, b2->p, b2->top);
167dd7cddfSDavid du Colombier }
177dd7cddfSDavid du Colombier 
187dd7cddfSDavid du Colombier // return neg, 0, pos as b1-b2 is neg, 0, pos
197dd7cddfSDavid du Colombier int
mpcmp(mpint * b1,mpint * b2)207dd7cddfSDavid du Colombier mpcmp(mpint *b1, mpint *b2)
217dd7cddfSDavid du Colombier {
227dd7cddfSDavid du Colombier 	if(b1->sign != b2->sign)
237dd7cddfSDavid du Colombier 		return b1->sign - b2->sign;
247dd7cddfSDavid du Colombier 	if(b1->sign < 0)
257dd7cddfSDavid du Colombier 		return mpmagcmp(b2, b1);
267dd7cddfSDavid du Colombier 	else
277dd7cddfSDavid du Colombier 		return mpmagcmp(b1, b2);
287dd7cddfSDavid du Colombier }
29