<?xml version="1.0" encoding="utf-8" standalone="no"?>
<!DOCTYPE document PUBLIC "-//CNX//DTD CNXML 0.5 plus MathML//EN" "http://cnx.rice.edu/cnxml/0.5/DTD/cnxml_mathml.dtd">
<document xmlns="http://cnx.rice.edu/cnxml" xmlns:md="http://cnx.rice.edu/mdml/0.4" xmlns:m="http://www.w3.org/1998/Math/MathML" xmlns:bib="http://bibtexml.sf.net/" id="Module.2004-05-18.3859">
  <name>Multidimensional Index Maps</name>
  <metadata>
  <md:version>1.2</md:version>
  <md:created>2004/05/18 15:38:59 GMT-5</md:created>
  <md:revised>2004/06/17 14:41:24.786 GMT-5</md:revised>
  <md:authorlist>
      <md:author id="dljones">
      <md:firstname>Douglas</md:firstname>
      <md:othername>L.</md:othername>
      <md:surname>Jones</md:surname>
      <md:email>dl-jones@uiuc.edu</md:email>
    </md:author>
  </md:authorlist>

  <md:maintainerlist>
    <md:maintainer id="harika">
      <md:firstname>Harika</md:firstname>
      
      <md:surname>Basana</md:surname>
      <md:email>ilsai@rice.edu</md:email>
    </md:maintainer>
    <md:maintainer id="dljones">
      <md:firstname>Douglas</md:firstname>
      <md:othername>L.</md:othername>
      <md:surname>Jones</md:surname>
      <md:email>dl-jones@uiuc.edu</md:email>
    </md:maintainer>
    <md:maintainer id="kclarks">
      <md:firstname>Kyle</md:firstname>
      
      <md:surname>Clarkson</md:surname>
      <md:email>kclarks@rice.edu</md:email>
    </md:maintainer>
  </md:maintainerlist>
  
  

  <md:abstract/>
