def __str__(self): wrt = self.wrt if not isinstance(wrt, Symbol): wrt = delim(wrt) if isinstance(self.arg, Expr): return fr'\frac{{ {{\rm d}} }}{{ {{\rm d}}{self.wrt} }}{delim(self.arg)}' return fr'\frac{{ {{\rm d}}{self.arg} }}{{ {{\rm d}}{self.wrt} }}'
def __str__(self): arg = self.arg s = str(arg) if not isinstance(arg, Symbol): if not hasattr(arg, 'base'): s = delim(s) return fr'-{s}'
def __str__(self): s = '' for arg in self.args: if isinstance(arg, (Add, Neg, Mul)): s += delim(str(arg)) else: s += str(arg) return s
def __str__(self): base = self.base if not isinstance(base, (Symbol, Indexed)): base = delim(base) power = self.power if isinstance(power, Neg): if power == -Number(1): return fr'\frac{{1}}{{{base}}}' return fr'\frac{{1}}{{{base}^{{{power.arg}}} }}' return fr'{base}^{{ {power} }}'
def __str__(self): lims = self.lims arg = self.arg if isinstance(arg, Add): arg = delim(arg) return fr'\sum_{{{lims[0]}={lims[1]}}}^{{{lims[2]}}}{arg}'
def __str__(self): return delim(self.name)
def __str__(self): s = '+'.join([ str(arg) if not isinstance(arg, Add) else delim(str(arg)) for arg in self.args ]) return s.replace('+-', '-')