Ondrej, On Wed, Nov 17, 2010 at 3:20 PM, Ondrej Certik <[email protected]> wrote:
> Hi Brian! > > On Wed, Nov 17, 2010 at 1:12 PM, Brian Granger <[email protected]> > wrote: > > Hi, > > The quantum stuff in sympy is coming along nicely. Addison and Matt > gaves > > talks at the CA-Nevada APS meeting at Caltech a few weeks ago and the > work > > was well received. We have also had some visitors in our department who > > work in quantum information and they have been interested in the physics > > aspects of sympy. > > I think sympy.physics has a huge potential, but we are already running > into > > an issue that I want to bring up. We are going to need Cython code quite > > soon. There are simply many algorithms that are too slow in pure Python > > (many of the algorithms scale exponentially with some parameter that we > want > > to be large). Roughly speaking, here are some options: > > 1) Allow Cython code in sympy, but put logic in setup.py to omit it if > there > > is no compiler or the deps are not there. For some of the algorithms > this > > would work great because we have slower numpy/scipy/pure python based > > versions that could be used if the fast version is not available. > > 2) Create separate mini-projects that just have the optimized Cython > > algorithms and put pure python code in sympy that can use it if it is > > installed. I am not very fond of this. > > 3) Completely remove sympy.physics and create a separate project with all > > the physics stuff that can use Cython anywhere. Again, I am not too fond > of > > this as the presence of the physics stuff benefits sympy in significant > ways > > such as enlarging the community and attracting new developers. > > My choice would be (1) (allow Cython code in Sympy, but make sure that > sympy > > still builds and installs w/o it). Thoughts? > > Definitely 1). We already use Cython in the sympy polys, and it's > optional. (I think it's also actually broken currently, but that will > be fixed.) > > Great! This is fantastic news and will help us a lot. > Simply use Cython, and do something like: > > try: > import _optimized_stuff > except ImportError: > raise Exception("You need to compile SymPy with Cython.") > > And the module will not be imported by default, so if you do: > > "import sympy" > > it will only import pure Python stuff, and if you do: > > from sympy.physics.hydrogen import solve_rk4_fast() > > it would either work and use Cython, or raise an exception. > > Yes, that should work fine for us. > Just implement it and let's get this code in sympy soon. Then we'll > keep refining it. We'll be using Cython at more places all round > SymPy, in this optional way. > > Sounds good. > > Another, orthogonal feature to consider is the pure Python mode of > Cython. Maybe the Python code can work in pure Python mode (but slow) > and work faster if compiled with Cython. One just has to either use > decorators and/or .pxd files + .py files. Last time I tried it worked > for simple things, but not for more complex stuff. In any case, this > should not be a big deal, we can always use the method I described > above. > > Most of the stuff we really need Cython for will be quite complex, but I will definitely have a look at the pure python mode. > > So the conclusion is, definitely use Cython! > > Great! Brian > Ondrej > > -- > 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] <sympy%[email protected]>. > For more options, visit this group at > http://groups.google.com/group/sympy?hl=en. > > -- Brian E. Granger, Ph.D. Assistant Professor of Physics Cal Poly State University, San Luis Obispo [email protected] [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.
