Hi, Just returned from being out of town for 4 days. I will try to get caught up on sympy things tomorrow.
Brian On Sun, Jun 19, 2011 at 10:42 PM, Aaron Meurer <[email protected]> wrote: > The way the quantum code is written, it's not very easy to disable > numpy globally. I could do it, but it would require copying the same > four lines checking the system version and emitting a warning in the > half dozen files that import numpy. > > So, to fix this right, I need advice from Brian and others who know > the quantum code. Where would be the best place to put some kind of > global parameter defining if numpy is supported for the quantum code > (similar to what the polys use for gmpy)? > > Aaron Meurer > > On Sun, Jun 19, 2011 at 8:38 PM, Aaron Meurer <[email protected]> wrote: >> OK, this is definitely a bug in numpy (or Python). I created a file >> numpyfloattest.py with the following contents: >> >> import numpy >> >> class A(object): >> def __float__(self): >> return 2.0 >> def __complex__(self): >> return 5.0j >> >> a = A() >> >> print numpy.matrix([[a]], dtype='complex') >> >> And ran: >> >> Aaron-Meurer:sympy aaronmeurer(0.7.0$%)$python2.5 numpyfloattest.py >> [[ 2.+0.j]] >> Aaron-Meurer:sympy aaronmeurer(0.7.0$%)$python2.7 numpyfloattest.py >> [[ 0.+5.j]] >> >> So for some reason, in Python 2.5, it runs complex(float()) on the >> data. Of course, this doesn't work very well if the numbers are >> complex, like sympy.I. >> >> I have created http://projects.scipy.org/numpy/ticket/1872 for this. >> In the meanwhile, I will just disable numpy in the quantum code in >> Python 2.5. >> >> Aaron Meurer >> >> On Sun, Jun 19, 2011 at 8:04 PM, Aaron Meurer <[email protected]> wrote: >>> I think I have a lead. In numpy 1.6, this instead gives >>> >>>>>> numpy.matrix([[0, I]], dtype='complex') >>> Traceback (most recent call last): >>> File "<stdin>", line 1, in <module> >>> File >>> "/Library/Frameworks/Python.framework/Versions/2.5/lib/python2.5/site-packages/numpy/matrixlib/defmatrix.py", >>> line 257, in __new__ >>> arr = N.array(data, dtype=dtype, copy=copy) >>> File "sympy/core/expr.py", line 129, in __float__ >>> raise ValueError("Symbolic value, can't compute") >>> ValueError: Symbolic value, can't compute >>> >>> in Python 2.5 (and it works in Python 2.6 and 2.7). So I guess the >>> bug is in SymPy somewhere, and numpy 1.5 was catching that ValueError >>> and re-throwing it as a TypeError. >>> >>> Aaron Meurer >>> >>> On Sun, Jun 19, 2011 at 7:39 PM, Aaron Meurer <[email protected]> wrote: >>>> On Sun, Jun 19, 2011 at 7:32 PM, Aaron Meurer <[email protected]> wrote: >>>>> I don't know much about numpy, so this one has me stumped. For some >>>>> reason numpy.matrix([[0, I]], dtype='complex') fails in Python 2.5 >>>>> (with the above error), but not in Python 2.6 or 2.7 (I is sympy.I). >>>>> >>>>> Can someone with numpy knowledge give any insight here? Otherwise, I >>>>> think the solution might have to be to disable numpy support in the >>>>> quantum code in Python 2.5. >>>>> >>>>> I haven't looked at why it kills the test runner yet. I'll look at that >>>>> now. >>>> >>>> Oh, this is rather obvious. It's because the exception is raised at >>>> import time. If it were raised when running an actual test, it would >>>> be caught by the test runner. This is probably OK behavior (anyway, >>>> it's not top priority to change it). >>>> >>>> Aaron Meurer >>>> >>>>> >>>>> By the way, a workaround might be to do np.matrix([map(complex, i) for >>>>> i in m.tolist()], dtype=complex), i.e., manually convert the elements >>>>> of the Matrix to complex, but this is rather hackish and I would >>>>> prefer to aviod it if possible. >>>>> >>>>> Aaron Meurer >>>>> >>>>> >>>>> On Sun, Jun 19, 2011 at 5:36 PM, Aaron Meurer <[email protected]> wrote: >>>>>> Thanks for reporting this. It seems you've uncovered two bugs (the >>>>>> second one is that the error killed the test runner). >>>>>> >>>>>> I'll see if I can figure out how to fix at least the numpy one for the >>>>>> release. Do you know how to fix it? If so, please send a pull >>>>>> request. >>>>>> >>>>>> Aaron Meurer >>>>>> >>>>>> On Sat, Jun 18, 2011 at 1:03 PM, Ted Horst <[email protected]> >>>>>> wrote: >>>>>>> I'm a little late to the party, but I just tested 0.7.0 tip and got this >>>>>>> error (stopped testing): >>>>>>> >>>>>>> This is with python 2.5.1, numpy 1.5.0, no scipy, no gmpy on OSX 10.5.8 >>>>>>> PPC >>>>>>> (big endian). >>>>>>> >>>>>>> I can get the error from just importing >>>>>>> sympy.physics.quantum.matrixcache. >>>>>>> It makes sense because we are passing sympy.I with dtype 'complex' to >>>>>>> numpy. >>>>>>> >>>>>>> Ted >>>>>>> >>>>>>> Traceback (most recent call last): >>>>>>> File "setup.py", line 269, in <module> >>>>>>> 'audit' : audit, >>>>>>> File >>>>>>> "/System/Library/Frameworks/Python.framework/Versions/2.5/lib/python2.5/distutils/core.py", >>>>>>> line 151, in setup >>>>>>> dist.run_commands() >>>>>>> File >>>>>>> "/System/Library/Frameworks/Python.framework/Versions/2.5/lib/python2.5/distutils/dist.py", >>>>>>> line 974, in run_commands >>>>>>> self.run_command(cmd) >>>>>>> File >>>>>>> "/System/Library/Frameworks/Python.framework/Versions/2.5/lib/python2.5/distutils/dist.py", >>>>>>> line 994, in run_command >>>>>>> cmd_obj.run() >>>>>>> File "setup.py", line 161, in run >>>>>>> if sympy.test(): >>>>>>> File "sympy/utilities/runtests.py", line 181, in test >>>>>>> return t.test(sort=sort) >>>>>>> File "sympy/utilities/runtests.py", line 487, in test >>>>>>> self.test_file(f) >>>>>>> File "sympy/utilities/runtests.py", line 499, in test_file >>>>>>> execfile(filename, gl) >>>>>>> File >>>>>>> "/users/ted/developer/opensource/sympy/sympy_github2/sympy/physics/quantum/tests/test_gate.py", >>>>>>> line 4, in <module> >>>>>>> from sympy.physics.quantum.gate import (XGate, YGate, ZGate, >>>>>>> random_circuit, >>>>>>> File "sympy/physics/quantum/gate.py", line 31, in <module> >>>>>>> from sympy.physics.quantum.matrixcache import matrix_cache >>>>>>> File "sympy/physics/quantum/matrixcache.py", line 92, in <module> >>>>>>> matrix_cache.cache_matrix('Y', Matrix([[0, -I], [I, 0]])) >>>>>>> File "sympy/physics/quantum/matrixcache.py", line 38, in cache_matrix >>>>>>> self._numpy_matrix(name, m) >>>>>>> File "sympy/physics/quantum/matrixcache.py", line 72, in _numpy_matrix >>>>>>> m = to_numpy(m, dtype=self.dtype) >>>>>>> File "sympy/physics/quantum/matrixutils.py", line 99, in to_numpy >>>>>>> return sympy_to_numpy(m, dtype=dtype) >>>>>>> File "sympy/physics/quantum/matrixutils.py", line 53, in sympy_to_numpy >>>>>>> return np.matrix(m.tolist(), dtype=dtype) >>>>>>> File "numpy/matrixlib/defmatrix.py", line 257, in __new__ >>>>>>> TypeError: a float is required >>>>>>> >>>>>>> -- >>>>>>> You received this message because you are subscribed to the Google >>>>>>> Groups >>>>>>> "sympy" group. >>>>>>> To post to this group, send email to [email protected]. >>>>>>> To unsubscribe from this group, send email to >>>>>>> [email protected]. >>>>>>> For more options, visit this group at >>>>>>> http://groups.google.com/group/sympy?hl=en. >>>>>>> >>>>>>> >>>>>> >>>>> >>>> >>> >> > -- Brian E. Granger Cal Poly State University, San Luis Obispo [email protected] and [email protected] -- You received this message because you are subscribed to the Google Groups "sympy" group. To post to this group, send email to [email protected]. To unsubscribe from this group, send email to [email protected]. For more options, visit this group at http://groups.google.com/group/sympy?hl=en.
