diff options
| author | Mattias Andrée <maandree@kth.se> | 2016-05-05 23:19:02 +0200 |
|---|---|---|
| committer | Mattias Andrée <maandree@kth.se> | 2016-05-05 23:20:03 +0200 |
| commit | 2ae1d330f9a65ef074b198866e5f1c9a5d652eef (patch) | |
| tree | f00489406a5fd168472ab25ca7e458c3b8c7cc9d /src | |
| parent | Optimisations (diff) | |
| download | libzahl-2ae1d330f9a65ef074b198866e5f1c9a5d652eef.tar.gz libzahl-2ae1d330f9a65ef074b198866e5f1c9a5d652eef.tar.bz2 libzahl-2ae1d330f9a65ef074b198866e5f1c9a5d652eef.tar.xz | |
Optimise ztrunc
Signed-off-by: Mattias Andrée <maandree@kth.se>
Diffstat (limited to '')
| -rw-r--r-- | src/ztrunc.c | 10 |
1 files changed, 3 insertions, 7 deletions
diff --git a/src/ztrunc.c b/src/ztrunc.c index e1a330c..3dedaba 100644 --- a/src/ztrunc.c +++ b/src/ztrunc.c @@ -5,7 +5,6 @@ void ztrunc(z_t a, z_t b, size_t bits) { - zahl_char_t mask = 1; size_t chars; if (unlikely(zzero(b))) { @@ -14,20 +13,17 @@ ztrunc(z_t a, z_t b, size_t bits) } chars = CEILING_BITS_TO_CHARS(bits); - a->sign = b->sign; a->used = MIN(chars, b->used); if (unlikely(a->used < chars)) bits = 0; if (likely(a != b)) { + a->sign = b->sign; ENSURE_SIZE(a, a->used); zmemcpy(a->chars, b->chars, a->used); } bits = BITS_IN_LAST_CHAR(bits); - if (likely(bits)) { - mask <<= bits; - mask -= 1; - a->chars[a->used - 1] &= mask; - } + if (likely(bits)) + a->chars[a->used - 1] &= ((zahl_char_t)1 << bits) - 1; TRIM_AND_ZERO(a); } |
