It should at least be in a separate file for the quantum code.  I
didn't consider to make one file for it for all of SymPy. I'm waiting
to see what Brian Granger thinks, since he knows the most about the
quantum module.

Aaron Meurer

On Mon, Jun 20, 2011 at 6:06 PM, Ted Horst <ted.ho...@earthlink.net> wrote:
> Thanks for investigating, Aaron.  Maybe numpy importing should be pulled out
> into its own module.  This would probably be necessary anyway if someone
> implements the "numpy array for sympy" idea that was talked about a while
> back.
>
> Ted
>
> On 2011-06-20, at 00:42, Aaron Meurer 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 <asmeu...@gmail.com> 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 <asmeu...@gmail.com> 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 <asmeu...@gmail.com>
>>>> wrote:
>>>>>
>>>>> On Sun, Jun 19, 2011 at 7:32 PM, Aaron Meurer <asmeu...@gmail.com>
>>>>> 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 <asmeu...@gmail.com>
>>>>>> 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 <ted.ho...@earthlink.net>
>>>>>>> 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 sympy@googlegroups.com.
>>>>>>>> To unsubscribe from this group, send email to
>>>>>>>> sympy+unsubscr...@googlegroups.com.
>>>>>>>> For more options, visit this group at
>>>>>>>> http://groups.google.com/group/sympy?hl=en.
>>>>>>>>
>>>>>>>>
>>>>>>>
>>>>>>
>>>>>
>>>>
>>>
>>
>> --
>> You received this message because you are subscribed to the Google Groups
>> "sympy" group.
>> To post to this group, send email to sympy@googlegroups.com.
>> To unsubscribe from this group, send email to
>> sympy+unsubscr...@googlegroups.com.
>> For more options, visit this group at
>> http://groups.google.com/group/sympy?hl=en.
>>
>
> --
> You received this message because you are subscribed to the Google Groups
> "sympy" group.
> To post to this group, send email to sympy@googlegroups.com.
> To unsubscribe from this group, send email to
> sympy+unsubscr...@googlegroups.com.
> For more options, visit this group at
> http://groups.google.com/group/sympy?hl=en.
>
>

-- 
You received this message because you are subscribed to the Google Groups 
"sympy" group.
To post to this group, send email to sympy@googlegroups.com.
To unsubscribe from this group, send email to 
sympy+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/sympy?hl=en.

Reply via email to