public override int GetHashCode() { int hc = m_magnitude.Length; if (m_magnitude.Length > 0) { hc ^= m_magnitude[0]; if (m_magnitude.Length > 1) { hc ^= m_magnitude[m_magnitude.Length - 1]; } } return m_sign < 0 ? ~hc : hc; }