<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	xmlns:georss="http://www.georss.org/georss" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:media="http://search.yahoo.com/mrss/"
	>

<channel>
	<title>Neil Dickson's Blog</title>
	<atom:link href="http://ndickson.wordpress.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://ndickson.wordpress.com</link>
	<description>Inventor IDE, PwnOS, and most everything else I'm up to</description>
	<lastBuildDate>Sat, 31 Dec 2011 20:12:09 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.com/</generator>
<cloud domain='ndickson.wordpress.com' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<image>
		<url>http://s2.wp.com/i/buttonw-com.png</url>
		<title>Neil Dickson's Blog</title>
		<link>http://ndickson.wordpress.com</link>
	</image>
	<atom:link rel="search" type="application/opensearchdescription+xml" href="http://ndickson.wordpress.com/osd.xml" title="Neil Dickson&#039;s Blog" />
	<atom:link rel='hub' href='http://ndickson.wordpress.com/?pushpress=hub'/>
		<item>
		<title>Inventor IDE Alpha 6!</title>
		<link>http://ndickson.wordpress.com/2011/09/27/inventor-ide-alpha-6/</link>
		<comments>http://ndickson.wordpress.com/2011/09/27/inventor-ide-alpha-6/#comments</comments>
		<pubDate>Tue, 27 Sep 2011 07:55:36 +0000</pubDate>
		<dc:creator>Neil Dickson</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[PwnIDE]]></category>

		<guid isPermaLink="false">http://ndickson.wordpress.com/?p=464</guid>
		<description><![CDATA[After 2 years, 1 month, and 1 day, I&#8217;m finally back in the swing of things with a new release of Inventor IDE!  Version Alpha 6 is planned to be the last major alpha release.  I will probably make a few smaller updates as 6a, 6b, etc.  It now contains the preliminary performance analysis tool, [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=ndickson.wordpress.com&amp;blog=1158540&amp;post=464&amp;subd=ndickson&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>After 2 years, 1 month, and 1 day, I&#8217;m finally back in the swing of things with a new release of Inventor IDE!  Version Alpha 6 is planned to be the last major alpha release.  I will probably make a few smaller updates as 6a, 6b, etc.  It now contains the preliminary performance analysis tool, which I&#8217;ll explain in due time.  More mundane features added include Find/Replace/Find All References, and a bunch of obscure-but-problematic bugs fixed.</p>
<div id="attachment_323" class="wp-caption aligncenter" style="width: 507px"><a href="http://ndickson.files.wordpress.com/2010/05/rgbaperf1600.png"><img class="size-full wp-image-323" title="Performance Analysis Tool" src="http://ndickson.files.wordpress.com/2010/05/rgbaperf1600.png?w=497&#038;h=372" alt="Performance Analysis Tool" width="497" height="372" /></a><p class="wp-caption-text">Plot made by the performance analysis tool in Inventor IDE Alpha 6</p></div>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/ndickson.wordpress.com/464/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/ndickson.wordpress.com/464/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/ndickson.wordpress.com/464/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/ndickson.wordpress.com/464/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/ndickson.wordpress.com/464/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/ndickson.wordpress.com/464/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/ndickson.wordpress.com/464/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/ndickson.wordpress.com/464/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/ndickson.wordpress.com/464/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/ndickson.wordpress.com/464/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/ndickson.wordpress.com/464/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/ndickson.wordpress.com/464/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/ndickson.wordpress.com/464/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/ndickson.wordpress.com/464/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=ndickson.wordpress.com&amp;blog=1158540&amp;post=464&amp;subd=ndickson&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://ndickson.wordpress.com/2011/09/27/inventor-ide-alpha-6/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/accf49d59449b71b817ca3c4f2c739f0?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Neil Dickson</media:title>
		</media:content>

		<media:content url="http://ndickson.files.wordpress.com/2010/05/rgbaperf1600.png" medium="image">
			<media:title type="html">Performance Analysis Tool</media:title>
		</media:content>
	</item>
		<item>
		<title>Jacobi eigenvalue algorithm, Schur decomposition, and Wikipedia</title>
		<link>http://ndickson.wordpress.com/2011/07/13/jacobi-eigenvalue-algorithm-schur-decomposition-and-wikipedia/</link>
		<comments>http://ndickson.wordpress.com/2011/07/13/jacobi-eigenvalue-algorithm-schur-decomposition-and-wikipedia/#comments</comments>
		<pubDate>Wed, 13 Jul 2011 09:00:28 +0000</pubDate>
		<dc:creator>Neil Dickson</dc:creator>
				<category><![CDATA[Math]]></category>
		<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://ndickson.wordpress.com/?p=423</guid>
		<description><![CDATA[Me?  Writing a blog post?  Well, you see, it all started with this Wikipedia page on the &#8220;Jacobi method for complex Hermitian matrices&#8221;.  I wanted to apply the Jacobi eigenvalue algorithm to diagonalize complex matrices, since it had worked well for real symmetric matrices, but the page on it only covers real symmetric matrices, not [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=ndickson.wordpress.com&amp;blog=1158540&amp;post=423&amp;subd=ndickson&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Me?  Writing a blog post?  Well, you see, it all started with <a href="http://en.wikipedia.org/wiki/Jacobi_method_for_complex_Hermitian_matrices" target="_blank">this Wikipedia page on the &#8220;Jacobi method for complex Hermitian matrices&#8221;</a>.  I wanted to apply the <a href="http://en.wikipedia.org/wiki/Jacobi_eigenvalue_algorithm" target="_blank">Jacobi eigenvalue algorithm</a> to diagonalize complex matrices, since it had worked well for real symmetric matrices, but the page on it only covers real symmetric matrices, not the complex equivalent, Hermitian matrices.  I was glad to see there was the additional page supposedly explaining how to do something similar for complex Hermitian matrices, but alas, it&#8217;s explained in such complicated, ambiguous terms that it&#8217;s at best unreadable, and at worst wrong.  I implemented two different interpretations of the page&#8217;s content, and both failed on the simplest possible example&#8230;</p>
<p>&#8230;so I derived my own in a much simpler way, and figured out a more general algorithm.  Other people have undoubtedly found the exact same method, but papers I&#8217;d found on the topic didn&#8217;t seem to state their methods much clearer than the Wikipedia page.  The issue is that I derived it in a completely different way than what&#8217;s on Wikipedia.  It&#8217;s not a matter of &#8220;fixing a mistake&#8221; in the page; by Wikipedia&#8217;s rules, this counts as original research (despite that others have probably done the same), so it&#8217;s not allowed on Wikipedia.  The only other suggestion people had was a blog post to make sure that a correct version is online somewhere, so here it is.</p>
<p>In a nutshell, the Jacobi eigenvalue algorithm works by one-by-one choosing the largest off-diagonal element, and rotating the two vectors associated with that element such that the element becomes zero.  Do this enough times and all off-diagonal elements will be quite close to zero (if the matrix is Hermitian), leaving the eigenvalues.  The eigenvectors come from applying the rotations to the identity matrix.  The only thing necessary to do this is to know the eigenvectors <img src='http://s0.wp.com/latex.php?latex=V_%7B%5Crm+sub%7D&amp;bg=161410&amp;fg=999999&amp;s=0' alt='V_{&#92;rm sub}' title='V_{&#92;rm sub}' class='latex' /> that diagonalize a 2&#215;2 matrix, namely</p>
<p><img src='http://s0.wp.com/latex.php?latex=M_%7B%5Crm+sub%7D+%3D+%5Cleft%5B%5Cbegin%7Barray%7D%7Bcc%7D+M_%7Bii%7D+%26+M_%7Bij%7D+%5C%5C+M_%7Bji%7D+%26+M_%7Bjj%7D%5Cend%7Barray%7D%5Cright%5D&amp;bg=161410&amp;fg=999999&amp;s=0' alt='M_{&#92;rm sub} = &#92;left[&#92;begin{array}{cc} M_{ii} &amp; M_{ij} &#92;&#92; M_{ji} &amp; M_{jj}&#92;end{array}&#92;right]' title='M_{&#92;rm sub} = &#92;left[&#92;begin{array}{cc} M_{ii} &amp; M_{ij} &#92;&#92; M_{ji} &amp; M_{jj}&#92;end{array}&#92;right]' class='latex' /></p>
<p>where <img src='http://s0.wp.com/latex.php?latex=M&amp;bg=161410&amp;fg=999999&amp;s=0' alt='M' title='M' class='latex' /> is the matrix we&#8217;re trying to diagonalize, and <img src='http://s0.wp.com/latex.php?latex=M_%7Bij%7D&amp;bg=161410&amp;fg=999999&amp;s=0' alt='M_{ij}' title='M_{ij}' class='latex' /> is the element we&#8217;re trying to eliminate.  If <img src='http://s0.wp.com/latex.php?latex=M&amp;bg=161410&amp;fg=999999&amp;s=0' alt='M' title='M' class='latex' /> is Hermitian, <img src='http://s0.wp.com/latex.php?latex=M_%7Bii%7D+%2C+M_%7Bjj%7D&amp;bg=161410&amp;fg=999999&amp;s=0' alt='M_{ii} , M_{jj}' title='M_{ii} , M_{jj}' class='latex' /> are real, and <img src='http://s0.wp.com/latex.php?latex=M_%7Bji%7D%3DM_%7Bij%7D%5E%2A&amp;bg=161410&amp;fg=999999&amp;s=0' alt='M_{ji}=M_{ij}^*' title='M_{ji}=M_{ij}^*' class='latex' />.  However, I won&#8217;t assume that <img src='http://s0.wp.com/latex.php?latex=M&amp;bg=161410&amp;fg=999999&amp;s=0' alt='M' title='M' class='latex' /> is Hermitian, since even if it&#8217;s not, this same approach can still be used to get what&#8217;s known as the Schur decomposition, namely <img src='http://s0.wp.com/latex.php?latex=M%3DVUV%5E%2A&amp;bg=161410&amp;fg=999999&amp;s=0' alt='M=VUV^*' title='M=VUV^*' class='latex' />, where <img src='http://s0.wp.com/latex.php?latex=U&amp;bg=161410&amp;fg=999999&amp;s=0' alt='U' title='U' class='latex' /> is upper triangular and the eigenvalues of <img src='http://s0.wp.com/latex.php?latex=M&amp;bg=161410&amp;fg=999999&amp;s=0' alt='M' title='M' class='latex' /> are on the diagonal of <img src='http://s0.wp.com/latex.php?latex=U&amp;bg=161410&amp;fg=999999&amp;s=0' alt='U' title='U' class='latex' />.  If <img src='http://s0.wp.com/latex.php?latex=M&amp;bg=161410&amp;fg=999999&amp;s=0' alt='M' title='M' class='latex' /> <em>is</em> Hermitian, the Schur decomposition is the same as the eigendecomposition, so <img src='http://s0.wp.com/latex.php?latex=M+%3D+VDV%5E%2A&amp;bg=161410&amp;fg=999999&amp;s=0' alt='M = VDV^*' title='M = VDV^*' class='latex' />.  In the non-Hermitian case, it doesn&#8217;t give the eigenvectors, but those can be more easily computed afterward.  I&#8217;ll split this into two cases.</p>
<h2><span style="text-decoration:underline;">Case 1: <img src='http://s0.wp.com/latex.php?latex=%7CM_%7Bij%7D%7C%3C10%5E%7B14%7D%7CM_%7Bii%7D-M_%7Bjj%7D%7C&amp;bg=161410&amp;fg=999999&amp;s=0' alt='|M_{ij}|&lt;10^{14}|M_{ii}-M_{jj}|' title='|M_{ij}|&lt;10^{14}|M_{ii}-M_{jj}|' class='latex' /></span></h2>
<p>This case is where you don&#8217;t have two diagonal elements that are almost identical compared to the off-diagonal element.  If you did, dividing by them could cause chaos, madness, and megalomania&#8230; or just invalid results.  We start by subtracting <img src='http://s0.wp.com/latex.php?latex=%28%28M_%7Bii%7D%2BM_%7Bjj%7D%29%2F2%29+I&amp;bg=161410&amp;fg=999999&amp;s=0' alt='((M_{ii}+M_{jj})/2) I' title='((M_{ii}+M_{jj})/2) I' class='latex' /> from our 2&#215;2 matrix, since we&#8217;re only interested in its (pseudo-)eigenvectors <img src='http://s0.wp.com/latex.php?latex=V_%7B%5Crm+sub%7D&amp;bg=161410&amp;fg=999999&amp;s=0' alt='V_{&#92;rm sub}' title='V_{&#92;rm sub}' class='latex' />, and multiples of <img src='http://s0.wp.com/latex.php?latex=I&amp;bg=161410&amp;fg=999999&amp;s=0' alt='I' title='I' class='latex' /> can be diagonalized using the same eigenvectors.  That basically means that adding/subtracting multiples of <img src='http://s0.wp.com/latex.php?latex=I&amp;bg=161410&amp;fg=999999&amp;s=0' alt='I' title='I' class='latex' /> won&#8217;t change <img src='http://s0.wp.com/latex.php?latex=V_%7B%5Crm+sub%7D&amp;bg=161410&amp;fg=999999&amp;s=0' alt='V_{&#92;rm sub}' title='V_{&#92;rm sub}' class='latex' />.  Then, we  divide the 2&#215;2 matrix by <img src='http://s0.wp.com/latex.php?latex=%28M_%7Bii%7D-M_%7Bjj%7D%29%2F2&amp;bg=161410&amp;fg=999999&amp;s=0' alt='(M_{ii}-M_{jj})/2' title='(M_{ii}-M_{jj})/2' class='latex' />, which also doesn&#8217;t change the (pseudo-)eigenvectors.  This gives us</p>
<p><img src='http://s0.wp.com/latex.php?latex=%5Cleft%5B%5Cbegin%7Barray%7D%7Bcc%7D+1+%26+%5Cfrac%7B2M_%7Bij%7D%7D%7BM_%7Bii%7D-M_%7Bjj%7D%7D+%5C%5C+%5Cfrac%7B2M_%7Bji%7D%7D%7BM_%7Bii%7D-M_%7Bjj%7D%7D+%26+-1%5Cend%7Barray%7D%5Cright%5D&amp;bg=161410&amp;fg=999999&amp;s=0' alt='&#92;left[&#92;begin{array}{cc} 1 &amp; &#92;frac{2M_{ij}}{M_{ii}-M_{jj}} &#92;&#92; &#92;frac{2M_{ji}}{M_{ii}-M_{jj}} &amp; -1&#92;end{array}&#92;right]' title='&#92;left[&#92;begin{array}{cc} 1 &amp; &#92;frac{2M_{ij}}{M_{ii}-M_{jj}} &#92;&#92; &#92;frac{2M_{ji}}{M_{ii}-M_{jj}} &amp; -1&#92;end{array}&#92;right]' class='latex' /></p>
<p>For simplicity, we&#8217;ll just relabel this as</p>
<p><img src='http://s0.wp.com/latex.php?latex=%5Cleft%5B%5Cbegin%7Barray%7D%7Bcc%7D+1+%26+b+%5C%5C+a+%26+-1%5Cend%7Barray%7D%5Cright%5D&amp;bg=161410&amp;fg=999999&amp;s=0' alt='&#92;left[&#92;begin{array}{cc} 1 &amp; b &#92;&#92; a &amp; -1&#92;end{array}&#92;right]' title='&#92;left[&#92;begin{array}{cc} 1 &amp; b &#92;&#92; a &amp; -1&#92;end{array}&#92;right]' class='latex' /></p>
<p>Now, if we want to make <img src='http://s0.wp.com/latex.php?latex=a%3D0&amp;bg=161410&amp;fg=999999&amp;s=0' alt='a=0' title='a=0' class='latex' /> by multiplying by a unitary matrix <img src='http://s0.wp.com/latex.php?latex=V_%7B%5Crm+sub%7D&amp;bg=161410&amp;fg=999999&amp;s=0' alt='V_{&#92;rm sub}' title='V_{&#92;rm sub}' class='latex' /> on the right and its conjugate transpose <img src='http://s0.wp.com/latex.php?latex=V_%7B%5Crm+sub%7D%5E%2A&amp;bg=161410&amp;fg=999999&amp;s=0' alt='V_{&#92;rm sub}^*' title='V_{&#92;rm sub}^*' class='latex' /> on the right, a bit of trial and error can give you that</p>
<p><img src='http://s0.wp.com/latex.php?latex=V_%7B%5Crm+sub%7D+%3D+L%5E%7B-1%7D%5Cleft%5B%5Cbegin%7Barray%7D%7Bcc%7D+1%2B%5Csqrt%7B1%2Bab%7D+%26+-a%5E%2A+%5C%5C+a+%26+1%2B%5Csqrt%7B1%2Bab%7D%5E%2A%5Cend%7Barray%7D%5Cright%5D+%5C%5C+L%3D%5Csqrt%7B%7Ca%7C%5E2+%2B+%7C1%2B%5Csqrt%7B1%2Bab%7D%7C%5E2%7D&amp;bg=161410&amp;fg=999999&amp;s=0' alt='V_{&#92;rm sub} = L^{-1}&#92;left[&#92;begin{array}{cc} 1+&#92;sqrt{1+ab} &amp; -a^* &#92;&#92; a &amp; 1+&#92;sqrt{1+ab}^*&#92;end{array}&#92;right] &#92;&#92; L=&#92;sqrt{|a|^2 + |1+&#92;sqrt{1+ab}|^2}' title='V_{&#92;rm sub} = L^{-1}&#92;left[&#92;begin{array}{cc} 1+&#92;sqrt{1+ab} &amp; -a^* &#92;&#92; a &amp; 1+&#92;sqrt{1+ab}^*&#92;end{array}&#92;right] &#92;&#92; L=&#92;sqrt{|a|^2 + |1+&#92;sqrt{1+ab}|^2}' class='latex' /></p>
<p>is a solution to that problem.  Note that the square roots are square roots of complex numbers, not necessarily real numbers.  You can verify that this works in the original case by multiplying out <img src='http://s0.wp.com/latex.php?latex=V_%7B%5Crm+sub%7D%5E%2AM_%7B%5Crm+sub%7DV_%7B%5Crm+sub%7D&amp;bg=161410&amp;fg=999999&amp;s=0' alt='V_{&#92;rm sub}^*M_{&#92;rm sub}V_{&#92;rm sub}' title='V_{&#92;rm sub}^*M_{&#92;rm sub}V_{&#92;rm sub}' class='latex' /> and confirming that the lower off-diagonal element is zero.  If <img src='http://s0.wp.com/latex.php?latex=M_%7B%5Crm+sub%7D&amp;bg=161410&amp;fg=999999&amp;s=0' alt='M_{&#92;rm sub}' title='M_{&#92;rm sub}' class='latex' /> is Hermitian, both off-diagonal elements should be zero.  Case 1 complete.</p>
<h2><span style="text-decoration:underline;">Case 2: <img src='http://s0.wp.com/latex.php?latex=%7CM_%7Bij%7D%7C%5Cge+10%5E%7B14%7D%7CM_%7Bii%7D-M_%7Bjj%7D%7C&amp;bg=161410&amp;fg=999999&amp;s=0' alt='|M_{ij}|&#92;ge 10^{14}|M_{ii}-M_{jj}|' title='|M_{ij}|&#92;ge 10^{14}|M_{ii}-M_{jj}|' class='latex' /></span></h2>
<p>This case is where you have two diagonal elements that are almost identical compared to the off-diagonal element.  Simple solution: pretend that they are exactly zero.  You now have</p>
<p><img src='http://s0.wp.com/latex.php?latex=%5Cleft%5B%5Cbegin%7Barray%7D%7Bcc%7D+0+%26+b+%5C%5C+a+%26+0%5Cend%7Barray%7D%5Cright%5D&amp;bg=161410&amp;fg=999999&amp;s=0' alt='&#92;left[&#92;begin{array}{cc} 0 &amp; b &#92;&#92; a &amp; 0&#92;end{array}&#92;right]' title='&#92;left[&#92;begin{array}{cc} 0 &amp; b &#92;&#92; a &amp; 0&#92;end{array}&#92;right]' class='latex' /></p>
<p>The zeros make things much simpler, as we can now find</p>
<p><img src='http://s0.wp.com/latex.php?latex=V%3DL%5E%7B-1%7D+%5Cleft%5B+%5Cbegin%7Barray%7D%7Bcc%7D+%5Csqrt%7Bb%7D+%26+-%5Csqrt%7Ba%7D%5E%2A+%5C%5C+%5Csqrt%7Ba%7D+%26+%5Csqrt%7Bb%7D%5E%2A+%5Cend%7Barray%7D+%5Cright%5D+%5C%5C+L%3D%5Csqrt%7B%7Ca%7C%2B%7Cb%7C%7D&amp;bg=161410&amp;fg=999999&amp;s=0' alt='V=L^{-1} &#92;left[ &#92;begin{array}{cc} &#92;sqrt{b} &amp; -&#92;sqrt{a}^* &#92;&#92; &#92;sqrt{a} &amp; &#92;sqrt{b}^* &#92;end{array} &#92;right] &#92;&#92; L=&#92;sqrt{|a|+|b|}' title='V=L^{-1} &#92;left[ &#92;begin{array}{cc} &#92;sqrt{b} &amp; -&#92;sqrt{a}^* &#92;&#92; &#92;sqrt{a} &amp; &#92;sqrt{b}^* &#92;end{array} &#92;right] &#92;&#92; L=&#92;sqrt{|a|+|b|}' class='latex' /></p>
<p>This time, since we&#8217;ve assumed that the diagonal elements are exactly the same, it probably won&#8217;t make the off-diagonal element exactly zero, but it&#8217;ll probably be negligibly small, and if it&#8217;s ever the largest at some later point, it&#8217;ll just get picked again to be eliminated, only probably without the diagonal elements being so close the 2nd time around.</p>
<p>Again, you don&#8217;t have to take my word for it.  You can easily verify this solution by just multiplying it out.</p>
<h2>How did you get these?</h2>
<p>If you&#8217;re wondering how I figured these out (after a weekend of trial and error of different methods), I knew that if the off-diagonal element was non-zero (which it must be, else there&#8217;s nothing to do), there is some non-zero component of the second element in each vector of <img src='http://s0.wp.com/latex.php?latex=V&amp;bg=161410&amp;fg=999999&amp;s=0' alt='V' title='V' class='latex' />.  I temporarily ignored the restriction of having unit vectors and set both of those components to 1, but didn&#8217;t ignore the restriction of having the two vectors being complex orthogonal (i.e. <img src='http://s0.wp.com/latex.php?latex=v_1%5E%2Av_2+%3D+0&amp;bg=161410&amp;fg=999999&amp;s=0' alt='v_1^*v_2 = 0' title='v_1^*v_2 = 0' class='latex' />), giving me</p>
<p><img src='http://s0.wp.com/latex.php?latex=%5Cleft%5B%5Cbegin%7Barray%7D%7Bcc%7D+x%5E%2A+%26+1+%5C%5C+-x%5E%7B-1%7D+%26+1%5Cend%7Barray%7D%5Cright%5D%5Cleft%5B%5Cbegin%7Barray%7D%7Bcc%7D+1+%26+b+%5C%5C+a+%26+-1%5Cend%7Barray%7D%5Cright%5D%5Cleft%5B%5Cbegin%7Barray%7D%7Bcc%7D+x+%26+-x%5E%7B-1%2A%7D+%5C%5C+1+%26+1%5Cend%7Barray%7D%5Cright%5D%3D%5Cleft%5B%5Cbegin%7Barray%7D%7Bcc%7D+...+%26+...+%5C%5C+ax-2-bx%5E%7B-1%7D+%26+...%5Cend%7Barray%7D%5Cright%5D&amp;bg=161410&amp;fg=999999&amp;s=0' alt='&#92;left[&#92;begin{array}{cc} x^* &amp; 1 &#92;&#92; -x^{-1} &amp; 1&#92;end{array}&#92;right]&#92;left[&#92;begin{array}{cc} 1 &amp; b &#92;&#92; a &amp; -1&#92;end{array}&#92;right]&#92;left[&#92;begin{array}{cc} x &amp; -x^{-1*} &#92;&#92; 1 &amp; 1&#92;end{array}&#92;right]=&#92;left[&#92;begin{array}{cc} ... &amp; ... &#92;&#92; ax-2-bx^{-1} &amp; ...&#92;end{array}&#92;right]' title='&#92;left[&#92;begin{array}{cc} x^* &amp; 1 &#92;&#92; -x^{-1} &amp; 1&#92;end{array}&#92;right]&#92;left[&#92;begin{array}{cc} 1 &amp; b &#92;&#92; a &amp; -1&#92;end{array}&#92;right]&#92;left[&#92;begin{array}{cc} x &amp; -x^{-1*} &#92;&#92; 1 &amp; 1&#92;end{array}&#92;right]=&#92;left[&#92;begin{array}{cc} ... &amp; ... &#92;&#92; ax-2-bx^{-1} &amp; ...&#92;end{array}&#92;right]' class='latex' /></p>
<p>I know I want that off-diagonal element zero, so</p>
<p><img src='http://s0.wp.com/latex.php?latex=ax-2-bx%5E%7B-1%7D%3D0+%5C%5C+ax%5E2-2x-b%3D0+%5C%5C+x+%3D+%5Cfrac%7B1%5Cpm%5Csqrt%7B1%2Bab%7D%7D%7Ba%7D&amp;bg=161410&amp;fg=999999&amp;s=0' alt='ax-2-bx^{-1}=0 &#92;&#92; ax^2-2x-b=0 &#92;&#92; x = &#92;frac{1&#92;pm&#92;sqrt{1+ab}}{a}' title='ax-2-bx^{-1}=0 &#92;&#92; ax^2-2x-b=0 &#92;&#92; x = &#92;frac{1&#92;pm&#92;sqrt{1+ab}}{a}' class='latex' /></p>
<p>Since the scales of the 2 vectors are arbitrary, including the relative scales, I scaled one by <img src='http://s0.wp.com/latex.php?latex=a&amp;bg=161410&amp;fg=999999&amp;s=0' alt='a' title='a' class='latex' />, and the other by <img src='http://s0.wp.com/latex.php?latex=1%5Cpm%5Csqrt%7B1%2Bab%7D&amp;bg=161410&amp;fg=999999&amp;s=0' alt='1&#92;pm&#92;sqrt{1+ab}' title='1&#92;pm&#92;sqrt{1+ab}' class='latex' />.  Then I just normalize them both (they happened to be the same length, <img src='http://s0.wp.com/latex.php?latex=L&amp;bg=161410&amp;fg=999999&amp;s=0' alt='L' title='L' class='latex' />), and that&#8217;s the solution above.  I did the same for case 2, only it was even simpler.  Easy&#8230; it just took a weekend to figure out what the easy way was.</p>
<h2>Final Algorithm to Compute Schur Decomposition</h2>
<pre>V = identity matrix
while (there is an ij such that |M[i][j]| &gt; 10^-8*|M[i][i]-M[j][j]|) {
    select ij with maximum |M[i][j]|/|M[i][i]-M[j][j]|, possibly infinite
    // Case 1
    if (|M[i][j]| &lt; 10^14*|M[i][i]-M[j][j]|) {
        a = 2*M[i][j]/(M[i][i]-M[j][j])
        b = 2*M[j][i]/(M[i][i]-M[j][j])
        c = sqrt(1+a*b)
        L = sqrt(|a|^2 + |1+c|^2)
        Vsub = {{1+c, -conj(a)}, {a, 1+conj(c)}}/L
    }
    // Case 2
    else {
        a = M[i][j]
        b = M[j][i]
        L = sqrt(|a|+|b|)
        Vsub = {{sqrt(b), -conj(sqrt(a))}, {sqrt(a), conj(sqrt(b))}}/L
    }
    // Rotate columns i and j of M
    for (each row of M) {
        newi = M[row][i]*Vsub[0][0]+M[row][j]*Vsub[1][0]
        newj = M[row][i]*Vsub[0][1]+M[row][j]*Vsub[1][1]
        M[row][i] = newi
        M[row][j] = newj
    }
    // Rotate rows i and j of M
    for (each column of M) {
        newi = M[i][col]*conj(Vsub[0][0])+M[j][col]*conj(Vsub[1][0])
        newj = M[i][col]*conj(Vsub[0][1])+M[j][col]*conj(Vsub[1][1])
        M[i][col] = newi
        M[j][col] = newj
    }
    // Rotate cols i and j of V
    for (each row of V) {
        newi = V[row][i]*Vsub[0][0]+V[row][j]*Vsub[1][0]
        newj = V[row][i]*Vsub[0][1]+V[row][j]*Vsub[1][1]
        V[row][i] = newi
        V[row][j] = newj
    }
}
// Diagonal of M now has the eigenvalues of the input M
// If M was Hermitian, V now has the eigenvectors of the input M as columns,
//                     in the order that the eigenvalues appear in M</pre>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/ndickson.wordpress.com/423/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/ndickson.wordpress.com/423/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/ndickson.wordpress.com/423/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/ndickson.wordpress.com/423/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/ndickson.wordpress.com/423/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/ndickson.wordpress.com/423/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/ndickson.wordpress.com/423/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/ndickson.wordpress.com/423/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/ndickson.wordpress.com/423/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/ndickson.wordpress.com/423/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/ndickson.wordpress.com/423/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/ndickson.wordpress.com/423/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/ndickson.wordpress.com/423/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/ndickson.wordpress.com/423/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=ndickson.wordpress.com&amp;blog=1158540&amp;post=423&amp;subd=ndickson&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://ndickson.wordpress.com/2011/07/13/jacobi-eigenvalue-algorithm-schur-decomposition-and-wikipedia/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/accf49d59449b71b817ca3c4f2c739f0?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Neil Dickson</media:title>
		</media:content>
	</item>
		<item>
		<title>DAMN Cool Science Episode 2</title>
		<link>http://ndickson.wordpress.com/2011/01/24/damn-cool-science-episode-2/</link>
		<comments>http://ndickson.wordpress.com/2011/01/24/damn-cool-science-episode-2/#comments</comments>
		<pubDate>Mon, 24 Jan 2011 09:29:47 +0000</pubDate>
		<dc:creator>Neil Dickson</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://ndickson.wordpress.com/?p=419</guid>
		<description><![CDATA[A heavily simplified intro to real quantum physics and a review of a recent paper:<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=ndickson.wordpress.com&amp;blog=1158540&amp;post=419&amp;subd=ndickson&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>A heavily simplified intro to real quantum physics and a review of a recent paper:</p>
<span style="text-align:center; display: block;"><a href="http://ndickson.wordpress.com/2011/01/24/damn-cool-science-episode-2/"><img src="http://img.youtube.com/vi/dBcIZO3UgkA/2.jpg" alt="" /></a></span>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/ndickson.wordpress.com/419/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/ndickson.wordpress.com/419/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/ndickson.wordpress.com/419/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/ndickson.wordpress.com/419/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/ndickson.wordpress.com/419/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/ndickson.wordpress.com/419/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/ndickson.wordpress.com/419/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/ndickson.wordpress.com/419/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/ndickson.wordpress.com/419/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/ndickson.wordpress.com/419/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/ndickson.wordpress.com/419/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/ndickson.wordpress.com/419/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/ndickson.wordpress.com/419/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/ndickson.wordpress.com/419/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=ndickson.wordpress.com&amp;blog=1158540&amp;post=419&amp;subd=ndickson&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://ndickson.wordpress.com/2011/01/24/damn-cool-science-episode-2/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/accf49d59449b71b817ca3c4f2c739f0?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Neil Dickson</media:title>
		</media:content>
	</item>
		<item>
		<title>DAMN Cool Science</title>
		<link>http://ndickson.wordpress.com/2010/12/29/damn-cool-science/</link>
		<comments>http://ndickson.wordpress.com/2010/12/29/damn-cool-science/#comments</comments>
		<pubDate>Thu, 30 Dec 2010 03:30:44 +0000</pubDate>
		<dc:creator>Neil Dickson</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://ndickson.wordpress.com/?p=415</guid>
		<description><![CDATA[Bringing out my satirical side, my brand new YouTube comedy series, DAMN Cool Science!<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=ndickson.wordpress.com&amp;blog=1158540&amp;post=415&amp;subd=ndickson&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Bringing out my satirical side, my brand new YouTube comedy series, <a href="http://www.youtube.com/watch?v=5t7BA9HQJWg">DAMN Cool Science!</a></p>
<span style="text-align:center; display: block;"><a href="http://ndickson.wordpress.com/2010/12/29/damn-cool-science/"><img src="http://img.youtube.com/vi/5t7BA9HQJWg/2.jpg" alt="" /></a></span>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/ndickson.wordpress.com/415/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/ndickson.wordpress.com/415/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/ndickson.wordpress.com/415/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/ndickson.wordpress.com/415/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/ndickson.wordpress.com/415/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/ndickson.wordpress.com/415/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/ndickson.wordpress.com/415/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/ndickson.wordpress.com/415/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/ndickson.wordpress.com/415/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/ndickson.wordpress.com/415/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/ndickson.wordpress.com/415/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/ndickson.wordpress.com/415/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/ndickson.wordpress.com/415/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/ndickson.wordpress.com/415/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=ndickson.wordpress.com&amp;blog=1158540&amp;post=415&amp;subd=ndickson&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://ndickson.wordpress.com/2010/12/29/damn-cool-science/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/accf49d59449b71b817ca3c4f2c739f0?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Neil Dickson</media:title>
		</media:content>
	</item>
		<item>
		<title>North Korea and &#8220;Retaliation&#8221;</title>
		<link>http://ndickson.wordpress.com/2010/12/20/north-korea-and-retaliation/</link>
		<comments>http://ndickson.wordpress.com/2010/12/20/north-korea-and-retaliation/#comments</comments>
		<pubDate>Tue, 21 Dec 2010 03:47:46 +0000</pubDate>
		<dc:creator>Neil Dickson</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://ndickson.wordpress.com/?p=404</guid>
		<description><![CDATA[I haven&#8217;t written many political blog entries, and this one mostly isn&#8217;t about politics either; it&#8217;s about gross misuse of words and phrases in news media. For those of you who don&#8217;t know, recently, North Korea bombed South Korea, killing 2 civilians and 2 marines. I think we can agree that innocent people dying is [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=ndickson.wordpress.com&amp;blog=1158540&amp;post=404&amp;subd=ndickson&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>I haven&#8217;t written many political blog entries, and this one mostly isn&#8217;t about politics either; it&#8217;s about gross misuse of words and phrases in news media.</p>
<p>For those of you who don&#8217;t know, <a href="http://www.bbc.co.uk/news/world-asia-pacific-12016563" target="_blank">recently, North Korea bombed South Korea, killing 2 civilians and 2 marines.</a> I think we can agree that innocent people dying is generally bad, so I won&#8217;t belabour that point.  What I&#8217;m baffled by is the <a href="http://www.bbc.co.uk/news/world-asia-pacific-12016563" target="_blank">BBC</a> and <a href="http://ca.reuters.com/article/topNews/idCATOE6BG05Y20101221" target="_blank">Reuters</a>, among countless others somehow equating killing 4 people with performing routine military drills.</p>
<blockquote><p>&#8220;The Russian move followed a warning from North Korea of <span style="text-decoration:underline;">retaliation</span> if the planned drills were held.&#8221;</p>
<p><em>&#8211; BBC News</em> (underline added)</p></blockquote>
<blockquote><p>&#8220;Air-raid bunkers on the South Korean island of Yeonpyeong shook during South Korea&#8217;s exercise, which the North had vowed to <span style="text-decoration:underline;">repay in kind</span>.&#8221;</p>
<p><em>&#8211; Reuters</em> (underline added)</p></blockquote>
<p>I&#8217;ve heard CTV and other stations talk this same way about the situation as well.  Let&#8217;s get one thing straight: North Korea &#8220;repaying in kind&#8221; for South Korea running military drills would be North Korea running its own military drills.  North Korea killing more people supposedly in response to military drills is not &#8220;retaliation&#8221;, it&#8217;s simply a unilateral attack on South Korea, no matter how North Korea tries to spin it.  None of these are quotes of North Korea; if they had been, that&#8217;d make sense, but instead, multiple news article writers around the world independently sat down and chose to write as if killing was equivalent to practicing.  Here are some <em>real</em> definitions of &#8220;retaliate&#8221;.</p>
<blockquote><p>&#8220;To do something harmful or negative to get revenge for some harm; to fight back or respond in kind to an injury or affront.&#8221;</p>
<p><em>&#8211; English Wiktionary entry for &#8220;retaliate&#8221;</em></p></blockquote>
<blockquote><p>&#8220;make a counterattack and return like for like, especially evil for evil&#8221;</p>
<p><em>&#8211; Princeton WordNet entry for &#8220;retaliate&#8221;</em></p></blockquote>
<p>News networks should not just assume that translations of North Korea&#8217;s propaganda are correct and truthful.  They&#8217;re not exactly the most reliable source!</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/ndickson.wordpress.com/404/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/ndickson.wordpress.com/404/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/ndickson.wordpress.com/404/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/ndickson.wordpress.com/404/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/ndickson.wordpress.com/404/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/ndickson.wordpress.com/404/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/ndickson.wordpress.com/404/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/ndickson.wordpress.com/404/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/ndickson.wordpress.com/404/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/ndickson.wordpress.com/404/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/ndickson.wordpress.com/404/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/ndickson.wordpress.com/404/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/ndickson.wordpress.com/404/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/ndickson.wordpress.com/404/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=ndickson.wordpress.com&amp;blog=1158540&amp;post=404&amp;subd=ndickson&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://ndickson.wordpress.com/2010/12/20/north-korea-and-retaliation/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/accf49d59449b71b817ca3c4f2c739f0?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Neil Dickson</media:title>
		</media:content>
	</item>
		<item>
		<title>Rejected</title>
		<link>http://ndickson.wordpress.com/2010/12/13/rejected/</link>
		<comments>http://ndickson.wordpress.com/2010/12/13/rejected/#comments</comments>
		<pubDate>Mon, 13 Dec 2010 06:46:16 +0000</pubDate>
		<dc:creator>Neil Dickson</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://ndickson.wordpress.com/?p=391</guid>
		<description><![CDATA[The face of rejection: In the past year, I&#8217;ve had more papers rejected than most PhD students are even a part of throughout their degree, but I&#8217;m not the only one.  Here&#8217;s a selection from some hilarious rejections of some of the biggest results in computer science (source: &#8220;We Are Sorry to Inform You&#8230;&#8221;). &#8230;﻿﻿The author is a proponent of [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=ndickson.wordpress.com&amp;blog=1158540&amp;post=391&amp;subd=ndickson&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>The face of rejection:</p>
<div class="wp-caption aligncenter" style="width: 460px"><a href="http://upload.wikimedia.org/wikipedia/commons/thumb/2/28/Ingres,_Napoleon_on_his_Imperial_throne.jpg/450px-Ingres,_Napoleon_on_his_Imperial_throne.jpg"><img class="       " title="I reject your reality and substitute my own." src="http://upload.wikimedia.org/wikipedia/commons/thumb/2/28/Ingres,_Napoleon_on_his_Imperial_throne.jpg/450px-Ingres,_Napoleon_on_his_Imperial_throne.jpg" alt="" width="450" height="729" /></a><p class="wp-caption-text">I reject your reality and substitute my own. --Napoleon... or that guy from Mythbusters</p></div>
<p>In the past year, I&#8217;ve had more papers rejected than most PhD students are even a part of throughout their degree, but I&#8217;m not the only one.  Here&#8217;s a selection from some hilarious rejections of some of the biggest results in computer science (source: <a href="http://www.vf.utwente.nl/~neisser/public/reject.pdf">&#8220;We Are Sorry to Inform You&#8230;&#8221;</a>).</p>
<blockquote><p>&#8230;﻿﻿The author is a proponent of the so-called “structured programming” style, in which, if I get it right, gotos are replaced by indentation. Structured programming is a nice academic exercise, which works well for small examples, but I doubt that any real-world program will ever be written in such a style. &#8230; <strong><span style="color:#ffcc00;">﻿I am confident that, 30 years from now, the goto will still be alive and well and used as widely as it is today.</span></strong></p>
<p><em>&#8211;Reviewer rejecting Dijkstra&#8217;s idea of <span style="color:#3366ff;"><strong>structured programming</strong></span>, presented in &#8221;Goto Statement Considered Harmful&#8221;</em></p></blockquote>
<blockquote><p>&#8230; The paper contains no real-world example to convince us that any model of practical interest can be cast in it. Quite the contrary, at first sight <strong><span style="color:#ffcc00;">I doubt that anything complex enough to be of practical interest can be modeled using relations.</span></strong> &#8230;</p>
<p><em>&#8211;Reviewer rejecting Codd&#8217;s idea of <span style="color:#3366ff;"><strong>relational databases</strong></span>, presented in &#8220;A Relational Model of Data for Large Shared Data Banks&#8221;</em></p></blockquote>
<blockquote><p>This is a bizarre paper. It begins by defining a computing device absolutely unlike anything I have seen, then proceeds to show—I haven’t quite followed the needlessly complicated formalism—that there are numbers that it can’t compute. As I see it, there are two alternatives that apply to any machine that will ever be built: Either these numbers are too big to be represented in the machine, in which case the conclusion is obvious, or they are not; in that case, <strong><span style="color:#ffcc00;">a machine that can’t compute them is simply broken!</span></strong> &#8230;</p>
<p><em>&#8211;Reviewer rejecting Turing&#8217;s proof that there are <span style="color:#3366ff;"><strong>uncomputable functions </strong></span>in &#8220;﻿On Computable Numbers, with an Application to the Entscheidungsproblem&#8221;</em></p></blockquote>
<blockquote><p>&#8230; <strong><span style="color:#ffcc00;">I don’t understand the relevance of discrete sources: No matter what one does, in the end, the signal will have to be modulated using good old-fashioned vacuum tubes</span></strong>, so the signal on the “channel” will always be analogical. &#8230; The author mentions computing machines, such as the recent ENIAC. Well, I guess one could connect such machines, but <strong><span style="color:#ffcc00;">a recent IBM memo stated that a dozen or so such machines will be sufficient for all the computing that we’ll ever need in the foreseeable future, so </span><span style="color:#ffcc00;">there won’t be a whole lot of connecting going on with only a dozen ENIACs! </span></strong>&#8230;</p>
<p><em>&#8211;Reviewer rejecting Shannon&#8217;s idea of <span style="color:#3366ff;"><strong>communication theory</strong> </span>in &#8220;A Mathematical Theory of Communication&#8221;</em></p></blockquote>
<blockquote><p>&#8230; The scheme’s security relies on the factorization of <img src='http://s0.wp.com/latex.php?latex=n&amp;bg=161410&amp;fg=999999&amp;s=0' alt='n' title='n' class='latex' /> in prime factors taking so long as to be impractical. The authors also stress that the encryption algorithm must be fast and—if their application, electronic mail, is to make sense—the algorithm should run on all sorts of machines. Let us be generous and assume that every computer user has access to a latest-generation minicomputer such as the VAX. <strong><span style="color:#ffcc00;">This 32-bit machine’s speed considerations limit the choice of <img src='http://s0.wp.com/latex.php?latex=n&amp;bg=161410&amp;fg=999999&amp;s=0' alt='n' title='n' class='latex' /> to <img src='http://s0.wp.com/latex.php?latex=n+%3C+2%5E%7B32%7D+%3D+4%2C294%2C967%2C296&amp;bg=161410&amp;fg=999999&amp;s=0' alt='n &lt; 2^{32} = 4,294,967,296' title='n &lt; 2^{32} = 4,294,967,296' class='latex' />.</span></strong> &#8230; ﻿Granted, we are seeing the appearance of so-called <strong><span style="color:#ffcc00;">microcomputers, such as the recently announced Apple II, but their limitations are so great that neither they nor their descendants will have the power necessary to communicate through a network.</span></strong> &#8230;</p>
<p><em>&#8211;Reviewer rejecting <span style="color:#3366ff;"><strong>RSA encryption</strong></span>, now the most prevalent encryption scheme on the planet, in &#8220;﻿A Method for Obtaining Digital Signatures and Public-Key Cryptosystems&#8221;</em></p></blockquote>
<p>The last reviewer doesn&#8217;t even have an excuse, since the <a></a><a href="http://en.wikipedia.org/wiki/Xerox_Alto">Xerox Alto</a>, w<a></a>ith most of the technology of modern computers, had already been able to communicate through a network with 3 Mbps Ethernet for 5 years at  that point!</p>
<p>Anyway, I hope you enjoyed this look at one part of the failure of peer review, and when someone rejects your paper because they&#8217;re clearly either incompetent or on some absurd vendetta to discredit you, don&#8217;t fret.  It&#8217;ll probably blow up in their face in the end. <img src='http://s0.wp.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />   Beyond that, I think the whole idea of papers is outdated and near obsolete, since technology has advanced way beyond text-only communication of ideas&#8230; said the guy writing text to communicate ideas&#8230;</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/ndickson.wordpress.com/391/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/ndickson.wordpress.com/391/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/ndickson.wordpress.com/391/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/ndickson.wordpress.com/391/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/ndickson.wordpress.com/391/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/ndickson.wordpress.com/391/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/ndickson.wordpress.com/391/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/ndickson.wordpress.com/391/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/ndickson.wordpress.com/391/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/ndickson.wordpress.com/391/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/ndickson.wordpress.com/391/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/ndickson.wordpress.com/391/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/ndickson.wordpress.com/391/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/ndickson.wordpress.com/391/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=ndickson.wordpress.com&amp;blog=1158540&amp;post=391&amp;subd=ndickson&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://ndickson.wordpress.com/2010/12/13/rejected/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/accf49d59449b71b817ca3c4f2c739f0?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Neil Dickson</media:title>
		</media:content>

		<media:content url="http://upload.wikimedia.org/wikipedia/commons/thumb/2/28/Ingres,_Napoleon_on_his_Imperial_throne.jpg/450px-Ingres,_Napoleon_on_his_Imperial_throne.jpg" medium="image">
			<media:title type="html">I reject your reality and substitute my own.</media:title>
		</media:content>
	</item>
		<item>
		<title>Talking Quantum Algorithms</title>
		<link>http://ndickson.wordpress.com/2010/11/12/talking-quantum-algorithms/</link>
		<comments>http://ndickson.wordpress.com/2010/11/12/talking-quantum-algorithms/#comments</comments>
		<pubDate>Fri, 12 Nov 2010 08:06:11 +0000</pubDate>
		<dc:creator>Neil Dickson</dc:creator>
				<category><![CDATA[D-Wave]]></category>

		<guid isPermaLink="false">http://ndickson.wordpress.com/?p=387</guid>
		<description><![CDATA[On November 23rd, I&#8217;ll be over in Boston at MIT chatting it up with some people there about new frontiers in practical quantum algorithms. Until recently, it seems like the only such algorithms were brute force algorithms, i.e. try something and hope it works, which understandably has issues.  However, some coworkers and I have come up with ways to make [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=ndickson.wordpress.com&amp;blog=1158540&amp;post=387&amp;subd=ndickson&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>On November 23rd, I&#8217;ll be over in Boston at MIT chatting it up with some people there about new frontiers in practical quantum algorithms.</p>
<p>Until recently, it seems like the only such algorithms were brute force algorithms, i.e. try something and hope it works, which understandably has issues.  However, some coworkers and I have come up with ways to make non-brute-force algorithms.  I&#8217;m looking forward to see what other people can come up with, expanding upon these ideas once we&#8217;ve got them out there. <img src='http://s0.wp.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>I&#8217;m especially hoping to explain things to other computer scientists down the road, since the stuff should be simple enough for interested 4th-year CS students to understand, but given how much I keep procrastinating on making video tutorials, I probably won&#8217;t get around to it as soon as I&#8217;d like. <img src='http://s0.wp.com/wp-includes/images/smilies/icon_sad.gif' alt=':(' class='wp-smiley' /> </p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/ndickson.wordpress.com/387/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/ndickson.wordpress.com/387/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/ndickson.wordpress.com/387/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/ndickson.wordpress.com/387/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/ndickson.wordpress.com/387/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/ndickson.wordpress.com/387/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/ndickson.wordpress.com/387/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/ndickson.wordpress.com/387/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/ndickson.wordpress.com/387/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/ndickson.wordpress.com/387/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/ndickson.wordpress.com/387/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/ndickson.wordpress.com/387/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/ndickson.wordpress.com/387/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/ndickson.wordpress.com/387/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=ndickson.wordpress.com&amp;blog=1158540&amp;post=387&amp;subd=ndickson&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://ndickson.wordpress.com/2010/11/12/talking-quantum-algorithms/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/accf49d59449b71b817ca3c4f2c739f0?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Neil Dickson</media:title>
		</media:content>
	</item>
		<item>
		<title>More Big Software Performance Speedups</title>
		<link>http://ndickson.wordpress.com/2010/11/07/more-big-software-performance-speedups/</link>
		<comments>http://ndickson.wordpress.com/2010/11/07/more-big-software-performance-speedups/#comments</comments>
		<pubDate>Mon, 08 Nov 2010 02:41:55 +0000</pubDate>
		<dc:creator>Neil Dickson</dc:creator>
				<category><![CDATA[Optimization]]></category>
		<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://ndickson.wordpress.com/?p=380</guid>
		<description><![CDATA[As I sit here waiting for Matlab to compute in over 25 minutes what I can now compute in 10 milliseconds in mostly-unoptimized C++ code running in debug mode, I figured I should write a blog post stressing the importance of a few small differences that can result in &#62;150,000x speedups like this. Note that [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=ndickson.wordpress.com&amp;blog=1158540&amp;post=380&amp;subd=ndickson&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>As I sit here waiting for Matlab to compute in over 25 minutes what I can now compute in 10 milliseconds in mostly-unoptimized C++ code running in debug mode, I figured I should write a blog post stressing the importance of a few small differences that can result in &gt;150,000x speedups like this.</p>
<p>Note that I&#8217;m not putting down Matlab, since it&#8217;s not designed to run fast; I&#8217;m just using this as an example of why it&#8217;s important to not get complacent with performance.</p>
<h1>1. Precomputation</h1>
<p>This is may be the largest performance difference between the two implementations, though it might be a tight race between this and the next two differences.  Precomputation, however, is very widely applicable, easy to do, and could have been applied to the Matlab code to some extent.</p>
<p>The basic idea is: instead of computing the same data repeatedly, compute them once and save them.</p>
<p>In those words, it sounds so obvious, but it encompasses a broad range of things, some of which are less obvious.  For example, in this case, I&#8217;ve precomputed the data <em>before running the program</em> and read it in from input files.  I&#8217;ll be running the program using the same data possibly thousands of times, and those data took longer to compute than to read in, so there&#8217;s no sense in recomputing them each time.  In particular, I&#8217;ve computed about 1,000 points on each of a bunch of curves, and the program linearly interpolates between them, which is plenty sufficient accuracy in this case.</p>
<p>There are of course cases where precomputation  doesn&#8217;t make sense, such as if the computation is as fast as looking up the data or if the amount of data to save is unreasonably large, but in a very large range of applications, precomputation can speed things up a ton.</p>
<h1>2. Native Code</h1>
<p>People will yell until they&#8217;re blue in the face that interpreted code or Just-In-Time-compiled code is usually as fast as native code (i.e. compiled to machine code ahead of time).  They&#8217;re dead wrong, and usually somewhere up the chain, they got their information from a marketing department or a study funded by Sun, IBM, etc, even though they&#8217;re probably not aware of it.  Nonetheless, I was honestly shocked that such extremely simple tests confirm this, e.g. running the following code in Java versus in C++.</p>
<pre>int a = 12468;
for (int i = 0; i &lt; 2000000000; ++i) {
    a /= 2;
    a *= 2;
}
// Output a
</pre>
<p>C++ compilers trivially replace the multiplication with addition, and the division with a bit shift (and a special trick because the compiler doesn&#8217;t clue in that the value is always positive or even).  Of course, a really smart compiler would realize that the entire loop is useless, since the starting number is positive and even, but none of them appear to be that smart.  Java however, will not even do the simple replacement <em>no matter how many times the loop is run</em>.  This is visible by comparing against the performance of:</p>
<pre>int a = 12468;
for (int i = 0; i &lt; 2000000000; ++i) {
    a &gt;&gt;= 1;
    a += a;
}
// Output a
</pre>
<p>In Java, this new code is several times faster than the previous, whereas in C++, the performance is (almost) identical between the two, since it&#8217;s already made that replacement.</p>
<p>In my case today, I&#8217;m not comparing against Java; I&#8217;m comparing against Matlab, which not only doesn&#8217;t compile its code ahead of time, but literally interprets the text representing the code as it&#8217;s running, similar to VisualBasic or Fortran.  That adds factors of thousands for just figuring out what the program is doing.  It just doesn&#8217;t stand a chance outside of its prebuilt libraries.  Inside its prebuilt libraries, e.g. matrix multiplication or diagonalization code written in C++, it&#8217;s fast, so one must try to use them where reasonable.</p>
<h1>3. Customization</h1>
<p>As much as Matlab provides some great functionality that can be a pain in the butt to implement from scratch, such as diagonalization of big matrices, it (understandably) doesn&#8217;t let you specify everything you know that may help speed up the computation.</p>
<p>For example, matrix-matrix multiplication where you input two matrices and get back their product is very slow because of memory caching issues.  However, if the matrix on the right of the multiplication is already transposed ahead of time, it&#8217;s much faster.  (I&#8217;ll save the explanation of why for another time.)  Matlab doesn&#8217;t know whether there&#8217;s a way to rework your code such that some matrices are pre-transposed and others aren&#8217;t, it just receives two matrices and has to spit out the product.  If you can use your knowledge of your code to do this, you can get a big performance boost.</p>
<p>Another example in this case is if you have good estimates of the eigenvalues and eigenvectors of the matrix you&#8217;ve got, it&#8217;s much faster to find them exactly, but Matlab&#8217;s diagonalization just uses random guesses.</p>
<h1>Conclusion</h1>
<p>As I mentioned at the top, the C++ implementation is mostly unoptimized, so I&#8217;m still expecting more performance improvements as I scale it up and optimize it, (since speeding up a 10ms computation isn&#8217;t all that useful.)  I&#8217;ll try to remember to report again when it&#8217;s multi-threaded and vectorized.  Nonetheless, simple changes like those above can make a huge difference in the performance of software.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/ndickson.wordpress.com/380/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/ndickson.wordpress.com/380/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/ndickson.wordpress.com/380/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/ndickson.wordpress.com/380/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/ndickson.wordpress.com/380/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/ndickson.wordpress.com/380/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/ndickson.wordpress.com/380/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/ndickson.wordpress.com/380/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/ndickson.wordpress.com/380/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/ndickson.wordpress.com/380/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/ndickson.wordpress.com/380/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/ndickson.wordpress.com/380/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/ndickson.wordpress.com/380/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/ndickson.wordpress.com/380/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=ndickson.wordpress.com&amp;blog=1158540&amp;post=380&amp;subd=ndickson&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://ndickson.wordpress.com/2010/11/07/more-big-software-performance-speedups/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/accf49d59449b71b817ca3c4f2c739f0?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Neil Dickson</media:title>
		</media:content>
	</item>
		<item>
		<title>$50 Math Problem</title>
		<link>http://ndickson.wordpress.com/2010/08/29/50-math-problem/</link>
		<comments>http://ndickson.wordpress.com/2010/08/29/50-math-problem/#comments</comments>
		<pubDate>Sun, 29 Aug 2010 06:04:16 +0000</pubDate>
		<dc:creator>Neil Dickson</dc:creator>
				<category><![CDATA[Math]]></category>

		<guid isPermaLink="false">http://ndickson.wordpress.com/?p=347</guid>
		<description><![CDATA[I have an odd math problem that I&#8217;m rather stumped on.  It&#8217;s got quite a simple description, so I&#8217;m hoping that someone out there has either already cracked it or knows how to do so, but my attempts to solve it all just explode into a mess.  It would come in handy for a paper [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=ndickson.wordpress.com&amp;blog=1158540&amp;post=347&amp;subd=ndickson&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>I have an odd math problem that I&#8217;m rather stumped on.  It&#8217;s got quite a simple description, so I&#8217;m hoping that someone out there has either already cracked it or knows how to do so, but my attempts to solve it all just explode into a mess.  It would come in handy for a paper I&#8217;m working on, though it&#8217;s not absolutely essential, since I can partly check it numerically.  Nonetheless, I&#8217;d like it solved, so I&#8217;m offering $50 for a solution.</p>
<h1>The $50 Problem</h1>
<p>I&#8217;ve got a function <img src='http://s0.wp.com/latex.php?latex=f%28x%29&amp;bg=161410&amp;fg=999999&amp;s=0' alt='f(x)' title='f(x)' class='latex' />, which is <a href="http://en.wikipedia.org/wiki/Analytic_function">analytic</a> at 0 (i.e. has a valid <a href="http://en.wikipedia.org/wiki/Taylor_series">Taylor series</a> about <img src='http://s0.wp.com/latex.php?latex=x%3D0&amp;bg=161410&amp;fg=999999&amp;s=0' alt='x=0' title='x=0' class='latex' />).  I want to know about the <a href="http://en.wikipedia.org/wiki/Taylor_series">Taylor series</a> about <img src='http://s0.wp.com/latex.php?latex=x%3D0&amp;bg=161410&amp;fg=999999&amp;s=0' alt='x=0' title='x=0' class='latex' /> of the function <img src='http://s0.wp.com/latex.php?latex=g%28x%29&amp;bg=161410&amp;fg=999999&amp;s=0' alt='g(x)' title='g(x)' class='latex' /> defined as:</p>
<p><img src='http://s0.wp.com/latex.php?latex=g%28x%29+%3D+f%28xg%28x%29%29&amp;bg=161410&amp;fg=999999&amp;s=0' alt='g(x) = f(xg(x))' title='g(x) = f(xg(x))' class='latex' /></p>
<p>Specifically, is it true that:</p>
<p><img src='http://s0.wp.com/latex.php?latex=g%5E%7B%28q%29%7D%28x%29%7C_%7Bx%3D0%7D+%3D+%5Cleft%28%5Cfrac%7Bf%5E%7Bq%2B1%7D%28x%29%7D%7Bq%2B1%7D%5Cright%29%5E%7B%28q%29%7D%7C_%7Bx%3D0%7D&amp;bg=161410&amp;fg=999999&amp;s=0' alt='g^{(q)}(x)|_{x=0} = &#92;left(&#92;frac{f^{q+1}(x)}{q+1}&#92;right)^{(q)}|_{x=0}' title='g^{(q)}(x)|_{x=0} = &#92;left(&#92;frac{f^{q+1}(x)}{q+1}&#92;right)^{(q)}|_{x=0}' class='latex' /></p>
<p>i.e. is the <img src='http://s0.wp.com/latex.php?latex=q%5E%7Bth%7D&amp;bg=161410&amp;fg=999999&amp;s=0' alt='q^{th}' title='q^{th}' class='latex' /> <a href="http://en.wikipedia.org/wiki/Derivative">derivative</a> of <img src='http://s0.wp.com/latex.php?latex=g%28x%29&amp;bg=161410&amp;fg=999999&amp;s=0' alt='g(x)' title='g(x)' class='latex' /> evaluated at <img src='http://s0.wp.com/latex.php?latex=x%3D0&amp;bg=161410&amp;fg=999999&amp;s=0' alt='x=0' title='x=0' class='latex' /> equal to the <img src='http://s0.wp.com/latex.php?latex=q%5E%7Bth%7D&amp;bg=161410&amp;fg=999999&amp;s=0' alt='q^{th}' title='q^{th}' class='latex' /> derivative of <img src='http://s0.wp.com/latex.php?latex=f%28x%29&amp;bg=161410&amp;fg=999999&amp;s=0' alt='f(x)' title='f(x)' class='latex' /> to the power of <img src='http://s0.wp.com/latex.php?latex=q%2B1&amp;bg=161410&amp;fg=999999&amp;s=0' alt='q+1' title='q+1' class='latex' />, over <img src='http://s0.wp.com/latex.php?latex=q%2B1&amp;bg=161410&amp;fg=999999&amp;s=0' alt='q+1' title='q+1' class='latex' />, all evaluated at <img src='http://s0.wp.com/latex.php?latex=x%3D0&amp;bg=161410&amp;fg=999999&amp;s=0' alt='x=0' title='x=0' class='latex' />?  That&#8217;s all.  The first valid proof I receive showing either that the above is true for all values of <img src='http://s0.wp.com/latex.php?latex=q&amp;bg=161410&amp;fg=999999&amp;s=0' alt='q' title='q' class='latex' /> or false for at least one value of <img src='http://s0.wp.com/latex.php?latex=q&amp;bg=161410&amp;fg=999999&amp;s=0' alt='q' title='q' class='latex' /> will be awarded $50, and, if you&#8217;re quick enough, you&#8217;ll get acknowledged in a theory paper on <a href="http://en.wikipedia.org/wiki/Quantum_annealing">quantum annealing</a>.</p>
<h1>Partial Results</h1>
<p>This can be shown to be true for the first few values of <img src='http://s0.wp.com/latex.php?latex=q&amp;bg=161410&amp;fg=999999&amp;s=0' alt='q' title='q' class='latex' />:</p>
<p><img src='http://s0.wp.com/latex.php?latex=q%3D0+%5Crightarrow+g%280%29+%3D+f%280g%280%29%29+%3D+f%280%29+%3D+%5Cleft%28%5Cfrac%7Bf%5E%7B1%7D%28x%29%7D%7B1%7D%5Cright%29%7C_%7Bx%3D0%7D&amp;bg=161410&amp;fg=999999&amp;s=0' alt='q=0 &#92;rightarrow g(0) = f(0g(0)) = f(0) = &#92;left(&#92;frac{f^{1}(x)}{1}&#92;right)|_{x=0}' title='q=0 &#92;rightarrow g(0) = f(0g(0)) = f(0) = &#92;left(&#92;frac{f^{1}(x)}{1}&#92;right)|_{x=0}' class='latex' /></p>
<p><img src='http://s0.wp.com/latex.php?latex=q%3D1+%5Crightarrow+g%5E%7B%5Cprime%7D%28x%29+%3D+f%5E%7B%5Cprime%7D%28xg%28x%29%29%28g%28x%29%2Bxg%5E%7B%5Cprime%7D%28x%29%29+%3D+f%5E%7B%5Cprime%7D%28xg%28x%29%29%28f%28xg%28x%29%29%2Bxg%5E%7B%5Cprime%7D%28x%29%29+%5C%5C+%5Crightarrow++g%5E%7B%5Cprime%7D%280%29+%3D+f%5E%7B%5Cprime%7D%280%29%28f%280%29%2B0%29+%3D+++++f%5E%7B%5Cprime%7D%280%29f%280%29++%5C%5C+++%5Cleft%28%5Cfrac%7Bf%5E%7B2%7D%28x%29%7D%7B2%7D%5Cright%29%5E%7B%5Cprime%7D%7C_%7Bx%3D0%7D%3D++++++%5Cleft%28f%28x%29f%5E%7B%5Cprime%7D%28x%29%5Cright%29%7C_%7Bx%3D0%7D+%3D+f%5E%7B%5Cprime%7D%280%29f%280%29+%3D+g%5E%7B%5Cprime%7D%280%29&amp;bg=161410&amp;fg=999999&amp;s=0' alt='q=1 &#92;rightarrow g^{&#92;prime}(x) = f^{&#92;prime}(xg(x))(g(x)+xg^{&#92;prime}(x)) = f^{&#92;prime}(xg(x))(f(xg(x))+xg^{&#92;prime}(x)) &#92;&#92; &#92;rightarrow  g^{&#92;prime}(0) = f^{&#92;prime}(0)(f(0)+0) =     f^{&#92;prime}(0)f(0)  &#92;&#92;   &#92;left(&#92;frac{f^{2}(x)}{2}&#92;right)^{&#92;prime}|_{x=0}=      &#92;left(f(x)f^{&#92;prime}(x)&#92;right)|_{x=0} = f^{&#92;prime}(0)f(0) = g^{&#92;prime}(0)' title='q=1 &#92;rightarrow g^{&#92;prime}(x) = f^{&#92;prime}(xg(x))(g(x)+xg^{&#92;prime}(x)) = f^{&#92;prime}(xg(x))(f(xg(x))+xg^{&#92;prime}(x)) &#92;&#92; &#92;rightarrow  g^{&#92;prime}(0) = f^{&#92;prime}(0)(f(0)+0) =     f^{&#92;prime}(0)f(0)  &#92;&#92;   &#92;left(&#92;frac{f^{2}(x)}{2}&#92;right)^{&#92;prime}|_{x=0}=      &#92;left(f(x)f^{&#92;prime}(x)&#92;right)|_{x=0} = f^{&#92;prime}(0)f(0) = g^{&#92;prime}(0)' class='latex' /></p>
<p><img src='http://s0.wp.com/latex.php?latex=q%3D2+%5Crightarrow+g%5E%7B%5Cprime%5Cprime%7D%28x%29+%5C%5C+%3D+f%5E%7B%5Cprime%5Cprime%7D%28xg%28x%29%29%28f%28xg%28x%29%29%2Bxg%5E%7B%5Cprime%7D%28x%29%29%5E2+%2B+f%5E%7B%5Cprime%7D%28xg%28x%29%29%28f%5E%7B%5Cprime%7D%28xg%28x%29%29%28f%28xg%28x%29%29%2Bxg%5E%7B%5Cprime%7D%28x%29%29%2Bf%5E%7B%5Cprime%7D%28xg%28x%29%29%28f%28xg%28x%29%29%2Bxg%5E%7B%5Cprime%7D%28x%29%29%2Bxg%5E%7B%5Cprime%5Cprime%7D%28x%29%29+%5C%5C+%5Crightarrow++g%5E%7B%5Cprime%5Cprime%7D%280%29++%5C%5C+%3D+f%5E%7B%5Cprime%5Cprime%7D%280%29%28f%280%29%2B0%29%5E2+%2B++f%5E%7B%5Cprime%7D%280%29%28f%5E%7B%5Cprime%7D%280%29%28f%280%29%2B0%29%2Bf%5E%7B%5Cprime%7D%280%29%28f%280%29%2B0%29%2B0%29+%5C%5C+%3D+f%5E%7B%5Cprime%5Cprime%7D%280%29f%5E2%280%29+%2B+++2%28f%5E%7B%5Cprime%7D%280%29%29%5E2f%280%29++%5C%5C++++%5Cleft%28%5Cfrac%7Bf%5E%7B3%7D%28x%29%7D%7B3%7D%5Cright%29%5E%7B%5Cprime%5Cprime%7D%7C_%7Bx%3D0%7D%3D+%5Cleft%28f%5E%7B2%7D%28x%29f%5E%7B%5Cprime%7D%28x%29%5Cright%29%5E%7B%5Cprime%7D%7C_%7Bx%3D0%7D+%5C%5C+%3D+%5Cleft%282f%28x%29%28f%5E%7B%5Cprime%7D%28x%29%29%5E2+%2B+f%5E%7B2%7D%28x%29f%5E%7B%5Cprime%5Cprime%7D%28x%29%5Cright%29%7C_%7Bx%3D0%7D+%5C%5C+%3D+f%5E%7B%5Cprime%5Cprime%7D%280%29f%5E2%280%29+%2B+++2%28f%5E%7B%5Cprime%7D%280%29%29%5E2f%280%29+%3D+g%5E%7B%5Cprime%5Cprime%7D%280%29&amp;bg=161410&amp;fg=999999&amp;s=0' alt='q=2 &#92;rightarrow g^{&#92;prime&#92;prime}(x) &#92;&#92; = f^{&#92;prime&#92;prime}(xg(x))(f(xg(x))+xg^{&#92;prime}(x))^2 + f^{&#92;prime}(xg(x))(f^{&#92;prime}(xg(x))(f(xg(x))+xg^{&#92;prime}(x))+f^{&#92;prime}(xg(x))(f(xg(x))+xg^{&#92;prime}(x))+xg^{&#92;prime&#92;prime}(x)) &#92;&#92; &#92;rightarrow  g^{&#92;prime&#92;prime}(0)  &#92;&#92; = f^{&#92;prime&#92;prime}(0)(f(0)+0)^2 +  f^{&#92;prime}(0)(f^{&#92;prime}(0)(f(0)+0)+f^{&#92;prime}(0)(f(0)+0)+0) &#92;&#92; = f^{&#92;prime&#92;prime}(0)f^2(0) +   2(f^{&#92;prime}(0))^2f(0)  &#92;&#92;    &#92;left(&#92;frac{f^{3}(x)}{3}&#92;right)^{&#92;prime&#92;prime}|_{x=0}= &#92;left(f^{2}(x)f^{&#92;prime}(x)&#92;right)^{&#92;prime}|_{x=0} &#92;&#92; = &#92;left(2f(x)(f^{&#92;prime}(x))^2 + f^{2}(x)f^{&#92;prime&#92;prime}(x)&#92;right)|_{x=0} &#92;&#92; = f^{&#92;prime&#92;prime}(0)f^2(0) +   2(f^{&#92;prime}(0))^2f(0) = g^{&#92;prime&#92;prime}(0)' title='q=2 &#92;rightarrow g^{&#92;prime&#92;prime}(x) &#92;&#92; = f^{&#92;prime&#92;prime}(xg(x))(f(xg(x))+xg^{&#92;prime}(x))^2 + f^{&#92;prime}(xg(x))(f^{&#92;prime}(xg(x))(f(xg(x))+xg^{&#92;prime}(x))+f^{&#92;prime}(xg(x))(f(xg(x))+xg^{&#92;prime}(x))+xg^{&#92;prime&#92;prime}(x)) &#92;&#92; &#92;rightarrow  g^{&#92;prime&#92;prime}(0)  &#92;&#92; = f^{&#92;prime&#92;prime}(0)(f(0)+0)^2 +  f^{&#92;prime}(0)(f^{&#92;prime}(0)(f(0)+0)+f^{&#92;prime}(0)(f(0)+0)+0) &#92;&#92; = f^{&#92;prime&#92;prime}(0)f^2(0) +   2(f^{&#92;prime}(0))^2f(0)  &#92;&#92;    &#92;left(&#92;frac{f^{3}(x)}{3}&#92;right)^{&#92;prime&#92;prime}|_{x=0}= &#92;left(f^{2}(x)f^{&#92;prime}(x)&#92;right)^{&#92;prime}|_{x=0} &#92;&#92; = &#92;left(2f(x)(f^{&#92;prime}(x))^2 + f^{2}(x)f^{&#92;prime&#92;prime}(x)&#92;right)|_{x=0} &#92;&#92; = f^{&#92;prime&#92;prime}(0)f^2(0) +   2(f^{&#92;prime}(0))^2f(0) = g^{&#92;prime&#92;prime}(0)' class='latex' /></p>
<p>I&#8217;ve manually confirmed that it is true like this up to and including <img src='http://s0.wp.com/latex.php?latex=q%3D4&amp;bg=161410&amp;fg=999999&amp;s=0' alt='q=4' title='q=4' class='latex' />, but each subsequent value of <img src='http://s0.wp.com/latex.php?latex=q&amp;bg=161410&amp;fg=999999&amp;s=0' alt='q' title='q' class='latex' /> takes twice as long to confirm as the previous.  If there was some nice property with which to perform induction, it might collapse down to something very simple, making  it easy to prove true; I just couldn&#8217;t think of any.</p>
<h1>Submitting Your Entry</h1>
<p>To submit, either post a link to your proof here, or email it to me (you can find my email address at <a title="Neil Dickson's Home Page" href="http://www.neildickson.com/">http://www.neildickson.com/</a>) so that I can post it up if it&#8217;s correct.  Best of luck!</p>
<p>I&#8217;m hoping to hold more contests like this in the future,  though probably not on such mathy matters. <img src='http://s0.wp.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<h1><span style="color:#ff0000;">Solved!</span></h1>
<p>As pointed out by user &#8220;achille&#8221; on sci.math, this formula is effectively equivalent to <a href="http://en.wikipedia.org/wiki/Lagrange_inversion_theorem#Lagrange.E2.80.93B.C3.BCrmann_formula">the Lagrange-Bürmann formula</a>.  Thanks to all who tried tackling the challenge!  I&#8217;ll have to make the future contests harder, haha. <img src='http://s0.wp.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/ndickson.wordpress.com/347/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/ndickson.wordpress.com/347/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/ndickson.wordpress.com/347/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/ndickson.wordpress.com/347/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/ndickson.wordpress.com/347/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/ndickson.wordpress.com/347/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/ndickson.wordpress.com/347/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/ndickson.wordpress.com/347/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/ndickson.wordpress.com/347/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/ndickson.wordpress.com/347/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/ndickson.wordpress.com/347/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/ndickson.wordpress.com/347/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/ndickson.wordpress.com/347/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/ndickson.wordpress.com/347/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=ndickson.wordpress.com&amp;blog=1158540&amp;post=347&amp;subd=ndickson&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://ndickson.wordpress.com/2010/08/29/50-math-problem/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/accf49d59449b71b817ca3c4f2c739f0?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Neil Dickson</media:title>
		</media:content>
	</item>
		<item>
		<title>PLEASE Watch for Pedestrians</title>
		<link>http://ndickson.wordpress.com/2010/07/17/please-watch-for-pedestrians/</link>
		<comments>http://ndickson.wordpress.com/2010/07/17/please-watch-for-pedestrians/#comments</comments>
		<pubDate>Sun, 18 Jul 2010 01:25:34 +0000</pubDate>
		<dc:creator>Neil Dickson</dc:creator>
				<category><![CDATA[General]]></category>

		<guid isPermaLink="false">http://ndickson.wordpress.com/?p=343</guid>
		<description><![CDATA[I&#8217;ve kept putting off posting about this, &#8217;cause it seems so obvious, but evidently to many drivers, watching for pedestrians (or cyclists, or baby strollers, etc.) is beneath them. This afternoon, a pedestrian on Kingway (a busy road in Vancouver) had just started validly crossing a side street.  The white walk sign was on, and [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=ndickson.wordpress.com&amp;blog=1158540&amp;post=343&amp;subd=ndickson&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve kept putting off posting about this, &#8217;cause it seems so obvious, but evidently to many drivers, watching for pedestrians (or cyclists, or baby strollers, etc.) is beneath them.</p>
<p>This afternoon, a pedestrian on Kingway (a busy road in Vancouver) had just started validly crossing a side street.  The white walk sign was on, and the cars on the side street faced a red light, so they must stop regardless of whether he was there or not.  Sure enough, the driver of a black SUV on the side street illegally turned right on red without stopping (1 broken law) while also texting (2 broken laws), grazed the pedestrian, and drove off (3 broken laws).  The pedestrian was more mad than hurt (he was VERY mad), but was inches from a fatal hit.  An important note: you can turn right on red, but <span style="text-decoration:underline;">you MUST LEGALLY STOP first</span> and make sure that it is safe before turning right on red.</p>
<p>A few days ago (1 or 2), a lady started crossing Willingdon, again completely legally.  This time, it was a big delivery truck that just got a green light and decided to floor it on a right turn.  The irony is that he&#8217;d looked down at us there at the corner about to cross the road just seconds before he nearly hit the lady.  The additional irony is that I&#8217;ve seen this happen so many times that even though I was also starting to cross the road, I actually stayed back for a second to see whether he&#8217;d run us over, so I wasn&#8217;t as close to being hit.  I&#8217;ve had to jump out of the way of vehicles before because they illegally turn without ensuring the safety of the turn and would have run me over.</p>
<p>Back in Ottawa a few years back, a friend of mine did get hit by someone turning without looking.  He was damn lucky his bike was between him and the car.  The bike was totalled.  The pedals were mangled, the rims were bent up, and the pedal ball bearings were crushed into a powder.  He wasn&#8217;t badly hurt, but the car&#8217;s driver got out and yelled furiously at him instead of checking whether he was okay.  The car might have had scratched paint at worst, and yet this guy who had come absurdly close to breaking a cyclist&#8217;s legs had the nerve to add insult to injury by tearing a strip off him.</p>
<p>Don&#8217;t think I&#8217;m just picking on drivers.  Many pedestrians do illegal, dangerous things on the road too, but if they get hit, it&#8217;s probably their own fault.</p>
<p>Anyway, long story short: when you&#8217;re driving, <span style="text-decoration:underline;">please be aware of the other people on the road and look where you&#8217;re going BEFORE you go there!</span></p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/ndickson.wordpress.com/343/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/ndickson.wordpress.com/343/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/ndickson.wordpress.com/343/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/ndickson.wordpress.com/343/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/ndickson.wordpress.com/343/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/ndickson.wordpress.com/343/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/ndickson.wordpress.com/343/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/ndickson.wordpress.com/343/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/ndickson.wordpress.com/343/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/ndickson.wordpress.com/343/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/ndickson.wordpress.com/343/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/ndickson.wordpress.com/343/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/ndickson.wordpress.com/343/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/ndickson.wordpress.com/343/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=ndickson.wordpress.com&amp;blog=1158540&amp;post=343&amp;subd=ndickson&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://ndickson.wordpress.com/2010/07/17/please-watch-for-pedestrians/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/accf49d59449b71b817ca3c4f2c739f0?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Neil Dickson</media:title>
		</media:content>
	</item>
	</channel>
</rss>
