假设a
和b
是不相交的一维complex
NumPy数组,我确实numpy.multiply(a, b, b)
.b
是否保证包含与我通过b[:] = numpy.multiply(a, b)
获得的相同的值?
实际上还没有能够产生不正确的结果,但我不知道我是否只是对我的特定编译或平台感到幸运,或者我是否真的可以依赖它,因此问题来了。
请注意,对于float
(即实数(,答案显然是肯定的,因为合理的实现不会使其失败,但是对于复数,交叉乘法运算很容易通过写入实部然后读取虚部来给出不正确的结果:
# say the real part is at [0] and the imaginary part is at [1] and c is the product of a & b
c[0] = a[0] * b[0] - a[1] * b[1]
c[1] = a[0] * b[1] + a[1] * b[0] # if c[0] overlaps a[0] or b[0] then this is wrong
是的。复杂值应该以原子方式处理。如果它不能像那样工作,那么这是一个我们将修复的错误。