diff options
Diffstat (limited to 'src/zcmpmag.c')
| -rw-r--r-- | src/zcmpmag.c | 29 |
1 files changed, 29 insertions, 0 deletions
diff --git a/src/zcmpmag.c b/src/zcmpmag.c new file mode 100644 index 0000000..7e4ab38 --- /dev/null +++ b/src/zcmpmag.c @@ -0,0 +1,29 @@ +/* See LICENSE file for copyright and license details. */ +#include "internals" + + +int +zcmpmag(z_t a, z_t b) +{ + size_t i, j; + if (zzero(a)) + return -!zzero(b); + if (zzero(b)) + return 1; + i = a->used - 1; + j = b->used - 1; + for (; i > j; i--) { + if (a->chars[i]) + return +1; + a->used--; + } + for (; j > i; j--) { + if (b->chars[j]) + return -1; + b->used--; + } + for (; i; i--) + if (a->chars[i] != b->chars[i]) + return (a->chars[i] > b->chars[i]) * 2 - 1; + return a->chars[0] < b->chars[0] ? -1 : a->chars[0] > b->chars[0]; +} |
