I'd hazard that it's a limit in the internals of numpy for how they handle broadcasting, but I can't be certain on that.
However, we can handle this, you just need to frame your problem in a better way. You're trying to do optimization, so generally you'd frame your optimal condition as a vector. In SymPy you should do the same (using a MatrixSymbol). You also don't need ufuncify, because you're not doing any broadcasting. Instead, you can use `autowrap` to create a function. ufuncs can't broadcast arrays, so ufuncify won't work for functions that require a vector as an input for a single iteration. The resulting expression will be just as fast as a ufunc for a single iteration though, so no harm done. Here's your toy example, done as described: import sympyfrom sympy.utilities.autowrap import autowrapimport sys N = int(sys.argv[1]) x = sympy.MatrixSymbol('x', N, 1) summation = sum(x) values = list(range(N)) f = autowrap(summation, args=(x,))print f(values) This works regardless of how large N is. For your real problem, you can formulate your expression using symbols, and use subs to form them into a single vector input. Or you can work directly with the vector by using elements of it as variables. It's up to you how to formulate it. -Jim On Thursday, September 25, 2014 6:55:31 PM UTC-5, Jason Moore wrote: > > I'm not saying that SymPy isn't well suited for this task. I'm just saying > that we don't have an implementation for code generation for summations > that would help with your problem. You could certainly add one. > > I use SymPy for optimization problems myself and generate the symbolic > Jacobians and Hessians of the objective and constraint functions for > non-linear programming problems and it works great. So SymPy can likely do > what you want to do, but you may need to write a code printer for sympy.Sum > or something similar. > > > Jason > moorepants.info > +01 530-601-9791 > > On Thu, Sep 25, 2014 at 7:03 PM, David Shin <shin....@gmail.com > <javascript:>> wrote: > >> Thanks for the info, Jason. >> >> In my opinion, what I am trying to do is not particularly exotic. >> Consider for example the task of implementing logistic regression >> optimization via sympy and scipy. You have an n-by-k data matrix X of >> independent variables, a length-n output vector Y of dependent variables, >> and wish to approximate each Y[i] as a function of X[i], parameterized by a >> set of k+1 parameters, theta. This boils down to writing an objective loss >> function to minimize, which is a symbolic function of theta involving n >> summands that are individually expressions in terms Y[i], X[i], and theta. >> As the minimum does not have an analytic solution, you need to employ >> approximation algorithms, hence scipy.optimize. >> >> Of course, there are numerous packages available for vanilla logistic >> regression. However, if you want to customize it (for example by using an >> alternative loss function or regularization penalty function), then you >> kind of need to roll out your own implementation. >> >> From what you are saying, it sounds like sympy is not well-suited for >> this type of task. >> >> On Thursday, September 25, 2014 5:31:27 PM UTC-5, Jason Moore wrote: >>> >>> I'm not sure this is supported. Ideally you'd create a sympy.Sum object >>> representing your summation and then the code printers would print a loop >>> that would look something like: >>> >>> >>> sum = sympy.Sum(a, (a, 1, 5)) >>> >>> sympy.ccode(sum, b) >>> double b = 0; >>> for (i = 0; i < 5; i++;){ >>> b = b + a[i] >>> } >>> >>> I think Jim Crist is working on this functionality but it doesn't exist >>> now. >>> >>> >>> Jason >>> moorepants.info >>> +01 530-601-9791 >>> >>> On Thu, Sep 25, 2014 at 5:46 PM, David Shin <shin....@gmail.com> wrote: >>> >>>> The function is a sum of thousands of summands, where each summand is a >>>> small function of a few of the input parameters. These small summand >>>> functions are composed of basic operations like multiplication, addition, >>>> and exp(). >>>> >>>> On Thursday, September 25, 2014 4:21:32 PM UTC-5, Jason Moore wrote: >>>>> >>>>> I see. What does your function look like? Does it have summations or >>>>> things you want to iterate over? Or is it simply a scalar function? >>>>> >>>>> >>>>> Jason >>>>> moorepants.info >>>>> +01 530-601-9791 >>>>> >>>>> On Thu, Sep 25, 2014 at 5:09 PM, David Shin <shin....@gmail.com> >>>>> wrote: >>>>> >>>>>> Also, I'd like to pass in the gradient and hessian of my function >>>>>> into scipy.optimize.minimize() to help it along. I don't want to do the >>>>>> calculus by hand, so I'm using sympy to do it for me. >>>>>> >>>>>> >>>>>> On Thursday, September 25, 2014 4:08:02 PM UTC-5, David Shin wrote: >>>>>>> >>>>>>> I'm looking to minimize a complicated function of hundreds of >>>>>>> variables. I want to ufuncify() my function so that I can pass it into >>>>>>> scipy.optimize.minimize(). The summation func I gave is just a toy >>>>>>> example, >>>>>>> the actual function is much more complicated. >>>>>>> >>>>>>> Please let me know if I should be doing this some other way. >>>>>>> >>>>>>> On Thursday, September 25, 2014 4:00:04 PM UTC-5, Jason Moore wrote: >>>>>>>> >>>>>>>> First, why do you need sympy to do this? Would NumPy be sufficient? >>>>>>>> >>>>>>>> import numpy as np >>>>>>>> values = np.random.random(100) >>>>>>>> np.sum(values) >>>>>>>> >>>>>>>> >>>>>>>> Jason >>>>>>>> moorepants.info >>>>>>>> +01 530-601-9791 >>>>>>>> >>>>>>>> On Thu, Sep 25, 2014 at 4:52 PM, David Shin <shin....@gmail.com> >>>>>>>> wrote: >>>>>>>> >>>>>>>>> Would you mind showing me how to convert my demo.py to have >>>>>>>>> ufuncify generate code that has a single length-N array argument >>>>>>>>> instead of >>>>>>>>> N separate arguments? >>>>>>>>> >>>>>>>>> On Thursday, September 25, 2014 3:40:25 PM UTC-5, Jason Moore >>>>>>>>> wrote: >>>>>>>>>> >>>>>>>>>> It works for the backend='f2py' in master but fails for the >>>>>>>>>> default backend which is 'numpy'. I get a segmentation fault on the >>>>>>>>>> 'numpy' >>>>>>>>>> backend for values greater than 20 or so. >>>>>>>>>> >>>>>>>>>> This is an odd use of ufuncify, as summing would better be done >>>>>>>>>> in a loop with an array as input to the function. You can probably >>>>>>>>>> used the >>>>>>>>>> IndexBased class to set up a loop based sum. If you use the tempdir >>>>>>>>>> kwarg >>>>>>>>>> to ufuncify you can see the code it generates, and you'll basically >>>>>>>>>> get a >>>>>>>>>> Fortran function that has as many input args as your integer value >>>>>>>>>> which is >>>>>>>>>> not very efficient. >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> Jason >>>>>>>>>> moorepants.info >>>>>>>>>> +01 530-601-9791 >>>>>>>>>> >>>>>>>>>> On Thu, Sep 25, 2014 at 4:29 PM, Jason Moore <moore...@gmail.com> >>>>>>>>>> wrote: >>>>>>>>>> >>>>>>>>>>> David, >>>>>>>>>>> >>>>>>>>>>> This is because it wasn't wrapping lines correctly in the >>>>>>>>>>> generated Fortran code. If you use the development version of SymPy >>>>>>>>>>> it >>>>>>>>>>> should work. >>>>>>>>>>> >>>>>>>>>>> Here is the PR that fixed it: https://github.com/sympy/sympy >>>>>>>>>>> /pull/7968 >>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>> Jason >>>>>>>>>>> moorepants.info >>>>>>>>>>> +01 530-601-9791 >>>>>>>>>>> >>>>>>>>>>> On Thu, Sep 25, 2014 at 3:42 PM, David Shin <shin....@gmail.com> >>>>>>>>>>> wrote: >>>>>>>>>>> >>>>>>>>>>>> Hi, I recently began trying out sympy and am running into some >>>>>>>>>>>> difficulty. >>>>>>>>>>>> >>>>>>>>>>>> I wrote the following script, called demo.py: >>>>>>>>>>>> >>>>>>>>>>>> import sympyfrom sympy.utilities.autowrap import ufuncifyimport sys >>>>>>>>>>>> >>>>>>>>>>>> N = int(sys.argv[1]) >>>>>>>>>>>> theta = [] >>>>>>>>>>>> values = []for n in range(N): >>>>>>>>>>>> theta.append(sympy.symbols('x%s' % n)) >>>>>>>>>>>> values.append(n) >>>>>>>>>>>> >>>>>>>>>>>> summation = sum(theta) >>>>>>>>>>>> f = ufuncify(theta, summation)print f(*values)[0] >>>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>>>> Running it for small N, it works fine: >>>>>>>>>>>> >>>>>>>>>>>> $ python demo.py 21 >>>>>>>>>>>> 210.0 >>>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>>>> But it fails for larger N. Can anyone advise? Thanks in advance. >>>>>>>>>>>> >>>>>>>>>>>> $ python demo.py 22 >>>>>>>>>>>> Traceback (most recent call last): >>>>>>>>>>>> File "demo.py", line 13, in >>>>>>>>>>>> f = ufuncify(theta, summation) >>>>>>>>>>>> File >>>>>>>>>>>> "/opt/user/x86_64/Python-2.7.3/lib/python2.7/site-packages/sympy/utilities/autowrap.py", >>>>>>>>>>>> line 485, in ufuncify >>>>>>>>>>>> return autowrap(C.Equality(y[i], f(*args)), **kwargs) >>>>>>>>>>>> File >>>>>>>>>>>> "/opt/user/x86_64/Python-2.7.3/lib/python2.7/site-packages/sympy/utilities/autowrap.py", >>>>>>>>>>>> line 403, in autowrap >>>>>>>>>>>> return code_wrapper.wrap_code(routine, helpers=helps) >>>>>>>>>>>> File >>>>>>>>>>>> "/opt/user/x86_64/Python-2.7.3/lib/python2.7/site-packages/sympy/utilities/autowrap.py", >>>>>>>>>>>> line 139, in wrap_code >>>>>>>>>>>> self._process_files(routine) >>>>>>>>>>>> File >>>>>>>>>>>> "/opt/user/x86_64/Python-2.7.3/lib/python2.7/site-packages/sympy/utilities/autowrap.py", >>>>>>>>>>>> line 158, in _process_files >>>>>>>>>>>> " ".join(command), e.output)) >>>>>>>>>>>> sympy.utilities.autowrap.CodeWrapError: Error while executing >>>>>>>>>>>> command: f2py -m wrapper_module_0 -c wrapped_code_0.f90. Command >>>>>>>>>>>> output is: >>>>>>>>>>>> running build >>>>>>>>>>>> running config_cc >>>>>>>>>>>> unifing config_cc, config, build_clib, build_ext, build commands >>>>>>>>>>>> --compiler options >>>>>>>>>>>> running config_fc >>>>>>>>>>>> unifing config_fc, config, build_clib, build_ext, build commands >>>>>>>>>>>> --fcompiler options >>>>>>>>>>>> running build_src >>>>>>>>>>>> build_src >>>>>>>>>>>> building extension "wrapper_module_0" sources >>>>>>>>>>>> f2py options: [] >>>>>>>>>>>> f2py:> /tmp/tmpKbJQuO/src.linux-x86_64-2.7/wrapper_module_0module.c >>>>>>>>>>>> creating /tmp/tmpKbJQuO >>>>>>>>>>>> creating /tmp/tmpKbJQuO/src.linux-x86_64-2.7 >>>>>>>>>>>> Reading fortran codes... >>>>>>>>>>>> Reading file 'wrapped_code_0.f90' (format:free) >>>>>>>>>>>> Post-processing... >>>>>>>>>>>> Block: wrapper_module_0 >>>>>>>>>>>> Block: autofunc >>>>>>>>>>>> Post-processing (stage 2)... >>>>>>>>>>>> Building modules... >>>>>>>>>>>> Building module "wrapper_module_0"... >>>>>>>>>>>> Constructing wrapper function "autofunc"... >>>>>>>>>>>> y_15 = >>>>>>>>>>>> autofunc(x_16,x1,x10,x11,x12,x13,x14,x15,x16,x17,x18,x19,x2,x20,x21,x3,x4,x5,x6,x7,x8,x9,[m_17]) >>>>>>>>>>>> Wrote C/API module "wrapper_module_0" to file >>>>>>>>>>>> "/tmp/tmpKbJQuO/src.linux-x86_64-2.7/wrapper_module_0module.c" >>>>>>>>>>>> adding '/tmp/tmpKbJQuO/src.linux-x86_64-2.7/fortranobject.c' to >>>>>>>>>>>> sources. >>>>>>>>>>>> adding '/tmp/tmpKbJQuO/src.linux-x86_64-2.7' to include_dirs. >>>>>>>>>>>> copying >>>>>>>>>>>> /opt/user/x86_64/Python-2.7.3/lib/python2.7/site-packages/numpy/f2py/src/fortranobject.c >>>>>>>>>>>> -> /tmp/tmpKbJQuO/src.linux-x86_64-2.7 >>>>>>>>>>>> copying >>>>>>>>>>>> /opt/user/x86_64/Python-2.7.3/lib/python2.7/site-packages/numpy/f2py/src/fortranobject.h >>>>>>>>>>>> -> /tmp/tmpKbJQuO/src.linux-x86_64-2.7 >>>>>>>>>>>> build_src: building npy-pkg config files >>>>>>>>>>>> running build_ext >>>>>>>>>>>> customize UnixCCompiler >>>>>>>>>>>> customize UnixCCompiler using build_ext >>>>>>>>>>>> customize Gnu95FCompiler >>>>>>>>>>>> Found executable /opt/user/x86_64/gcc-4.7.2/bin/gfortran >>>>>>>>>>>> customize Gnu95FCompiler >>>>>>>>>>>> customize Gnu95FCompiler using build_ext >>>>>>>>>>>> building 'wrapper_module_0' extension >>>>>>>>>>>> compiling C sources >>>>>>>>>>>> C compiler: gcc -pthread -fno-strict-aliasing -g -O2 -DNDEBUG -g >>>>>>>>>>>> -fwrapv -O3 -Wall -Wstrict-prototypes -fPIC >>>>>>>>>>>> >>>>>>>>>>>> creating /tmp/tmpKbJQuO/tmp >>>>>>>>>>>> creating /tmp/tmpKbJQuO/tmp/tmpKbJQuO >>>>>>>>>>>> creating /tmp/tmpKbJQuO/tmp/tmpKbJQuO/src.linux-x86_64-2.7 >>>>>>>>>>>> compile options: '-I/tmp/tmpKbJQuO/src.linux-x86_64-2.7 >>>>>>>>>>>> -I/opt/user/x86_64/Python-2.7.3/lib/python2.7/site-packages/numpy/core/include >>>>>>>>>>>> -I/opt/user/x86_64/Python-2.7.3/include/python2.7 -c' >>>>>>>>>>>> gcc: /tmp/tmpKbJQuO/src.linux-x86_64-2.7/wrapper_module_0module.c >>>>>>>>>>>> In file included from >>>>>>>>>>>> /opt/user/x86_64/Python-2.7.3/lib/python2.7/site-packages/numpy/core/include/numpy/ndarraytypes.h:1728:0, >>>>>>>>>>>> from >>>>>>>>>>>> /opt/user/x86_64/Python-2.7.3/lib/python2.7/site-packages/numpy/core/include/numpy/ndarrayobject.h:17, >>>>>>>>>>>> from >>>>>>>>>>>> /opt/user/x86_64/Python-2.7.3/lib/python2.7/site-packages/numpy/core/include/numpy/arrayobject.h:15, >>>>>>>>>>>> from >>>>>>>>>>>> /tmp/tmpKbJQuO/src.linux-x86_64-2.7/fortranobject.h:13, >>>>>>>>>>>> from >>>>>>>>>>>> /tmp/tmpKbJQuO/src.linux-x86_64-2.7/wrapper_module_0module.c:18: >>>>>>>>>>>> /opt/user/x86_64/Python-2.7.3/lib/python2.7/site-packages/numpy/core/include/numpy/npy_deprecated_api.h:11:2: >>>>>>>>>>>> warning: #warning "Using deprecated NumPy API, disable it by >>>>>>>>>>>> #defining NPY_NO_DEPRECATED_API NPY_1_7_API_VERSION" [-Wcpp] >>>>>>>>>>>> /tmp/tmpKbJQuO/src.linux-x86_64-2.7/wrapper_module_0module.c:111:12: >>>>>>>>>>>> warning: âpy_sizeâefined but not used [-Wunused-function] >>>>>>>>>>>> gcc: /tmp/tmpKbJQuO/src.linux-x86_64-2.7/fortranobject.c >>>>>>>>>>>> In file included from >>>>>>>>>>>> /opt/user/x86_64/Python-2.7.3/lib/python2.7/site-packages/numpy/core/include/numpy/ndarraytypes.h:1728:0, >>>>>>>>>>>> from >>>>>>>>>>>> /opt/user/x86_64/Python-2.7.3/lib/python2.7/site-packages/numpy/core/include/numpy/ndarrayobject.h:17, >>>>>>>>>>>> from >>>>>>>>>>>> /opt/user/x86_64/Python-2.7.3/lib/python2.7/site-packages/numpy/core/include/numpy/arrayobject.h:15, >>>>>>>>>>>> from >>>>>>>>>>>> /tmp/tmpKbJQuO/src.linux-x86_64-2.7/fortranobject.h:13, >>>>>>>>>>>> from >>>>>>>>>>>> /tmp/tmpKbJQuO/src.linux-x86_64-2.7/fortranobject.c:2: >>>>>>>>>>>> /opt/user/x86_64/Python-2.7.3/lib/python2.7/site-packages/numpy/core/include/numpy/npy_deprecated_api.h:11:2: >>>>>>>>>>>> warning: #warning "Using deprecated NumPy API, disable it by >>>>>>>>>>>> #defining NPY_NO_DEPRECATED_API NPY_1_7_API_VERSION" [-Wcpp] >>>>>>>>>>>> compiling Fortran sources >>>>>>>>>>>> Fortran f77 compiler: /opt/user/x86_64/gcc-4.7.2/bin/gfortran >>>>>>>>>>>> -Wall -ffixed-form -fno-second-underscore -fPIC -O3 -funroll-loops >>>>>>>>>>>> Fortran f90 compiler: /opt/user/x86_64/gcc-4.7.2/bin/gfortran >>>>>>>>>>>> -Wall -fno-second-underscore -fPIC -O3 -funroll-loops >>>>>>>>>>>> Fortran fix compiler: /opt/user/x86_64/gcc-4.7.2/bin/gfortran >>>>>>>>>>>> -Wall -ffixed-form -fno-second-underscore -Wall >>>>>>>>>>>> -fno-second-underscore -fPIC -O3 -funroll-loops >>>>>>>>>>>> compile options: '-I/tmp/tmpKbJQuO/src.linux-x86_64-2.7 >>>>>>>>>>>> -I/opt/user/x86_64/Python-2.7.3/lib/python2.7/site-packages/numpy/core/include >>>>>>>>>>>> -I/opt/user/x86_64/Python-2.7.3/include/python2.7 -c' >>>>>>>>>>>> gfortran:f90: wrapped_code_0.f90 >>>>>>>>>>>> wrapped_code_0.f90:1.133: >>>>>>>>>>>> >>>>>>>>>>>> 4, x15, x16, x17, x18, x19, x2, x20, x21, x3, x4, x5, x6, x7, x8, >>>>>>>>>>>> x9, y_15 >>>>>>>>>>>> >>>>>>>>>>>> 1 >>>>>>>>>>>> Warning: Line truncated at (1) >>>>>>>>>>>> wrapped_code_0.f90:1.132: >>>>>>>>>>>> >>>>>>>>>>>> 14, x15, x16, x17, x18, x19, x2, x20, x21, x3, x4, x5, x6, x7, x8, >>>>>>>>>>>> x9, y_15 >>>>>>>>>>>> >>>>>>>>>>>> 1 >>>>>>>>>>>> Error: Unexpected junk in formal argument list at (1) >>>>>>>>>>>> wrapped_code_0.f90:33.3: >>>>>>>>>>>> >>>>>>>>>>>> end subroutine >>>>>>>>>>>> 1 >>>>>>>>>>>> Error: Expecting END PROGRAM statement at (1) >>>>>>>>>>>> Error: Unexpected end of file in 'wrapped_code_0.f90' >>>>>>>>>>>> wrapped_code_0.f90:1.133: >>>>>>>>>>>> >>>>>>>>>>>> 4, x15, x16, x17, x18, x19, x2, x20, x21, x3, x4, x5, x6, x7, x8, >>>>>>>>>>>> x9, y_15 >>>>>>>>>>>> >>>>>>>>>>>> 1 >>>>>>>>>>>> Warning: Line truncated at (1) >>>>>>>>>>>> wrapped_code_0.f90:1.132: >>>>>>>>>>>> >>>>>>>>>>>> 14, x15, x16, x17, x18, x19, x2, x20, x21, x3, x4, x5, x6, x7, x8, >>>>>>>>>>>> x9, y_15 >>>>>>>>>>>> >>>>>>>>>>>> 1 >>>>>>>>>>>> Error: Unexpected junk in formal argument list at (1) >>>>>>>>>>>> wrapped_code_0.f90:33.3: >>>>>>>>>>>> >>>>>>>>>>>> end subroutine >>>>>>>>>>>> 1 >>>>>>>>>>>> Error: Expecting END PROGRAM statement at (1) >>>>>>>>>>>> Error: Unexpected end of file in 'wrapped_code_0.f90' >>>>>>>>>>>> error: Command "/opt/user/x86_64/gcc-4.7.2/bin/gfortran -Wall >>>>>>>>>>>> -fno-second-underscore -fPIC -O3 -funroll-loops >>>>>>>>>>>> -I/tmp/tmpKbJQuO/src.linux-x86_64-2.7 >>>>>>>>>>>> -I/opt/user/x86_64/Python-2.7.3/lib/python2.7/site-packages/numpy/core/include >>>>>>>>>>>> -I/opt/user/x86_64/Python-2.7.3/include/python2.7 -c -c >>>>>>>>>>>> wrapped_code_0.f90 -o /tmp/tmpKbJQuO/wrapped_code_0.o" failed with >>>>>>>>>>>> exit status 1 >>>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>>>> -- >>>>>>>>>>>> You received this message because you are subscribed to the >>>>>>>>>>>> Google Groups "sympy" group. >>>>>>>>>>>> To unsubscribe from this group and stop receiving emails from >>>>>>>>>>>> it, send an email to sympy+un...@googlegroups.com. >>>>>>>>>>>> To post to this group, send email to sy...@googlegroups.com. >>>>>>>>>>>> Visit this group at http://groups.google.com/group/sympy. >>>>>>>>>>>> To view this discussion on the web visit >>>>>>>>>>>> https://groups.google.com/d/msgid/sympy/68af9759-5988-4e85-8 >>>>>>>>>>>> 1ec-7cc303022e46%40googlegroups.com >>>>>>>>>>>> <https://groups.google.com/d/msgid/sympy/68af9759-5988-4e85-81ec-7cc303022e46%40googlegroups.com?utm_medium=email&utm_source=footer> >>>>>>>>>>>> . >>>>>>>>>>>> For more options, visit https://groups.google.com/d/optout. >>>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>> -- >>>>>>>>> You received this message because you are subscribed to the Google >>>>>>>>> Groups "sympy" group. >>>>>>>>> To unsubscribe from this group and stop receiving emails from it, >>>>>>>>> send an email to sympy+un...@googlegroups.com. >>>>>>>>> To post to this group, send email to sy...@googlegroups.com. >>>>>>>>> Visit this group at http://groups.google.com/group/sympy. >>>>>>>>> To view this discussion on the web visit >>>>>>>>> https://groups.google.com/d/msgid/sympy/191c2f57-99c2-44eb-9 >>>>>>>>> a9c-959f77ef6811%40googlegroups.com >>>>>>>>> <https://groups.google.com/d/msgid/sympy/191c2f57-99c2-44eb-9a9c-959f77ef6811%40googlegroups.com?utm_medium=email&utm_source=footer> >>>>>>>>> . >>>>>>>>> >>>>>>>>> For more options, visit https://groups.google.com/d/optout. >>>>>>>>> >>>>>>>> >>>>>>>> -- >>>>>> You received this message because you are subscribed to the Google >>>>>> Groups "sympy" group. >>>>>> To unsubscribe from this group and stop receiving emails from it, >>>>>> send an email to sympy+un...@googlegroups.com. >>>>>> To post to this group, send email to sy...@googlegroups.com. >>>>>> Visit this group at http://groups.google.com/group/sympy. >>>>>> To view this discussion on the web visit https://groups.google.com/d/ >>>>>> msgid/sympy/6728544e-2ef8-45b5-8e42-01b0f57dbe1a%40googlegroups.com >>>>>> <https://groups.google.com/d/msgid/sympy/6728544e-2ef8-45b5-8e42-01b0f57dbe1a%40googlegroups.com?utm_medium=email&utm_source=footer> >>>>>> . >>>>>> >>>>>> For more options, visit https://groups.google.com/d/optout. >>>>>> >>>>> >>>>> -- >>>> You received this message because you are subscribed to the Google >>>> Groups "sympy" group. >>>> To unsubscribe from this group and stop receiving emails from it, send >>>> an email to sympy+un...@googlegroups.com. >>>> To post to this group, send email to sy...@googlegroups.com. >>>> Visit this group at http://groups.google.com/group/sympy. >>>> To view this discussion on the web visit https://groups.google.com/d/ >>>> msgid/sympy/54f695f9-70c6-4eed-9761-fd39b4a18b8b%40googlegroups.com >>>> <https://groups.google.com/d/msgid/sympy/54f695f9-70c6-4eed-9761-fd39b4a18b8b%40googlegroups.com?utm_medium=email&utm_source=footer> >>>> . >>>> >>>> For more options, visit https://groups.google.com/d/optout. >>>> >>> >>> -- >> You received this message because you are subscribed to the Google Groups >> "sympy" group. >> To unsubscribe from this group and stop receiving emails from it, send an >> email to sympy+un...@googlegroups.com <javascript:>. >> To post to this group, send email to sy...@googlegroups.com <javascript:> >> . >> Visit this group at http://groups.google.com/group/sympy. >> To view this discussion on the web visit >> https://groups.google.com/d/msgid/sympy/8e86a644-69c5-49dd-9a9c-450522899fa2%40googlegroups.com >> >> <https://groups.google.com/d/msgid/sympy/8e86a644-69c5-49dd-9a9c-450522899fa2%40googlegroups.com?utm_medium=email&utm_source=footer> >> . >> >> For more options, visit https://groups.google.com/d/optout. >> > > -- You received this message because you are subscribed to the Google Groups "sympy" group. To unsubscribe from this group and stop receiving emails from it, send an email to sympy+unsubscr...@googlegroups.com. To post to this group, send email to sympy@googlegroups.com. Visit this group at http://groups.google.com/group/sympy. To view this discussion on the web visit https://groups.google.com/d/msgid/sympy/8360870b-87f3-4a22-930b-24c3110f5f85%40googlegroups.com. For more options, visit https://groups.google.com/d/optout.