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

PythonObject /= Thing -- augmented true division of Python objects

Description

Divide two Python objects, giving the "true" quotient, e.g., when dividing two integers, the result will be a float. Then assign the result to the first argument.

i1 : x = toPython 5

o1 = 5

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

o2 = 1.6666666666666667

o2 : PythonObject of class float
i3 : x

o3 = 1.6666666666666667

o3 : PythonObject of class float

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.4

o5 : PythonObject of class float
i6 : x

o6 = 2.4

o6 : PythonObject of class float

If the Python class of x defines an __itruediv__ method for in-place true division, 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 true division. In the example below, x is modified directly, and no new object is created.

i7 : installNumPyMethods();
i8 : x = toPython matrix(RR, {{1, 2}, {3, 4}})

o8 = [[1. 2.]
      [3. 4.]]

o8 : PythonObject of class numpy.ndarray
i9 : x /= matrix(RR, {{5, 6}, {7, 8}})

o9 = [[0.2        0.33333333]
      [0.42857143 0.5       ]]

o9 : PythonObject of class numpy.ndarray
i10 : x

o10 = [[0.2        0.33333333]
       [0.42857143 0.5       ]]

o10 : PythonObject of class numpy.ndarray

See also

Ways to use this method:


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