Macaulay2 » Documentation
Packages » Python » PythonObject » PythonObject % PythonObject » PythonObject %= Thing
next | previous | forward | backward | up | index | toc

PythonObject %= Thing -- augmented modulo operator for Python objects

Description

Divide two Python objects, giving the remainder, and assign the result to the first argument.

i1 : x = toPython 5

o1 = 5

o1 : PythonObject of class int
i2 : x %= toPython 3

o2 = 2

o2 : PythonObject of class int
i3 : x

o3 = 2

o3 : PythonObject of class int

If the right-hand side is a Macaulay2 object, then it is first converted to a Python object before dividing.

i4 : x = toPython 12

o4 = 12

o4 : PythonObject of class int
i5 : x %= 5

o5 = 2

o5 : PythonObject of class int
i6 : x

o6 = 2

o6 : PythonObject of class int

If the Python class of x defines an __imod__ method for in-place modulo, then it will be called. Otherwise, x and y will be divided in the usual way, creating a new Python object that is assigned back to x.

For example, NumPy arrays support in-place modulo. In the example below, x is modified directly, and no new object is created.

i7 : installNumPyMethods();
i8 : x = toPython matrix {{7, 8}, {9, 10}}

o8 = [[ 7  8]
      [ 9 10]]

o8 : PythonObject of class numpy.ndarray
i9 : x %= matrix {{3, 4}, {5, 6}}

o9 = [[1 0]
      [4 4]]

o9 : PythonObject of class numpy.ndarray
i10 : x

o10 = [[1 0]
       [4 4]]

o10 : PythonObject of class numpy.ndarray

See also

Ways to use this method:


The source of this document is in Python/doc/arithmetic.m2:687:0.