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/zsub.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 'src/zsub.c')
| -rw-r--r-- | src/zsub.c | 22 |
1 files changed, 20 insertions, 2 deletions
@@ -46,7 +46,7 @@ libzahl_zsub_unsigned(z_t a, z_t b, z_t c) SET_SIGNUM(a, 0); return; } - n = MIN(b->used, c->used); + n = b->used; if (a == b) { zset(libzahl_tmp_sub, b); SET(a, c); @@ -56,7 +56,7 @@ libzahl_zsub_unsigned(z_t a, z_t b, z_t c) zsub_impl(a, b, n); } } else { - n = MIN(b->used, c->used); + n = c->used; if (unlikely(a == c)) { zset(libzahl_tmp_sub, c); SET(a, b); @@ -77,6 +77,24 @@ zsub_unsigned(z_t a, z_t b, z_t c) } void +zsub_nonnegative_assign(z_t a, z_t b) +{ + if (unlikely(zzero(b))) { + zabs(a, a); + } else if (unlikely(!zcmpmag(a, b))) { + SET_SIGNUM(a, 0); + } else { + zsub_impl(a, b, b->used); + } +} + +void +zsub_positive_assign(z_t a, z_t b) +{ + zsub_impl(a, b, b->used); +} + +void zsub(z_t a, z_t b, z_t c) { if (unlikely(zzero(b))) { |
