@david: This is all in sympy master. The codegen stuff has had major work done to it in the last development cycle.
On Fri, Sep 26, 2014 at 10:10 AM, David Shin <shin.da...@gmail.com> wrote: > James, > > Your code doesn't seem to work as expected: > > $ python demo.py 10 > Traceback (most recent call last): > File "demo.py", line 11, in <module> > f = autowrap(summation, args=(x,)) > File > "/opt/jump/x86_64/Python-2.7.3/lib/python2.7/site-packages/sympy/utilities/autowrap.py", > line 387, in autowrap > routine = Routine('autofunc', expr, args) > File > "/opt/jump/x86_64/Python-2.7.3/lib/python2.7/site-packages/sympy/utilities/codegen.py", > line 229, in __init__ > new_args.append(InputArgument(symbol)) > File > "/opt/jump/x86_64/Python-2.7.3/lib/python2.7/site-packages/sympy/utilities/codegen.py", > line 350, in __init__ > Variable.__init__(self, name, datatype, dimensions, precision) > File > "/opt/jump/x86_64/Python-2.7.3/lib/python2.7/site-packages/sympy/utilities/codegen.py", > line 300, in __init__ > raise TypeError("The first argument must be a sympy symbol.") > TypeError: The first argument must be a sympy symbol. > > It appears to me that sum(x) has type int. > > > On Thursday, September 25, 2014 7:52:12 PM UTC-5, James Crist wrote: >> >> 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> 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-8 >>>>>>>> e42-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. >>>> 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/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 a topic in the > Google Groups "sympy" group. > To unsubscribe from this topic, visit > https://groups.google.com/d/topic/sympy/kgzcR8Qu7s4/unsubscribe. > To unsubscribe from this group and all its topics, 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/f5809096-38c1-44ef-993e-2f3d3a732948%40googlegroups.com > <https://groups.google.com/d/msgid/sympy/f5809096-38c1-44ef-993e-2f3d3a732948%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/CAJ2L7mcJBSKmrQJ1YJ6qqixEuTnNbTBS1S1BNepZPHB1cHpMPg%40mail.gmail.com. For more options, visit https://groups.google.com/d/optout.