diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/internals.h | 31 | ||||
| -rw-r--r-- | src/zbset.c | 6 | ||||
| -rw-r--r-- | src/zmul.c | 4 | ||||
| -rw-r--r-- | src/zsave.c | 16 | ||||
| -rw-r--r-- | src/zsetu.c | 16 | ||||
| -rw-r--r-- | src/zsplit.c | 22 |
6 files changed, 20 insertions, 75 deletions
diff --git a/src/internals.h b/src/internals.h index 6faa254..a049e1a 100644 --- a/src/internals.h +++ b/src/internals.h @@ -105,11 +105,12 @@ extern void *libzahl_temp_allocation; #define SET_SIGNUM(a, signum) ZAHL_SET_SIGNUM(a, signum) #define SET(a, b) ZAHL_SET(a, b) -#define ENSURE_SIZE(a, n) do { if ((a)->alloced < (n)) libzahl_realloc(a, (n)); } while (0) +#define ENSURE_SIZE(a, n) ZAHL_ENSURE_SIZE(a, n) #define TRIM(a) ZAHL_TRIM(a) #define TRIM_NONZERO(a) ZAHL_TRIM_NONZERO(a) #define TRIM_AND_ZERO(a) ZAHL_TRIM_AND_ZERO(a) #define TRIM_AND_SIGN(a, s) ZAHL_TRIM_AND_SIGN(a, s) +#define SWAP(a, b, t, m) ((t)->m = (a)->m, (a)->m = (b)->m, (b)->m = (t)->m) #define MIN(a, b) ((a) < (b) ? (a) : (b)) #define MAX(a, b) ((a) > (b) ? (a) : (b)) #define znegative(a) (zsignum(a) < 0) @@ -120,8 +121,9 @@ extern void *libzahl_temp_allocation; #define zpositive2(a, b) (zsignum(a) + zsignum(b) == 2) #define zzero2(a, b) (!(zsignum(a) | zsignum(b))) #define zmemmove(d, s, n) memmove((d), (s), (n) * sizeof(zahl_char_t)) +#define zmemcpy(d, s, n) libzahl_memcpy(d, s, n) +#define zmemset(a, v, n) libzahl_memset(a, v, n) -void libzahl_realloc(z_t a, size_t need); void zmul_impl(z_t a, z_t b, z_t c); void zsqr_impl(z_t a, z_t b); @@ -151,20 +153,6 @@ libzahl_memfailure(void) libzahl_failure(errno); } -static inline void -zmemcpy(zahl_char_t *restrict d, const zahl_char_t *restrict s, register size_t n) -{ - while (n--) - d[n] = s[n]; -} - -static inline void -zmemset(zahl_char_t *a, register zahl_char_t v, register size_t n) -{ - while (n--) - a[n] = v; -} - /* * libzahl_msb_nz_zu * ^^^ ^^ ^^ @@ -218,6 +206,17 @@ libzahl_add_overflow(zahl_char_t *rp, zahl_char_t a, zahl_char_t b) #endif static inline void +zsplit_pz(z_t high, z_t low, z_t a, size_t delim) +{ + if (unlikely(zzero(a))) { + SET_SIGNUM(high, 0); + SET_SIGNUM(low, 0); + } else { + zsplit(high, low, a, delim); + } +} + +static inline void zrsh_taint(z_t a, size_t bits) { size_t i, chars, cbits; diff --git a/src/zbset.c b/src/zbset.c index 3d93fd4..223b2d5 100644 --- a/src/zbset.c +++ b/src/zbset.c @@ -23,14 +23,14 @@ void -zbset_impl_set(z_t a, size_t bit) +zbset_ll_set(z_t a, size_t bit) { PROLOGUE(1); a->chars[chars] |= mask; } void -zbset_impl_clear(z_t a, size_t bit) +zbset_ll_clear(z_t a, size_t bit) { PROLOGUE(0); a->chars[chars] &= ~mask; @@ -38,7 +38,7 @@ zbset_impl_clear(z_t a, size_t bit) } void -zbset_impl_flip(z_t a, size_t bit) +zbset_ll_flip(z_t a, size_t bit) { PROLOGUE(1); a->chars[chars] ^= mask; @@ -53,8 +53,8 @@ zmul_impl(z_t a, z_t b, z_t c) zinit_temp(c_high); zinit_temp(c_low); - zsplit(b_high, b_low, b, m2); - zsplit(c_high, c_low, c, m2); + zsplit_pz(b_high, b_low, b, m2); + zsplit_pz(c_high, c_low, c, m2); zmul_impl(z0, b_low, c_low); diff --git a/src/zsave.c b/src/zsave.c deleted file mode 100644 index 8b08f2a..0000000 --- a/src/zsave.c +++ /dev/null @@ -1,16 +0,0 @@ -/* See LICENSE file for copyright and license details. */ -#include "internals.h" - - -size_t -zsave(z_t a, void *buffer) -{ - if (buffer) { - char *buf = buffer; - *((int *)buf) = a->sign, buf += sizeof(int); - *((size_t *)buf) = a->used, buf += sizeof(size_t); - if (likely(!zzero(a))) - zmemcpy((zahl_char_t *)buf, a->chars, a->used); - } - return sizeof(int) + sizeof(size_t) + (zzero(a) ? 0 : a->used * sizeof(zahl_char_t)); -} diff --git a/src/zsetu.c b/src/zsetu.c deleted file mode 100644 index 42e8cec..0000000 --- a/src/zsetu.c +++ /dev/null @@ -1,16 +0,0 @@ -/* See LICENSE file for copyright and license details. */ -#include "internals.h" - - -void -zsetu(z_t a, uint64_t b) -{ - if (!b) { - SET_SIGNUM(a, 0); - return; - } - ENSURE_SIZE(a, 1); - SET_SIGNUM(a, 1); - a->chars[0] = (zahl_char_t)b; - a->used = 1; -} diff --git a/src/zsplit.c b/src/zsplit.c deleted file mode 100644 index afb8a33..0000000 --- a/src/zsplit.c +++ /dev/null @@ -1,22 +0,0 @@ -/* See LICENSE file for copyright and license details. */ -#include "internals.h" - - -void -zsplit(z_t high, z_t low, z_t a, size_t delim) -{ - if (unlikely(zzero(a))) { - /* This is for performance. */ - SET_SIGNUM(high, 0); - SET_SIGNUM(low, 0); - return; - } - - if (unlikely(high == a)) { - ztrunc(low, a, delim); - zrsh(high, a, delim); - } else { - zrsh(high, a, delim); - ztrunc(low, a, delim); - } -} |
