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 <crist...@umn.edu> 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/CAP7f1AjK72cVppMb1yHK9BckFg7fWkinTFnue4tpH3v7mu99Mw%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+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/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+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/CAJ2L7mf545RqPO0SD4aV7GEjnDnnzY4ahJ4yJyF1A4q4Ck4T3Q%40mail.gmail.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to