def test_mon_mult_random(): np.random.seed(988) #test with random matrices possible_dim = np.random.randint(1,5, (1,10)) dim = possible_dim[0, np.random.randint(1,9)] shape = list() for i in range(dim): shape.append(np.random.randint(2,4)) matrix1 = np.random.randint(1,11,(shape)) M1 = MultiPower(matrix1) shape2 = list() for i in range(dim): shape2.append(np.random.randint(2,4)) matrix2 = np.ones(shape2) M2 = MultiPower(matrix2) M3 = M1*M2 for index, i in np.ndenumerate(M2.coeff): if sum(index) == 0: M4 = MultiPower.mon_mult(M1, index) else: M4 = M4 + MultiPower.mon_mult(M1, index) if M3.shape != M4.shape: new_M3_coeff, new_M4_coeff = utils.match_size(M3.coeff,M4.coeff) else: new_M3_coeff, new_M4_coeff = M3.coeff, M4.coeff assert np.allclose(new_M3_coeff, new_M4_coeff)
def __sub__(self, other): ''' Subtraction of two MultiCheb polynomials. Parameters ---------- other : MultiCheb Returns ------- MultiCheb The coeff values are the result of self.coeff - other.coeff. ''' if self.shape != other.shape: new_self, new_other = match_size(self.coeff, other.coeff) else: new_self, new_other = self.coeff, other.coeff return MultiCheb((new_self - (new_other)), clean_zeros=False)
def __add__(self, other): ''' Addition of two MultiPower polynomials. Parameters ---------- other : MultiPower Returns ------- MultiPower object The sum of the coeff of self and coeff of other. ''' if self.shape != other.shape: new_self, new_other = match_size(self.coeff, other.coeff) else: new_self, new_other = self.coeff, other.coeff return MultiPower((new_self + new_other), clean_zeros=False)
def __mul__(self, other): ''' Multiplication of two MultiPower polynomials. Parameters ---------- other : MultiPower object Returns ------- MultiPower object The result of self*other. ''' if self.shape != other.shape: new_self, new_other = match_size(self.coeff, other.coeff) else: new_self, new_other = self.coeff, other.coeff return MultiPower(convolve(new_self, new_other))
def __add__(self, other): ''' Addition of two MultiCheb polynomials. Parameters ---------- other : MultiCheb Returns ------- MultiCheb The sum of the coeff of self and coeff of other. ''' if self.shape != other.shape: new_self, new_other = match_size(self.coeff, other.coeff) else: new_self, new_other = self.coeff, other.coeff return MultiCheb(new_self + new_other)