</metadata>

  <content>
    <section>
      <name>Multidimensional Index Maps for DIF and DIT
      algorithms</name>
      <section>
	<name>Decimation-in-time algorithm</name>
	<para id="para1">
	  <cnxn document="m12016">Radix-2 DIT</cnxn>:
	  <m:math display="block">
	    <m:apply>
	      <m:eq/>
	      <m:apply>
		<m:ci type="fn">X</m:ci>
		<m:ci>k</m:ci>
	      </m:apply>
	      <m:apply>
		<m:sum/>
		<m:bvar>
		  <m:ci>n</m:ci>
		</m:bvar>
		<m:uplimit>
		  <m:apply>
		    <m:minus/>
		    <m:ci>N</m:ci>
		    <m:cn>1</m:cn>
		  </m:apply>
		</m:uplimit>
		<m:lowlimit>
		  <m:cn>0</m:cn>
		</m:lowlimit>
		<m:apply>
		  <m:times/>
		  <m:apply>
		    <m:ci type="fn">x</m:ci>
		    <m:ci>n</m:ci>
		  </m:apply>
		  <m:ci>
		    <m:msubsup>
		      <m:mi>W</m:mi>
		      <m:mi>N</m:mi>
		      <m:mrow>
			<m:mi>n</m:mi>
			<m:mi>k</m:mi>
		      </m:mrow>
		    </m:msubsup>
		  </m:ci>
		</m:apply>
	      </m:apply>
	      <m:apply>
		<m:plus/>
		<m:apply>
		  <m:sum/>
		  <m:bvar>
		    <m:ci>n</m:ci>
		  </m:bvar>
		  <m:uplimit>
		    <m:apply>
		      <m:minus/>
		      <m:apply>
			<m:divide/>
			<m:ci>N</m:ci>
			<m:cn>2</m:cn>
		      </m:apply>
		      <m:cn>1</m:cn>
		    </m:apply>
		  </m:uplimit>
		  <m:lowlimit>
		    <m:cn>0</m:cn>
		  </m:lowlimit>
		  <m:apply>
		    <m:times/>
		    <m:apply>
		      <m:ci type="fn">x</m:ci>
		      <m:apply>
			<m:times/>
			<m:cn>2</m:cn>
			<m:ci>n</m:ci>
		      </m:apply>
		    </m:apply>
		    <m:ci>
		      <m:msubsup>
			<m:mi>W</m:mi>
			<m:mi>N</m:mi>
			<m:mrow>
			  <m:mn>2</m:mn>
			  <m:mi>n</m:mi>
			  <m:mi>k</m:mi>
			</m:mrow>
		      </m:msubsup>
		    </m:ci>
		  </m:apply>
		</m:apply>
		<m:apply>
		  <m:sum/>
		  <m:bvar>
		    <m:ci>n</m:ci>
		  </m:bvar>
		  <m:uplimit>
		    <m:apply>
		      <m:minus/>
		      <m:apply>
			<m:divide/>
			<m:ci>N</m:ci>
			<m:cn>2</m:cn>
		      </m:apply>
		      <m:cn>1</m:cn>
		    </m:apply>
		  </m:uplimit>
		  <m:lowlimit>
		    <m:cn>0</m:cn>
		  </m:lowlimit>
		  <m:apply>
		    <m:times/>
		    <m:apply>
		      <m:ci type="fn">x</m:ci>
		      <m:apply>
			<m:plus/>
			<m:apply>
			  <m:times/>
			  <m:cn>2</m:cn>
			  <m:ci>n</m:ci>
			</m:apply>
			<m:cn>1</m:cn>
		      </m:apply>
		    </m:apply>
		    <m:ci>
		      <m:msubsup>
			<m:mi>W</m:mi>
			<m:mi>N</m:mi>
			<m:mrow>
			  <m:mo>(</m:mo>
			  <m:mn>2</m:mn>
		     	  <m:mi>n</m:mi>
			  <m:mo>+</m:mo>
			  <m:mn>1</m:mn>
			  <m:mo>)</m:mo>
			  <m:mi>k</m:mi>
			</m:mrow>
		      </m:msubsup>
		    </m:ci>
		  </m:apply>
		</m:apply>
	      </m:apply>
	    </m:apply>
	  </m:math>
	  Formalization: Let 
	  <m:math>
	    <m:apply>
	      <m:eq/>
	      <m:ci>n</m:ci>
	      <m:apply>
		<m:plus/>
		<m:ci>
		  <m:msub>
		    <m:mi>n</m:mi>
		    <m:mn>1</m:mn>
		  </m:msub>
		</m:ci>
		<m:apply>
		  <m:times/>
		  <m:cn>2</m:cn>
		  <m:ci>
		    <m:msub>
		      <m:mi>n</m:mi>
		      <m:mn>2</m:mn>
		    </m:msub>
		  </m:ci>
		</m:apply>
	      </m:apply>
	    </m:apply>
	  </m:math>:
	  <m:math>
	    <m:apply>
	      <m:eq/>
	      <m:ci>
		<m:msub>
		  <m:mi>n</m:mi>
		  <m:mn>1</m:mn>
		</m:msub>
	      </m:ci>
	      <m:list>
		<m:cn>0</m:cn>
		<m:cn>1</m:cn>
	      </m:list>
	    </m:apply>
	  </m:math>:
	  <m:math>
	    <m:apply>
	      <m:eq/>
	      <m:ci>
		<m:msub>
		  <m:mi>n</m:mi>
		  <m:mn>2</m:mn>
		</m:msub>
	      </m:ci>
	      <m:list>
		<m:cn>0</m:cn>
		<m:cn>1</m:cn>
		<m:cn>2</m:cn>
		<m:ci>…</m:ci>
	      	<m:apply>
		  <m:minus/>
		  <m:apply>
		    <m:divide/>
		    <m:ci>N</m:ci>
		    <m:cn>2</m:cn>
		  </m:apply>
		  <m:cn>1</m:cn>
		</m:apply>
	      </m:list>
	    </m:apply>
	  </m:math>
	  <m:math display="block">
	    <m:apply>
	      <m:eq/>
	      <m:apply>
		<m:ci type="fn">X</m:ci>
		<m:ci>k</m:ci>
	      </m:apply>
	      <m:apply>
		<m:sum/>
		<m:bvar>
		  <m:ci>n</m:ci>
		</m:bvar>
		<m:uplimit>
		  <m:apply>
		    <m:minus/>
		    <m:ci>N</m:ci>
		    <m:cn>1</m:cn>
		  </m:apply>
		</m:uplimit>
		<m:lowlimit>
		  <m:cn>0</m:cn>
		</m:lowlimit>
		<m:apply>
		  <m:times/>
		  <m:apply>
		    <m:ci type="fn">x</m:ci>
		    <m:ci>n</m:ci>
		  </m:apply>
		  <m:ci>
		    <m:msubsup>
		      <m:mi>W</m:mi>
		      <m:mi>N</m:mi>
		      <m:mrow>
			<m:mi>n</m:mi>
			<m:mi>k</m:mi>
		      </m:mrow>
		    </m:msubsup>
		  </m:ci>
		</m:apply>
	      </m:apply>
	      <m:apply>
		  <m:sum/>
		  <m:bvar>
		    <m:ci>
		      <m:msub>
			<m:mi>n</m:mi>
			<m:mn>1</m:mn>
		      </m:msub>
		    </m:ci>
		  </m:bvar>
		  <m:uplimit>
		    <m:cn>1</m:cn>
		  </m:uplimit>
		  <m:lowlimit>
		    <m:cn>0</m:cn>
		  </m:lowlimit>
		  <m:apply>
		    <m:sum/>
		    <m:bvar>
		      <m:ci>
			<m:msub>
			  <m:mi>n</m:mi>
			  <m:mn>2</m:mn>
			</m:msub>
		      </m:ci>
		    </m:bvar>
		    <m:uplimit>
		      <m:apply>
			<m:minus/>
			<m:apply>
			  <m:divide/>
			  <m:ci>N</m:ci>
			  <m:cn>2</m:cn>
			</m:apply>
			<m:cn>1</m:cn>
		      </m:apply>
		    </m:uplimit>
		    <m:lowlimit>
		      <m:cn>0</m:cn>
		    </m:lowlimit>
		    <m:apply>
		      <m:times/>
		      <m:apply>
			<m:ci type="fn">x</m:ci>
			<m:apply>
			  <m:plus/>
			  <m:ci>
			    <m:msub>
			      <m:mi>n</m:mi>
			      <m:mn>1</m:mn>
			    </m:msub>
			  </m:ci>
			  <m:apply>
			    <m:times/>
			    <m:cn>2</m:cn>
			    <m:ci>
			      <m:msub>
				<m:mi>n</m:mi>
				<m:mn>2</m:mn>
			      </m:msub>
			    </m:ci>
			  </m:apply>
			</m:apply>
		      </m:apply>
		      <m:ci>
			<m:msubsup>
			  <m:mi>W</m:mi>
			  <m:mi>N</m:mi>
			  <m:mrow>
			    <m:mo>(</m:mo>
			    <m:msub>
			      <m:mi>n</m:mi>
			      <m:mn>1</m:mn>
			    </m:msub>
			    <m:mo>+</m:mo>
			    <m:mn>2</m:mn>
			    <m:msub>
			      <m:mi>n</m:mi>
			      <m:mn>2</m:mn>
			    </m:msub>
			    <m:mo>)</m:mo>
			    <m:mi>k</m:mi>
			  </m:mrow>
			</m:msubsup>
		      </m:ci>
		    </m:apply>
		  </m:apply>
		</m:apply>
	    </m:apply>
	  </m:math>
	  Also, let 
	  <m:math>
	    <m:apply>
	      <m:eq/>
	      <m:ci>k</m:ci>
	      <m:apply>
		<m:plus/>
		<m:apply>
		  <m:times/>
		  <m:apply>
		    <m:divide/>
		    <m:ci>N</m:ci>
		    <m:cn>2</m:cn>
		  </m:apply>
		  <m:ci>
		    <m:msub>
		      <m:mi>k</m:mi>
		      <m:mn>1</m:mn>
		    </m:msub>
		  </m:ci>
		</m:apply>
		<m:ci>
		  <m:msub>
		    <m:mi>k</m:mi>
		    <m:mn>2</m:mn>
		  </m:msub>
		</m:ci>
	      </m:apply>
	    </m:apply>
	  </m:math>:
	  <m:math>
	    <m:apply>
	      <m:eq/>
	      <m:ci>
		<m:msub>
		  <m:mi>k</m:mi>
		  <m:mn>1</m:mn>
		</m:msub>
	      </m:ci>
	      <m:list>
		<m:cn>0</m:cn>
		<m:cn>1</m:cn>
	      </m:list>
	    </m:apply>
	  </m:math>:
	  <m:math>
	    <m:apply>
	      <m:eq/>
	      <m:ci>
		<m:msub>
		  <m:mi>k</m:mi>
		  <m:mn>2</m:mn>
		</m:msub>
	      </m:ci>
	      <m:list>
		<m:cn>0</m:cn>
		<m:cn>1</m:cn>
		<m:cn>2</m:cn>
		<m:ci>…</m:ci>
	      	<m:apply>
		  <m:minus/>
		  <m:apply>
		    <m:divide/>
		    <m:ci>N</m:ci>
		    <m:cn>2</m:cn>
		  </m:apply>
		  <m:cn>1</m:cn>
		</m:apply>
	      </m:list>
	    </m:apply>
	  </m:math>
	  <note>As long as there is a one-to-one correspondence
	  between the original indices
	    <m:math>
	      <m:apply>
		<m:eq/>
		<m:list>
		  <m:ci>n</m:ci>
		  <m:ci>k</m:ci>
		</m:list>
		<m:list>
		  <m:cn>0</m:cn>
		  <m:cn>1</m:cn>
		  <m:cn>2</m:cn>
		  <m:ci>…</m:ci>
		  <m:apply>
		    <m:minus/>
		    <m:ci>N</m:ci>
		    <m:cn>1</m:cn>
		  </m:apply>
		</m:list>
	      </m:apply>
	    </m:math> and the <m:math><m:ci>n</m:ci></m:math>,
	    <m:math><m:ci>k</m:ci></m:math> generated by the index
	    map, the computation is the <emphasis>same</emphasis>;
	    only the order in which the sums are done is changed.
	  </note>
	  Rewriting the <cnxn document="m12032" target="DFTequation">DFT</cnxn> formula in terms of index map
	  <m:math>
	    <m:apply>
	      <m:eq/>
	      <m:ci>n</m:ci>
	      <m:apply>
		<m:plus/>
		<m:ci>
		  <m:msub>
		    <m:mi>n</m:mi>
		    <m:mn>1</m:mn>
		  </m:msub>
		</m:ci>
		<m:apply>
		  <m:times/>
		  <m:cn>2</m:cn>
		  <m:ci>
		    <m:msub>
		      <m:mi>n</m:mi>
		      <m:mn>2</m:mn>
		    </m:msub>
		  </m:ci>
		</m:apply>
	      </m:apply>
	    </m:apply>
	  </m:math>,
	  <m:math>
	    <m:apply>
	      <m:eq/>
	      <m:ci>k</m:ci>
	      <m:apply>
		<m:plus/>
		<m:apply>
		  <m:times/>
		  <m:apply>
		    <m:divide/>
		    <m:ci>N</m:ci>
		    <m:cn>2</m:cn>
		  </m:apply>
		  <m:ci>
		    <m:msub>
		      <m:mi>k</m:mi>
		      <m:mn>1</m:mn>
		    </m:msub>
		  </m:ci>
		</m:apply>
		<m:ci>
		  <m:msub>
		    <m:mi>k</m:mi>
		    <m:mn>2</m:mn>
		  </m:msub>
		</m:ci>
	      </m:apply>
	    </m:apply>
	  </m:math>:
	</para>
	<equation id="eq2">
	  <m:math>
	    <m:apply>
	      <m:eq/>
	      <m:apply>
		<m:ci type="fn">X</m:ci>
		<m:ci>k</m:ci>
	      </m:apply>
	      <m:apply>
		<m:ci type="fn">X</m:ci>
		<m:apply>
		  <m:plus/>
		  <m:apply>
		    <m:times/>
		    <m:apply>
		      <m:divide/>
		      <m:ci>N</m:ci>
		      <m:cn>2</m:cn>
		    </m:apply>
		    <m:ci>
		      <m:msub>
			<m:mi>k</m:mi>
			<m:mn>1</m:mn>
		      </m:msub>
		    </m:ci>
		  </m:apply>
		  <m:ci>
		    <m:msub>
		      <m:mi>k</m:mi>
		      <m:mn>2</m:mn>
		    </m:msub>
		  </m:ci>
		</m:apply>
	      </m:apply>
	      <m:apply>
		<m:sum/>
		<m:bvar>
		  <m:ci>n</m:ci>
		</m:bvar>
		<m:uplimit>
		  <m:apply>
		    <m:minus/>
		    <m:ci>N</m:ci>
		    <m:cn>1</m:cn>
		  </m:apply>
		</m:uplimit>
		<m:lowlimit>
		  <m:cn>0</m:cn>
		</m:lowlimit>
		<m:apply>
		  <m:times/>
		  <m:apply>
		    <m:ci type="fn">x</m:ci>
		    <m:ci>n</m:ci>
		  </m:apply>
		  <m:ci>
		    <m:msubsup>
		      <m:mi>W</m:mi>
		      <m:mi>N</m:mi>
		      <m:mrow>
			<m:mi>n</m:mi>
			<m:mo>(</m:mo>
			<m:mfrac>
			  <m:mi>N</m:mi>
			  <m:mn>2</m:mn>
			</m:mfrac>
			<m:msub>
			  <m:mi>k</m:mi>
			  <m:mn>2</m:mn>
			</m:msub>
			<m:mo>+</m:mo>
			<m:msub>
			  <m:mi>k</m:mi>
			  <m:mn>2</m:mn>
			</m:msub>
			<m:mo>)</m:mo>
		      </m:mrow>
		    </m:msubsup>
		  </m:ci>
		</m:apply>
	      </m:apply>
	      <m:apply>
		<m:sum/>
		<m:bvar>
		  <m:ci>
		    <m:msub>
		      <m:mi>n</m:mi>
		      <m:mn>1</m:mn>
		    </m:msub>
		  </m:ci>
		</m:bvar>
		<m:uplimit>
		  <m:cn>1</m:cn>
		</m:uplimit>
		<m:lowlimit>
		  <m:cn>0</m:cn>
		</m:lowlimit>
		<m:apply>
		  <m:sum/>
		  <m:bvar>
		    <m:ci>
		      <m:msub>
			<m:mi>n</m:mi>
			<m:mn>2</m:mn>
		      </m:msub>
		    </m:ci>
		  </m:bvar>
		  <m:uplimit>
		    <m:apply>
		      <m:minus/>
		      <m:apply>
			<m:divide/>
			<m:ci>N</m:ci>
			<m:cn>2</m:cn>
		      </m:apply>
		      <m:cn>1</m:cn>
		    </m:apply>
		  </m:uplimit>
		  <m:lowlimit>
		    <m:cn>0</m:cn>
		  </m:lowlimit>
		  <m:apply>
		    <m:times/>
		    <m:apply>
		      <m:ci type="fn">x</m:ci>
		      <m:apply>
			<m:plus/>
			<m:ci>
			  <m:msub>
			    <m:mi>n</m:mi>
			    <m:mn>1</m:mn>
			  </m:msub>
			</m:ci>
			<m:apply>
			  <m:times/>
			  <m:ci>2</m:ci>
			  <m:ci>
			    <m:msub>
			      <m:mi>n</m:mi>
			      <m:mn>2</m:mn>
			    </m:msub>
			  </m:ci>
			</m:apply>
		      </m:apply>
		    </m:apply>
		    <m:ci>
		      <m:msubsup>
			<m:mi>W</m:mi>
			<m:mi>N</m:mi>
			<m:mrow>
			  <m:mo>(</m:mo>
			  <m:msub>
			    <m:mi>n</m:mi>
			    <m:mn>1</m:mn>
			  </m:msub>
			  <m:mo>+</m:mo>
			  <m:msub>
			    <m:mi>n</m:mi>
			    <m:mn>2</m:mn>
			  </m:msub>
			  <m:mo>)</m:mo>
			  <m:mo>(</m:mo>
			  <m:mfrac>
			    <m:mi>N</m:mi>
			    <m:mn>2</m:mn>
			  </m:mfrac>
			  <m:msub>
			    <m:mi>k</m:mi>
			    <m:mn>1</m:mn>
			  </m:msub>
			  <m:mo>+</m:mo>
			  <m:msub>
			    <m:mi>k</m:mi>
			    <m:mn>2</m:mn>
			  </m:msub>
			</m:mrow>
		      </m:msubsup>
		    </m:ci>
		  </m:apply>
		</m:apply>
	      </m:apply>
	      <m:apply>
		<m:sum/>
		<m:bvar>
		  <m:ci>
		    <m:msub>
		      <m:mi>n</m:mi>
		      <m:mn>1</m:mn>
		    </m:msub>
		  </m:ci>
		</m:bvar>
		<m:uplimit>
		  <m:cn>1</m:cn>
		</m:uplimit>
		<m:lowlimit>
		  <m:cn>0</m:cn>
		</m:lowlimit>
		<m:apply>
		  <m:sum/>
		  <m:bvar>
		    <m:ci>
		      <m:msub>
			<m:mi>n</m:mi>
			<m:mn>2</m:mn>
		      </m:msub>
		    </m:ci>
		  </m:bvar>
		  <m:uplimit>
		    <m:apply>
		      <m:minus/>
		      <m:apply>
			<m:divide/>
			<m:ci>N</m:ci>
			<m:cn>2</m:cn>
		      </m:apply>
		      <m:cn>1</m:cn>
		    </m:apply>
		  </m:uplimit>
		  <m:lowlimit>
		    <m:cn>0</m:cn>
		  </m:lowlimit>
		  <m:apply>
		    <m:times/>
		    <m:apply>
		      <m:ci type="fn">x</m:ci>
		      <m:list>
			<m:ci>
			  <m:msub>
			    <m:mi>n</m:mi>
			    <m:mn>1</m:mn>
			  </m:msub>
			</m:ci>
			<m:ci>
			  <m:msub>
			    <m:mi>n</m:mi>
			    <m:mn>2</m:mn>
			  </m:msub>
			</m:ci>
		      </m:list>
		    </m:apply>
		    <m:ci>
		      <m:msubsup>
			<m:mi>W</m:mi>
			<m:mi>N</m:mi>
			<m:mrow>
			  <m:mfrac>
			    <m:mi>N</m:mi>
			    <m:mn>2</m:mn>
			  </m:mfrac>
			  <m:msub>
			    <m:mi>n</m:mi>
			    <m:mn>1</m:mn>
			  </m:msub>
			  <m:msub>
			    <m:mi>k</m:mi>
			    <m:mn>2</m:mn>
			  </m:msub>
			</m:mrow>
		      </m:msubsup>
		    </m:ci>
		    <m:ci>
		      <m:msubsup>
			<m:mi>W</m:mi>
			<m:mi>N</m:mi>
			<m:mrow>
			  <m:msub>
			    <m:mi>n</m:mi>
			    <m:mn>1</m:mn>
			  </m:msub>
			  <m:msub>
			    <m:mi>k</m:mi>
			    <m:mn>2</m:mn>
			  </m:msub>
			</m:mrow>
		      </m:msubsup>
		    </m:ci>
		    <m:ci>
		      <m:msubsup>
			<m:mi>W</m:mi>
			<m:mi>N</m:mi>
			<m:mrow>
			  <m:mi>N</m:mi>
			  <m:msub>
			    <m:mi>n</m:mi>
			    <m:mn>2</m:mn>
			  </m:msub>
			  <m:msub>
			    <m:mi>k</m:mi>
			    <m:mn>1</m:mn>
			  </m:msub>
			</m:mrow>
		      </m:msubsup>
		    </m:ci>
		    <m:ci>
		      <m:msubsup>
			<m:mi>W</m:mi>
			<m:mi>N</m:mi>
			<m:mrow>
			  <m:mn>2</m:mn>
			  <m:msub>
			    <m:mi>n</m:mi>
			    <m:mn>2</m:mn>
			  </m:msub>
			  <m:msub>
			    <m:mi>k</m:mi>
			    <m:mn>2</m:mn>
			  </m:msub>
			</m:mrow>
		      </m:msubsup>
		    </m:ci>
		  </m:apply>
		</m:apply>
	      </m:apply>
		<m:apply>
		<m:sum/>
		<m:bvar>
		  <m:ci>
		    <m:msub>
		      <m:mi>n</m:mi>
		      <m:mn>1</m:mn>
		    </m:msub>
		  </m:ci>
		</m:bvar>
		<m:uplimit>
		  <m:cn>1</m:cn>
		</m:uplimit>
		<m:lowlimit>
		  <m:cn>0</m:cn>
		</m:lowlimit>
		<m:apply>
		  <m:sum/>
		  <m:bvar>
		    <m:ci>
		      <m:msub>
			<m:mi>n</m:mi>
			<m:mn>2</m:mn>
		      </m:msub>
		    </m:ci>
		  </m:bvar>
		  <m:uplimit>
		    <m:apply>
		      <m:minus/>
		      <m:apply>
			<m:divide/>
			<m:ci>N</m:ci>
			<m:cn>2</m:cn>
		      </m:apply>
		      <m:cn>1</m:cn>
		    </m:apply>
		  </m:uplimit>
		  <m:lowlimit>
		    <m:cn>0</m:cn>
		  </m:lowlimit>
		  <m:apply>
		    <m:times/>
		    <m:apply>
		      <m:ci type="fn">x</m:ci>
		      <m:list>
			<m:ci>
			  <m:msub>
			    <m:mi>n</m:mi>
			    <m:mn>1</m:mn>
			  </m:msub>
			</m:ci>
			<m:ci>
			  <m:msub>
			    <m:mi>n</m:mi>
			    <m:mn>2</m:mn>
			  </m:msub>
			</m:ci>
		      </m:list>
		    </m:apply>
		    <m:ci>
		      <m:msubsup>
			<m:mi>W</m:mi>
			<m:mn>2</m:mn>
			<m:mrow>
			  <m:msub>
			    <m:mi>n</m:mi>
			    <m:mn>1</m:mn>
			  </m:msub>
			  <m:msub>
			    <m:mi>k</m:mi>
			    <m:mn>2</m:mn>
			  </m:msub>
			</m:mrow>
		      </m:msubsup>
		    </m:ci>
		    <m:ci>
		      <m:msubsup>
			<m:mi>W</m:mi>
			<m:mi>N</m:mi>
			<m:mrow>
			  <m:msub>
			    <m:mi>n</m:mi>
			    <m:mn>1</m:mn>
			  </m:msub>
			  <m:msub>
			    <m:mi>k</m:mi>
			    <m:mn>2</m:mn>
			  </m:msub>
			</m:mrow>
		      </m:msubsup>
		    </m:ci>
		    <m:cn>1</m:cn>
		    <m:ci>
		      <m:msubsup>
			<m:mi>W</m:mi>
			<m:mfrac>
			  <m:mi>N</m:mi>
			  <m:mn>2</m:mn>
			</m:mfrac>
			<m:mrow>
			  <m:msub>
			    <m:mi>n</m:mi>
			    <m:mn>2</m:mn>
			  </m:msub>
			  <m:msub>
			    <m:mi>k</m:mi>
			    <m:mn>2</m:mn>
			  </m:msub>
			</m:mrow>
		      </m:msubsup>
		    </m:ci>
		  </m:apply>
		</m:apply>
	      </m:apply>	
	      <m:apply>
		<m:sum/>
		<m:bvar>
		  <m:ci>
		    <m:msub>
		      <m:mi>n</m:mi>
		      <m:mn>1</m:mn>
		    </m:msub>
		  </m:ci>
		</m:bvar>
		<m:uplimit>
		  <m:cn>1</m:cn>
		</m:uplimit>
		<m:lowlimit>
		  <m:cn>0</m:cn>
		</m:lowlimit>
		<m:apply>
		  <m:times/>
		  <m:ci>
		    <m:msubsup>
		      <m:mi>W</m:mi>
		      <m:mn>2</m:mn>
		      <m:mrow>
			<m:msub>
			  <m:mi>n</m:mi>
			  <m:mn>1</m:mn>
			</m:msub>
			<m:msub>
			  <m:mi>k</m:mi>
			  <m:mn>2</m:mn>
			</m:msub>
		      </m:mrow>
		    </m:msubsup>
		  </m:ci>
		  <m:apply>
		    <m:times/>
		    <m:ci>
		      <m:msubsup>
			<m:mi>W</m:mi>
			<m:mi>N</m:mi>
			<m:mrow>
			  <m:msub>
			    <m:mi>n</m:mi>
			    <m:mn>1</m:mn>
			  </m:msub>
			  <m:msub>
			    <m:mi>k</m:mi>
			    <m:mn>2</m:mn>
			  </m:msub>
			</m:mrow>
		      </m:msubsup>
		    </m:ci>
		    <m:apply>
		      <m:sum/>
		      <m:bvar>
			<m:ci>
			  <m:msub>
			    <m:mi>n</m:mi>
			    <m:mn>2</m:mn>
			  </m:msub>
			</m:ci>
		      </m:bvar>
		      <m:uplimit>
			<m:minus/>
			<m:apply>
			  <m:divide/>
			  <m:ci>N</m:ci>
			  <m:cn>2</m:cn>
			</m:apply>
			<m:cn>1</m:cn>
		      </m:uplimit>
		      <m:lowlimit>
			<m:cn>0</m:cn>
		      </m:lowlimit>
		      <m:apply>
			<m:times/>
			<m:apply>
			  <m:ci type="fn">x</m:ci>
			  <m:list>
			    <m:ci>
			      <m:msub>
				<m:mi>n</m:mi>
				<m:mn>1</m:mn>
			      </m:msub>
			    </m:ci>
			    <m:ci>
			      <m:msub>
				<m:mi>n</m:mi>
				<m:mn>2</m:mn>
			      </m:msub>
			    </m:ci>
			  </m:list>
			</m:apply>
			<m:ci>
			  <m:msubsup>
			    <m:mi>W</m:mi>
			    <m:mfrac>
			      <m:mi>N</m:mi>
			      <m:mn>2</m:mn>
			    </m:mfrac>
			    <m:mrow>
			      <m:msub>
				<m:mi>n</m:mi>
				<m:mn>2</m:mn>
			      </m:msub>
			      <m:msub>
				<m:mi>k</m:mi>
				<m:mn>2</m:mn>
			      </m:msub>
			    </m:mrow>
			  </m:msubsup>
			</m:ci>
		      </m:apply>
		    </m:apply>
		  </m:apply>
		</m:apply>
	      </m:apply>      
	    </m:apply>
	  </m:math>
	</equation>
	<note>Key to FFT is choosing index map so that one of the
	cross-terms disappears!</note>
      </section>
      <exercise id="exer1">
	<problem>
	  <para id="para5">
	    What is an index map for a <cnxn document="m12027">radix-4</cnxn> DIT algorithm?
	  </para>
	</problem>
      </exercise>
      <exercise id="exer2">
	<problem>
	  <para id="para6">
	    What is an index map for a <cnxn document="m12027">radix-4</cnxn> DIF algortihm?
	  </para>
	</problem>
      </exercise>
      <exercise id="exer3">
	<problem>
	  <para id="para7">
	    What is an index map for a radix-3 DIT algorithm?
	    (<m:math><m:ci>N</m:ci></m:math> a multiple of 3)
	  </para>
	</problem>
      </exercise>
      <para id="para8">
	For arbitrary composite 
	<m:math>
	  <m:apply>
	    <m:eq/>
	    <m:cn>N</m:cn>
	    <m:apply>
	      <m:times/>
	      <m:ci>
		<m:msub>
		  <m:mi>N</m:mi>
		  <m:mn>1</m:mn>
		</m:msub>
	      </m:ci>
	      <m:ci>
		<m:msub>
		  <m:mi>N</m:mi>
		  <m:mn>2</m:mn>
		</m:msub>
	      </m:ci>
	    </m:apply>
	  </m:apply>
	</m:math>, we can define an index map
	<m:math display="block">
	  <m:apply>
	    <m:eq/>
	    <m:ci>n</m:ci>
	    <m:apply>
	      <m:plus/>
	      <m:ci>
		<m:msub>
		  <m:mi>n</m:mi>
		  <m:mn>1</m:mn>
		</m:msub>
	      </m:ci>
	      <m:apply>
		<m:times/>
		<m:ci>
		  <m:msub>
		    <m:mi>N</m:mi>
		    <m:mn>1</m:mn>
		  </m:msub>
		</m:ci>
		<m:ci>
		  <m:msub>
		    <m:mi>n</m:mi>
		    <m:mn>2</m:mn>
		  </m:msub>
		</m:ci>
	      </m:apply>
	    </m:apply>
	  </m:apply>
	</m:math>
	<m:math display="block">
	  <m:apply>
	    <m:eq/>
	    <m:ci>k</m:ci>
	    <m:apply>
	      <m:plus/>
	      <m:apply>
		<m:times/>
		<m:ci>
		  <m:msub>
		    <m:mi>N</m:mi>
		    <m:mn>2</m:mn>
		  </m:msub>
		</m:ci>
		<m:ci>
		  <m:msub>
		    <m:mi>k</m:mi>
		    <m:mn>1</m:mn>
		  </m:msub>
		</m:ci>
	      </m:apply>
	      <m:ci>
		<m:msub>
		  <m:mi>k</m:mi>
		  <m:mn>2</m:mn>
		</m:msub>
	      </m:ci>
	    </m:apply>
	  </m:apply>
	</m:math>
	<m:math display="block">
	  <m:apply>
	    <m:eq/>
	    <m:ci>
	      <m:msub>
		<m:mi>n</m:mi>
		<m:mn>1</m:mn>
	      </m:msub>
	    </m:ci>
	    <m:list>
	      <m:cn>0</m:cn>
	      <m:cn>1</m:cn>
	      <m:cn>2</m:cn>
	      <m:ci>…</m:ci>
	      <m:apply>
		<m:minus/>
		<m:ci>
		  <m:msub>
		    <m:mi>N</m:mi>
		    <m:mn>1</m:mn>
		  </m:msub>
		</m:ci>
		<m:cn>1</m:cn>
	      </m:apply>
	    </m:list>
	  </m:apply>
	</m:math>
	<m:math display="block">
	  <m:apply>
	    <m:eq/>
	    <m:ci>
	      <m:msub>
		<m:mi>k</m:mi>
		<m:mn>1</m:mn>
	      </m:msub>
	    </m:ci>
	    <m:list>
	      <m:cn>0</m:cn>
	      <m:cn>1</m:cn>
	      <m:cn>2</m:cn>
	      <m:ci>…</m:ci>
	      <m:apply>
		<m:minus/>
		<m:ci>
		  <m:msub>
		    <m:mi>N</m:mi>
		    <m:mn>1</m:mn>
		  </m:msub>
		</m:ci>
		<m:cn>1</m:cn>
	      </m:apply>
	    </m:list>
	  </m:apply>
	</m:math>
	<m:math display="block">
	  <m:apply>
	    <m:eq/>
	    <m:ci>
	      <m:msub>
		<m:mi>n</m:mi>
		<m:mn>2</m:mn>
	      </m:msub>
	    </m:ci>
	    <m:list>
	      <m:cn>0</m:cn>
	      <m:cn>1</m:cn>
	      <m:cn>2</m:cn>
	      <m:ci>…</m:ci>
	      <m:apply>
		<m:minus/>
		<m:ci>
		  <m:msub>
		    <m:mi>N</m:mi>
		    <m:mn>2</m:mn>
		  </m:msub>
		</m:ci>
		<m:cn>1</m:cn>
	      </m:apply>
	    </m:list>
	  </m:apply>
	</m:math>
	<m:math display="block">
	  <m:apply>
	    <m:eq/>
	    <m:ci>
	      <m:msub>
		<m:mi>k</m:mi>
		<m:mn>2</m:mn>
	      </m:msub>
	    </m:ci>
	    <m:list>
	      <m:cn>0</m:cn>
	      <m:cn>1</m:cn>
	      <m:cn>2</m:cn>
	      <m:ci>…</m:ci>
	      <m:apply>
		<m:minus/>
		<m:ci>
		  <m:msub>
		    <m:mi>N</m:mi>
		    <m:mn>2</m:mn>
		  </m:msub>
		</m:ci>
		<m:cn>1</m:cn>
	      </m:apply>
	    </m:list>
	  </m:apply>
	</m:math>
      </para>
      <equation id="eq3">
	<m:math>
	  <m:apply>
	    <m:eq/>
	    <m:apply>
	      <m:ci type="fn">X</m:ci>
	      <m:ci>k</m:ci>
	    </m:apply>
	    <m:apply>
	      <m:ci type="fn">X</m:ci>
	      <m:ci>
		<m:msub>
		  <m:mi>k</m:mi>
		  <m:mn>1</m:mn>
		</m:msub>
	      </m:ci>
	      <m:ci>
		<m:msub>
		  <m:mi>k</m:mi>
		  <m:mn>2</m:mn>
		</m:msub>
	      </m:ci>
	    </m:apply>
	    <m:apply>
	      <m:sum/>
	      <m:bvar>
		<m:ci>
		  <m:msub>
		    <m:mi>n</m:mi>
		    <m:mn>1</m:mn>
		  </m:msub>
		</m:ci>
	      </m:bvar>
	      <m:uplimit>
		<m:apply>
		  <m:minus/>
		  <m:ci>
		    <m:msub>
		      <m:mi>N</m:mi>
		      <m:mn>1</m:mn>
		    </m:msub>
		  </m:ci>
		  <m:cn>1</m:cn>
		</m:apply>
	      </m:uplimit>
	      <m:lowlimit>
		<m:cn>0</m:cn>
	      </m:lowlimit>
	      <m:apply>
		<m:sum/>
		<m:bvar>
		  <m:ci>
		    <m:msub>
		      <m:mi>n</m:mi>
		      <m:mn>2</m:mn>
		    </m:msub>
		  </m:ci>
		</m:bvar>
		<m:uplimit>
		  <m:apply>
		    <m:minus/>
		    <m:ci>
		      <m:msub>
			<m:mi>N</m:mi>
			<m:mn>2</m:mn>
		      </m:msub>
		    </m:ci>
		    <m:cn>1</m:cn>
		  </m:apply>
		</m:uplimit>
		<m:lowlimit>
		  <m:cn>0</m:cn>
		</m:lowlimit>
		<m:apply>
		  <m:times/>
		  <m:apply>
		    <m:ci type="fn">x</m:ci>
		    <m:ci>
		      <m:msub>
			<m:mi>n</m:mi>
			<m:mn>1</m:mn>
		      </m:msub>
		    </m:ci>
		    <m:ci>
		      <m:msub>
			<m:mi>n</m:mi>
			<m:mn>2</m:mn>
		      </m:msub>
		    </m:ci>
		  </m:apply>
		  <m:ci>
		    <m:msubsup>
		      <m:mi>W</m:mi>
		      <m:mi>N</m:mi>
		      <m:mrow>
			<m:msub>
			  <m:mi>N</m:mi>
			  <m:mn>2</m:mn>
			</m:msub>
			<m:msub>
			  <m:mi>n</m:mi>
			  <m:mn>1</m:mn>
			</m:msub>
			<m:msub>
			  <m:mi>k</m:mi>
			  <m:mn>1</m:mn>
			</m:msub>
		      </m:mrow>
		    </m:msubsup>
		  </m:ci>
		  <m:ci>
		    <m:msubsup>
		      <m:mi>W</m:mi>
		      <m:mi>N</m:mi>
		      <m:mrow>
			<m:msub>
			  <m:mi>n</m:mi>
			  <m:mn>1</m:mn>
			</m:msub>
			<m:msub>
			  <m:mi>k</m:mi>
			  <m:mn>2</m:mn>
			</m:msub>
		      </m:mrow>
		    </m:msubsup>
		  </m:ci>
		  <m:ci>
		    <m:msubsup>
		      <m:mi>W</m:mi>
		      <m:mi>N</m:mi>
		      <m:mrow>
			<m:mi>N</m:mi>
			<m:msub>
			  <m:mi>k</m:mi>
			  <m:mn>1</m:mn>
			</m:msub>
			<m:msub>
			  <m:mi>n</m:mi>
			  <m:mn>2</m:mn>
			</m:msub>
		      </m:mrow>
		    </m:msubsup>
		  </m:ci>
		  <m:ci>
		    <m:msubsup>
		      <m:mi>W</m:mi>
		      <m:mi>N</m:mi>
		      <m:mrow>
			<m:msub>
			  <m:mi>N</m:mi>
			  <m:mn>1</m:mn>
			</m:msub>
			<m:msub>
			  <m:mi>n</m:mi>
			  <m:mn>2</m:mn>
			</m:msub>
			<m:msub>
			  <m:mi>k</m:mi>
			  <m:mn>2</m:mn>
			</m:msub>
		      </m:mrow>
		    </m:msubsup>
		  </m:ci>
		</m:apply>
	      </m:apply>
	    </m:apply>
	    <m:apply>
	      <m:sum/>
	      <m:bvar>
		<m:ci>
		  <m:msub>
		    <m:mi>n</m:mi>
		    <m:mn>1</m:mn>
		  </m:msub>
		</m:ci>
	      </m:bvar>
	      <m:uplimit>
		<m:apply>
		  <m:minus/>
		  <m:ci>
		    <m:msub>
		      <m:mi>N</m:mi>
		      <m:mn>1</m:mn>
		    </m:msub>
		  </m:ci>
		  <m:cn>1</m:cn>
		</m:apply>
	      </m:uplimit>
	      <m:lowlimit>
		<m:cn>0</m:cn>
	      </m:lowlimit>
	      <m:apply>
		<m:sum/>
		<m:bvar>
		  <m:ci>
		    <m:msub>
		      <m:mi>n</m:mi>
		      <m:mn>2</m:mn>
		    </m:msub>
		  </m:ci>
		</m:bvar>
		<m:uplimit>
		  <m:apply>
		    <m:minus/>
		    <m:ci>
		      <m:msub>
			<m:mi>N</m:mi>
			<m:mn>2</m:mn>
		      </m:msub>
		    </m:ci>
		    <m:cn>1</m:cn>
		  </m:apply>
		</m:uplimit>
		<m:lowlimit>
		  <m:cn>0</m:cn>
		</m:lowlimit>
		<m:apply>
		  <m:times/>
		  <m:apply>
		    <m:ci type="fn">x</m:ci>
		    <m:ci>
		      <m:msub>
			<m:mi>n</m:mi>
			<m:mn>1</m:mn>
		      </m:msub>
		    </m:ci>
		    <m:ci>
		      <m:msub>
			<m:mi>n</m:mi>
			<m:mn>2</m:mn>
		      </m:msub>
		    </m:ci>
		  </m:apply>
		  <m:ci>
		    <m:msubsup>
		      <m:mi>W</m:mi>
		      <m:msub>
			<m:mi>N</m:mi>
			<m:mn>1</m:mn>
		      </m:msub>
		      <m:mrow>
			<m:msub>
			  <m:mi>n</m:mi>
			  <m:mn>1</m:mn>
			</m:msub>
			<m:msub>
			  <m:mi>k</m:mi>
			  <m:mn>1</m:mn>
			</m:msub>
		      </m:mrow>
		    </m:msubsup>
		  </m:ci>
		  <m:ci>
		    <m:msubsup>
		      <m:mi>W</m:mi>
		      <m:mi>N</m:mi>
		      <m:mrow>
			<m:msub>
			  <m:mi>n</m:mi>
			  <m:mn>1</m:mn>
			</m:msub>
			<m:msub>
			  <m:mi>k</m:mi>
			  <m:mn>2</m:mn>
			</m:msub>
		      </m:mrow>
		    </m:msubsup>
		  </m:ci>
		  <m:cn>1</m:cn>
		  <m:ci>
		    <m:msubsup>
		      <m:mi>W</m:mi>
		      <m:msub>
			<m:mi>N</m:mi>
			<m:mn>2</m:mn>
		      </m:msub>
		      <m:mrow>
			<m:msub>
			  <m:mi>n</m:mi>
			  <m:mn>2</m:mn>
			</m:msub>
			<m:msub>
			  <m:mi>k</m:mi>
			  <m:mn>2</m:mn>
			</m:msub>
		      </m:mrow>
		    </m:msubsup>
		  </m:ci>
		</m:apply>
	      </m:apply>
	    </m:apply>
	    <m:apply>
	      <m:ci type="fn" class="discrete">
		<m:msub>
		  <m:mi>DFT</m:mi>
		  <m:mrow>
		    <m:msub>
		      <m:mi>n</m:mi>
		      <m:mn>1</m:mn>
		    </m:msub>
		    <m:mo>,</m:mo>
		    <m:msub>
		      <m:mi>N</m:mi>
		      <m:mn>1</m:mn>
		    </m:msub>
		  </m:mrow>
		</m:msub>
	      </m:ci>
	      <m:apply>
		<m:times/>
		<m:ci>
		  <m:msubsup>
		    <m:mi>W</m:mi>
		    <m:mi>N</m:mi>
		    <m:mrow>
		      <m:msub>
			<m:mi>n</m:mi>
			<m:mn>1</m:mn>
		      </m:msub>
		      <m:msub>
			<m:mi>k</m:mi>
			<m:mn>2</m:mn>
		      </m:msub>
		    </m:mrow>
		  </m:msubsup>
		</m:ci>
		<m:apply>
		  <m:ci type="fn" class="discrete">
		    <m:msub>
		      <m:mi>DFT</m:mi>
		      <m:mrow>
			<m:msub>
			  <m:mi>n</m:mi>
			  <m:mn>2</m:mn>
			</m:msub>
			<m:mo>,</m:mo>
			<m:msub>
			  <m:mi>N</m:mi>
			  <m:mn>2</m:mn>
			</m:msub>
		      </m:mrow>
		    </m:msub>
		  </m:ci>
		  <m:apply>
		    <m:ci type="fn">x</m:ci>
		    <m:ci>
		      <m:msub>
			<m:mi>n</m:mi>
			<m:mn>1</m:mn>
		      </m:msub>
		    </m:ci>
		    <m:ci>
		      <m:msub>
			<m:mi>n</m:mi>
			<m:mn>2</m:mn>
		      </m:msub>
		    </m:ci>
		  </m:apply>
		</m:apply>
	      </m:apply>
	    </m:apply>
	  </m:apply>
	</m:math>
      </equation>
      <list id="list13" type="bulleted">
	<name>Computational cost in multipliesl "Common Factor
	Algorithm (CFA)"</name>
	<item>
	  <m:math>
	    <m:ci>
	      <m:msub>
		<m:mi>N</m:mi>
		<m:mn>1</m:mn>
	      </m:msub>
	    </m:ci>
	  </m:math> 
	  length-<m:math>
	    <m:ci>
	      <m:msub>
		<m:mi>N</m:mi>
		<m:mn>2</m:mn>
	      </m:msub>
	    </m:ci>
	  </m:math> DFTs ⇒
	  <m:math>
	    <m:apply>
	      <m:times/>
	      <m:ci>
		<m:msub>
		  <m:mi>N</m:mi>
		  <m:mn>1</m:mn>
		</m:msub>
	      </m:ci>
	      <m:apply>
		<m:power/>
		<m:ci>
		  <m:msub>
		    <m:mi>N</m:mi>
		    <m:mn>2</m:mn>
		  </m:msub>
		</m:ci>
		<m:cn>2</m:cn>
	      </m:apply>
	    </m:apply>
	  </m:math>
	</item>
	<item>
	  <m:math>
	    <m:ci>N</m:ci>
	  </m:math> twiddle factors ⇒
	  <m:math>
	    <m:ci>N</m:ci>
	  </m:math>
	</item>
	<item>
	  <m:math>
	    <m:ci>
	      <m:msub>
		<m:mi>N</m:mi>
		<m:mn>2</m:mn>
	      </m:msub>
	    </m:ci>
	  </m:math> 
	  length-<m:math>
	    <m:ci>
	      <m:msub>
		<m:mi>N</m:mi>
		<m:mn>1</m:mn>
	      </m:msub>
	    </m:ci>
	  </m:math> DFTs ⇒
	  <m:math>
	    <m:apply>
	      <m:times/>
	      <m:ci>
		<m:msub>
		  <m:mi>N</m:mi>
		  <m:mn>2</m:mn>
		</m:msub>
	      </m:ci>
	      <m:apply>
		<m:power/>
		<m:ci>
		  <m:msub>
		    <m:mi>N</m:mi>
		    <m:mn>1</m:mn>
		  </m:msub>
		</m:ci>
		<m:cn>2</m:cn>
	      </m:apply>
	    </m:apply>
	  </m:math>
	</item>
	<item><name>Total</name>
	  <m:math>
	    <m:apply>
	      <m:eq/>
	      <m:apply>
		<m:plus/>
		<m:apply>
		  <m:times/>
		  <m:ci>
		    <m:msub>
		      <m:mi>N</m:mi>
		      <m:mn>1</m:mn>
		    </m:msub>
		  </m:ci>
		  <m:apply>
		    <m:power/>
		    <m:ci>
		      <m:msub>
			<m:mi>N</m:mi>
			<m:mn>2</m:mn>
		      </m:msub>
		    </m:ci>
		    <m:cn>2</m:cn>
		  </m:apply>
		</m:apply>
		<m:apply>
		  <m:times/>
		  <m:ci>
		    <m:msub>
		      <m:mi>N</m:mi>
		      <m:mn>1</m:mn>
		    </m:msub>
		  </m:ci>
		  <m:ci>
		    <m:msub>
		      <m:mi>N</m:mi>
		      <m:mn>2</m:mn>
		    </m:msub>
		  </m:ci>
		</m:apply>
		<m:apply>
		  <m:times/>
		  <m:ci>
		    <m:msub>
		      <m:mi>N</m:mi>
		      <m:mn>2</m:mn>
		    </m:msub>
		  </m:ci>
		  <m:apply>
		    <m:power/>
		    <m:ci>
		      <m:msub>
			<m:mi>N</m:mi>
			<m:mn>1</m:mn>
		      </m:msub>
		    </m:ci>
		    <m:cn>2</m:cn>
		  </m:apply>
		</m:apply>
	      </m:apply>
	      <m:apply>
		<m:times/>
		<m:ci>N</m:ci>
		<m:apply>
		  <m:plus/>
		  <m:ci>
		    <m:msub>
		      <m:mi>N</m:mi>
		      <m:mn>1</m:mn>
		    </m:msub>
		  </m:ci>
		  <m:ci>
		    <m:msub>
		      <m:mi>N</m:mi>
		      <m:mn>2</m:mn>
		    </m:msub>
		  </m:ci>
		  <m:cn>1</m:cn>
		</m:apply>
	      </m:apply>
	    </m:apply>
	  </m:math>
	</item>
      </list>
      <para id="para15">
	"Direct":
	<m:math>
	  <m:apply>
	    <m:eq/>
	    <m:apply>
	      <m:power/>
	      <m:ci>N</m:ci>
	      <m:cn>2</m:cn>
	    </m:apply>
	    <m:apply>
	      <m:times/>
	      <m:ci>N</m:ci>
	      <m:apply>
		<m:times/>
		<m:ci>
		  <m:msub>
		    <m:mi>N</m:mi>
		    <m:mn>1</m:mn>
		  </m:msub>
		</m:ci>
		<m:ci>
		  <m:msub>
		    <m:mi>N</m:mi>
		    <m:mn>2</m:mn>
		  </m:msub>
		</m:ci>
	      </m:apply>
	    </m:apply>
	  </m:apply>
	</m:math>
      </para>
      <example id="example1">
	<para id="para16">
	  <m:math display="block">
	    <m:apply>
	      <m:eq/>
	      <m:ci>
		<m:msub>
		  <m:mi>N</m:mi>
		  <m:mn>1</m:mn>
		</m:msub>
	      </m:ci>
	      <m:cn>16</m:cn>
	    </m:apply>
	  </m:math>
	  <m:math display="block">
	    <m:apply>
	      <m:eq/>
	      <m:ci>
		<m:msub>
		  <m:mi>N</m:mi>
		  <m:mn>2</m:mn>
		</m:msub>
	      </m:ci>
	      <m:cn>15</m:cn>
	    </m:apply>
	  </m:math>
	  <m:math display="block">
	    <m:apply>
	      <m:eq/>
	      <m:ci>N</m:ci>
	      <m:cn>240</m:cn>
	    </m:apply>
	  </m:math>
	  <m:math display="block">
	    <m:apply>
	      <m:eq/>
	      <m:mtext>direct</m:mtext>
	      <m:apply>
		<m:power/>
		<m:cn>240</m:cn>
		<m:cn>2</m:cn>
	      </m:apply>
	      <m:cn>57600</m:cn>
	    </m:apply>
	  </m:math>
	  <m:math display="block">
	    <m:apply>
	      <m:eq/>
	      <m:mtext>CFA</m:mtext>
	      <m:cn>7680</m:cn>
	    </m:apply>
	  </m:math>
	  Tremendous saving for <emphasis>any</emphasis> composite
	  <m:math><m:ci>N</m:ci></m:math>
	</para>
      </example>
      <figure id="fig1" orient="vertical">
	<name>Pictorial Representations</name>
	<subfigure>
	  <name>Emphasizes Multi-dimensional structure</name>
	  <media type="image/png" src="image1.png"/>
	</subfigure>
	<subfigure>
	  <name>Emphasizes computer memory organization</name>
	  <media type="image/png" src="image2.png"/>
	</subfigure>
	<subfigure>
	  <name>Easy to draw</name>
	  <media type="image/png" src="image3.png"/>
	</subfigure>
	<caption>
	  <m:math>
	    <m:apply>
	      <m:eq/>
	      <m:ci>n</m:ci>
	      <m:apply>
		<m:plus/>
		<m:ci>
		  <m:msub>
		    <m:mi>n</m:mi>
		    <m:mn>1</m:mn>
		  </m:msub>
		</m:ci>
		<m:apply>
		  <m:times/>
		  <m:cn>5</m:cn>
		  <m:ci>
		    <m:msub>
		      <m:mi>n</m:mi>
		      <m:mn>2</m:mn>
		    </m:msub>
		  </m:ci>
		</m:apply>
	      </m:apply>
	    </m:apply>
	  </m:math>,
	  <m:math>
	    <m:apply>
	      <m:eq/>
	      <m:ci>k</m:ci>
	      <m:apply>
		<m:plus/>
		<m:apply>
		  <m:times/>
		  <m:cn>3</m:cn>
		  <m:ci>
		    <m:msub>
		      <m:mi>k</m:mi>
		      <m:mn>1</m:mn>
		    </m:msub>
		  </m:ci>
		</m:apply>
		<m:ci>
		  <m:msub>
		    <m:mi>k</m:mi>
		    <m:mn>2</m:mn>
		  </m:msub>
		</m:ci>
	      </m:apply>
	    </m:apply>
	  </m:math>
	</caption>
      </figure>
	
      <exercise id="exer8">
	<problem>
	  <para id="para37">
	    Can the composite CFAs be implemented in-place?
	  </para>
	</problem>
      </exercise>
      <exercise id="exer9">
	<problem>
	  <para id="para38">
	    What do we do with
	    <m:math>
	      <m:apply>
		<m:eq/>
		<m:ci>N</m:ci>
		<m:apply>
		  <m:times/>
		  <m:ci>
		    <m:msub>
		      <m:mi>N</m:mi>
		      <m:mn>1</m:mn>
		    </m:msub>
		  </m:ci>
		  <m:ci>
		    <m:msub>
		      <m:mi>N</m:mi>
		      <m:mn>2</m:mn>
		    </m:msub>
		  </m:ci>
		  <m:ci>
		    <m:msub>
		      <m:mi>N</m:mi>
		      <m:mn>3</m:mn>
		    </m:msub>
		  </m:ci>
		</m:apply>
	      </m:apply>
	    </m:math>?
	  </para>
	</problem>
      </exercise>
    </section>
  </content>
  
</document>
