progs/perftest.c: Use from Glibc syscall numbers.
[catacomb] / math / mpreduce.h
index c90c93f..b6eb2d7 100644 (file)
 
 /*----- Header files ------------------------------------------------------*/
 
+#include <stdio.h>
+
+#ifndef CATACOMB_MP_H
+#  include "mp.h"
+#endif
+
 /*----- Data structures ---------------------------------------------------*/
 
 typedef struct mpreduce_instr {
@@ -64,7 +70,10 @@ typedef struct mpreduce {
  * Arguments:  @gfreduce *r@ = structure to fill in
  *             @mp *x@ = an integer
  *
- * Returns:    Zero for success, nonzero on error.
+ * Returns:    Zero if successful; nonzero on failure.  The current
+ *             algorithm always succeeds when given positive @x@.  Earlier
+ *             versions used to fail on particular kinds of integers, but
+ *             this is guaranteed not to happen any more.
  *
  * Use:                Initializes a context structure for reduction.
  */
@@ -84,7 +93,7 @@ extern void mpreduce_destroy(mpreduce */*r*/);
 
 /* --- @mpreduce_dump@ --- *
  *
- * Arguments:  @mpreduce *r@ = structure to dump
+ * Arguments:  @const mpreduce *r@ = structure to dump
  *             @FILE *fp@ = file to dump on
  *
  * Returns:    ---
@@ -92,7 +101,7 @@ extern void mpreduce_destroy(mpreduce */*r*/);
  * Use:                Dumps a reduction context.
  */
 
-extern void mpreduce_dump(mpreduce */*r*/, FILE */*fp*/);
+extern void mpreduce_dump(const mpreduce */*r*/, FILE */*fp*/);
 
 /* --- @mpreduce_do@ --- *
  *
@@ -103,11 +112,11 @@ extern void mpreduce_dump(mpreduce */*r*/, FILE */*fp*/);
  * Returns:    Destination, @x@ reduced modulo the reduction poly.
  */
 
-extern mp *mpreduce_do(mpreduce */*r*/, mp */*d*/, mp */*x*/);
+extern mp *mpreduce_do(const mpreduce */*r*/, mp */*d*/, mp */*x*/);
 
 /* --- @mpreduce_exp@ --- *
  *
- * Arguments:  @mpreduce *mr@ = pointer to reduction context
+ * Arguments:  @const mpreduce *mr@ = pointer to reduction context
  *             @mp *d@ = fake destination
  *             @mp *a@ = base
  *             @mp *e@ = exponent
@@ -115,7 +124,8 @@ extern mp *mpreduce_do(mpreduce */*r*/, mp */*d*/, mp */*x*/);
  * Returns:    Result, %$a^e \bmod m$%.
  */
 
-extern mp *mpreduce_exp(mpreduce */*mr*/, mp */*d*/, mp */*a*/, mp */*e*/);
+extern mp *mpreduce_exp(const mpreduce */*mr*/, mp */*d*/,
+                       mp */*a*/, mp */*e*/);
 
 /*----- That's all, folks -------------------------------------------------*/