diff options
| author | Mattias Andrée <maandree@kth.se> | 2016-03-15 11:40:46 +0100 |
|---|---|---|
| committer | Mattias Andrée <maandree@kth.se> | 2016-03-15 11:40:46 +0100 |
| commit | f3b969b6991f154a1fde1ea6b4488320ed0b486f (patch) | |
| tree | d17fd525c8bcfed5dd218501214330262efb52c0 /src/zadd.c | |
| parent | Optimisations (diff) | |
| download | libzahl-f3b969b6991f154a1fde1ea6b4488320ed0b486f.tar.gz libzahl-f3b969b6991f154a1fde1ea6b4488320ed0b486f.tar.bz2 libzahl-f3b969b6991f154a1fde1ea6b4488320ed0b486f.tar.xz | |
Optimise zsetup, zgcd, zmul, and zsqr and add -flto
Signed-off-by: Mattias Andrée <maandree@kth.se>
Diffstat (limited to '')
| -rw-r--r-- | src/zadd.c | 27 |
1 files changed, 27 insertions, 0 deletions
@@ -72,6 +72,33 @@ zadd_unsigned(z_t a, z_t b, z_t c) } void +zadd_unsigned_assign(z_t a, z_t b) +{ + size_t size, n; + + if (unlikely(zzero(a))) { + zabs(a, b); + return; + } else if (unlikely(zzero(b))) { + return; + } + + size = MAX(a->used, b->used); + n = a->used + b->used - size; + + ENSURE_SIZE(a, size + 1); + a->chars[size] = 0; + + if (a->used < b->used) { + n = b->used; + zmemset(a->chars + a->used, 0, n - a->used); + } + zadd_impl(a, b, n); + + SET_SIGNUM(a, 1); +} + +void zadd(z_t a, z_t b, z_t c) { if (unlikely(zzero(b))) { |
