[Scipy-svn] r3046 - in trunk/Lib/linalg: . tests
scipy-svn@scip...
scipy-svn@scip...
Sat May 26 22:00:16 CDT 2007
Author: wnbell
Date: 2007-05-26 22:00:14 -0500 (Sat, 26 May 2007)
New Revision: 3046
Modified:
trunk/Lib/linalg/decomp.py
trunk/Lib/linalg/tests/test_decomp.py
Log:
updated _datanotshared() to use __array_interface__
instead of __array_data__
added unittest to original problem
resolves ticket #361
Modified: trunk/Lib/linalg/decomp.py
===================================================================
--- trunk/Lib/linalg/decomp.py 2007-05-27 02:04:41 UTC (rev 3045)
+++ trunk/Lib/linalg/decomp.py 2007-05-27 03:00:14 UTC (rev 3046)
@@ -43,13 +43,19 @@
count += 1
return v
+
+
def _datanotshared(a1,a):
if a1 is a:
- return 0
- if hasattr(a,"__array_data__"):
- return a1.__array_data__[0] != a.__array_data__[0]
- return 1
+ return False
+ else:
+ #try comparing data pointers
+ try:
+ return a1.__array_interface__['data'][0] != a.__array_interface__['data'][0]
+ except:
+ return True
+
def _geneig(a1,b,left,right,overwrite_a,overwrite_b):
b1 = asarray(b)
overwrite_b = overwrite_b or _datanotshared(b1,b)
Modified: trunk/Lib/linalg/tests/test_decomp.py
===================================================================
--- trunk/Lib/linalg/tests/test_decomp.py 2007-05-27 02:04:41 UTC (rev 3045)
+++ trunk/Lib/linalg/tests/test_decomp.py 2007-05-27 03:00:14 UTC (rev 3046)
@@ -736,5 +736,25 @@
h1 = dot(transp(conj(q)),dot(a,q))
assert_array_almost_equal(h1,h)
+
+
+class test_datanotshared(NumpyTestCase):
+
+ def check_datanotshared(self):
+ from linalg.decomp import _datanotshared
+
+ M = matrix([[0,1],[2,3]])
+ A = asarray(M)
+ L = M.tolist()
+ M2 = M.copy()
+
+ assert_equal(_datanotshared(M,M),False)
+ assert_equal(_datanotshared(M,A),False)
+
+ assert_equal(_datanotshared(M,L),True)
+ assert_equal(_datanotshared(M,M2),True)
+ assert_equal(_datanotshared(A,M2),True)
+
+
if __name__ == "__main__":
NumpyTest().run()
More information about the Scipy-svn
mailing list