+/* --- @mpx_udivn@ --- *
+ *
+ * Arguments: @mpw *qv, *qvl@ = storage for the quotient (may overlap
+ * dividend)
+ * @const mpw *rv, *rvl@ = dividend
+ * @mpw d@ = single-precision divisor
+ *
+ * Returns: Remainder after divison.
+ *
+ * Use: Performs a single-precision division operation.
+ */
+
+mpw mpx_udivn(mpw *qv, mpw *qvl, const mpw *rv, const mpw *rvl, mpw d)
+{
+ size_t i;
+ size_t ql = qvl - qv;
+ mpd r = 0;
+
+ i = rvl - rv;
+ while (i > 0) {
+ i--;
+ r = (r << MPW_BITS) | rv[i];
+ if (i < ql)
+ qv[i] = r / d;
+ r %= d;
+ }
+ return (MPW(r));
+}
+