Definitely, those are all good examples. I especially like the simplifying 
the Sum to it's final result one, may steal that if I give this talk again.

What about re-associating multiple matrix multiplications to reduce the 
> number of operations? Does this issue actually appear in real problems or 
> is it contrived?


It may exist in real life, not sure. The x = A^-1*B problem definitely 
exists in real life. That's how my professors right code in matlab to run 
estimation problems. We're working with small matrices, so it's "ok", but 
still, could be faster. 

I have a fork of just the codegen stuff right now that I'm trying out some 
new ideas with. I'd like to get a better framework setup for code 
tree-elements (`FunctionDef`, `Return`, `For`, etc...) before tackling the 
harder part of the optimizing transformations. Basically a half-rewrite of 
the codegeneration module to offer more flexibility and increase what we 
can do with it. Not super far yet, but what I have working so far is 
looking promising.

-Jim

On Thursday, September 18, 2014 6:42:55 PM UTC-5, Aaron Meurer wrote:
>
> What about re-associating multiple matrix multiplications to reduce the 
> number of operations? Does this issue actually appear in real problems or 
> is it contrived?
>
> In my view, the chief way to get actual algorithmic complexity reduction 
> is by mathematically simplifying an expression. It could be as simple as 
> reducing a large trig expression, or as complicated as computing the closed 
> form of an integral or summation rather than integrating summing 
> numerically (every freshman CS student knows that Sum(i, (i, 1, n)) == n*(n 
> + 1)/2 and that the lhs is O(n) to compute and the rhs is O(1)).
>
> True algorithmic complexity reduction isn't the only thing that's possible 
> though. You can simplify expressions in ways that are only "simpler" in 
> terms of computation (maybe one special function is faster to compute than 
> another). Another possibility that having the formulas symbolically is 
> being able to write them in ways that are numerically stable (SymPy doesn't 
> really do this now, but I'd love to see some research in this area). 
>
> Aaron Meurer
>
> On Thu, Sep 18, 2014 at 6:27 PM, James Crist <cris...@umn.edu 
> <javascript:>> wrote:
>
>> And I suppose for matrix expressions, if a user tried to generate code 
>> for x = A^-1*B, we could recognize that and replace it with a matrix solve 
>> routine, rather than explicitly calculating the inverse.
>>
>> On Thu, Sep 18, 2014 at 6:23 PM, James Crist <cris...@umn.edu 
>> <javascript:>> wrote:
>>
>>> Hmmm, it appears I picked a bad example there (correct me if I'm wrong, 
>>> I've never taken a CS class). Cholesky decomp is twice as fast as LU, which 
>>> isn't an order of magnitude difference. For large n, this can be important 
>>> though. A better example may be using `together` on factorable polynomials. 
>>> We could print out code for the expanded form of (x + a1)*(x + a2)*...*(x + 
>>> an), or we could factor it, and reduce the number of operations 
>>> significantly.
>>>
>>> On Thu, Sep 18, 2014 at 6:03 PM, James Crist <cris...@umn.edu 
>>> <javascript:>> wrote:
>>>
>>>> Oh hey, that's kinda neat.
>>>>
>>>> On one of the slides you mention that by generating equations 
>>>>> symbolically you can change change algorithmic complexity. Can you give 
>>>>> an 
>>>>> example of this?
>>>>
>>>>
>>>> That hasn't happened yet, but is planned. Mostly, it has to do with the 
>>>> idea that in SymPy we have knowledge about the properties of the 
>>>> computations. We know if a variable is always positive, or real, or (most 
>>>> importantly) the properties of a matrix (upper triangular, symmetric, 
>>>> positive definite, etc...). For selecting matrix solving routines, this is 
>>>> important. Based on Matthew's talk at SciPy a few years back. This is a 
>>>> long way off, but should be achievable. 
>>>>
>>>> In the immediate future we can start applying transformations to the 
>>>> expressions to improve computation speed (not an order of complexity 
>>>> change, but still speed improvements). Horner's method is already part of 
>>>> sympy, and could be applied to polynomials by default to reduce the number 
>>>> of flops needed to compute. We can also apply CSE at a much higher level 
>>>> than gcc will, which is necessary for some of the large expressions that 
>>>> are computed in mechanics.
>>>>
>>>> -Jim
>>>>
>>>> On Thursday, September 18, 2014 1:33:48 PM UTC-5, Aaron Meurer wrote:
>>>>>
>>>>> They are good slides. Good job Jim.
>>>>>
>>>>> On one of the slides you mention that by generating equations 
>>>>> symbolically you can change change algorithmic complexity. Can you give 
>>>>> an 
>>>>> example of this?
>>>>>
>>>>> Aaron Meurer
>>>>>
>>>>> On Thu, Sep 18, 2014 at 1:29 PM, Jason Moore <moore...@gmail.com> 
>>>>> wrote:
>>>>>
>>>>>> Jim's slides on SymPy code gen got into the Python weekly.
>>>>>>
>>>>>> Jason
>>>>>> moorepants.info
>>>>>> +01 530-601-9791
>>>>>>
>>>>>> ---------- Forwarded message ----------
>>>>>> From: Python Weekly <ra...@pythonweekly.com>
>>>>>> Date: Thu, Sep 18, 2014 at 11:06 AM
>>>>>> Subject: Python Weekly - Issue 157
>>>>>> To: moore...@gmail.com
>>>>>>
>>>>>>
>>>>>>       Email not displaying correctly? View it in your browser. 
>>>>>> <http://us2.campaign-archive1.com/?u=e2e180baf855ac797ef407fc7&id=ce99590cba&e=c9acab854b>
>>>>>>  
>>>>>>       Welcome to issue 157 of Python Weekly. Another packed issue 
>>>>>> this week. Enjoy it!
>>>>>>
>>>>>> *Articles, Tutorials and Talks*
>>>>>>
>>>>>> Python bad practice, a concrete case 
>>>>>> <http://pythonweekly.us2.list-manage1.com/track/click?u=e2e180baf855ac797ef407fc7&id=f16265daac&e=c9acab854b>
>>>>>> A lot of people read up on good Python practice, and there's plenty 
>>>>>> of information about that on the Internet. This post shows a concrete 
>>>>>> case 
>>>>>> of code that the author doesn't consider being the state of the art.
>>>>>>
>>>>>> Kernel tricks and nonlinear dimensionality reduction via RBF kernel 
>>>>>> PCA 
>>>>>> <http://pythonweekly.us2.list-manage.com/track/click?u=e2e180baf855ac797ef407fc7&id=2128e6807d&e=c9acab854b>
>>>>>> The focus of this article is to briefly introduce the idea of kernel 
>>>>>> methods and to implement a Gaussian radius basis function (RBF) kernel 
>>>>>> that 
>>>>>> is used to perform nonlinear dimensionality reduction via KBF kernel 
>>>>>> principal component analysis (kPCA).
>>>>>>
>>>>>> Bad Ideas in Python: The Worst Thing I've Ever Done 
>>>>>> <http://pythonweekly.us2.list-manage2.com/track/click?u=e2e180baf855ac797ef407fc7&id=bf9baee8d0&e=c9acab854b>
>>>>>>  
>>>>>> In this talk, James Powell shows us his experiences with the worst 
>>>>>> and "most evil" things he's encountered when coding in Python and gives 
>>>>>> demos on how to get around those errors to turn them into good ideas.
>>>>>>
>>>>>> Network Communications Clustering with Python and MongoDB 
>>>>>> <http://pythonweekly.us2.list-manage.com/track/click?u=e2e180baf855ac797ef407fc7&id=7329900f00&e=c9acab854b>
>>>>>> In this post we'll be clustering the behavior of users on a corporate 
>>>>>> network in order to identify malicious activity. The data will be stored 
>>>>>> in 
>>>>>> MongoDB which we'll access via the Monary and PyMongo packages. We'll be 
>>>>>> transforming data with NumPy and using scikit-learn for pre-processing 
>>>>>> and 
>>>>>> clustering.
>>>>>>
>>>>>> Building a text editor with PyQt: Part 3 
>>>>>> <http://pythonweekly.us2.list-manage1.com/track/click?u=e2e180baf855ac797ef407fc7&id=bc911dfa9d&e=c9acab854b>
>>>>>> In the third part of this series, we'll be adding some slick 
>>>>>> extensions to our text editor for Finding and replacing text, Inserting 
>>>>>> an 
>>>>>> image and Word and symbol count
>>>>>>
>>>>>> Cracking Online Banking CAPTCHA Login Using Python 
>>>>>> <http://pythonweekly.us2.list-manage.com/track/click?u=e2e180baf855ac797ef407fc7&id=39a3bc5563&e=c9acab854b>
>>>>>> This post discusses a real world example on how to crack a login page 
>>>>>> for one of the biggest leading banks in the Middle East!
>>>>>>
>>>>>> Postgresql HStore, JSON data-type and Arrays with Peewee ORM 
>>>>>> <http://pythonweekly.us2.list-manage.com/track/click?u=e2e180baf855ac797ef407fc7&id=c38d2adeb8&e=c9acab854b>
>>>>>> This post showcases the peewee support for HStore, JSON document 
>>>>>> store, and arrays.
>>>>>>
>>>>>> Generating Fast and Correct Code with SymPy 
>>>>>> <http://pythonweekly.us2.list-manage.com/track/click?u=e2e180baf855ac797ef407fc7&id=4fc5a0d65d&e=c9acab854b>
>>>>>> All about the why and how of code generation in SymPy. Discusses the 
>>>>>> current state of converting symbolic math into fast numeric code, and 
>>>>>> gives 
>>>>>> a brief overview of current and future improvements.
>>>>>>
>>>>>> Pickling Python collections with non-built-in type keys and cycles 
>>>>>> <http://pythonweekly.us2.list-manage.com/track/click?u=e2e180baf855ac797ef407fc7&id=d5ecf7e0e7&e=c9acab854b>
>>>>>> A presentation of various problems and an effective solution for 
>>>>>> pickling Python collections with non-built-in types as keys and cycles 
>>>>>> or 
>>>>>> self references. Applies to dictionaries, default dictionaries, ordered 
>>>>>> dictionaries, sets, and ordered sets, at all levels of the pickle and 
>>>>>> cPickle protocol, in Python 2 and 3. 
>>>>>>
>>>>>> Teaching an old dog new tricks -- or, how I learned to love Python's 
>>>>>> str.format, and gave up on % 
>>>>>> <http://pythonweekly.us2.list-manage.com/track/click?u=e2e180baf855ac797ef407fc7&id=d27ba5298b&e=c9acab854b>
>>>>>>
>>>>>> DjangoCon 2014 Videos 
>>>>>> <http://pythonweekly.us2.list-manage.com/track/click?u=e2e180baf855ac797ef407fc7&id=a9439d5cf7&e=c9acab854b>
>>>>>>
>>>>>> Using Python Templates with Jinja and Google App Engine 
>>>>>> <http://pythonweekly.us2.list-manage.com/track/click?u=e2e180baf855ac797ef407fc7&id=9fe3bb445b&e=c9acab854b>
>>>>>>
>>>>>> Voice Recognition with Pocketsphinx in Python 
>>>>>> <http://pythonweekly.us2.list-manage.com/track/click?u=e2e180baf855ac797ef407fc7&id=285fae2f11&e=c9acab854b>
>>>>>>
>>>>>> PyGotham 2014 Videos 
>>>>>> <http://pythonweekly.us2.list-manage1.com/track/click?u=e2e180baf855ac797ef407fc7&id=5cfe2ce95b&e=c9acab854b>
>>>>>>
>>>>>> Python + functional programming 
>>>>>> <http://pythonweekly.us2.list-manage.com/track/click?u=e2e180baf855ac797ef407fc7&id=5b0bfb96ff&e=c9acab854b>
>>>>>>
>>>>>> Introducing Blaze - Migrations 
>>>>>> <http://pythonweekly.us2.list-manage2.com/track/click?u=e2e180baf855ac797ef407fc7&id=388a0ad8b1&e=c9acab854b>
>>>>>>
>>>>>> Kiwi PyCon 2014 Videos 
>>>>>> <http://pythonweekly.us2.list-manage.com/track/click?u=e2e180baf855ac797ef407fc7&id=c5619c2762&e=c9acab854b>
>>>>>>
>>>>>> Hit the Ground Running with MongoDB and Python 
>>>>>> <http://pythonweekly.us2.list-manage1.com/track/click?u=e2e180baf855ac797ef407fc7&id=8695171a97&e=c9acab854b>
>>>>>>
>>>>>> How-To: Python Compare Two Images 
>>>>>> <http://pythonweekly.us2.list-manage.com/track/click?u=e2e180baf855ac797ef407fc7&id=4b2a04e6b4&e=c9acab854b>
>>>>>>
>>>>>>
>>>>>> *Books*
>>>>>>
>>>>>> High Performance Python: Practical Performant Programming for Humans 
>>>>>> <http://pythonweekly.us2.list-manage1.com/track/click?u=e2e180baf855ac797ef407fc7&id=5573f3229a&e=c9acab854b>
>>>>>> Your Python code may run correctly, but you need it to run faster. By 
>>>>>> exploring the fundamental theory behind design choices, this practical 
>>>>>> guide helps you gain a deeper understanding of Python's implementation. 
>>>>>> You'll learn how to locate performance bottlenecks and significantly 
>>>>>> speed 
>>>>>> up your code in high-data-volume programs.
>>>>>>
>>>>>>
>>>>>> *Interesting Projects, Tools and Libraries*
>>>>>>
>>>>>> pep8radius 
>>>>>> <http://pythonweekly.us2.list-manage1.com/track/click?u=e2e180baf855ac797ef407fc7&id=ed9b2ec5b0&e=c9acab854b>
>>>>>> Fixing the entire project of PEP8 infractions ("PEP8 storms") can 
>>>>>> lead to merge conflicts, add noise to merges / pull requests and break 
>>>>>> (git) blame. pep8radius solves this problem by fixing only those PEP8 
>>>>>> infractions incontained on the lines of the project which you've been 
>>>>>> working, leaving these sections "better than you found it" whilst 
>>>>>> keeping 
>>>>>> your commits focused on the areas of the codebase you were actually 
>>>>>> working 
>>>>>> on.
>>>>>>
>>>>>> Chronyk 
>>>>>> <http://pythonweekly.us2.list-manage1.com/track/click?u=e2e180baf855ac797ef407fc7&id=f1cc7b684b&e=c9acab854b>
>>>>>> A Python 3 library for parsing human-written times and dates.
>>>>>>
>>>>>> ObjectPath 
>>>>>> <http://pythonweekly.us2.list-manage2.com/track/click?u=e2e180baf855ac797ef407fc7&id=99775b2a99&e=c9acab854b>
>>>>>> ObjectPath is a query language similar to XPath or JSONPath, but much 
>>>>>> more powerful thanks to embedded arithmetic calculations, comparison 
>>>>>> mechanisms and built-in functions. This makes the language more like SQL 
>>>>>> in 
>>>>>> terms of expressiveness, but it works over JSON documents rather than 
>>>>>> relations
>>>>>>
>>>>>> Qtile 
>>>>>> <http://pythonweekly.us2.list-manage.com/track/click?u=e2e180baf855ac797ef407fc7&id=69df4e9d27&e=c9acab854b>
>>>>>> A full-featured, hackable tiling window manager written and 
>>>>>> configured in Python.
>>>>>>
>>>>>> python bond 
>>>>>> <http://pythonweekly.us2.list-manage.com/track/click?u=e2e180baf855ac797ef407fc7&id=e721bf72f3&e=c9acab854b>
>>>>>> The Python module bond supports transparent remote/recursive 
>>>>>> evaluation between Python and another interpreter through automatic call 
>>>>>> serialization. It lets you call functions in other languages as they 
>>>>>> were 
>>>>>> normal Python functions. It also allows other languages to call Python 
>>>>>> functions as if they were native.
>>>>>>
>>>>>> Krakatau 
>>>>>> <http://pythonweekly.us2.list-manage.com/track/click?u=e2e180baf855ac797ef407fc7&id=5931e4bdbe&e=c9acab854b>
>>>>>> Java decompiler, assembler, and disassembler writte in Python.
>>>>>>
>>>>>> xmldataset 
>>>>>> <http://pythonweekly.us2.list-manage.com/track/click?u=e2e180baf855ac797ef407fc7&id=2664f1b713&e=c9acab854b>
>>>>>> xmldataset is designed to make the process of gathering your desired 
>>>>>> data into a Python structure as simple as possible through its plaintext 
>>>>>> collection schema, deliminated just like Python!
>>>>>>
>>>>>> ADR4Movie 
>>>>>> <http://pythonweekly.us2.list-manage1.com/track/click?u=e2e180baf855ac797ef407fc7&id=54ef8efa5f&e=c9acab854b>
>>>>>> Generate an animated visualization of the asteroids in SDSS using 
>>>>>> matplotlib.
>>>>>>
>>>>>> syncthing-gui 
>>>>>> <http://pythonweekly.us2.list-manage.com/track/click?u=e2e180baf855ac797ef407fc7&id=9c6b95704b&e=c9acab854b>
>>>>>> GTK3 & python based GUI and notification area icon for Syncthing.
>>>>>>
>>>>>>
>>>>>> *Upcoming Events and Webinars*
>>>>>>
>>>>>> Django Messaging: Build Distributed, Run Concurrent - Cambridge, MA 
>>>>>> <http://pythonweekly.us2.list-manage.com/track/click?u=e2e180baf855ac797ef407fc7&id=faacd91c13&e=c9acab854b>
>>>>>> Understand the growing role of messaging in today's state of the art 
>>>>>> web applications, cloud computing infrastructures, and the Internet of 
>>>>>> Things (IoT). This talk will take you on a tour of the various messaging 
>>>>>> libraries and protocols that can be used with Django. Learn what ZeroMQ 
>>>>>> is, 
>>>>>> how to leverage AMQP via RabbitMQ, or how to start solving your 
>>>>>> concurrent 
>>>>>> problems quickly with Celery.
>>>>>>
>>>>>> Forum Contest: Create a rock-paper-scissors game in Python 
>>>>>> <http://pythonweekly.us2.list-manage1.com/track/click?u=e2e180baf855ac797ef407fc7&id=dc386ef72a&e=c9acab854b>
>>>>>> Create a game using Python that let's players play a game of 
>>>>>> rock-paper-scissors. The exact elements are up to you 
>>>>>> (rock-paper-scissors-lizard-spock anyone?) as are the play 
>>>>>> mechanics, but it should be runnable in the terminal using Python 3. 
>>>>>> Entries will be judged based on code and design.
>>>>>>
>>>>>> Intro to Python Workshop - San Diego, CA 
>>>>>> <http://pythonweekly.us2.list-manage.com/track/click?u=e2e180baf855ac797ef407fc7&id=316d0f95d3&e=c9acab854b>
>>>>>> This is the next Intro to Python workshop cohosted by San Diego 
>>>>>> PyLadies, San Diego Python, Inland Empire Pyladies, and Inland Empire 
>>>>>> Python Users Group.
>>>>>>
>>>>>> Silicon Valley Python Meetup September 2014 - Mountain View, CA 
>>>>>> <http://pythonweekly.us2.list-manage.com/track/click?u=e2e180baf855ac797ef407fc7&id=d378eff966&e=c9acab854b>
>>>>>> This talk will show how to use IPython and Plotly to make interactive 
>>>>>> 2D, 3D, and streaming plots. We'll also demo how to convert matplotlib, 
>>>>>> prettyplotlib, seaborn, and ggplot plots into web-based, shareable plots 
>>>>>> drawn with D3.js (a JavaScript visualization library).   
>>>>>>
>>>>>> *Share Python Weekly*  [image: Facebook] 
>>>>>> <http://www.facebook.com/share.php?u=http%3A%2F%2Fus2.campaign-archive1.com%2F%3Fu%3De2e180baf855ac797ef407fc7%26id%3Dce99590cba&t=Python%20Weekly%20-%20Issue%20%20157>
>>>>>>  [image: 
>>>>>> Twitter] 
>>>>>> <http://twitter.com/intent/tweet?text=Python%20Weekly%20-%20Issue%20%20157%20-%20http%3A%2F%2Feepurl.com%2F3xU7X>
>>>>>>  [image: 
>>>>>> Reddit] 
>>>>>> <http://reddit.com/submit?url=http%3A%2F%2Fus2.campaign-archive2.com%2F%3Fu%3De2e180baf855ac797ef407fc7%26id%3Dce99590cba&title=Python%20Weekly%20-%20Issue%20%20157>
>>>>>>  [image: 
>>>>>> StumbleUpon] 
>>>>>> <http://www.stumbleupon.com/submit?url=http%3A%2F%2Fus2.campaign-archive1.com%2F%3Fu%3De2e180baf855ac797ef407fc7%26id%3Dce99590cba&title=Python%20Weekly%20-%20Issue%20%20157>
>>>>>>  [image: 
>>>>>> DZone] 
>>>>>> <http://www.dzone.com/links/add.html?url=http%3A%2F%2Fus2.campaign-archive1.com%2F%3Fu%3De2e180baf855ac797ef407fc7%26id%3Dce99590cba&title=Python%20Weekly%20-%20Issue%20%20157>
>>>>>>  [image: 
>>>>>> LinkedIn] 
>>>>>> <http://www.linkedin.com/shareArticle?mini=true&url=http%3A%2F%2Fus2.campaign-archive2.com%2F%3Fu%3De2e180baf855ac797ef407fc7%26id%3Dce99590cba&title=Python%20Weekly%20-%20Issue%20%20157>
>>>>>>  [image: 
>>>>>> Digg] 
>>>>>> <http://digg.com/submit?phase=2&url=http%3A%2F%2Fus2.campaign-archive2.com%2F%3Fu%3De2e180baf855ac797ef407fc7%26id%3Dce99590cba&title=Python%20Weekly%20-%20Issue%20%20157>
>>>>>>  [image: 
>>>>>> Delicious] 
>>>>>> <http://del.icio.us/post?url=http%3A%2F%2Fus2.campaign-archive1.com%2F%3Fu%3De2e180baf855ac797ef407fc7%26id%3Dce99590cba&title=Python%20Weekly%20-%20Issue%20%20157>
>>>>>>  [image: 
>>>>>> Slashdot] 
>>>>>> <http://slashdot.org/bookmark.pl?title=Python%20Weekly%20-%20Issue%20%20157&url=http%3A%2F%2Fus2.campaign-archive2.com%2F%3Fu%3De2e180baf855ac797ef407fc7%26id%3Dce99590cba>
>>>>>>  
>>>>>>    
>>>>>> You are receiving our weekly newsletter because you signed up at 
>>>>>> http://www.PythonWeekly.com. 
>>>>>>
>>>>>> Unsubscribe 
>>>>>> <http://pythonweekly.us2.list-manage.com/unsubscribe?u=e2e180baf855ac797ef407fc7&id=9e26887fc5&e=c9acab854b&c=ce99590cba>
>>>>>>  
>>>>>> moore...@gmail.com from this list | Forward to a friend 
>>>>>> <http://us2.forward-to-friend.com/forward?u=e2e180baf855ac797ef407fc7&id=ce99590cba&e=c9acab854b>
>>>>>>  
>>>>>> | Update your profile 
>>>>>> <http://pythonweekly.us2.list-manage2.com/profile?u=e2e180baf855ac797ef407fc7&id=9e26887fc5&e=c9acab854b>
>>>>>>  
>>>>>> *Our mailing address is:* 
>>>>>> Python Weekly
>>>>>> Brooklyn
>>>>>> Brooklyn, NY 11209
>>>>>>
>>>>>> Add us to your address book 
>>>>>> <http://pythonweekly.us2.list-manage1.com/vcard?u=e2e180baf855ac797ef407fc7&id=9e26887fc5>
>>>>>>
>>>>>> *Copyright (C) 2014 Python Weekly All rights reserved.* 
>>>>>>       
>>>>>>  -- 
>>>>>> 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/CAP7f1AjK72cVppMb1yHK9BckFg7fW
>>>>>> kinTFnue4tpH3v7mu99Mw%40mail.gmail.com 
>>>>>> <https://groups.google.com/d/msgid/sympy/CAP7f1AjK72cVppMb1yHK9BckFg7fWkinTFnue4tpH3v7mu99Mw%40mail.gmail.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/CyiFlRMJr5k/unsubscribe.
>>>> To unsubscribe from this group and all its topics, 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/ca6ded35-e587-4954-ba48-7074b3439bae%40googlegroups.com
>>>>  
>>>> <https://groups.google.com/d/msgid/sympy/ca6ded35-e587-4954-ba48-7074b3439bae%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/CAJ2L7meaAP8XeW-MduU9ikYUq9uqrXYqbmfBUi-%3DTQf7QWLH_g%40mail.gmail.com
>>  
>> <https://groups.google.com/d/msgid/sympy/CAJ2L7meaAP8XeW-MduU9ikYUq9uqrXYqbmfBUi-%3DTQf7QWLH_g%40mail.gmail.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/b5407ca8-4d49-47b5-b57a-814fc90cf818%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to