def __new__(cls, arg): # if hasattr(arg, 'is_constant') and arg.is_constant(): if hasattr(arg, 'is_number') and arg.is_number: return arg elif arg in g_scalars: return arg elif isinstance(arg, int) or isinstance(arg, float): return arg if arg.is_Add: f = [] for A in arg.args: f.append(t(A)) return Add(*f) elif arg.is_Mul: L = len(arg.args) return Mul(*[t(arg.args[L-i-1]) for i in range(L)]) elif arg.func == t: return arg.args[0] elif arg.func == Id: return Id() elif arg.func == inv: return inv(t(Function.__new__(cls, arg.args[0]))) elif arg.func == Pow: return Pow(t(arg.args[0]), arg.args[1]) elif arg in g_symms: return arg elif arg in g_asymms: return -arg else: return Function.__new__(cls, arg)
def __new__(cls, *args, **kwargs): if cls in _SymbolCache: newobj = Function.__new__(cls, *args) newobj._cached_init() else: name = kwargs.get('name') if len(args) < 1: args = cls._indices(**kwargs) # Create the new Function object and invoke __init__ newcls = cls._symbol_type(name) newobj = Function.__new__(newcls, *args) newobj.__init__(*args, **kwargs) # Store new instance in symbol cache newcls._cache_put(newobj) return newobj
def __new__(cls, arg): if arg.is_Mul: L = len(arg.args) return Mul(*[inv(arg.args[L-i-1]) for i in range(L)]) elif arg.func == inv: return arg.args[0] elif arg.func == Pow: return Pow(inv(arg.args[0]), arg.args[1]) elif arg.func == Id: return Id() else: return Function.__new__(cls, arg)
def __new__(cls, mat): if mat.is_Add: return Add(*[Function.__new__(cls, A) for A in mat.args]) elif len(mat.args) > 0 and mat.func == trace: return Function.__new__(cls, mat.args[0]) elif mat.is_Mul: scalars = [] non_scalars = [] for a in mat.args: if a in g_scalars: scalars.append(a) elif a.func == trace: non_scalars.append(a.args[0]) else: non_scalars.append(a) if not non_scalars: return Mul(*(scalars + Function.__new__(cls, Id(None)))) else: return Mul(*(scalars + [Function.__new__( cls, Mul(*non_scalars))])) return Function.__new__(cls, mat)
def __new__(cls, *args, **kwargs): if cls in _SymbolCache: options = kwargs.get('options', {}) newobj = Function.__new__(cls, *args, **options) newobj._cached_init() else: name = kwargs.get('name') if len(args) < 1: args = cls._indices(**kwargs) # Create the new Function object and invoke __init__ newcls = cls._symbol_type(name) options = kwargs.get('options', {}) newobj = Function.__new__(newcls, *args, **options) newobj.__init__(*args, **kwargs) # All objects cached on the AbstractSymbol /newobj/ keep a reference # to /newobj/ through the /function/ field. Thus, all indexified # object will point to /newobj/, the "actual Function". newobj.function = newobj # Store new instance in symbol cache newcls._cache_put(newobj) return newobj
def __new__(cls, name, arguments=None, **kwargs): _arguments = [] for i in as_tuple(arguments): if isinstance(i, str): # Make sure there's no cast to sympy.Symbol underneath # We don't know what `i` is exactly, because the caller won't # tell us, but we're just better off with ReservedWord _arguments.append(ReservedWord(i)) else: _arguments.append(i) arguments = tuple(_arguments) if isinstance(name, str): name = Keyword(name) obj = Function.__new__(cls, name, Tuple(*arguments)) obj._name = name obj._arguments = arguments return obj
def __new__(cls, name, arguments=None): arguments = as_tuple(arguments) obj = Function.__new__(cls, name, *arguments) obj._name = name obj._arguments = arguments return obj
def __new__(cls, *args, **options): obj = Function.__new__(cls, *args, **options) return obj
def __new__(cls, low, high=None, size=None): return Function.__new__(cls)
def __new__(cls, mat): return Function.__new__(cls, mat)
def __new__(cls, arg=None): return(Function.__new__(cls))