use crate::*;
pub fn ops_test() {
let a = mpz_s::from(!0 as si_t);
let b = mpz_s::from(!0 as si_t);
assert_eq!(a == b, true);
assert_eq!(a != !b, true);
let a = &mpz_s::from(!0 as si_t);
let b = &mpz_s::from(!0 as si_t);
assert_eq!(a == b, true);
assert_eq!(!a != *b, true);
let a = mpz_s::from(-3);
let b = mpz_s::from(-3);
assert_eq!(a < b, false);
assert_eq!(a == b, true);
assert_eq!(a > b, false);
let a = mpz_s::from(-3);
let b = mpz_s::from(-5);
assert_eq!(a < b, false);
assert_eq!(a == b, false);
assert_eq!(a > b, true);
let a = &mpz_s::from(3);
let b = &mpz_s::from(5);
assert_eq!(a < b, true);
assert_eq!(a == b, false);
assert_eq!(a > b, false);
let a = &mut mpz_s::from(3);
let b = &mut mpz_s::from(5);
*b *= -1 as si_t;
assert_eq!(a < b, false);
assert_eq!(a == b, false);
assert_eq!(a > b, true);
let a = mpz_s::from(-2);
let b = mpz_s::from(5);
let c = a - b;
assert_eq!(format!("{}", c), "-7");
let a = &mpz_s::from(-2);
let b = &mpz_s::from(5);
let c = a - b;
assert_eq!(format!("{}", c), "-7");
let a = mpz_s::from(3);
let b = 5 as ui_t;
let c = a - b;
assert_eq!(format!("{}", c), "-2");
let a = &mpz_s::from(-3);
let b = 5 as ui_t;
let c = a - b;
assert_eq!(format!("{}", c), "-8");
let a = 3 as ui_t;
let b = mpz_s::from(5);
let c = a - b;
assert_eq!(format!("{}", c), "-2");
let a = 3 as ui_t;
let b = &mpz_s::from(-5);
let c = a - b;
assert_eq!(format!("{}", c), "8");
let mut a = mpz_s::from(-3);
let b = mpz_s::from(7);
a -= b;
assert_eq!(format!("{}", a), "-10");
let mut a = mpz_s::from(-2);
let b = &mpz_s::from(5);
a -= b;
assert_eq!(format!("{}", a), "-7");
let a = &mut mpz_s::from(-3);
let b = mpz_s::from(7);
*a -= b;
assert_eq!(format!("{}", a), "-10");
let a = &mut mpz_s::from(-2);
let b = &mpz_s::from(5);
*a -= b;
assert_eq!(format!("{}", a), "-7");
let mut a = mpz_s::from(-3);
a -= 7 as ui_t;
assert_eq!(format!("{}", a), "-10");
let a = &mut mpz_s::from(-3);
*a -= 7 as ui_t;
assert_eq!(format!("{}", a), "-10");
let a = mpz_s::from(-2);
let b = mpz_s::from(5);
let c = a + b;
assert_eq!(format!("{}", c), "3");
let a = &mpz_s::from(-2);
let b = &mpz_s::from(5);
let c = a + b;
assert_eq!(format!("{}", c), "3");
let a = mpz_s::from(3);
let b = 5 as ui_t;
let c = a + b;
assert_eq!(format!("{}", c), "8");
let a = &mpz_s::from(-3);
let b = 5 as ui_t;
let c = a + b;
assert_eq!(format!("{}", c), "2");
let a = 3 as ui_t;
let b = mpz_s::from(5);
let c = a + b;
assert_eq!(format!("{}", c), "8");
let a = 3 as ui_t;
let b = &mpz_s::from(-5);
let c = a + b;
assert_eq!(format!("{}", c), "-2");
let mut a = mpz_s::from(-3);
let b = mpz_s::from(7);
a += b;
assert_eq!(format!("{}", a), "4");
let mut a = mpz_s::from(-2);
let b = &mpz_s::from(5);
a += b;
assert_eq!(format!("{}", a), "3");
let a = &mut mpz_s::from(-3);
let b = mpz_s::from(7);
*a += b;
assert_eq!(format!("{}", a), "4");
let a = &mut mpz_s::from(-2);
let b = &mpz_s::from(5);
*a += b;
assert_eq!(format!("{}", a), "3");
let mut a = mpz_s::from(-3);
a += 7 as ui_t;
assert_eq!(format!("{}", a), "4");
let a = &mut mpz_s::from(-3);
*a += 7 as ui_t;
assert_eq!(format!("{}", a), "4");
let a = mpz_s::from(3);
let b = mpz_s::from(5);
let c = a * b;
assert_eq!(format!("{}", c), "15");
let a = &mpz_s::from(3);
let b = &mpz_s::from(-5);
let c = a * b;
assert_eq!(format!("{}", c), "-15");
let a = mpz_s::from(3);
let b = 5 as ui_t;
let c = a * b;
assert_eq!(format!("{}", c), "15");
let a = &mpz_s::from(-3);
let b = 5 as ui_t;
let c = a * b;
assert_eq!(format!("{}", c), "-15");
let a = 3 as ui_t;
let b = mpz_s::from(5);
let c = a * b;
assert_eq!(format!("{}", c), "15");
let a = 3 as ui_t;
let b = &mpz_s::from(-5);
let c = a * b;
assert_eq!(format!("{}", c), "-15");
let a = mpz_s::from(-3);
let b = -5 as si_t;
let c = a * b;
assert_eq!(format!("{}", c), "15");
let a = &mpz_s::from(3);
let b = -5 as si_t;
let c = a * b;
assert_eq!(format!("{}", c), "-15");
let a = -3 as si_t;
let b = mpz_s::from(5);
let c = a * b;
assert_eq!(format!("{}", c), "-15");
let a = -3 as si_t;
let b = &mpz_s::from(-5);
let c = a * b;
assert_eq!(format!("{}", c), "15");
let mut a = mpz_s::from(-3);
let b = mpz_s::from(7);
a *= b;
assert_eq!(format!("{}", a), "-21");
let mut a = mpz_s::from(-2);
let b = &mpz_s::from(5);
a *= b;
assert_eq!(format!("{}", a), "-10");
let a = &mut mpz_s::from(-3);
let b = mpz_s::from(7);
*a *= b;
assert_eq!(format!("{}", a), "-21");
let a = &mut mpz_s::from(-2);
let b = &mpz_s::from(5);
*a *= b;
assert_eq!(format!("{}", a), "-10");
let mut a = mpz_s::from(-3);
a *= 7 as ui_t;
assert_eq!(format!("{}", a), "-21");
let a = &mut mpz_s::from(-3);
*a *= 7 as ui_t;
assert_eq!(format!("{}", a), "-21");
let mut a = mpz_s::from(-3);
a *= -7 as si_t;
assert_eq!(format!("{}", a), "21");
let a = &mut mpz_s::from(-3);
*a *= -7 as si_t;
assert_eq!(format!("{}", a), "21");
let a = mpz_s::from(13);
let b = mpz_s::from(-5);
let c = a / b;
assert_eq!(format!("{}", c), "-2");
let a = &mpz_s::from(-17);
let b = &mpz_s::from(5);
let c = a / b;
assert_eq!(format!("{}", c), "-3");
let a = mpz_s::from(13);
let c = a / 5 as ui_t;
assert_eq!(format!("{}", c), "2");
let a = &mpz_s::from(-17);
let c = a / 5 as ui_t;
assert_eq!(format!("{}", c), "-3");
let mut a = mpz_s::from(13);
let b = mpz_s::from(-5);
a /= b;
assert_eq!(format!("{}", a), "-2");
let mut a = mpz_s::from(-17);
let b = &mpz_s::from(5);
a /= b;
assert_eq!(format!("{}", a), "-3");
let a = &mut mpz_s::from(13);
let b = mpz_s::from(-5);
*a /= b;
assert_eq!(format!("{}", a), "-2");
let a = &mut mpz_s::from(-17);
let b = &mpz_s::from(-5);
*a /= b;
assert_eq!(format!("{}", a), "3");
let mut a = mpz_s::from(-17);
a /= 3 as ui_t;
assert_eq!(format!("{}", a), "-5");
let a = &mut mpz_s::from(-17);
*a /= 5 as ui_t;
assert_eq!(format!("{}", a), "-3");
let a = mpz_s::from(13);
let b = mpz_s::from(-5);
let c = a % b;
assert_eq!(format!("{}", c), "3");
let a = &mpz_s::from(-17);
let b = &mpz_s::from(5);
let c = a % b;
assert_eq!(format!("{}", c), "-2");
let a = mpz_s::from(13);
let c = a % 5 as ui_t;
assert_eq!(format!("{}", c), "3");
let a = &mpz_s::from(-17);
let c = a % 5 as ui_t;
assert_eq!(format!("{}", c), "-2");
let mut a = mpz_s::from(13);
let b = mpz_s::from(-5);
a %= b;
assert_eq!(format!("{}", a), "3");
let mut a = mpz_s::from(-17);
let b = &mpz_s::from(5);
a %= b;
assert_eq!(format!("{}", a), "-2");
let a = &mut mpz_s::from(13);
let b = mpz_s::from(-5);
*a %= b;
assert_eq!(format!("{}", a), "3");
let a = &mut mpz_s::from(-17);
let b = &mpz_s::from(-5);
*a %= b;
assert_eq!(format!("{}", a), "-2");
let mut a = mpz_s::from(-17);
a %= 3 as ui_t;
assert_eq!(format!("{}", a), "-2");
let a = &mut mpz_s::from(-17);
*a %= 5 as ui_t;
assert_eq!(format!("{}", a), "-2");
let mut a = mpz_s::from(-15);
let mut b = mpz_s::from(3);
a -= 2;
b += 2;
let q = &mut a / &mut b; let r = a % b; assert_eq!(format!("{}, {}", q, r), "-3, -2");
let a = &mut mpz_s::from(-15);
let b = &mut mpz_s::from(3);
*a -= 2;
*b += 2;
let q = &*a / &*b; let r = a % b; assert_eq!(format!("{}, {}", q, r), "-3, -2");
let a = -17i32;
let b = 5i32;
let q = a / b;
let r = a % b;
assert_eq!(format!("{}, {}", q, r), "-3, -2");
let a = -17i32;
let b = -5i32;
let q = a / b;
let r = a % b;
assert_eq!(format!("{}, {}", q, r), "3, -2");
let a = &mpz_s::from(-17);
let b = &mpz_s::from(5);
let q = a.fdiv_q(b);
let r = a.fdiv_r(b);
assert_eq!(format!("{}, {}", q, r), "-4, 3");
let a = &mpz_s::from(0);
let b = &mpz_s::from(0);
let c = !a & !b;
assert_eq!(format!("{}", c), "-1");
let mut a = mpz_s::from(!0 as si_t);
let b = &mpz_s::from(!0 as si_t);
a &= b;
assert_eq!(format!("{}", c), "-1");
let a = &mpz_s::from(0);
let b = &mpz_s::from(0);
let c = a | !b;
assert_eq!(format!("{}", c), "-1");
let mut a = mpz_s::from(!0 as si_t);
let b = &mpz_s::from(!0 as si_t);
a |= !b;
assert_eq!(format!("{}", c), "-1");
let a = &mpz_s::from(0);
let b = &mpz_s::from(0);
let c = a ^ !b;
assert_eq!(format!("{}", c), "-1");
let mut a = mpz_s::from(!0 as si_t);
let b = &mpz_s::from(!0 as si_t);
a ^= !b;
assert_eq!(format!("{}", c), "-1");
let zinv64 = (!0 as i32) as si_t; let zinv32 = (!0 as u32) as ui_t; let a = mpz_s::from(zinv64);
let b = mpz_s::from(zinv32);
let c = a & !b;
assert_eq!(format!("{}", c.hexstr()), "-100000000"); let a = mpz_s::from(zinv64);
let b = mpz_s::from(zinv32);
let c = !a | !b;
assert_eq!(format!("{}", c.hexstr()), "-100000000"); let a = mpz_s::from(zinv64);
let b = mpz_s::from(zinv32);
let c = a ^ b;
assert_eq!(format!("{}", c.hexstr()), "-100000000");
let a = mpz_s::from(zinv32);
let c = a << 16;
assert_eq!(format!("{}", c.hexstr()), "ffffffff0000");
let mut a = mpz_s::from(zinv32);
a <<= 8;
assert_eq!(format!("{}", a.hexstr()), "ffffffff00");
let a = !mpz_s::from(zinv32);
let c = a >> 16; assert_eq!(format!("{}", c.hexstr()), "-10000");
let mut a = !mpz_s::from(zinv32);
a >>= 8; assert_eq!(format!("{}", a.hexstr()), "-1000000");
let b = 12*16u8;
assert_eq!(format!("{}", b), "192");
assert_eq!(format!("{:2x}", b), "c0");
assert_eq!(format!("{:2x}", b >> 2), "30"); let b = (12*16u8) as i8;
assert_eq!(format!("{}", b), "-64");
assert_eq!(format!("{:2x}", b), "c0");
assert_eq!(format!("{:2x}", b >> 2), "f0");
let a = mpz_s::from(-2);
let c = -a;
assert_eq!(format!("{}", c), "2");
let a = &mpz_s::from(2);
let c = -a;
assert_eq!(format!("{}", c), "-2");
let a = mpz_s::from(-2);
let c = !a;
assert_eq!(format!("{}", c), "1");
let a = &mpz_s::from(1);
let c = !a;
assert_eq!(format!("{}", c), "-2");
}