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

Reply via email to