@_scal_inplace def mod_inplace(a, b): """elementwise modulo (inplace on `a`)""" @_scal_inplace def pow_inplace(a, b): """elementwise power (inplace on `a`)""" @_scal_inplace def conj_inplace(a): """elementwise conjugate (inplace on `a`)""" pprint.assign(add_inplace, printing.OperatorPrinter('+=', -2, 'either')) pprint.assign(mul_inplace, printing.OperatorPrinter('*=', -1, 'either')) pprint.assign(sub_inplace, printing.OperatorPrinter('-=', -2, 'left')) pprint.assign(neg_inplace, printing.OperatorPrinter('-=', 0, 'either')) pprint.assign(true_div_inplace, printing.OperatorPrinter('/=', -1, 'left')) pprint.assign(int_div_inplace, printing.OperatorPrinter('//=', -1, 'left')) pprint.assign(pow_inplace, printing.OperatorPrinter('**=', 1, 'right')) def transpose_inplace(x, **kwargs): "Perform a transpose on a tensor without copying the underlying storage" dims = list(range(x.ndim - 1, -1, -1)) return elemwise.DimShuffle(x.broadcastable, dims, inplace=True)(x)
@scalar_elemwise def mod_inplace(a, b): """elementwise modulo (inplace on `a`)""" @scalar_elemwise def pow_inplace(a, b): """elementwise power (inplace on `a`)""" @scalar_elemwise def conj_inplace(a): """elementwise conjugate (inplace on `a`)""" pprint.assign(add_inplace, printing.OperatorPrinter("+=", -2, "either")) pprint.assign(mul_inplace, printing.OperatorPrinter("*=", -1, "either")) pprint.assign(sub_inplace, printing.OperatorPrinter("-=", -2, "left")) pprint.assign(neg_inplace, printing.OperatorPrinter("-=", 0, "either")) pprint.assign(true_div_inplace, printing.OperatorPrinter("/=", -1, "left")) pprint.assign(int_div_inplace, printing.OperatorPrinter("//=", -1, "left")) pprint.assign(pow_inplace, printing.OperatorPrinter("**=", 1, "right")) def transpose_inplace(x, **kwargs): "Perform a transpose on a tensor without copying the underlying storage" dims = list(range(x.ndim - 1, -1, -1)) return DimShuffle(x.broadcastable, dims, inplace=True)(x)