summaryrefslogtreecommitdiffstats
path: root/mpz.h
diff options
context:
space:
mode:
Diffstat (limited to 'mpz.h')
-rw-r--r--mpz.h22
1 files changed, 22 insertions, 0 deletions
diff --git a/mpz.h b/mpz.h
new file mode 100644
index 0000000..ef41ec6
--- /dev/null
+++ b/mpz.h
@@ -0,0 +1,22 @@
+#pragma once
+
+#include <gmp.h>
+#include <stddef.h>
+
+/* This struct contains the instance data used by the iterators. Allocation is
+ * performed at a single point to reduce run-time overhead.
+ *
+ * 'current' contains the iterator's current value. The rest of the members are
+ * temporary variables. See the appropriate memory management functions for
+ * this type. */
+struct pszip_mpz_state
+{
+ mpz_t current, a, b, c, d;
+};
+
+void pszip_mpz_state_init(struct pszip_mpz_state *mpzs, size_t popcnt, size_t size);
+void pszip_mpz_state_clear(struct pszip_mpz_state *mpzs);
+void pszip_mpz_init_data(mpz_t n, const void *data, size_t size);
+
+void pszip_mpz_iterate_bithack01(struct pszip_mpz_state *mpzs);
+void pszip_mpz_iterate_bithack02(struct pszip_mpz_state *mpzs);