pub fn degree_x(&self) -> i32 {
        assert!(!self.has_y());
        assert!(!self.has_q());
        if self.is_zero() {
            return Zero::zero();
        }
        let s = self.highest_term_x();
        s.xpow()
    }
/// get x degree
/// assert if y equal not zero or q equal not zero
get x degree
assert if y equal not zero or q equal not zero
get x degree assert if y equal not zero or q equal not zero
pub fn degree_x(&self) -> i32 {
        assert!(!self.has_y());
        assert!(!self.has_q());
        if self.is_zero() {
            return Zero::zero();
        }
        let s = self.highest_term_x();
        s.xpow()
    }
pub fn degree_x ( & self ) -> i32 { assert ! ( self has_y ( ) ) ; assert ! ( self has_q ( ) ) ; if self . is_zero ( ) { return Zero :: zero ( ) ; } let s = self . highest_term_x ( ) ; s . xpow ( ) }
get x degree
assert if y equal not zero or q equal not zero
get x degree assert if y equal not zero or q equal not zero
&self