# [NumPy-Tickets] [NumPy] #1982: In-place arithmetic operations: wrong calculation order?

NumPy Trac numpy-tickets@scipy....
Fri Nov 18 12:23:38 CST 2011

```#1982: In-place arithmetic operations: wrong calculation order?
------------------------+---------------------------------------------------
Reporter:  ling        |       Owner:  somebody
Type:  defect      |      Status:  new
Priority:  normal      |   Milestone:  Unscheduled
Component:  numpy.core  |     Version:  1.6.0
Keywords:              |
------------------------+---------------------------------------------------
In-place operation like "subtract(b[:-1], b[1:], b[:-1])" used to work
fine in Numpy 1.4.1, but sometimes fails with Numpy 1.6.0.  See the
example below (the problematic output is Out[6]):

{{{
In [1]: import numpy; numpy.__version__
Out[1]: '1.6.0'

In [2]: a = numpy.arange(12).reshape((3, 4))

In [3]: b = a[::-1].copy(); numpy.subtract(b[:-1], b[1:])
Out[3]:
array([[4, 4, 4, 4],
[4, 4, 4, 4]])

In [4]: numpy.subtract(b[:-1], b[1:], b[:-1])
Out[4]:
array([[4, 4, 4, 4],
[4, 4, 4, 4]])

In [5]: b = a[::-1]; numpy.subtract(b[:-1], b[1:])
Out[5]:
array([[4, 4, 4, 4],
[4, 4, 4, 4]])

In [6]: numpy.subtract(b[:-1], b[1:], b[:-1])
Out[6]:
array([[4, 5, 6, 7],
[4, 4, 4, 4]])
}}}

Similar problem happens to other in-place operations (e.g., multiply,
divide).

--
Ticket URL: <http://projects.scipy.org/numpy/ticket/1982>
NumPy <http://projects.scipy.org/numpy>
My example project
```