diff options
| author | Mattias Andrée <maandree@kth.se> | 2016-03-01 19:22:26 +0100 |
|---|---|---|
| committer | Mattias Andrée <maandree@kth.se> | 2016-03-01 19:22:26 +0100 |
| commit | 787dbbf337bb238bea30d66d4bf43907bca20e19 (patch) | |
| tree | c3adb1d5353b4136b78172b867c9ff56a435f5f5 /src/zcmpmag.c | |
| parent | Avoid using the internal structure as much as possible (diff) | |
| download | libzahl-787dbbf337bb238bea30d66d4bf43907bca20e19.tar.gz libzahl-787dbbf337bb238bea30d66d4bf43907bca20e19.tar.bz2 libzahl-787dbbf337bb238bea30d66d4bf43907bca20e19.tar.xz | |
Add zcmp, zcmpi, zcmpu, zcmpmag, zset, zseti, and zsetu
Signed-off-by: Mattias Andrée <maandree@kth.se>
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]; +} |
