+ if (spare != MP_NEW)
+ MP_DROP(spare);
+ return (d);
+}
+
+/* --- @mpmont_exp@ --- *
+ *
+ * Arguments: @mpmont *mm@ = pointer to Montgomery reduction context
+ * @const mp *a@ = base
+ * @const mp *e@ = exponent
+ *
+ * Returns: Result, %$a^e \bmod m$%.
+ */
+
+mp *mpmont_exp(mpmont *mm, const mp *a, const mp *e)
+{
+ mp *d = mpmont_expr(mm, a, e);
+ d = mpmont_reduce(mm, d, d);
+ return (d);