+ RETVAL = MP_COPY(mb->m);
+ OUTPUT:
+ RETVAL
+
+MODULE = Catacomb PACKAGE = Catacomb::MP::Reduce PREFIX = mpreduce_
+
+MP_Reduce *
+new(me, x)
+ SV *me
+ mp *x
+ CODE:
+ if (!MP_POSP(x))
+ croak("Argument to Catacomb::MP::Reduce::new must be positive");
+ RETVAL = CREATE(mpreduce);
+ mpreduce_create(RETVAL, x);
+ OUTPUT:
+ RETVAL
+
+SV *
+DESTROY(r)
+ MP_Reduce *r
+ CODE:
+ mpreduce_destroy(r);
+ DESTROY(r);
+ XSRETURN_UNDEF;
+
+mp *
+reduce(r, x)
+ MP_Reduce *r
+ mp *x
+ CODE:
+ RETVAL = mpreduce_do(r, MP_NEW, x);
+ OUTPUT:
+ RETVAL
+
+mp *
+mpreduce_exp(r, x, y)
+ MP_Reduce *r
+ mp *x
+ mp *y
+ C_ARGS:
+ r, MP_NEW, x, y
+
+mp *
+m(r)
+ MP_Reduce *r
+ CODE:
+ RETVAL = MP_COPY(r->p);