+int
+compare (Moment const &a, Moment const &b)
+{
+ return Moment::compare (a, b);
+}
+
+int
+Moment::compare (Moment const &a, Moment const &b)
+{
+ int c = Rational::compare (a.main_part_, b.main_part_);
+ if (c)
+ return c;
+
+ return Rational::compare (a.grace_part_, b.grace_part_);
+}
+
+void
+Moment::operator += (Moment const &src)
+{
+ main_part_ += src.main_part_;
+ grace_part_ += src.grace_part_;
+}
+
+void
+Moment::operator -= (Moment const &src)
+{
+ main_part_ -= src.main_part_;
+ grace_part_ -= src.grace_part_;
+}
+
+/* Only take the main part of SRC for multiplication. */
+void
+Moment::operator *= (Moment const &src)
+{
+ main_part_ *= src.main_part_;
+ grace_part_ *= src.main_part_;
+}
+
+/* Only take the main part of SRC for division. */
+void
+Moment::operator /= (Moment const &src)
+{
+ main_part_ /= src.main_part_;
+ grace_part_ /= src.main_part_;
+}
+
+/* Only take the main part of SRC for division. */
+void
+Moment::operator %= (Moment const &src)
+{
+ main_part_ %= src.main_part_;
+ grace_part_ %= src.main_part_;
+}
+
+int
+Moment::den () const
+{
+ return main_part_.den ();
+}
+
+int
+Moment::num () const
+{
+ return main_part_.num ();
+}