Exemple #1
0
    def __new__(cls,
                *args,
                symmetric=False,
                hermitian=False,
                real=False,
                unitary=False):
        if args[1] != args[2]:
            if symmetric or hermitian or unitary:
                loggingCritical(
                    "Matrix <" + args[0] +
                    "> cannot be symmetric, hermitian or unitary since it is not a square matrix."
                )
                exit()

        if not args[1] == args[2] == 1:
            obj = Symbol.__new__(cls,
                                 args[0],
                                 commutative=False,
                                 hermitian=hermitian)
            obj.is_symmetric = symmetric
            obj.is_realMatrix = real
            obj.is_unitary = unitary
        else:
            obj = Symbol.__new__(cls, args[0], real=real)
        obj.shape = (args[1], args[2])
        return obj
Exemple #2
0
 def __new__(cls,
             constant: constants.Constant,
             is_natural_unit: bool = False):
     s = Symbol.__new__(cls, name=constant.abbrev)
     s._constant = constant
     s._is_natural_unit = is_natural_unit
     return s
Exemple #3
0
 def __new__(cls, name, dim=None):
     obj = Symbol.__new__(cls, name)
     obj.dim = dim
     obj._fields = None
     obj._field_names = None
     obj._constant_fields = None
     return obj
Exemple #4
0
    def __new__(cls, name, *karg, **kargs):
        # We use dbname as an "assumption" so that two symbols with same name are not equal if from separate DBs
        assumptions = dict()
        if 'dbname' in kargs and kargs['dbname']:
            assumptions[kargs['dbname']] = True

        return Symbol.__new__(cls, name, **assumptions)
Exemple #5
0
 def __new__(cls, i, label="sigma"):
     if not i in [1, 2, 3]:
         raise IndexError("Invalid Pauli index")
     obj = Symbol.__new__(cls, "%s%d" %(label,i), commutative=False, hermitian=True)
     obj.i = i
     obj.label = label
     return obj
Exemple #6
0
 def __new__(cls, name, dim=None):
     obj = Symbol.__new__(cls, name)
     obj.dim = dim
     obj._fields = None
     obj._field_names = None
     obj._constant_fields = None
     return obj
Exemple #7
0
 def __new__(cls, i, label="sigma"):
     if not i in [1, 2, 3]:
         raise IndexError("Invalid Pauli index")
     obj = Symbol.__new__(cls, "%s%d" %(label,i), commutative=False, hermitian=True)
     obj.i = i
     obj.label = label
     return obj
Exemple #8
0
 def __new__(cls,
             name,
             constant=None,
             fundamental=None,
             substitution=None,
             substitution_atoms=None,
             datatype=None,
             **assumptions):
     from sympy import Symbol
     return Symbol.__new__(cls, name, **assumptions)
Exemple #9
0
    def __new__(cls,
                ten,
                rank=None,
                shape=None,
                has_inv=None,
                transposed=None,
                **kws):

        # Handle either str or change the behavior
        if isinstance(ten, str):
            name = ten
            if rank is None:
                raise ValueError("Must give rank with string arg.")
            if name in ['0', '1']:
                name = "%s_%d" % (name, rank)

            if name.startswith('0'):
                has_inv = False
            elif name.startswith('1') and rank in [0, 2]:
                has_inv = True
            elif rank == 0:
                has_inv = True
            elif has_inv is None:
                has_inv = False

        elif isinstance(ten, Tensor):
            name = ten.name
            if has_inv is None:
                has_inv = ten.has_inverse
            if not rank is None and rank != ten.rank:
                raise ValueError("Given rank and rank of ten don't match")
            if shape is None and transposed is None:
                shape = ten.shape
            if transposed is None:
                transposed = ten.transposed
            rank = ten.rank
        else:
            raise ValueError("Unable to create Tensor from a %s" \
                             % type(ten))

        if rank > 0 and not kws.has_key("commutative"):
            kws['commutative'] = False

        if transposed is None:
            transposed = False
        if transposed:
            name += "'"

        obj = Symbol.__new__(cls, name, **kws)
        obj.rank = rank
        obj.has_inverse = has_inv
        obj.transposed = transposed
        obj._set_default_shape(shape)
        return obj
Exemple #10
0
    def __new__ (cls, ten, rank=None, shape=None, has_inv=None, transposed=None,
                 **kws):

        # Handle either str or change the behavior
        if isinstance(ten, str):
            name = ten
            if rank is None:
                raise ValueError("Must give rank with string arg.")
            if name in ['0', '1']:
                name = "%s_%d" % (name, rank)

            if name.startswith('0'):
                has_inv = False
            elif name.startswith('1') and rank in [0, 2]:
                has_inv = True
            elif rank == 0:
                has_inv = True
            elif has_inv is None:
                has_inv = False

        elif isinstance(ten, Tensor):
            name = ten.name
            if has_inv is None:
                has_inv = ten.has_inverse
            if not rank is None and rank != ten.rank:
                raise ValueError("Given rank and rank of ten don't match")
            if shape is None and transposed is None:
                shape = ten.shape
            if transposed is None:
                transposed = ten.transposed
            rank = ten.rank
        else:
            raise ValueError("Unable to create Tensor from a %s" \
                             % type(ten))

        if rank > 0 and not kws.has_key("commutative"):
            kws['commutative'] = False

        if transposed is None:
            transposed = False
        if transposed:
            name += "'"

        obj = Symbol.__new__(cls, name, **kws)
        obj.rank = rank
        obj.has_inverse = has_inv
        obj.transposed = transposed
        obj._set_default_shape(shape)
        return obj
