def __sub__(self, other): #f(n) - g(n) ó f(n - C) if (type(other) == type(int())): #Cuando es desplazamiento res = sq.desSeq(self.sequence, self.lower, self.upper, -other) return Sequence(sq.toString(res, list(res)[0], list(res)[-1])) l = min(self.lower, other.lower) u = max(self.upper, other.upper) res = sq.subSeqs(self.sequence, other.sequence, l, u) return Sequence(sq.toString(res[0], res[1], res[2]))
def __mul__(self, other): #f(n) · g(n) ó f(n) · C if (type(other) == type(int())): #Cuando es amplificació o atenuación return Sequence( sq.toString( sq.ampSeq(self.sequence, self.lower, self.upper, other), self.lower, self.upper)) else: l = min(self.lower, other.lower) u = max(self.upper, other.upper) res = sq.mulSeqs(self.sequence, other.sequence, l, u) return Sequence(sq.toString(res[0], res[1], res[2]))
def __neg__(self): #f(-n) res = sq.negSeq(self.sequence, self.lower, self.upper) return Sequence(sq.toString(res, list(res)[0], list(res)[-1]))
def __imul__(self, other): #f(n) *= f(n) l = min(self.lower, other.lower) u = max(self.upper, other.upper) res = sq.subSeqs(self.sequence, other.sequence, l, u) return Sequence(sq.toString(res[0], res[1], res[2]))
def conSequence(self, other): #Convolucion res = sq.conSeq(self.sequence, self.lower, self.upper, other.sequence, other.lower, other.upper) return Sequence(sq.toString(res, list(res)[0], list(res)[-1]))
def inteSequence(self, K, inteType): #Interpolación res = sq.inteSeq(self.sequence, self.lower, self.upper, K, inteType) return Sequence(sq.toString(res, list(res)[0], list(res)[-1]))
def deciSequence(self, K): #Diezmación print(self.isPeriodic) res = sq.deciSeq(self.sequence, self.lower, self.upper, K) return Sequence(sq.toString(res, list(res)[0], list(res)[-1]))
def getString(self): return sq.toString(self.sequence, self.lower, self.upper)