diff options
| author | Mattias Andrée <maandree@kth.se> | 2016-05-06 13:48:43 +0200 |
|---|---|---|
| committer | Mattias Andrée <maandree@kth.se> | 2016-05-06 13:48:43 +0200 |
| commit | b0e210a02b8576828ac64e8b97bd565fd28c8748 (patch) | |
| tree | 02e74578d0543b40718ea9ae60a4b1295630a61d /src/zsqr.c | |
| parent | zsqr is no longer slower than zmul, they are identical (diff) | |
| download | libzahl-b0e210a02b8576828ac64e8b97bd565fd28c8748.tar.gz libzahl-b0e210a02b8576828ac64e8b97bd565fd28c8748.tar.bz2 libzahl-b0e210a02b8576828ac64e8b97bd565fd28c8748.tar.xz | |
Make zmul and zsqr (calls low-level functions) inline
Signed-off-by: Mattias Andrée <maandree@kth.se>
Diffstat (limited to 'src/zsqr.c')
| -rw-r--r-- | src/zsqr.c | 25 |
1 files changed, 7 insertions, 18 deletions
@@ -3,7 +3,7 @@ static inline void -zsqr_impl_single_char(z_t a, z_t b) +zsqr_ll_single_char(z_t a, z_t b) { ENSURE_SIZE(a, 1); a->used = 1; @@ -12,7 +12,7 @@ zsqr_impl_single_char(z_t a, z_t b) } void -zsqr_impl(z_t a, z_t b) +zsqr_ll(z_t a, z_t b) { /* * Karatsuba algorithm, optimised for equal factors. @@ -26,7 +26,7 @@ zsqr_impl(z_t a, z_t b) bits = zbits(b); if (bits <= BITS_PER_CHAR / 2) { - zsqr_impl_single_char(a, b); + zsqr_ll_single_char(a, b); return; } @@ -47,18 +47,18 @@ zsqr_impl(z_t a, z_t b) if (unlikely(zzero(low))) { - zsqr_impl(z2, high); + zsqr_ll(z2, high); zlsh(a, z2, bits << 1); } else { zinit_temp(z0); zinit_temp(z1); - zsqr_impl(z0, low); + zsqr_ll(z0, low); - zmul_impl(z1, low, high); + zmul_ll(z1, low, high); zlsh(z1, z1, bits + 1); - zsqr_impl(z2, high); + zsqr_ll(z2, high); zlsh(a, z2, bits << 1); zadd_unsigned_assign(a, z1); @@ -68,14 +68,3 @@ zsqr_impl(z_t a, z_t b) zfree_temp(z0); } } - -void -zsqr(z_t a, z_t b) -{ - if (unlikely(zzero(b))) { - SET_SIGNUM(a, 0); - } else { - zsqr_impl(a, b); - SET_SIGNUM(a, 1); - } -} |
