def test_dmat_mult(self): assert_equals(Sign.mul(Sign.ZERO, (1,1), self.pos_vec, (self.n,1)), Sign.ZERO) assert_equals(Sign.mul(self.unknown_vec, (self.n,1), Sign.POSITIVE, (1,1)), self.unknown_vec) assert_equals(Sign.mul(self.pos_vec, (self.n,1), Sign.NEGATIVE, (1,1)), self.neg_vec) assert_equals(Sign.mul(self.neg_mat, (self.n,self.n), self.neg_vec, (self.n,1)), self.pos_vec) assert_equals(Sign.mul(self.zero_mat, (self.n,self.n), self.unknown_vec, (self.n,1)), self.zero_vec) assert_equals(Sign.mul(self.neg_mat, (self.n,self.n), self.pos_mat, (self.n,self.n)), self.neg_mat) assert_equals(Sign.mul(self.unknown_mat, (self.n,self.n), self.pos_mat, (self.n,self.n)), self.unknown_mat)
def test_sparse_mult(self): assert_equals(Sign.mul(Sign.ZERO, (1,1), self.pos_spmat, (self.n,self.n)), Sign.ZERO) assert_equals(Sign.mul(self.unknown_spmat, (self.n,self.n), Sign.POSITIVE, (1,1)), self.unknown_spmat) assert_equals(Sign.mul(self.pos_spmat, (self.n,self.n), Sign.NEGATIVE, (1,1)), self.neg_spmat) assert_equals(Sign.mul(self.neg_mat, (self.n,self.n), self.neg_spmat, (self.n,self.n)), self.pos_mat) assert_equals(Sign.mul(self.zero_mat, (self.n,self.n), self.unknown_spmat, (self.n,self.n)), self.zero_mat) assert_equals(Sign.mul(self.neg_spmat, (self.n,self.n), self.pos_spmat, (self.n,self.n)), self.neg_spmat) assert_equals(Sign.mul(self.unknown_spmat, (self.n,self.n), self.pos_spmat, (self.n,self.n)), self.unknown_spmat) # Asymmetric multiplication. m = 2 fat = np.vstack(m*[self.arr]) fat_pos = Sign(False, BoolMat(fat)) assert_equals(Sign.mul(fat_pos, (1,1), self.pos_spmat, (1,1)), fat_pos)
def test_mult(self): assert_equals(Sign.mul(Sign.ZERO, (1,1), Sign.POSITIVE, (1,1)), Sign.ZERO) assert_equals(Sign.mul(Sign.UNKNOWN, (1,1), Sign.POSITIVE, (1,1)), Sign.UNKNOWN) assert_equals(Sign.mul(Sign.POSITIVE, (1,1), Sign.NEGATIVE, (1,1)), Sign.NEGATIVE) assert_equals(Sign.mul(Sign.NEGATIVE, (1,1), Sign.NEGATIVE, (1,1)), Sign.POSITIVE) assert_equals(Sign.mul(Sign.ZERO, (1,1), Sign.UNKNOWN, (1,1)), Sign.ZERO)