/* -*-c-*-
*
- * $Id: mpx.c,v 1.4 1999/11/17 18:04:09 mdw Exp $
+ * $Id: mpx.c,v 1.5 1999/11/20 22:23:27 mdw Exp $
*
* Low-level multiprecision arithmetic
*
/*----- Revision history --------------------------------------------------*
*
* $Log: mpx.c,v $
+ * Revision 1.5 1999/11/20 22:23:27 mdw
+ * Add function versions of some low-level macros with wider use.
+ *
* Revision 1.4 1999/11/17 18:04:09 mdw
* Add two's-complement functionality. Improve mpx_udiv a little by
* performing the multiplication of the divisor by q with the subtraction
}
}
+/* --- @mpx_uaddn@ --- *
+ *
+ * Arguments: @mpw *dv, *dvl@ = source and destination base and limit
+ * @mpw n@ = other addend
+ *
+ * Returns: ---
+ *
+ * Use: Adds a small integer to a multiprecision number.
+ */
+
+void mpx_uaddn(mpw *dv, mpw *dvl, mpw n) { MPX_UADDN(dv, dvl, n); }
+
/* --- @mpx_usub@ --- *
*
* Arguments: @mpw *dv, *dvl@ = destination vector base and limit
*dv++ = c;
}
+/* --- @mpx_usubn@ --- *
+ *
+ * Arguments: @mpw *dv, *dvl@ = source and destination base and limit
+ * @n@ = subtrahend
+ *
+ * Returns: ---
+ *
+ * Use: Subtracts a small integer from a multiprecision number.
+ */
+
+void mpx_usubn(mpw *dv, mpw *dvl, mpw n) { MPX_USUBN(dv, dvl, n); }
+
/* --- @mpx_umul@ --- *
*
* Arguments: @mpw *dv, *dvl@ = destination vector base and limit
}
}
+/* --- @mpx_umuln@ --- *
+ *
+ * Arguments: @mpw *dv, *dvl@ = destination vector base and limit
+ * @const mpw *av, *avl@ = multiplicand vector base and limit
+ * @mpw m@ = multiplier
+ *
+ * Returns: ---
+ *
+ * Use: Multiplies a multiprecision integer by a single-word value.
+ * The destination and source may be equal. The destination
+ * is completely cleared after use.
+ */
+
+void mpx_umuln(mpw *dv, mpw *dvl, const mpw *av, const mpw *avl, mpw m)
+{
+ MPX_UMULN(dv, dvl, av, avl, m);
+}
+
+/* --- @mpx_umlan@ --- *
+ *
+ * Arguments: @mpw *dv, *dvl@ = destination/accumulator base and limit
+ * @const mpw *av, *avl@ = multiplicand vector base and limit
+ * @mpw m@ = multiplier
+ *
+ * Returns: ---
+ *
+ * Use: Multiplies a multiprecision integer by a single-word value
+ * and adds the result to an accumulator.
+ */
+
+void mpx_umlan(mpw *dv, mpw *dvl, const mpw *av, const mpw *avl, mpw m)
+{
+ MPX_UMLAN(dv, dvl, av, avl, m);
+}
+
/* --- @mpx_usqr@ --- *
*
* Arguments: @mpw *dv, *dvl@ = destination vector base and limit