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.