Exemple #11
0
    def __new__(cls, name=None, longname=None):

        if name is None or name == "":
            name = "NoName_"+str(Quantity.dummy_count)
            Quantity.dummy_count += 1
            self = Dummy.__new__(cls, name)
        else:
            self = Symbol.__new__(cls, name)

        self.count = Quantity.quantity_count
        Quantity.quantity_count += 1

        self.abbrev = name
        self.name = name
        self.longname = longname
        self.value = None
        self.value_formula = None
        self.error = None
        self.error_formula = None
        self.prefer_unit = None
        self.dim = None
        return self
Exemple #12
0
 def __new__(cls, data, step_size=1.0):
     return Symbol.__new__(
         cls, 'lits%s_%s' %
         (hashlib.sha1(np.array(data)).hexdigest(), step_size))
Exemple #13
0
 def __new__(cls, name, rank=None, dim=1, space="L2"):
     obj = Symbol.__new__(cls, name)
     obj.dim = dim
     obj.space = space
     obj.rank = rank
     return obj
Exemple #14
0
 def __new__(cls, name: str, kernel_one_d: Kern):
     obj = Symbol.__new__(cls, name)
     obj.kernel_one_d = kernel_one_d
     return obj
Exemple #15
0
 def __new__(cls, name, rank=None, dim=None):
     obj = Symbol.__new__(cls, name)
     obj.rank = rank
     return obj
Exemple #16
0
 def __new__(cls, name, parent, **kwargs):
     newobj = Symbol.__new__(cls, name)
     assert isinstance(parent, Dimension)
     newobj.parent = parent
     newobj.modulo = kwargs.get('modulo', 2)
     return newobj
Exemple #17
0
 def __new__(cls, name, *args, **assumptions):
     return Symbol.__new__(cls, name.upper(), real=True, **assumptions)
Exemple #18
0
 def __new__(cls, name):
     self = Symbol.__new__(cls, name)
     self.abbrev = name
     self.name = name
     return self
Exemple #19
0
 def __new__(cls, data, step_size=1.0):
     return Symbol.__new__(cls, "lits%s_%s" % (hashlib.sha1(np.array(data)).hexdigest(), step_size))
Exemple #20
0
 def __new__(cls, i):
     if not i in [1,2,3]:
         raise IndexError("Invalid Pauli index")
     obj = Symbol.__new__(cls, "sigma%d"%i, commutative=False)
     obj.i=i
     return obj
Exemple #21
0
 def __new__(cls, name, **kwargs):
     newobj = Symbol.__new__(cls, name)
     newobj.size = kwargs.get('size', None)
     return newobj
Exemple #22
0
 def __new__(self, *args):
     obj = Symbol.__new__(self, str(tuple([str(el) for el in args])))
     return obj
Exemple #23
0
 def __new__(cls, name, rank=None, dim=None):
     obj = Symbol.__new__(cls, name)
     obj.rank = rank
     return obj
Exemple #24
0
 def __new__(cls, name, rank=None, dim=1, space="L2"):
     obj = Symbol.__new__(cls, name)
     obj.dim = dim
     obj.space = space
     obj.rank = rank
     return obj
Exemple #25
0
 def __new__(cls, name, comment=None):
     return Symbol.__new__(cls, name)
Exemple #26
0
 def __new__(cls, name, *args):
     return Symbol.__new__(cls, name)
Exemple #27
0
 def __new__(cls, data, index='x', where=None):
     return Symbol.__new__(
         cls,
         'spatarr%s_%s' % (hashlib.sha1(np.array(data)).hexdigest(), index))
Exemple #28
0
 def __new__(cls, name, comment=None):
     return Symbol.__new__(cls, name)
Exemple #29
0
 def __new__(cls, name, **kwargs):
     newobj = Symbol.__new__(cls, name)
     newobj.size = kwargs.get('size', None)
     newobj.reverse = kwargs.get('reverse', False)
     newobj.spacing = kwargs.get('spacing', Symbol('h_%s' % name))
     return newobj
Exemple #30
0
 def __new__(cls, name, constant=None, fundamental=None, substitution=None, substitution_atoms=None, datatype=None, **assumptions) :
     from sympy import Symbol
     return Symbol.__new__(cls, name, **assumptions)
Exemple #31
0
 def __new__(cls, name, buffered, offset, **kwargs):
     newobj = Symbol.__new__(cls, name)
     assert isinstance(buffered, BufferedDimension)
     newobj.buffered = buffered
     newobj.offset = offset
     return newobj
Exemple #32
0
 def __new__(cls, name, *args, **assumptions):
     return Symbol.__new__(cls, name.upper(), real=True, **assumptions)
Exemple #33
0
 def __new__(cls, name):
     return Symbol.__new__(cls, name.upper(), nonnegative=True, real=True)
 def __new__(cls, i):
     if not i in [1, 2, 3]:
         raise IndexError("Invalid Pauli index")
     obj = Symbol.__new__(cls, "sigma%d" % i, commutative=False)
     obj.i = i
     return obj
Exemple #35
0
 def __new__(cls, base):
     obj = Symbol.__new__(cls, base.label.name)
     obj.base = base
     obj.indices = ()
     obj.function = base.function
     return obj