<?xml version="1.0" encoding="UTF-8"?>
<Worksheet>
<Version major="7" minor="1"/>
<Label-Scheme value="2" prefix=""/>
<View-Properties presentation="false"></View-Properties>
<MapleNet-Properties warnlevel="3" longdelim="true" plotoptions="" echo="1" errorcursor="false" elisiontermsthreshold="10000" elisiontermsbefore="100" errorbreak="1" prettyprint="3" prompt="&gt; " latexwidth="6.0" useclientjvm="true" ansi="false" screenheight="25" labelwidth="20" plotdevice="inline" typesetting="standard" displayprecision="-1" indentamount="4" elisiondigitsthreshold="10000" quiet="false" plotoutput="terminal" rtablesize="10" preplot="" showassumed="1" plotdriver="openviz" elisiontermsafter="100" labelling="true" postplot="" screenwidth="79" elisiondigitsbefore="100" elisiondigitsafter="100" verboseproc="1" imaginaryunit="I" ShowLabels="true"/>
<Styles><Font name="Heading 4" background="[255,255,255]" bold="false" executable="false" family="Serif" foreground="[0,0,0]" italic="true" opaque="false" readonly="false" size="12" subscript="false" superscript="false" underline="false"/>
<Font name="Ordered List 5" background="[255,255,255]" bold="false" executable="false" family="Times New Roman" foreground="[0,0,0]" italic="false" opaque="false" readonly="false" size="12" subscript="false" superscript="false" underline="false"/>
<Font name="Ordered List 1" background="[255,255,255]" bold="false" executable="false" family="Times New Roman" foreground="[0,0,0]" italic="false" opaque="false" readonly="false" size="12" subscript="false" superscript="false" underline="false"/>
<Font name="Text Output" background="[255,255,255]" bold="false" executable="false" family="Monospaced" foreground="[0,0,255]" italic="false" opaque="false" readonly="true" size="12" subscript="false" superscript="false" underline="false"/>
<Font name="Bullet Item" background="[255,255,255]" bold="false" executable="false" family="Times New Roman" foreground="[0,0,0]" italic="false" opaque="false" readonly="false" size="12" subscript="false" superscript="false" underline="false"/>
<Font name="Equation Label" background="[255,255,255]" bold="true" executable="false" family="Monospaced" foreground="[0,0,0]" italic="false" opaque="false" readonly="false" size="12" subscript="false" superscript="false" underline="false"/>
<Font name="Author" background="[255,255,255]" bold="false" executable="false" family="Times New Roman" foreground="[0,0,0]" italic="false" opaque="false" readonly="false" size="12" subscript="false" superscript="false" underline="false"/>
<Font name="Text" background="[255,255,255]" bold="false" executable="false" family="Times New Roman" foreground="[0,0,0]" italic="false" opaque="false" readonly="false" size="12" subscript="false" superscript="false" underline="false"/>
<Font name="Diagnostic" background="[255,255,255]" bold="false" executable="false" family="Monospaced" foreground="[40,120,40]" italic="false" opaque="false" readonly="true" size="12" subscript="false" superscript="false" underline="false"/>
<Font name="Heading 2" background="[255,255,255]" bold="true" executable="false" family="Serif" foreground="[0,0,0]" italic="false" opaque="false" readonly="false" size="16" subscript="false" superscript="false" underline="false"/>
<Font name="Page Number" background="[255,255,255]" bold="false" executable="false" family="Times New Roman" foreground="[0,0,0]" italic="false" opaque="false" readonly="false" size="10" subscript="false" superscript="false" underline="false"/>
<Font name="Ordered List 3" background="[255,255,255]" bold="false" executable="false" family="Times New Roman" foreground="[0,0,0]" italic="false" opaque="false" readonly="false" size="12" subscript="false" superscript="false" underline="false"/>
<Font name="Maple Plot" background="[255,255,255]" bold="false" executable="false" family="Times New Roman" foreground="[0,0,0]" italic="false" opaque="false" readonly="false" size="12" subscript="false" superscript="false" underline="false"/>
<Font name="Normal" background="[255,255,255]" bold="false" executable="false" family="Times New Roman" foreground="[0,0,0]" italic="false" opaque="false" readonly="false" size="12" subscript="false" superscript="false" underline="false"/>
<Font name="Maple Input" background="[255,255,255]" bold="true" executable="true" family="Monospaced" foreground="[255,0,0]" italic="false" opaque="false" readonly="false" size="12" subscript="false" superscript="false" underline="false"/>
<Font name="2D Output" background="[255,255,255]" bold="false" executable="false" family="Times New Roman" foreground="[0,0,255]" italic="false" opaque="false" readonly="true" size="12" subscript="false" superscript="false" underline="false"/>
<Font name="Dictionary Hyperlink" background="[255,255,255]" bold="false" executable="false" family="Serif" foreground="[147,0,15]" italic="false" opaque="false" readonly="false" size="12" subscript="false" superscript="false" underline="true"/>
<Font name="Dash Item" background="[255,255,255]" bold="false" executable="false" family="Times New Roman" foreground="[0,0,0]" italic="false" opaque="false" readonly="false" size="12" subscript="false" superscript="false" underline="false"/>
<Font name="Heading 3" background="[255,255,255]" bold="true" executable="false" family="Serif" foreground="[0,0,0]" italic="true" opaque="false" readonly="false" size="14" subscript="false" superscript="false" underline="false"/>
<Font name="Ordered List 4" background="[255,255,255]" bold="false" executable="false" family="Times New Roman" foreground="[0,0,0]" italic="false" opaque="false" readonly="false" size="12" subscript="false" superscript="false" underline="false"/>
<Font name="Maple Output" background="[255,255,255]" bold="false" executable="false" family="Times New Roman" foreground="[0,0,0]" italic="false" opaque="false" readonly="false" size="12" subscript="false" superscript="false" underline="false"/>
<Font name="2D Input" background="[255,255,255]" bold="false" executable="true" family="Times New Roman" foreground="[0,0,0]" italic="false" opaque="false" readonly="false" size="12" subscript="false" superscript="false" underline="false"/>
<Font name="Line Printed Output" background="[255,255,255]" bold="false" executable="false" family="Monospaced" foreground="[0,0,255]" italic="false" opaque="false" readonly="true" size="12" subscript="false" superscript="false" underline="false"/>
<Font name="List Item" background="[255,255,255]" bold="false" executable="false" family="Times New Roman" foreground="[0,0,0]" italic="false" opaque="false" readonly="false" size="12" subscript="false" superscript="false" underline="false"/>
<Font name="Maple Input Placeholder" background="[255,255,255]" bold="true" executable="true" family="Monospaced" foreground="[200,0,200]" italic="false" opaque="false" readonly="false" size="12" subscript="false" superscript="false" underline="false"/>
<Font name="2D Math" background="[255,255,255]" bold="false" executable="false" family="Times New Roman" foreground="[0,0,0]" italic="false" opaque="false" readonly="false" size="12" subscript="false" superscript="false" underline="false"/>
<Font name="Error" background="[255,255,255]" bold="false" executable="false" family="Monospaced" foreground="[255,0,255]" italic="false" opaque="false" readonly="true" size="12" subscript="false" superscript="false" underline="false"/>
<Font name="Warning" background="[255,255,255]" bold="false" executable="false" family="Monospaced" foreground="[0,0,255]" italic="false" opaque="false" readonly="true" size="12" subscript="false" superscript="false" underline="false"/>
<Font name="Heading 1" background="[255,255,255]" bold="true" executable="false" family="Serif" foreground="[0,0,0]" italic="false" opaque="false" readonly="false" size="18" subscript="false" superscript="false" underline="false"/>
<Font name="Title" background="[255,255,255]" bold="true" executable="false" family="Times New Roman" foreground="[0,0,0]" italic="false" opaque="false" readonly="false" size="18" subscript="false" superscript="false" underline="false"/>
<Font name="Ordered List 2" background="[255,255,255]" bold="false" executable="false" family="Times New Roman" foreground="[0,0,0]" italic="false" opaque="false" readonly="false" size="12" subscript="false" superscript="false" underline="false"/>
<Font name="Hyperlink" background="[255,255,255]" bold="false" executable="false" family="Serif" foreground="[0,128,128]" italic="false" opaque="false" readonly="false" size="12" subscript="false" superscript="false" underline="true"/>
<Layout name="Heading 4" alignment="left" bullet="none" firstindent="0" leftmargin="0" rightmargin="0" linespacing="0.0" spaceabove="0" spacebelow="0" linebreak="space" pagebreak-before="false" initial="0"/>
<Layout name="Ordered List 5" alignment="left" bullet="ROMAN" firstindent="0" leftmargin="144" rightmargin="0" linespacing="0.0" spaceabove="3" spacebelow="3" linebreak="space" pagebreak-before="false" initial="-1"/>
<Layout name="Ordered List 1" alignment="left" bullet="numeric" firstindent="0" leftmargin="0" rightmargin="0" linespacing="0.0" spaceabove="3" spacebelow="3" linebreak="space" pagebreak-before="false" initial="-1"/>
<Layout name="Text Output" alignment="left" bullet="none" firstindent="0" leftmargin="0" rightmargin="0" linespacing="0.0" spaceabove="0" spacebelow="0" linebreak="space" pagebreak-before="false" initial="0"/>
<Layout name="Bullet Item" alignment="left" bullet="dot" firstindent="0" leftmargin="0" rightmargin="0" linespacing="0.0" spaceabove="3" spacebelow="3" linebreak="space" pagebreak-before="false" initial="0"/>
<Layout name="Left Justified Maple Output" alignment="left" bullet="none" firstindent="0" leftmargin="0" rightmargin="0" linespacing="0.5" spaceabove="0" spacebelow="0" linebreak="space" pagebreak-before="false" initial="0"/>
<Layout name="Help" alignment="left" bullet="none" firstindent="0" leftmargin="0" rightmargin="0" linespacing="0.0" spaceabove="0" spacebelow="0" linebreak="space" pagebreak-before="false" initial="0"/>
<Layout name="Author" alignment="centred" bullet="none" firstindent="0" leftmargin="0" rightmargin="0" linespacing="0.0" spaceabove="8" spacebelow="8" linebreak="space" pagebreak-before="false" initial="0"/>
<Layout name="Diagnostic" alignment="left" bullet="none" firstindent="0" leftmargin="0" rightmargin="0" linespacing="0.0" spaceabove="0" spacebelow="0" linebreak="space" pagebreak-before="false" initial="0"/>
<Layout name="Heading 2" alignment="left" bullet="none" firstindent="0" leftmargin="0" rightmargin="0" linespacing="0.0" spaceabove="8" spacebelow="2" linebreak="space" pagebreak-before="false" initial="0"/>
<Layout name="Ordered List 3" alignment="left" bullet="roman" firstindent="0" leftmargin="72" rightmargin="0" linespacing="0.0" spaceabove="3" spacebelow="3" linebreak="space" pagebreak-before="false" initial="-1"/>
<Layout name="Maple Plot" alignment="centred" bullet="none" firstindent="0" leftmargin="0" rightmargin="0" linespacing="0.0" spaceabove="0" spacebelow="0" linebreak="space" pagebreak-before="false" initial="0"/>
<Layout name="Normal" alignment="left" bullet="none" firstindent="0" leftmargin="0" rightmargin="0" linespacing="0.0" spaceabove="0" spacebelow="0" linebreak="space" pagebreak-before="false" initial="0"/>
<Layout name="Dash Item" alignment="left" bullet="dash" firstindent="0" leftmargin="0" rightmargin="0" linespacing="0.0" spaceabove="3" spacebelow="3" linebreak="space" pagebreak-before="false" initial="0"/>
<Layout name="Heading 3" alignment="left" bullet="none" firstindent="0" leftmargin="0" rightmargin="0" linespacing="0.0" spaceabove="0" spacebelow="0" linebreak="space" pagebreak-before="false" initial="0"/>
<Layout name="Ordered List 4" alignment="left" bullet="ALPHABETIC" firstindent="0" leftmargin="108" rightmargin="0" linespacing="0.0" spaceabove="3" spacebelow="3" linebreak="space" pagebreak-before="false" initial="-1"/>
<Layout name="Maple Output" alignment="centred" bullet="none" firstindent="0" leftmargin="0" rightmargin="0" linespacing="0.5" spaceabove="0" spacebelow="0" linebreak="space" pagebreak-before="false" initial="0"/>
<Layout name="Line Printed Output" alignment="left" bullet="none" firstindent="0" leftmargin="0" rightmargin="0" linespacing="0.0" spaceabove="0" spacebelow="0" linebreak="space" pagebreak-before="false" initial="0"/>
<Layout name="List Item" alignment="left" bullet="indent" firstindent="0" leftmargin="0" rightmargin="0" linespacing="0.0" spaceabove="3" spacebelow="3" linebreak="space" pagebreak-before="false" initial="0"/>
<Layout name="Warning" alignment="left" bullet="none" firstindent="0" leftmargin="0" rightmargin="0" linespacing="0.0" spaceabove="0" spacebelow="0" linebreak="space" pagebreak-before="false" initial="0"/>
<Layout name="Error" alignment="left" bullet="none" firstindent="0" leftmargin="0" rightmargin="0" linespacing="0.0" spaceabove="0" spacebelow="0" linebreak="space" pagebreak-before="false" initial="0"/>
<Layout name="Fixed Width" alignment="centred" bullet="none" firstindent="0" leftmargin="0" rightmargin="0" linespacing="0.0" spaceabove="0" spacebelow="0" linebreak="space" pagebreak-before="false" initial="0"/>
<Layout name="Heading 1" alignment="left" bullet="none" firstindent="0" leftmargin="0" rightmargin="0" linespacing="0.0" spaceabove="8" spacebelow="4" linebreak="space" pagebreak-before="false" initial="0"/>
<Layout name="Title" alignment="centred" bullet="none" firstindent="0" leftmargin="0" rightmargin="0" linespacing="0.0" spaceabove="12" spacebelow="12" linebreak="space" pagebreak-before="false" initial="0"/>
<Layout name="Ordered List 2" alignment="left" bullet="alphabetic" firstindent="0" leftmargin="36" rightmargin="0" linespacing="0.0" spaceabove="3" spacebelow="3" linebreak="space" pagebreak-before="false" initial="-1"/>
<Pencil-style name="Pencil 3" pen-color="[0,0,0]" pen-height="3.0" pen-width="3.0" pen-opacity="1.0"/>
<Pencil-style name="Pencil 1" pen-color="[0,0,0]" pen-height="1.0" pen-width="1.0" pen-opacity="1.0"/>
<Pencil-style name="Pencil 5" pen-color="[255,0,0]" pen-height="5.0" pen-width="5.0" pen-opacity="1.0"/>
<Pencil-style name="Pencil 2" pen-color="[0,0,255]" pen-height="1.0" pen-width="1.0" pen-opacity="1.0"/>
<Pencil-style name="Pencil 4" pen-color="[0,0,255]" pen-height="3.0" pen-width="3.0" pen-opacity="1.0"/>
<Highlighter-style name="Highlighter 2" pen-color="[255,204,0]" pen-height="14.0" pen-width="14.0" pen-opacity="0.8"/>
<Highlighter-style name="Highlighter 4" pen-color="[0,255,255]" pen-height="32.0" pen-width="32.0" pen-opacity="0.8"/>
<Highlighter-style name="Highlighter 3" pen-color="[51,255,0]" pen-height="24.0" pen-width="24.0" pen-opacity="0.8"/>
<Highlighter-style name="Highlighter 1" pen-color="[255,153,255]" pen-height="12.0" pen-width="8.0" pen-opacity="0.8"/>
<Highlighter-style name="Highlighter 5" pen-color="[255,255,0]" pen-height="48.0" pen-width="48.0" pen-opacity="0.8"/>
</Styles>
<Task-table>
    <Task-category name="&lt;default&gt;">
    </Task-category>
</Task-table><Presentation-Block>
<Group view="presentation" hide-input="false" hide-output="true" inline-output="false" labelreference="L8" drawlabel="true">
<Input>
<Text-field style="Title" layout="Title"><Font encoding="UTF-8">Sz\303\241m\303\255t\303\263g\303\251pes sz\303\241melm\303\251let</Font></Text-field>
</Input>
</Group></Presentation-Block><Presentation-Block>
<Group view="presentation" hide-input="false" hide-output="true" inline-output="false" labelreference="L124" drawlabel="true">
<Input>
<Text-field style="Author" layout="Author"><Font encoding="UTF-8">J\303\241rai Antal</Font></Text-field>
</Input>
</Group></Presentation-Block><Presentation-Block>
<Group view="presentation" hide-input="false" hide-output="true" inline-output="false" labelreference="L308" drawlabel="true">
<Input>
<Text-field style="Text" layout="Author"><Font encoding="UTF-8" style="Author">Ezek a programok csak szeml\303\251ltet\303\251sre szolg\303\241lnak</Font></Text-field>
</Input>
</Group></Presentation-Block>
<Section collapsed="true" MultipleChoiceAnswerIndex="-1" MultipleChoiceRandomizeChoices="false" TrueFalseAnswerIndex="-1" EssayAnswerRows="5" EssayAnswerColumns="60"><Title>
<Text-field style="Heading 1" layout="Heading 1"><Font encoding="UTF-8">1. A pr\303\255mek eloszl\303\241sa, szit\303\241l\303\241s</Font></Text-field></Title>
</Section>
<Section collapsed="true" MultipleChoiceAnswerIndex="-1" MultipleChoiceRandomizeChoices="false" TrueFalseAnswerIndex="-1" EssayAnswerRows="5" EssayAnswerColumns="60"><Title>
<Text-field style="Heading 1" layout="Heading 1"><Font encoding="UTF-8">2. Egyszer\305\261 faktoriz\303\241l\303\241si m\303\263dszerek</Font></Text-field></Title>
</Section>
<Section collapsed="true" MultipleChoiceAnswerIndex="-1" MultipleChoiceRandomizeChoices="false" TrueFalseAnswerIndex="-1" EssayAnswerRows="5" EssayAnswerColumns="60"><Title>
<Text-field style="Heading 1" layout="Heading 1"><Font encoding="UTF-8">3. Egyszer\305\261 pr\303\255mtesztel\303\251si m\303\263dszerek</Font></Text-field></Title><Presentation-Block>
<Group view="presentation" hide-input="false" hide-output="true" inline-output="false" labelreference="L114" drawlabel="true">
<Input>
<Text-field style="Text" layout="Normal"><Equation executable="false" style="2D Math" input-equation="" display="LUklbXJvd0c2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGJzYjLUkjbWlHRiQ2JVEhRicvJSdpdGFsaWNHUSV0cnVlRicvJSxtYXRodmFyaWFudEdRJ2l0YWxpY0Yn">LUklbXJvd0c2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGJzYjLUkjbWlHRiQ2JVEhRicvJSdpdGFsaWNHUSV0cnVlRicvJSxtYXRodmFyaWFudEdRJ2l0YWxpY0Yn</Equation></Text-field>
</Input>
</Group></Presentation-Block>
</Section>
<Section collapsed="true" MultipleChoiceAnswerIndex="-1" MultipleChoiceRandomizeChoices="false" TrueFalseAnswerIndex="-1" EssayAnswerRows="5" EssayAnswerColumns="60"><Title>
<Text-field style="Heading 1" layout="Heading 1">4. Lucas-sorozatok</Text-field></Title>
</Section>
<Section collapsed="true" MultipleChoiceAnswerIndex="-1" MultipleChoiceRandomizeChoices="false" TrueFalseAnswerIndex="-1" EssayAnswerRows="5" EssayAnswerColumns="60"><Title>
<Text-field style="Heading 1" layout="Heading 1"><Font encoding="UTF-8">5. Alkalmaz\303\241sok </Font></Text-field></Title>
</Section>
<Section collapsed="true" MultipleChoiceAnswerIndex="-1" MultipleChoiceRandomizeChoices="false" TrueFalseAnswerIndex="-1" EssayAnswerRows="5" EssayAnswerColumns="60"><Title>
<Text-field style="Heading 1" layout="Heading 1"><Font encoding="UTF-8">6. Sz\303\241mok \303\251s polinomok</Font></Text-field></Title>
</Section>
<Section collapsed="false" MultipleChoiceAnswerIndex="-1" MultipleChoiceRandomizeChoices="false" TrueFalseAnswerIndex="-1" EssayAnswerRows="5" EssayAnswerColumns="60"><Title>
<Text-field style="Heading 1" layout="Heading 1"><Font encoding="UTF-8">7. Gyors Fourier-transzform\303\241ci\303\263</Font></Text-field></Title>
<Text-field style="Text" layout="Normal"></Text-field>
<Group labelreference="L490" drawlabel="true">
<Input>
<Text-field prompt="&gt; " style="Maple Input" layout="Normal">restart;</Text-field>
</Input>
</Group>
<Section collapsed="true" MultipleChoiceAnswerIndex="-1" MultipleChoiceRandomizeChoices="false" TrueFalseAnswerIndex="-1" EssayAnswerRows="5" EssayAnswerColumns="60"><Title>
<Text-field style="Heading 2" layout="Heading 2">7.1. Polinomszorz<Font encoding="UTF-8">\303\241</Font>s gyors Fourier-transzform<Font encoding="UTF-8">\303\241</Font>ci<Font encoding="UTF-8">\303\263val.</Font></Text-field></Title>
</Section>
<Section collapsed="false" MultipleChoiceAnswerIndex="-1" MultipleChoiceRandomizeChoices="false" TrueFalseAnswerIndex="-1" EssayAnswerRows="5" EssayAnswerColumns="60"><Title>
<Text-field style="Heading 2" layout="Heading 2">7.2. Gyors Fourier-transzform<Font encoding="UTF-8">\303\241</Font>ci<Font encoding="UTF-8">\303\263 (FFT)</Font>.</Text-field></Title>
<Text-field style="Text" layout="Normal"></Text-field>
<Group labelreference="L512" drawlabel="true">
<Input>
<Text-field prompt="&gt; " style="Maple Input" layout="Normal">#
# This procedure do the bit reversation of the
# number x which is k bit long.
#

reverse:=proc(x,k) local xx,i,y;
  xx:=x; y:=0;
  for i to k do
    if type(xx,odd) then
      y:=2*y+1; xx:=(xx-1)/2;
    else
      y:=2*y; xx:=xx/2;
    fi;
  od; y; end;</Text-field>
</Input>
<Output>
<Text-field style="2D Output" layout="Maple Output"><Equation executable="false" style="2D Output" display="LUklbXJvd0c2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGJzYlLUkjbWlHRiQ2JVEocmV2ZXJzZUYnLyUnaXRhbGljR1EldHJ1ZUYnLyUsbWF0aHZhcmlhbnRHUSdpdGFsaWNGJy1JI21vR0YkNjBRIzo9RicvRjNRJ25vcm1hbEYnLyUmZmVuY2VHUSZmYWxzZUYnLyUqc2VwYXJhdG9yR0Y9LyUpc3RyZXRjaHlHRj0vJSpzeW1tZXRyaWNHRj0vJShsYXJnZW9wR0Y9LyUubW92YWJsZWxpbWl0c0dGPS8lJ2FjY2VudEdGPS8lJWZvcm1HUSZpbmZpeEYnLyUnbHNwYWNlR1EvdGhpY2ttYXRoc3BhY2VGJy8lJ3JzcGFjZUdGTy8lKG1pbnNpemVHUSIxRicvJShtYXhzaXplR1EpaW5maW5pdHlGJy1GIzYpLUY2NjFRJXByb2NGJy8lJWJvbGRHRjEvRjNRJWJvbGRGJ0Y7Rj5GQEZCRkRGRkZIL0ZLUSFGJy9GTlEkMGVtRicvRlFGXm9GUkZVLUkobWZlbmNlZEdGJDYjLUYjNiUtRiw2JVEieEYnRi9GMi1GNjYwUSIsRidGOUY7L0Y/RjFGQEZCRkRGRkZIRkpGXW8vRlFRM3Zlcnl0aGlja21hdGhzcGFjZUYnRlJGVS1GLDYlUSJrRidGL0YyLUknbXNwYWNlR0YkNiYvJSdoZWlnaHRHUSYwLjBleEYnLyUmd2lkdGhHUSYwLjNlbUYnLyUmZGVwdGhHRmZwLyUqbGluZWJyZWFrR1ExZmlyc3Rwcm9jbmV3bGluZUYnLUYjNiYtRjY2MVEmbG9jYWxGJ0ZnbkZpbkY7Rj5GQEZCRkRGRkZIRltvRl1vL0ZRUTBtZWRpdW1tYXRoc3BhY2VGJ0ZSRlUtRiM2Jy1GLDYlUSN4eEYnRi9GMkZoby1GLDYlUSJpRidGL0YyRmhvLUYsNiVRInlGJ0YvRjItRjY2MFEiO0YnRjlGO0ZbcEZARkJGREZGRkhGSkZdb0ZQRlJGVUZhcC1GIzYmLUYjNiUtRiM2JUZocUY1RmVvRmFyRmFwLUYjNiUtRiM2JUZeckY1LUkjbW5HRiQ2JFEiMEYnRjlGYXJGYXAtRiM2JS1GIzYnLUYjNictRjY2MVEkZm9yRidGZ25GaW5GO0Y+RkBGQkZERkZGSEZbb0Zdb0ZkcUZSRlVGW3ItRjY2MVEjdG9GJ0ZnbkZpbkY7Rj5GQEZCRkRGRkZIRltvL0ZORmVxRmRxRlJGVUZecC1GNjYxUSNkb0YnRmduRmluRjtGPkZARkJGREZGRkhGW29GXnRGZHFGUkZVLUZicDYmRmRwRmdwRmpwL0ZdcVE2aW5jcmVhc2VpbmRlbnRuZXdsaW5lRictRiM2JS1GIzYoLUY2NjFRI2lmRidGZ25GaW5GO0Y+RkBGQkZERkZGSEZbb0Zdb0ZkcUZSRlUtRiM2JS1GLDYlUSV0eXBlRidGL0YyLUY2NjBRMCZBcHBseUZ1bmN0aW9uO0YnRjlGO0Y+RkBGQkZERkZGSEZKRl1vRl9vRlJGVS1GYW82Iy1GIzYlRmhxRmhvLUYsNiVRJG9kZEYnRi9GMi1GNjYxUSV0aGVuRidGZ25GaW5GO0Y+RkBGQkZERkZGSEZbby9GTkZdcEZfb0ZSRlVGYnQtRiM2JC1GIzYlLUYjNiVGXnJGNS1GIzYlLUYjNiUtRl9zNiRRIjJGJ0Y5LUY2NjBRIipGJ0Y5RjtGPkZARkJGREZGRkhGSi9GTlEudGhpbm1hdGhzcGFjZUYnL0ZRRmF3RlJGVUZeci1GNjYwUSIrRidGOUY7Rj5GQEZCRkRGRkZIRkpGXnRGZHFGUkZVLUZfczYkRlRGOUZhckZhcC1GIzYlRmhxRjUtRiM2JS1GIzYlLUYjNiVGZnctRjY2MFEiL0YnRjlGO0Y+L0ZBRjFGQkZERkZGSEZKRmB3RmJ3RlJGVUZqdkZddy1GIzYjRmhxLUY2NjBRKn4mbWludXM7fkYnRjlGO0Y+RkBGQkZERkZGSEZbb0Zdb0Zfb0ZSRlVGXngtRmJwNiZGZHAvRmhwUSYwLjBlbUYnRmpwL0ZdcVE2ZGVjcmVhc2VpbmRlbnRuZXdsaW5lRictRiM2Ji1GNjYxUSVlbHNlRidGZ25GaW5GO0Y+RkBGQkZERkZGSEZbb0ZfdkZfb0ZSRlVGYnQtRiM2JC1GIzYlLUYjNiVGXnJGNUZodkZhckZhcC1GIzYlRmhxRjVGXHhGaXgtRjY2MVEnZW5kfmlmRidGZ25GaW5GO0Y+RkBGQkZERkZGSEZbb0ZfdkZfb0ZSRlVGaXgtRjY2MVEnZW5kfmRvRidGZ25GaW5GO0Y+RkBGQkZERkZGSEZbb0ZfdkZfb0ZSRlVGYXJGYXBGXnJGaXgtRjY2MVEpZW5kfnByb2NGJ0ZnbkZpbkY7Rj5GQEZCRkRGRkZIRltvRl92Rl9vRlJGVQ==">Zio2JEkieEc2Ikkia0dGJTYlSSN4eEdGJUkiaUdGJUkieUdGJUYlRiVDJj5GKEYkPkYqIiIhPyhGKSIiIkYwRiZJJXRydWVHJSpwcm90ZWN0ZWRHQCUtSSV0eXBlR0YyNiRGKEkkb2RkR0YyQyQ+RiosJiomIiIjRjBGKkYwRjBGMEYwPkYoLCYqJiNGMEY8RjBGKEYwRjBGQCEiIkMkPkYqLCRGO0YwPkYoLCRGP0YwRipGJUYlRiU=</Equation></Text-field>
</Output>
</Group>
<Group labelreference="L572" drawlabel="true">
<Input>
<Text-field prompt="&gt; " style="Maple Input" layout="Normal">#
# This procedure do the complex butterfly operation
# between the two terms A[i] and A[j] of the
# table A. The multiplier is w.
#

cbutterfly:=proc(A,i,j,w) local X,Y;
  X:=A[i]; Y:=A[j]*w; A[i]:=X+Y; A[j]:=X-Y;
end;</Text-field>
</Input>
<Output>
<Text-field style="2D Output" layout="Maple Output"><Equation executable="false" style="2D Output" display="LUklbXJvd0c2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGJzYlLUkjbWlHRiQ2JVErY2J1dHRlcmZseUYnLyUnaXRhbGljR1EldHJ1ZUYnLyUsbWF0aHZhcmlhbnRHUSdpdGFsaWNGJy1JI21vR0YkNjBRIzo9RicvRjNRJ25vcm1hbEYnLyUmZmVuY2VHUSZmYWxzZUYnLyUqc2VwYXJhdG9yR0Y9LyUpc3RyZXRjaHlHRj0vJSpzeW1tZXRyaWNHRj0vJShsYXJnZW9wR0Y9LyUubW92YWJsZWxpbWl0c0dGPS8lJ2FjY2VudEdGPS8lJWZvcm1HUSZpbmZpeEYnLyUnbHNwYWNlR1EvdGhpY2ttYXRoc3BhY2VGJy8lJ3JzcGFjZUdGTy8lKG1pbnNpemVHUSIxRicvJShtYXhzaXplR1EpaW5maW5pdHlGJy1GIzYpLUY2NjFRJXByb2NGJy8lJWJvbGRHRjEvRjNRJWJvbGRGJ0Y7Rj5GQEZCRkRGRkZIL0ZLUSFGJy9GTlEkMGVtRicvRlFGXm9GUkZVLUkobWZlbmNlZEdGJDYjLUYjNiktRiw2JVEiQUYnRi9GMi1GNjYwUSIsRidGOUY7L0Y/RjFGQEZCRkRGRkZIRkpGXW8vRlFRM3Zlcnl0aGlja21hdGhzcGFjZUYnRlJGVS1GLDYlUSJpRidGL0YyRmhvLUYsNiVRImpGJ0YvRjJGaG8tRiw2JVEid0YnRi9GMi1JJ21zcGFjZUdGJDYmLyUnaGVpZ2h0R1EmMC4wZXhGJy8lJndpZHRoR1EmMC4zZW1GJy8lJmRlcHRoR0ZccS8lKmxpbmVicmVha0dRMWZpcnN0cHJvY25ld2xpbmVGJy1GIzYmLUY2NjFRJmxvY2FsRidGZ25GaW5GO0Y+RkBGQkZERkZGSEZbb0Zdby9GUVEwbWVkaXVtbWF0aHNwYWNlRidGUkZVLUYjNiUtRiw2JVEiWEYnRi9GMkZoby1GLDYlUSJZRidGL0YyLUY2NjBRIjtGJ0Y5RjtGW3BGQEZCRkRGRkZIRkpGXW9GUEZSRlVGZ3AtRiM2Ji1GIzYlLUYjNiVGXnJGNS1GIzYmRmVvLUY2NjBRIltGJ0Y5L0Y8RjFGPi9GQUYxRkJGREZGRkgvRktRJ3ByZWZpeEYnL0ZOUS50aGlubWF0aHNwYWNlRicvRlFGZ3NGUkZVLUYjNiNGXnAtRjY2MFEiXUYnRjlGYnNGPkZjc0ZCRkRGRkZIL0ZLUShwb3N0Zml4RidGZnMvRlFRMnZlcnl0aGlubWF0aHNwYWNlRidGUkZVRmRyRmdwLUYjNiUtRiM2JUZhckY1LUYjNiUtRiM2JkZlb0Zfcy1GIzYjRmFwRlt0LUY2NjBRIipGJ0Y5RjtGPkZARkJGREZGRkhGSkZmc0Zoc0ZSRlVGZHBGZHJGZ3AtRiM2JS1GIzYlRl1zRjUtRiM2JUZeci1GNjYwUSIrRidGOUY7Rj5GQEZCRkRGRkZIRkovRk5GW3JGanFGUkZVRmFyRmRyRmdwLUYjNiVGaHRGNS1GIzYlRl5yLUY2NjBRKn4mbWludXM7fkYnRjlGO0Y+RkBGQkZERkZGSEZbb0Zdb0Zfb0ZSRlVGYXItRmhwNiZGanAvRl5xUSYwLjBlbUYnRmBxL0ZjcVE2ZGVjcmVhc2VpbmRlbnRuZXdsaW5lRictRjY2MVEpZW5kfnByb2NGJ0ZnbkZpbkY7Rj5GQEZCRkRGRkZIRltvL0ZORl1wRl9vRlJGVQ==">Zio2JkkiQUc2IkkiaUdGJUkiakdGJUkid0dGJTYkSSJYR0YlSSJZR0YlRiVGJUMmPkYqJkYkNiNGJj5GKyomJkYkNiNGJyIiIkYoRjQ+Ri4sJkYqRjRGK0Y0PkYyLCZGKkY0RishIiJGJUYlRiU=</Equation></Text-field>
</Output>
</Group>
<Group labelreference="L573" drawlabel="true">
<Input>
<Text-field prompt="&gt; " style="Maple Input" layout="Normal">#
# This is a complex FFT procedure.
# It use the butterfly procedure to operate on the vector A.
# The number of rounds is k in the FFT.
# T is a table of the powers of primitive root of unity.
#

cfft:=proc(A,T,k) local l,s,w,t;
for l from 0 to k-1 do
  for s from 0 to 2^l-1 do
    w:=T[s];
    for t from 0 to 2^(k-l-1)-1 do
      cbutterfly(A,2^(k-l)*s+t,2^(k-l)*s+t+2^(k-l-1),w);
    od;
  od;
od; end;</Text-field>
</Input>
<Output>
<Text-field style="2D Output" layout="Maple Output"><Equation executable="false" style="2D Output" display="LUklbXJvd0c2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGJzYlLUkjbWlHRiQ2JVElY2ZmdEYnLyUnaXRhbGljR1EldHJ1ZUYnLyUsbWF0aHZhcmlhbnRHUSdpdGFsaWNGJy1JI21vR0YkNjBRIzo9RicvRjNRJ25vcm1hbEYnLyUmZmVuY2VHUSZmYWxzZUYnLyUqc2VwYXJhdG9yR0Y9LyUpc3RyZXRjaHlHRj0vJSpzeW1tZXRyaWNHRj0vJShsYXJnZW9wR0Y9LyUubW92YWJsZWxpbWl0c0dGPS8lJ2FjY2VudEdGPS8lJWZvcm1HUSZpbmZpeEYnLyUnbHNwYWNlR1EvdGhpY2ttYXRoc3BhY2VGJy8lJ3JzcGFjZUdGTy8lKG1pbnNpemVHUSIxRicvJShtYXhzaXplR1EpaW5maW5pdHlGJy1GIzYpLUY2NjFRJXByb2NGJy8lJWJvbGRHRjEvRjNRJWJvbGRGJ0Y7Rj5GQEZCRkRGRkZIL0ZLUSFGJy9GTlEkMGVtRicvRlFGXm9GUkZVLUkobWZlbmNlZEdGJDYjLUYjNictRiw2JVEiQUYnRi9GMi1GNjYwUSIsRidGOUY7L0Y/RjFGQEZCRkRGRkZIRkpGXW8vRlFRM3Zlcnl0aGlja21hdGhzcGFjZUYnRlJGVS1GLDYlUSJURidGL0YyRmhvLUYsNiVRImtGJ0YvRjItSSdtc3BhY2VHRiQ2Ji8lJ2hlaWdodEdRJjAuMGV4RicvJSZ3aWR0aEdRJjAuM2VtRicvJSZkZXB0aEdGaXAvJSpsaW5lYnJlYWtHUTFmaXJzdHByb2NuZXdsaW5lRictRiM2Ji1GNjYxUSZsb2NhbEYnRmduRmluRjtGPkZARkJGREZGRkhGW29GXW8vRlFRMG1lZGl1bW1hdGhzcGFjZUYnRlJGVS1GIzYpLUYsNiVRImxGJ0YvRjJGaG8tRiw2JVEic0YnRi9GMkZoby1GLDYlUSJ3RidGL0YyRmhvLUYsNiVRInRGJ0YvRjItRjY2MFEiO0YnRjlGO0ZbcEZARkJGREZGRkhGSkZdb0ZQRlJGVUZkcC1GIzYnLUYjNiktRjY2MVEkZm9yRidGZ25GaW5GO0Y+RkBGQkZERkZGSEZbb0Zdb0ZncUZSRlVGW3ItRjY2MVElZnJvbUYnRmduRmluRjtGPkZARkJGREZGRkhGW28vRk5GaHFGZ3FGUkZVLUkjbW5HRiQ2JFEiMEYnRjktRjY2MVEjdG9GJ0ZnbkZpbkY7Rj5GQEZCRkRGRkZIRltvRmRzRmdxRlJGVS1GIzYlRmFwLUY2NjBRKn4mbWludXM7fkYnRjlGO0Y+RkBGQkZERkZGSEZbb0Zdb0Zfb0ZSRlUtRmZzNiRGVEY5LUY2NjFRI2RvRidGZ25GaW5GO0Y+RkBGQkZERkZGSEZbb0Zkc0ZncUZSRlUtRmVwNiZGZ3BGanBGXXEvRmBxUTZpbmNyZWFzZWluZGVudG5ld2xpbmVGJy1GIzYnLUYjNilGXnNGXnJGYXNGZXNGaXMtRiM2JS1GIzYlLUZmczYkUSIyRidGOS1GNjYwUSJeRidGOUY7Rj5GQEZCRkRGRkZIRkovRk5RMnZlcnl0aGlubWF0aHNwYWNlRicvRlFGaXVGUkZVRltyRl50RmF0RmN0RmZ0LUYjNiQtRiM2JS1GIzYlRmFyRjUtRiM2JkZecC1GNjYwUSJbRidGOS9GPEYxRj4vRkFGMUZCRkRGRkZIL0ZLUSdwcmVmaXhGJy9GTlEudGhpbm1hdGhzcGFjZUYnL0ZRRlt3RlJGVS1GIzYjRl5yLUY2NjBRIl1GJ0Y5RmZ2Rj5GZ3ZGQkZERkZGSC9GS1EocG9zdGZpeEYnRmp2Rmp1RlJGVUZnckZkcC1GIzYnLUYjNilGXnNGZHJGYXNGZXNGaXMtRiM2JS1GIzYlRmJ1RmV1LUZhbzYjLUYjNidGYXBGXnRGW3JGXnRGYXRGXnRGYXRGY3RGZnQtRiM2JS1GLDYlUStjYnV0dGVyZmx5RidGL0YyLUY2NjBRMCZBcHBseUZ1bmN0aW9uO0YnRjlGO0Y+RkBGQkZERkZGSEZKRl1vRl9vRlJGVS1GYW82Iy1GIzYpRmVvRmhvLUYjNiUtRiM2JS1GIzYlRmJ1RmV1LUZhbzYjLUYjNiVGYXBGXnRGW3ItRjY2MFEiKkYnRjlGO0Y+RkBGQkZERkZGSEZKRmp2Rlx3RlJGVUZeci1GNjYwUSIrRidGOUY7Rj5GQEZCRkRGRkZIRkpGZHNGZ3FGUkZVRmRyRmhvLUYjNidGXnlGaXlGZHJGaXlGandGaG9GYXItRmVwNiZGZ3AvRltxUSYwLjBlbUYnRl1xL0ZgcVE2ZGVjcmVhc2VpbmRlbnRuZXdsaW5lRictRjY2MVEnZW5kfmRvRidGZ25GaW5GO0Y+RkBGQkZERkZGSEZbby9GTkZdcEZfb0ZSRlVGXnpGZHpGXnpGZHpGXnotRjY2MVEpZW5kfnByb2NGJ0ZnbkZpbkY7Rj5GQEZCRkRGRkZIRltvRmd6Rl9vRlJGVQ==">Zio2JUkiQUc2IkkiVEdGJUkia0dGJTYmSSJsR0YlSSJzR0YlSSJ3R0YlSSJ0R0YlRiVGJT8oRikiIiEiIiIsJkYnRi9GLyEiIkkldHJ1ZUclKnByb3RlY3RlZEc/KEYqRi5GLywmKSIiI0YpRi9GL0YxRjJDJD5GKyZGJjYjRio/KEYsRi5GLywmKUY3LChGJ0YvRilGMUYvRjFGL0YvRjFGMi1JK2NidXR0ZXJmbHlHRiU2JkYkLCYqJilGNywmRidGL0YpRjFGL0YqRi9GL0YsRi8sKEZERi9GLEYvRj5GL0YrRiVGJUYl</Equation></Text-field>
</Output>
</Group>
<Group labelreference="L531" drawlabel="true">
<Input>
<Text-field prompt="&gt; " style="Maple Input" layout="Normal">#
# The pre procedure do the preparation for the
# table T[0..2^k-1)] of powers of the primitive
# root of unity.
#

pre:=proc(T,k) local i,xx;
Digits:=2*Digits;
for i from 0 to 2^k-1 do
  T[i]:=evalf(exp(-2*Pi*I*reverse(i,k)/2^(k+1)));
od;
Digits:=Digits/2;
end;</Text-field>
</Input>
<Output>
<Text-field style="2D Output" layout="Maple Output"><Equation executable="false" style="2D Output" display="LUklbXJvd0c2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGJzYlLUkjbWlHRiQ2JVEkcHJlRicvJSdpdGFsaWNHUSV0cnVlRicvJSxtYXRodmFyaWFudEdRJ2l0YWxpY0YnLUkjbW9HRiQ2MFEjOj1GJy9GM1Enbm9ybWFsRicvJSZmZW5jZUdRJmZhbHNlRicvJSpzZXBhcmF0b3JHRj0vJSlzdHJldGNoeUdGPS8lKnN5bW1ldHJpY0dGPS8lKGxhcmdlb3BHRj0vJS5tb3ZhYmxlbGltaXRzR0Y9LyUnYWNjZW50R0Y9LyUlZm9ybUdRJmluZml4RicvJSdsc3BhY2VHUS90aGlja21hdGhzcGFjZUYnLyUncnNwYWNlR0ZPLyUobWluc2l6ZUdRIjFGJy8lKG1heHNpemVHUSlpbmZpbml0eUYnLUYjNiktRjY2MVElcHJvY0YnLyUlYm9sZEdGMS9GM1ElYm9sZEYnRjtGPkZARkJGREZGRkgvRktRIUYnL0ZOUSQwZW1GJy9GUUZeb0ZSRlUtSShtZmVuY2VkR0YkNiMtRiM2JS1GLDYlUSJURidGL0YyLUY2NjBRIixGJ0Y5RjsvRj9GMUZARkJGREZGRkhGSkZdby9GUVEzdmVyeXRoaWNrbWF0aHNwYWNlRidGUkZVLUYsNiVRImtGJ0YvRjItSSdtc3BhY2VHRiQ2Ji8lJ2hlaWdodEdRJjAuMGV4RicvJSZ3aWR0aEdRJjAuM2VtRicvJSZkZXB0aEdGZnAvJSpsaW5lYnJlYWtHUTFmaXJzdHByb2NuZXdsaW5lRictRiM2Ji1GNjYxUSZsb2NhbEYnRmduRmluRjtGPkZARkJGREZGRkhGW29GXW8vRlFRMG1lZGl1bW1hdGhzcGFjZUYnRlJGVS1GIzYlLUYsNiVRImlGJ0YvRjJGaG8tRiw2JVEjeHhGJ0YvRjItRjY2MFEiO0YnRjlGO0ZbcEZARkJGREZGRkhGSkZdb0ZQRlJGVUZhcC1GIzYlLUYjNiUtRiM2JS1GLDYlUSdEaWdpdHNGJ0YvRjJGNS1GIzYlLUkjbW5HRiQ2JFEiMkYnRjktRjY2MFEiKkYnRjlGO0Y+RkBGQkZERkZGSEZKL0ZOUS50aGlubWF0aHNwYWNlRicvRlFGZHNGUkZVRmdyRl5yRmFwLUYjNiUtRiM2Jy1GIzYpLUY2NjFRJGZvckYnRmduRmluRjtGPkZARkJGREZGRkhGW29GXW9GZHFGUkZVRmhxLUY2NjFRJWZyb21GJ0ZnbkZpbkY7Rj5GQEZCRkRGRkZIRltvL0ZORmVxRmRxRlJGVS1GXXM2JFEiMEYnRjktRjY2MVEjdG9GJ0ZnbkZpbkY7Rj5GQEZCRkRGRkZIRltvRmJ0RmRxRlJGVS1GIzYlLUYjNiVGXHMtRjY2MFEiXkYnRjlGO0Y+RkBGQkZERkZGSEZKL0ZOUTJ2ZXJ5dGhpbm1hdGhzcGFjZUYnL0ZRRmF1RlJGVUZecC1GNjYwUSp+Jm1pbnVzO35GJ0Y5RjtGPkZARkJGREZGRkhGW29GXW9GX29GUkZVLUZdczYkRlRGOS1GNjYxUSNkb0YnRmduRmluRjtGPkZARkJGREZGRkhGW29GYnRGZHFGUkZVLUZicDYmRmRwRmdwRmpwL0ZdcVE2aW5jcmVhc2VpbmRlbnRuZXdsaW5lRictRiM2JS1GIzYmRmVvLUY2NjBRIltGJ0Y5L0Y8RjFGPi9GQUYxRkJGREZGRkgvRktRJ3ByZWZpeEYnRmNzRmVzRlJGVS1GIzYjRmhxLUY2NjBRIl1GJ0Y5RmZ2Rj5GZ3ZGQkZERkZGSC9GS1EocG9zdGZpeEYnRmNzRmJ1RlJGVUY1LUYjNiUtRiw2JVEmZXZhbGZGJ0YvRjItRjY2MFEwJkFwcGx5RnVuY3Rpb247RidGOUY7Rj5GQEZCRkRGRkZIRkpGXW9GX29GUkZVLUZhbzYjLUYjNiMtRiM2JS1GLDYlUSRleHBGJy9GMEY9RjlGZnctRmFvNiMtRiM2Iy1GIzYkLUY2NjBRKCZtaW51cztGJ0Y5RjtGPkZARkJGREZGRkhGW29GXW9GX29GUkZVLUYjNiUtRiM2Jy1GIzYlRlxzRmBzLUZdczYkUSJJRidGOUZgcy1GLDYlUSNQaUYnRmJ4RjlGYHMtRiM2JS1GLDYlUShyZXZlcnNlRidGL0YyRmZ3LUZhbzYjLUYjNiVGaHFGaG9GXnAtRjY2MFEiL0YnRjlGO0Y+Rmd2RkJGREZGRkhGSkZjc0Zlc0ZSRlUtRiM2Iy1GIzYlRlxzRl11LUZhbzYjLUYjNiVGXnAtRjY2MFEiK0YnRjlGO0Y+RkBGQkZERkZGSEZKRmJ0RmRxRlJGVUZmdS1GYnA2JkZkcC9GaHBRJjAuMGVtRidGanAvRl1xUTZkZWNyZWFzZWluZGVudG5ld2xpbmVGJy1GNjYxUSdlbmR+ZG9GJ0ZnbkZpbkY7Rj5GQEZCRkRGRkZIRltvL0ZORl1wRl9vRlJGVUZeckZhcC1GIzYlRmdyRjUtRiM2JS1GIzYlRmZ1RmF6RlxzRmBzLUYjNiNGZ3JGX1tsLUY2NjFRKWVuZH5wcm9jRidGZ25GaW5GO0Y+RkBGQkZERkZGSEZbb0ZoW2xGX29GUkZV">Zio2JEkiVEc2Ikkia0dGJTYkSSJpR0YlSSN4eEdGJUYlRiVDJT5JJ0RpZ2l0c0dGJSwkKiYiIiMiIiJGLEYwRjA/KEYoIiIhRjAsJilGL0YmRjBGMCEiIkkldHJ1ZUclKnByb3RlY3RlZEc+JkYkNiNGKC1JJmV2YWxmR0Y3NiMtSSRleHBHRiU2IywkKiosJComRi9GMF4jRjBGMEYwRjBJI1BpR0Y3RjAtSShyZXZlcnNlR0YlNiRGKEYmRjApRi8sJkYmRjBGMEYwRjVGNT5GLCwkKiYjRjBGL0YwRixGMEYwRiVGJUYl</Equation></Text-field>
</Output>
</Group>
<Group labelreference="L532" drawlabel="true">
<Input>
<Text-field prompt="&gt; " style="Maple Input" layout="Normal">k:=5;
A:=array(0..2^k-1); for i from 0 to 2^k-1 do A[i]:=0 od:
T:=array(0..2^(k-1)-1); pre(T,k-1):</Text-field>
</Input>
<Output>
<Text-field style="2D Output" layout="Maple Output"><Equation executable="false" style="2D Output" display="LUklbXJvd0c2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGJzYlLUkjbWlHRiQ2JVEia0YnLyUnaXRhbGljR1EldHJ1ZUYnLyUsbWF0aHZhcmlhbnRHUSdpdGFsaWNGJy1JI21vR0YkNjBRIzo9RicvRjNRJ25vcm1hbEYnLyUmZmVuY2VHUSZmYWxzZUYnLyUqc2VwYXJhdG9yR0Y9LyUpc3RyZXRjaHlHRj0vJSpzeW1tZXRyaWNHRj0vJShsYXJnZW9wR0Y9LyUubW92YWJsZWxpbWl0c0dGPS8lJ2FjY2VudEdGPS8lJWZvcm1HUSZpbmZpeEYnLyUnbHNwYWNlR1EvdGhpY2ttYXRoc3BhY2VGJy8lJ3JzcGFjZUdGTy8lKG1pbnNpemVHUSIxRicvJShtYXhzaXplR1EpaW5maW5pdHlGJy1JI21uR0YkNiRRIjVGJ0Y5">IiIm</Equation></Text-field>
</Output>
<Output>
<Text-field style="2D Output" layout="Maple Output"><Equation executable="false" style="2D Output" display="LUklbXJvd0c2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGJzYlLUkjbWlHRiQ2JVEiQUYnLyUnaXRhbGljR1EldHJ1ZUYnLyUsbWF0aHZhcmlhbnRHUSdpdGFsaWNGJy1JI21vR0YkNjBRIzo9RicvRjNRJ25vcm1hbEYnLyUmZmVuY2VHUSZmYWxzZUYnLyUqc2VwYXJhdG9yR0Y9LyUpc3RyZXRjaHlHRj0vJSpzeW1tZXRyaWNHRj0vJShsYXJnZW9wR0Y9LyUubW92YWJsZWxpbWl0c0dGPS8lJ2FjY2VudEdGPS8lJWZvcm1HUSZpbmZpeEYnLyUnbHNwYWNlR1EvdGhpY2ttYXRoc3BhY2VGJy8lJ3JzcGFjZUdGTy8lKG1pbnNpemVHUSIxRicvJShtYXhzaXplR1EpaW5maW5pdHlGJy1GIzYlLUYsNiVRJmFycmF5RidGL0YyLUY2NjBRMCZBcHBseUZ1bmN0aW9uO0YnRjlGO0Y+RkBGQkZERkZGSEZKL0ZOUSQwZW1GJy9GUUZbb0ZSRlUtSShtZmVuY2VkR0YkNiMtRiM2JS1GIzYlLUkjbW5HRiQ2JFEiMEYnRjktRjY2MFEjLi5GJ0Y5RjtGPkZARkJGREZGRkgvRktRKHBvc3RmaXhGJy9GTlEwbWVkaXVtbWF0aHNwYWNlRidGXG9GUkZVLUZlbzYkUSMzMUYnRjktRjY2MFEiLEYnRjlGOy9GP0YxRkBGQkZERkZGSEZKRmpuL0ZRUTN2ZXJ5dGhpY2ttYXRoc3BhY2VGJ0ZSRlUtRl5vNiUtRiM2Iy1GLDYlUSFGJ0YvRjIvJSVvcGVuR1EiW0YnLyUmY2xvc2VHUSJdRic=">PTYiNiM7IiIhIiNKRVxbbCE=</Equation></Text-field>
</Output>
<Output>
<Text-field style="2D Output" layout="Maple Output"><Equation executable="false" style="2D Output" display="LUklbXJvd0c2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGJzYlLUkjbWlHRiQ2JVEiVEYnLyUnaXRhbGljR1EldHJ1ZUYnLyUsbWF0aHZhcmlhbnRHUSdpdGFsaWNGJy1JI21vR0YkNjBRIzo9RicvRjNRJ25vcm1hbEYnLyUmZmVuY2VHUSZmYWxzZUYnLyUqc2VwYXJhdG9yR0Y9LyUpc3RyZXRjaHlHRj0vJSpzeW1tZXRyaWNHRj0vJShsYXJnZW9wR0Y9LyUubW92YWJsZWxpbWl0c0dGPS8lJ2FjY2VudEdGPS8lJWZvcm1HUSZpbmZpeEYnLyUnbHNwYWNlR1EvdGhpY2ttYXRoc3BhY2VGJy8lJ3JzcGFjZUdGTy8lKG1pbnNpemVHUSIxRicvJShtYXhzaXplR1EpaW5maW5pdHlGJy1GIzYlLUYsNiVRJmFycmF5RidGL0YyLUY2NjBRMCZBcHBseUZ1bmN0aW9uO0YnRjlGO0Y+RkBGQkZERkZGSEZKL0ZOUSQwZW1GJy9GUUZbb0ZSRlUtSShtZmVuY2VkR0YkNiMtRiM2JS1GIzYlLUkjbW5HRiQ2JFEiMEYnRjktRjY2MFEjLi5GJ0Y5RjtGPkZARkJGREZGRkgvRktRKHBvc3RmaXhGJy9GTlEwbWVkaXVtbWF0aHNwYWNlRidGXG9GUkZVLUZlbzYkUSMxNUYnRjktRjY2MFEiLEYnRjlGOy9GP0YxRkBGQkZERkZGSEZKRmpuL0ZRUTN2ZXJ5dGhpY2ttYXRoc3BhY2VGJ0ZSRlUtRl5vNiUtRiM2Iy1GLDYlUSFGJ0YvRjIvJSVvcGVuR1EiW0YnLyUmY2xvc2VHUSJdRic=">PTYiNiM7IiIhIiM6RVxbbCE=</Equation></Text-field>
</Output>
</Group>
<Group labelreference="L533" drawlabel="true">
<Input>
<Text-field prompt="&gt; " style="Maple Input" layout="Normal">A[1]:=1+I; cfft(A,T,5): print(A);</Text-field>
</Input>
<Output>
<Text-field style="2D Output" layout="Maple Output"><Equation executable="false" style="2D Output" display="LUklbXJvd0c2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGJzYlLUklbXN1YkdGJDYlLUkjbWlHRiQ2JVEiQUYnLyUnaXRhbGljR1EldHJ1ZUYnLyUsbWF0aHZhcmlhbnRHUSdpdGFsaWNGJy1GIzYjLUkjbW5HRiQ2JFEiMUYnL0Y2USdub3JtYWxGJy8lL3N1YnNjcmlwdHNoaWZ0R1EiMEYnLUkjbW9HRiQ2MFEjOj1GJ0Y+LyUmZmVuY2VHUSZmYWxzZUYnLyUqc2VwYXJhdG9yR0ZJLyUpc3RyZXRjaHlHRkkvJSpzeW1tZXRyaWNHRkkvJShsYXJnZW9wR0ZJLyUubW92YWJsZWxpbWl0c0dGSS8lJ2FjY2VudEdGSS8lJWZvcm1HUSZpbmZpeEYnLyUnbHNwYWNlR1EvdGhpY2ttYXRoc3BhY2VGJy8lJ3JzcGFjZUdGZW4vJShtaW5zaXplR0Y9LyUobWF4c2l6ZUdRKWluZmluaXR5RictRiM2JUY6LUZENjBRIitGJ0Y+RkdGSkZMRk5GUEZSRlRGVi9GWlEwbWVkaXVtbWF0aHNwYWNlRicvRmduRmNvRmhuRmpuLUY7NiRRIklGJ0Y+">LCYiIiJGI14jRiNGIw==</Equation></Text-field>
</Output>
<Output>
<Text-field style="2D Output" layout="Maple Output"><Equation executable="false" style="2D Output" display="LUklbXJvd0c2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGJzYlLUkjbWlHRiQ2JVEmQVJSQVlGJy8lJ2l0YWxpY0dRJXRydWVGJy8lLG1hdGh2YXJpYW50R1EnaXRhbGljRictSSNtb0dGJDYwUTAmQXBwbHlGdW5jdGlvbjtGJy9GM1Enbm9ybWFsRicvJSZmZW5jZUdRJmZhbHNlRicvJSpzZXBhcmF0b3JHRj0vJSlzdHJldGNoeUdGPS8lKnN5bW1ldHJpY0dGPS8lKGxhcmdlb3BHRj0vJS5tb3ZhYmxlbGltaXRzR0Y9LyUnYWNjZW50R0Y9LyUlZm9ybUdRJmluZml4RicvJSdsc3BhY2VHUSQwZW1GJy8lJ3JzcGFjZUdGTy8lKG1pbnNpemVHUSIxRicvJShtYXhzaXplR1EpaW5maW5pdHlGJy1JKG1mZW5jZWRHRiQ2Iy1GIzYlLUZZNiUtRiM2Iy1GIzYlLUkjbW5HRiQ2JFEiMEYnRjktRjY2MFEjLi5GJ0Y5RjtGPkZARkJGREZGRkgvRktRKHBvc3RmaXhGJy9GTlEwbWVkaXVtbWF0aHNwYWNlRidGUEZSRlUtRl5vNiRRIzMxRidGOS8lJW9wZW5HUSJbRicvJSZjbG9zZUdRIl1GJy1GNjYwUSIsRidGOUY7L0Y/RjFGQEZCRkRGRkZIRkpGTS9GUVEzdmVyeXRoaWNrbWF0aHNwYWNlRidGUkZVLUZZNiUtRiM2W28tRiM2JS1GIzYjRl1vLUY2NjBRIj1GJ0Y5RjtGPkZARkJGREZGRkhGSi9GTlEvdGhpY2ttYXRoc3BhY2VGJy9GUUZjcUZSRlUtRiM2JS1GXm82JFEjMS5GJ0Y5LUY2NjBRIitGJ0Y5RjtGPkZARkJGREZGRkhGSkZmby9GUUZnb0ZSRlUtRiM2JUZncS1GNjYwUTEmSW52aXNpYmxlVGltZXM7RidGOUY7Rj5GQEZCRkRGRkZIRkpGTUZQRlJGVS1GXm82JFEiSUYnRjlGYXAtRiM2JS1GIzYjLUZebzYkRlRGOUZfcS1GIzYmLUY2NjBRKiZ1bWludXMwO0YnRjlGO0Y+RkBGQkZERkZGSC9GS1EncHJlZml4RidGTS9GUVEydmVyeXRoaW5tYXRoc3BhY2VGJ0ZSRlVGZ3EtRjY2MFEoJm1pbnVzO0YnRjlGO0Y+RkBGQkZERkZGSEZKRmZvRl1yRlJGVUZeckZhcC1GIzYlLUYjNiMtRl5vNiRRIjJGJ0Y5Rl9xLUYjNiVGZ3FGZXNGXnJGYXAtRiM2JS1GIzYjLUZebzYkUSIzRidGOUZfcS1GIzYmRl5zRmdxRmpxRl5yRmFwLUYjNiUtRiM2Iy1GXm82JFEiNEYnRjlGX3EtRiM2JS1GXm82JFEsMS40MTQyMTM1NjJGJ0Y5RmpxLUYjNiUtRl5vNiRRIzAuRidGOUZgckZjckZhcC1GIzYlLUYjNiMtRl5vNiRRIjVGJ0Y5Rl9xLUYjNiZGXnNGY3VGZXNGZnVGYXAtRiM2JS1GIzYjLUZebzYkUSI2RidGOUZfcS1GIzYlRmh1RmVzLUYjNiVGY3VGYHJGY3JGYXAtRiM2JS1GIzYjLUZebzYkUSI3RidGOUZfcS1GIzYlRmh1RmpxRl13RmFwLUYjNiUtRiM2Iy1GXm82JFEiOEYnRjlGX3EtRiM2JS1GXm82JFEsMS4zMDY1NjI5NjVGJ0Y5RmpxLUYjNiUtRl5vNiRRLTAuNTQxMTk2MTAwMUYnRjlGYHJGY3JGYXAtRiM2JS1GIzYjLUZebzYkUSI5RidGOUZfcS1GIzYmRl5zRmF4RmVzRmR4RmFwLUYjNiUtRiM2Iy1GXm82JFEjMTBGJ0Y5Rl9xLUYjNiVGZnhGZXMtRiM2JUZheEZgckZjckZhcC1GIzYlLUYjNiMtRl5vNiRRIzExRidGOUZfcS1GIzYmRl5zRmZ4RmpxRlt6RmFwLUYjNiUtRiM2Iy1GXm82JFEjMTJGJ0Y5Rl9xLUYjNiVGYXhGZXNGZHhGYXAtRiM2JS1GIzYjLUZebzYkUSMxM0YnRjlGX3EtRiM2JkZec0ZheEZqcUZkeEZhcC1GIzYlLUYjNiMtRl5vNiRRIzE0RidGOUZfcS1GIzYmRl5zRmZ4RmVzRlt6RmFwLUYjNiUtRiM2Iy1GXm82JFEjMTVGJ0Y5Rl9xLUYjNiVGZnhGanFGW3pGYXAtRiM2JS1GIzYjLUZebzYkUSMxNkYnRjlGX3EtRiM2JS1GXm82JFEsMS4xNzU4NzU2MDJGJ0Y5RmpxLUYjNiUtRl5vNiRRLTAuNzg1Njk0OTU4NEYnRjlGYHJGY3JGYXAtRiM2JS1GIzYjLUZebzYkUSMxN0YnRjlGX3EtRiM2JkZec0ZjXWxGZXNGZl1sRmFwLUYjNiUtRiM2Iy1GXm82JFEjMThGJ0Y5Rl9xLUYjNiVGaF1sRmVzLUYjNiVGY11sRmByRmNyRmFwLUYjNiUtRiM2Iy1GXm82JFEjMTlGJ0Y5Rl9xLUYjNiZGXnNGaF1sRmpxRl1fbEZhcC1GIzYlLUYjNiMtRl5vNiRRIzIwRidGOUZfcS1GIzYlLUZebzYkUSwxLjM4NzAzOTg0NUYnRjlGZXMtRiM2JS1GXm82JFEtMC4yNzU4OTkzNzkzRidGOUZgckZjckZhcC1GIzYlLUYjNiMtRl5vNiRRIzIxRidGOUZfcS1GIzYmRl5zRmFgbEZqcUZkYGxGYXAtRiM2JS1GIzYjLUZebzYkUSMyMkYnRjlGX3EtRiM2JkZec0ZmYGxGZXMtRiM2JUZhYGxGYHJGY3JGYXAtRiM2JS1GIzYjLUZebzYkUSMyM0YnRjlGX3EtRiM2JUZmYGxGanFGW2JsRmFwLUYjNiUtRiM2Iy1GXm82JFEjMjRGJ0Y5Rl9xLUYjNiVGYWBsRmpxRmRgbEZhcC1GIzYlLUYjNiMtRl5vNiRRIzI1RidGOUZfcS1GIzYmRl5zRmFgbEZlc0ZkYGxGYXAtRiM2JS1GIzYjLUZebzYkUSMyNkYnRjlGX3EtRiM2JUZmYGxGZXNGW2JsRmFwLUYjNiUtRiM2Iy1GXm82JFEjMjdGJ0Y5Rl9xLUYjNiZGXnNGZmBsRmpxRltibEZhcC1GIzYlLUYjNiMtRl5vNiRRIzI4RidGOUZfcS1GIzYlRmNdbEZlc0ZmXWxGYXAtRiM2JS1GIzYjLUZebzYkUSMyOUYnRjlGX3EtRiM2JkZec0ZjXWxGanFGZl1sRmFwLUYjNiUtRiM2Iy1GXm82JFEjMzBGJ0Y5Rl9xLUYjNiZGXnNGaF1sRmVzRl1fbEZhcC1GIzYlLUYjNiNGaG9GX3EtRiM2JUZoXWxGanFGXV9sRltwRl5w">SSJBRzYi</Equation></Text-field>
</Output>
</Group>
<Group labelreference="L534" drawlabel="true">
<Input>
<Text-field prompt="&gt; " style="Maple Input" layout="Normal">for i from 0 to 2^k-1 do
  j:=reverse(i,k);
  if i&lt;j then x:=A[i]; A[i]:=A[j]; A[j]:=x; fi;
od: print(A);</Text-field>
</Input>
<Output>
<Text-field style="2D Output" layout="Maple Output"><Equation executable="false" style="2D Output" display="LUklbXJvd0c2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGJzYlLUkjbWlHRiQ2JVEmQVJSQVlGJy8lJ2l0YWxpY0dRJXRydWVGJy8lLG1hdGh2YXJpYW50R1EnaXRhbGljRictSSNtb0dGJDYwUTAmQXBwbHlGdW5jdGlvbjtGJy9GM1Enbm9ybWFsRicvJSZmZW5jZUdRJmZhbHNlRicvJSpzZXBhcmF0b3JHRj0vJSlzdHJldGNoeUdGPS8lKnN5bW1ldHJpY0dGPS8lKGxhcmdlb3BHRj0vJS5tb3ZhYmxlbGltaXRzR0Y9LyUnYWNjZW50R0Y9LyUlZm9ybUdRJmluZml4RicvJSdsc3BhY2VHUSQwZW1GJy8lJ3JzcGFjZUdGTy8lKG1pbnNpemVHUSIxRicvJShtYXhzaXplR1EpaW5maW5pdHlGJy1JKG1mZW5jZWRHRiQ2Iy1GIzYlLUZZNiUtRiM2Iy1GIzYlLUkjbW5HRiQ2JFEiMEYnRjktRjY2MFEjLi5GJ0Y5RjtGPkZARkJGREZGRkgvRktRKHBvc3RmaXhGJy9GTlEwbWVkaXVtbWF0aHNwYWNlRidGUEZSRlUtRl5vNiRRIzMxRidGOS8lJW9wZW5HUSJbRicvJSZjbG9zZUdRIl1GJy1GNjYwUSIsRidGOUY7L0Y/RjFGQEZCRkRGRkZIRkpGTS9GUVEzdmVyeXRoaWNrbWF0aHNwYWNlRidGUkZVLUZZNiUtRiM2W28tRiM2JS1GIzYjRl1vLUY2NjBRIj1GJ0Y5RjtGPkZARkJGREZGRkhGSi9GTlEvdGhpY2ttYXRoc3BhY2VGJy9GUUZjcUZSRlUtRiM2JS1GXm82JFEjMS5GJ0Y5LUY2NjBRIitGJ0Y5RjtGPkZARkJGREZGRkhGSkZmby9GUUZnb0ZSRlUtRiM2JUZncS1GNjYwUTEmSW52aXNpYmxlVGltZXM7RidGOUY7Rj5GQEZCRkRGRkZIRkpGTUZQRlJGVS1GXm82JFEiSUYnRjlGYXAtRiM2JS1GIzYjLUZebzYkRlRGOUZfcS1GIzYlLUZebzYkUSwxLjE3NTg3NTYwMkYnRjlGanEtRiM2JS1GXm82JFEtMC43ODU2OTQ5NTg0RidGOUZgckZjckZhcC1GIzYlLUYjNiMtRl5vNiRRIjJGJ0Y5Rl9xLUYjNiUtRl5vNiRRLDEuMzA2NTYyOTY1RidGOUZqcS1GIzYlLUZebzYkUS0wLjU0MTE5NjEwMDFGJ0Y5RmByRmNyRmFwLUYjNiUtRiM2Iy1GXm82JFEiM0YnRjlGX3EtRiM2JS1GXm82JFEsMS4zODcwMzk4NDVGJ0Y5RmpxLUYjNiUtRl5vNiRRLTAuMjc1ODk5Mzc5M0YnRjlGYHJGY3JGYXAtRiM2JS1GIzYjLUZebzYkUSI0RidGOUZfcS1GIzYlLUZebzYkUSwxLjQxNDIxMzU2MkYnRjlGanEtRiM2JS1GXm82JFEjMC5GJ0Y5RmByRmNyRmFwLUYjNiUtRiM2Iy1GXm82JFEiNUYnRjlGX3EtRiM2JUZgdS1GNjYwUSgmbWludXM7RidGOUY7Rj5GQEZCRkRGRkZIRkpGZm9GXXJGUkZVRmN1RmFwLUYjNiUtRiM2Iy1GXm82JFEiNkYnRjlGX3EtRiM2JUZfdEZid0ZidEZhcC1GIzYlLUYjNiMtRl5vNiRRIjdGJ0Y5Rl9xLUYjNiVGXnNGYndGYXNGYXAtRiM2JS1GIzYjLUZebzYkUSI4RidGOUZfcS1GIzYlRmdxRmJ3Rl5yRmFwLUYjNiUtRiM2Iy1GXm82JFEiOUYnRjlGX3EtRiM2JUZjc0Zidy1GIzYlRl5zRmByRmNyRmFwLUYjNiUtRiM2Iy1GXm82JFEjMTBGJ0Y5Rl9xLUYjNiVGZHRGYnctRiM2JUZfdEZgckZjckZhcC1GIzYlLUYjNiMtRl5vNiRRIzExRidGOUZfcS1GIzYlRmV1RmJ3LUYjNiVGYHVGYHJGY3JGYXAtRiM2JS1GIzYjLUZebzYkUSMxMkYnRjlGX3EtRiM2JUZmdkZidy1GIzYlRmF2RmByRmNyRmFwLUYjNiUtRiM2Iy1GXm82JFEjMTNGJ0Y5Rl9xLUYjNiYtRjY2MFEqJnVtaW51czA7RidGOUY7Rj5GQEZCRkRGRkZIL0ZLUSdwcmVmaXhGJ0ZNL0ZRUTJ2ZXJ5dGhpbm1hdGhzcGFjZUYnRlJGVUZldUZid0ZfW2xGYXAtRiM2JS1GIzYjLUZebzYkUSMxNEYnRjlGX3EtRiM2JkZlXGxGZHRGYndGZHpGYXAtRiM2JS1GIzYjLUZebzYkUSMxNUYnRjlGX3EtRiM2JkZlXGxGY3NGYndGaXlGYXAtRiM2JS1GIzYjLUZebzYkUSMxNkYnRjlGX3EtRiM2JkZlXGxGZ3FGYndGXnJGYXAtRiM2JS1GIzYjLUZebzYkUSMxN0YnRjlGX3EtRiM2JkZlXGxGXnNGYndGYXNGYXAtRiM2JS1GIzYjLUZebzYkUSMxOEYnRjlGX3EtRiM2JkZlXGxGX3RGYndGYnRGYXAtRiM2JS1GIzYjLUZebzYkUSMxOUYnRjlGX3EtRiM2JkZlXGxGYHVGYndGY3VGYXAtRiM2JS1GIzYjLUZebzYkUSMyMEYnRjlGX3EtRiM2JkZlXGxGYXZGYndGZHZGYXAtRiM2JS1GIzYjLUZebzYkUSMyMUYnRjlGX3EtRiM2JkZlXGxGYHVGanFGY3VGYXAtRiM2JS1GIzYjLUZebzYkUSMyMkYnRjlGX3EtRiM2JkZlXGxGX3RGanFGYnRGYXAtRiM2JS1GIzYjLUZebzYkUSMyM0YnRjlGX3EtRiM2JkZlXGxGXnNGanFGYXNGYXAtRiM2JS1GIzYjLUZebzYkUSMyNEYnRjlGX3EtRiM2JkZlXGxGZ3FGanFGXnJGYXAtRiM2JS1GIzYjLUZebzYkUSMyNUYnRjlGX3EtRiM2JkZlXGxGY3NGanFGaXlGYXAtRiM2JS1GIzYjLUZebzYkUSMyNkYnRjlGX3EtRiM2JkZlXGxGZHRGanFGZHpGYXAtRiM2JS1GIzYjLUZebzYkUSMyN0YnRjlGX3EtRiM2JkZlXGxGZXVGanFGX1tsRmFwLUYjNiUtRiM2Iy1GXm82JFEjMjhGJ0Y5Rl9xLUYjNiVGZnZGanFGaltsRmFwLUYjNiUtRiM2Iy1GXm82JFEjMjlGJ0Y5Rl9xLUYjNiVGZXVGanFGX1tsRmFwLUYjNiUtRiM2Iy1GXm82JFEjMzBGJ0Y5Rl9xLUYjNiVGZHRGanFGZHpGYXAtRiM2JS1GIzYjRmhvRl9xLUYjNiVGY3NGanFGaXlGW3BGXnA=">SSJBRzYi</Equation></Text-field>
</Output>
</Group>
<Group labelreference="L535" drawlabel="true">
<Input>
<Text-field prompt="&gt; " style="Maple Input" layout="Normal">cfft(A,T,5): print(A);</Text-field>
</Input>
<Output>
<Text-field style="2D Output" layout="Maple Output"><Equation executable="false" style="2D Output" display="LUklbXJvd0c2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGJzYlLUkjbWlHRiQ2JVEmQVJSQVlGJy8lJ2l0YWxpY0dRJXRydWVGJy8lLG1hdGh2YXJpYW50R1EnaXRhbGljRictSSNtb0dGJDYwUTAmQXBwbHlGdW5jdGlvbjtGJy9GM1Enbm9ybWFsRicvJSZmZW5jZUdRJmZhbHNlRicvJSpzZXBhcmF0b3JHRj0vJSlzdHJldGNoeUdGPS8lKnN5bW1ldHJpY0dGPS8lKGxhcmdlb3BHRj0vJS5tb3ZhYmxlbGltaXRzR0Y9LyUnYWNjZW50R0Y9LyUlZm9ybUdRJmluZml4RicvJSdsc3BhY2VHUSQwZW1GJy8lJ3JzcGFjZUdGTy8lKG1pbnNpemVHUSIxRicvJShtYXhzaXplR1EpaW5maW5pdHlGJy1JKG1mZW5jZWRHRiQ2Iy1GIzYlLUZZNiUtRiM2Iy1GIzYlLUkjbW5HRiQ2JFEiMEYnRjktRjY2MFEjLi5GJ0Y5RjtGPkZARkJGREZGRkgvRktRKHBvc3RmaXhGJy9GTlEwbWVkaXVtbWF0aHNwYWNlRidGUEZSRlUtRl5vNiRRIzMxRidGOS8lJW9wZW5HUSJbRicvJSZjbG9zZUdRIl1GJy1GNjYwUSIsRidGOUY7L0Y/RjFGQEZCRkRGRkZIRkpGTS9GUVEzdmVyeXRoaWNrbWF0aHNwYWNlRidGUkZVLUZZNiUtRiM2W28tRiM2JS1GIzYjRl1vLUY2NjBRIj1GJ0Y5RjtGPkZARkJGREZGRkhGSi9GTlEvdGhpY2ttYXRoc3BhY2VGJy9GUUZjcUZSRlUtRiM2JS1GXm82JFEjMC5GJ0Y5LUY2NjBRIitGJ0Y5RjtGPkZARkJGREZGRkhGSkZmby9GUUZnb0ZSRlUtRiM2JUZncS1GNjYwUTEmSW52aXNpYmxlVGltZXM7RidGOUY7Rj5GQEZCRkRGRkZIRkpGTUZQRlJGVS1GXm82JFEiSUYnRjlGYXAtRiM2JS1GIzYjLUZebzYkRlRGOUZfcUZlcUZhcC1GIzYlLUYjNiMtRl5vNiRRIjJGJ0Y5Rl9xRmVxRmFwLUYjNiUtRiM2Iy1GXm82JFEiM0YnRjlGX3FGZXFGYXAtRiM2JS1GIzYjLUZebzYkUSI0RidGOUZfcUZlcUZhcC1GIzYlLUYjNiMtRl5vNiRRIjVGJ0Y5Rl9xRmVxRmFwLUYjNiUtRiM2Iy1GXm82JFEiNkYnRjlGX3FGZXFGYXAtRiM2JS1GIzYjLUZebzYkUSI3RidGOUZfcUZlcUZhcC1GIzYlLUYjNiMtRl5vNiRRIjhGJ0Y5Rl9xRmVxRmFwLUYjNiUtRiM2Iy1GXm82JFEiOUYnRjlGX3FGZXFGYXAtRiM2JS1GIzYjLUZebzYkUSMxMEYnRjlGX3FGZXFGYXAtRiM2JS1GIzYjLUZebzYkUSMxMUYnRjlGX3FGZXFGYXAtRiM2JS1GIzYjLUZebzYkUSMxMkYnRjlGX3FGZXFGYXAtRiM2JS1GIzYjLUZebzYkUSMxM0YnRjlGX3FGZXFGYXAtRiM2JS1GIzYjLUZebzYkUSMxNEYnRjlGX3FGZXFGYXAtRiM2JS1GIzYjLUZebzYkUSMxNUYnRjlGX3FGZXFGYXAtRiM2JS1GIzYjLUZebzYkUSMxNkYnRjlGX3FGZXFGYXAtRiM2JS1GIzYjLUZebzYkUSMxN0YnRjlGX3FGZXFGYXAtRiM2JS1GIzYjLUZebzYkUSMxOEYnRjlGX3FGZXFGYXAtRiM2JS1GIzYjLUZebzYkUSMxOUYnRjlGX3FGZXFGYXAtRiM2JS1GIzYjLUZebzYkUSMyMEYnRjlGX3FGZXFGYXAtRiM2JS1GIzYjLUZebzYkUSMyMUYnRjlGX3FGZXFGYXAtRiM2JS1GIzYjLUZebzYkUSMyMkYnRjlGX3FGZXFGYXAtRiM2JS1GIzYjLUZebzYkUSMyM0YnRjlGX3FGZXFGYXAtRiM2JS1GIzYjLUZebzYkUSMyNEYnRjlGX3EtRiM2JS1GIzYlLUZebzYkUSw5Ljc2MDk2NjkwNkYnRjlGYHItSSVtc3VwR0YkNiVGaHYtRl5vNiRRJC0xMEYnRjkvJTFzdXBlcnNjcmlwdHNoaWZ0R1EiMEYnRmpxLUYjNiUtRiM2JS1GXm82JFEsMi43OTAwNTEzNzJGJ0Y5RmByLUZlXWw2JUZodi1GXm82JFEjLTlGJ0Y5RmpdbEZgckZjckZhcC1GIzYlLUYjNiMtRl5vNiRRIzI1RidGOUZfcS1GIzYmLUY2NjBRKiZ1bWludXMwO0YnRjlGO0Y+RkBGQkZERkZGSC9GS1EncHJlZml4RidGTS9GUVEydmVyeXRoaW5tYXRoc3BhY2VGJ0ZSRlUtRiM2JS1GXm82JFEsOC4yMzg1NTc1NTZGJ0Y5RmByRmRdbC1GNjYwUSgmbWludXM7RidGOUY7Rj5GQEZCRkRGRkZIRkpGZm9GXXJGUkZVLUYjNiUtRiM2JS1GXm82JFEsMS41NTU0MTgyMzZGJ0Y5RmByRmRebEZgckZjckZhcC1GIzYlLUYjNiMtRl5vNiRRIzI2RidGOUZfcS1GIzYlLUYjNiUtRl5vNiRRLDIuNTI1MjI0NDE5RidGOUZgckZkXmxGanEtRiM2JS1GIzYlLUZebzYkUSwyLjgzNDQ1ODQxNEYnRjlGYHJGZF5sRmByRmNyRmFwLUYjNiUtRiM2Iy1GXm82JFEjMjdGJ0Y5Rl9xLUYjNiUtRiM2JS1GXm82JFEsMS4zMjI1MzQ2NDVGJ0Y5RmByRmRebEZeYGwtRiM2JS1GIzYlLUZebzYkUSo2LjkwOTE1NTBGJ0Y5RmByLUZlXWw2JUZodi1GXm82JFEkLTExRidGOUZqXWxGYHJGY3JGYXAtRiM2JS1GIzYjLUZebzYkUSMyOEYnRjlGX3EtRiM2JkZiX2wtRiM2JS1GXm82JFEqMy44NDI5NDM5RidGOUZgckZiY2xGXmBsLUYjNiUtRiM2JS1GXm82JFEsMS42MDk4MTkzNTZGJ0Y5RmByRmRebEZgckZjckZhcC1GIzYlLUYjNiMtRl5vNiRRIzI5RidGOUZfcS1GIzYmRmJfbC1GIzYlLUZebzYkUSwzLjk2MTU3MDU2MUYnRjlGYHJGZF5sRl5gbC1GIzYlLUYjNiUtRl5vNiRRLDIuMzkwMTgwNjQ0RidGOUZgckZkXmxGYHJGY3JGYXAtRiM2JS1GIzYjLUZebzYkUSMzMEYnRjlGX3EtRiM2JS1GIzYlLUZebzYkUSMxLkYnRjlGYHItRmVdbDYlRmh2LUZebzYkUSMtOEYnRjlGal1sRmpxLUYjNiVGamZsRmByRmNyRmFwLUYjNiUtRiM2I0Zob0ZfcS1GIzYlLUZebzYkUSwzMS45OTk5OTk5OUYnRjlGanEtRiM2JUZcaGxGYHJGY3JGW3BGXnA=">SSJBRzYi</Equation></Text-field>
</Output>
</Group>
<Group labelreference="L536" drawlabel="true">
<Input>
<Text-field prompt="&gt; " style="Maple Input" layout="Normal">for i from 0 to 2^k-1 do
  j:=reverse(i,k);
  if i&lt;j then x:=A[i]; A[i]:=A[j]; A[j]:=x; fi;
od: print(A);</Text-field>
</Input>
<Output>
<Text-field style="2D Output" layout="Maple Output"><Equation executable="false" style="2D Output" display="LUklbXJvd0c2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGJzYlLUkjbWlHRiQ2JVEmQVJSQVlGJy8lJ2l0YWxpY0dRJXRydWVGJy8lLG1hdGh2YXJpYW50R1EnaXRhbGljRictSSNtb0dGJDYwUTAmQXBwbHlGdW5jdGlvbjtGJy9GM1Enbm9ybWFsRicvJSZmZW5jZUdRJmZhbHNlRicvJSpzZXBhcmF0b3JHRj0vJSlzdHJldGNoeUdGPS8lKnN5bW1ldHJpY0dGPS8lKGxhcmdlb3BHRj0vJS5tb3ZhYmxlbGltaXRzR0Y9LyUnYWNjZW50R0Y9LyUlZm9ybUdRJmluZml4RicvJSdsc3BhY2VHUSQwZW1GJy8lJ3JzcGFjZUdGTy8lKG1pbnNpemVHUSIxRicvJShtYXhzaXplR1EpaW5maW5pdHlGJy1JKG1mZW5jZWRHRiQ2Iy1GIzYlLUZZNiUtRiM2Iy1GIzYlLUkjbW5HRiQ2JFEiMEYnRjktRjY2MFEjLi5GJ0Y5RjtGPkZARkJGREZGRkgvRktRKHBvc3RmaXhGJy9GTlEwbWVkaXVtbWF0aHNwYWNlRidGUEZSRlUtRl5vNiRRIzMxRidGOS8lJW9wZW5HUSJbRicvJSZjbG9zZUdRIl1GJy1GNjYwUSIsRidGOUY7L0Y/RjFGQEZCRkRGRkZIRkpGTS9GUVEzdmVyeXRoaWNrbWF0aHNwYWNlRidGUkZVLUZZNiUtRiM2W28tRiM2JS1GIzYjRl1vLUY2NjBRIj1GJ0Y5RjtGPkZARkJGREZGRkhGSi9GTlEvdGhpY2ttYXRoc3BhY2VGJy9GUUZjcUZSRlUtRiM2JS1GXm82JFEjMC5GJ0Y5LUY2NjBRIitGJ0Y5RjtGPkZARkJGREZGRkhGSkZmby9GUUZnb0ZSRlUtRiM2JUZncS1GNjYwUTEmSW52aXNpYmxlVGltZXM7RidGOUY7Rj5GQEZCRkRGRkZIRkpGTUZQRlJGVS1GXm82JFEiSUYnRjlGYXAtRiM2JS1GIzYjLUZebzYkRlRGOUZfcUZlcUZhcC1GIzYlLUYjNiMtRl5vNiRRIjJGJ0Y5Rl9xRmVxRmFwLUYjNiUtRiM2Iy1GXm82JFEiM0YnRjlGX3EtRiM2JS1GIzYlLUZebzYkUSw5Ljc2MDk2NjkwNkYnRjlGYHItSSVtc3VwR0YkNiUtRl5vNiRRIzEwRidGOS1GXm82JFEkLTEwRidGOS8lMXN1cGVyc2NyaXB0c2hpZnRHUSIwRidGanEtRiM2JS1GIzYlLUZebzYkUSwyLjc5MDA1MTM3MkYnRjlGYHItRmJ0NiVGZHQtRl5vNiRRIy05RidGOUZqdEZgckZjckZhcC1GIzYlLUYjNiMtRl5vNiRRIjRGJ0Y5Rl9xRmVxRmFwLUYjNiUtRiM2Iy1GXm82JFEiNUYnRjlGX3FGZXFGYXAtRiM2JS1GIzYjLUZebzYkUSI2RidGOUZfcUZlcUZhcC1GIzYlLUYjNiMtRl5vNiRRIjdGJ0Y5Rl9xLUYjNiYtRjY2MFEqJnVtaW51czA7RidGOUY7Rj5GQEZCRkRGRkZIL0ZLUSdwcmVmaXhGJ0ZNL0ZRUTJ2ZXJ5dGhpbm1hdGhzcGFjZUYnRlJGVS1GIzYlLUZebzYkUSozLjg0Mjk0MzlGJ0Y5RmByLUZidDYlRmR0LUZebzYkUSQtMTFGJ0Y5Rmp0LUY2NjBRKCZtaW51cztGJ0Y5RjtGPkZARkJGREZGRkhGSkZmb0ZdckZSRlUtRiM2JS1GIzYlLUZebzYkUSwxLjYwOTgxOTM1NkYnRjlGYHJGZHVGYHJGY3JGYXAtRiM2JS1GIzYjLUZebzYkUSI4RidGOUZfcUZlcUZhcC1GIzYlLUYjNiMtRl5vNiRRIjlGJ0Y5Rl9xRmVxRmFwLUYjNiUtRiM2I0ZkdEZfcUZlcUZhcC1GIzYlLUYjNiMtRl5vNiRRIzExRidGOUZfcS1GIzYlLUYjNiUtRl5vNiRRLDIuNTI1MjI0NDE5RidGOUZgckZkdUZqcS1GIzYlLUYjNiUtRl5vNiRRLDIuODM0NDU4NDE0RidGOUZgckZkdUZgckZjckZhcC1GIzYlLUYjNiMtRl5vNiRRIzEyRidGOUZfcUZlcUZhcC1GIzYlLUYjNiMtRl5vNiRRIzEzRidGOUZfcUZlcUZhcC1GIzYlLUYjNiMtRl5vNiRRIzE0RidGOUZfcUZlcUZhcC1GIzYlLUYjNiMtRl5vNiRRIzE1RidGOUZfcS1GIzYlLUYjNiUtRl5vNiRRIzEuRidGOUZgci1GYnQ2JUZkdC1GXm82JFEjLThGJ0Y5Rmp0RmpxLUYjNiVGZ11sRmByRmNyRmFwLUYjNiUtRiM2Iy1GXm82JFEjMTZGJ0Y5Rl9xRmVxRmFwLUYjNiUtRiM2Iy1GXm82JFEjMTdGJ0Y5Rl9xRmVxRmFwLUYjNiUtRiM2Iy1GXm82JFEjMThGJ0Y5Rl9xRmVxRmFwLUYjNiUtRiM2Iy1GXm82JFEjMTlGJ0Y5Rl9xLUYjNiZGZ3ctRiM2JS1GXm82JFEsOC4yMzg1NTc1NTZGJ0Y5RmByRmF0Rmh4LUYjNiUtRiM2JS1GXm82JFEsMS41NTU0MTgyMzZGJ0Y5RmByRmR1RmByRmNyRmFwLUYjNiUtRiM2Iy1GXm82JFEjMjBGJ0Y5Rl9xRmVxRmFwLUYjNiUtRiM2Iy1GXm82JFEjMjFGJ0Y5Rl9xRmVxRmFwLUYjNiUtRiM2Iy1GXm82JFEjMjJGJ0Y5Rl9xRmVxRmFwLUYjNiUtRiM2Iy1GXm82JFEjMjNGJ0Y5Rl9xLUYjNiZGZ3ctRiM2JS1GXm82JFEsMy45NjE1NzA1NjFGJ0Y5RmByRmR1Rmh4LUYjNiUtRiM2JS1GXm82JFEsMi4zOTAxODA2NDRGJ0Y5RmByRmR1RmByRmNyRmFwLUYjNiUtRiM2Iy1GXm82JFEjMjRGJ0Y5Rl9xRmVxRmFwLUYjNiUtRiM2Iy1GXm82JFEjMjVGJ0Y5Rl9xRmVxRmFwLUYjNiUtRiM2Iy1GXm82JFEjMjZGJ0Y5Rl9xRmVxRmFwLUYjNiUtRiM2Iy1GXm82JFEjMjdGJ0Y5Rl9xLUYjNiUtRiM2JS1GXm82JFEsMS4zMjI1MzQ2NDVGJ0Y5RmByRmR1Rmh4LUYjNiUtRiM2JS1GXm82JFEqNi45MDkxNTUwRidGOUZgckZjeEZgckZjckZhcC1GIzYlLUYjNiMtRl5vNiRRIzI4RidGOUZfcUZlcUZhcC1GIzYlLUYjNiMtRl5vNiRRIzI5RidGOUZfcUZlcUZhcC1GIzYlLUYjNiMtRl5vNiRRIzMwRidGOUZfcUZlcUZhcC1GIzYlLUYjNiNGaG9GX3EtRiM2JS1GXm82JFEsMzEuOTk5OTk5OTlGJ0Y5RmpxLUYjNiVGXGhsRmByRmNyRltwRl5w">SSJBRzYi</Equation></Text-field>
</Output>
</Group>
</Section>
<Section collapsed="false" MultipleChoiceAnswerIndex="-1" MultipleChoiceRandomizeChoices="false" TrueFalseAnswerIndex="-1" EssayAnswerRows="5" EssayAnswerColumns="60"><Title>
<Text-field style="Heading 2" layout="Heading 2">7.3. Inverz FFT.</Text-field></Title>
<Text-field style="Text" layout="Normal"></Text-field>
<Group labelreference="L513" drawlabel="true">
<Input>
<Text-field prompt="&gt; " style="Maple Input" layout="Normal">#
# This procedure do the inverse complex butterfly operation
# between the two terms A[i] and A[j] of the
# table A. The power of primitive unity is w.
#

icbutterfly:=proc(A,i,j,w) local X,Y,e;
  X:=A[i]+A[j]; Y:=A[i]-A[j]; A[i]:=X; A[j]:=Y/w;
end;</Text-field>
</Input>
<Output>
<Text-field style="2D Output" layout="Maple Output"><Equation executable="false" style="2D Output" display="LUklbXJvd0c2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGJzYlLUkjbWlHRiQ2JVEsaWNidXR0ZXJmbHlGJy8lJ2l0YWxpY0dRJXRydWVGJy8lLG1hdGh2YXJpYW50R1EnaXRhbGljRictSSNtb0dGJDYwUSM6PUYnL0YzUSdub3JtYWxGJy8lJmZlbmNlR1EmZmFsc2VGJy8lKnNlcGFyYXRvckdGPS8lKXN0cmV0Y2h5R0Y9LyUqc3ltbWV0cmljR0Y9LyUobGFyZ2VvcEdGPS8lLm1vdmFibGVsaW1pdHNHRj0vJSdhY2NlbnRHRj0vJSVmb3JtR1EmaW5maXhGJy8lJ2xzcGFjZUdRL3RoaWNrbWF0aHNwYWNlRicvJSdyc3BhY2VHRk8vJShtaW5zaXplR1EiMUYnLyUobWF4c2l6ZUdRKWluZmluaXR5RictRiM2KS1GNjYxUSVwcm9jRicvJSVib2xkR0YxL0YzUSVib2xkRidGO0Y+RkBGQkZERkZGSC9GS1EhRicvRk5RJDBlbUYnL0ZRRl5vRlJGVS1JKG1mZW5jZWRHRiQ2Iy1GIzYpLUYsNiVRIkFGJ0YvRjItRjY2MFEiLEYnRjlGOy9GP0YxRkBGQkZERkZGSEZKRl1vL0ZRUTN2ZXJ5dGhpY2ttYXRoc3BhY2VGJ0ZSRlUtRiw2JVEiaUYnRi9GMkZoby1GLDYlUSJqRidGL0YyRmhvLUYsNiVRIndGJ0YvRjItSSdtc3BhY2VHRiQ2Ji8lJ2hlaWdodEdRJjAuMGV4RicvJSZ3aWR0aEdRJjAuM2VtRicvJSZkZXB0aEdGXHEvJSpsaW5lYnJlYWtHUTFmaXJzdHByb2NuZXdsaW5lRictRiM2Ji1GNjYxUSZsb2NhbEYnRmduRmluRjtGPkZARkJGREZGRkhGW29GXW8vRlFRMG1lZGl1bW1hdGhzcGFjZUYnRlJGVS1GIzYnLUYsNiVRIlhGJ0YvRjJGaG8tRiw2JVEiWUYnRi9GMkZoby1GLDYlUSJlRidGL0YyLUY2NjBRIjtGJ0Y5RjtGW3BGQEZCRkRGRkZIRkpGXW9GUEZSRlVGZ3AtRiM2Ji1GIzYlLUYjNiVGXnJGNS1GIzYlLUYjNiZGZW8tRjY2MFEiW0YnRjkvRjxGMUY+L0ZBRjFGQkZERkZGSC9GS1EncHJlZml4RicvRk5RLnRoaW5tYXRoc3BhY2VGJy9GUUZcdEZSRlUtRiM2I0ZecC1GNjYwUSJdRidGOUZnc0Y+RmhzRkJGREZGRkgvRktRKHBvc3RmaXhGJ0ZbdC9GUVEydmVyeXRoaW5tYXRoc3BhY2VGJ0ZSRlUtRjY2MFEiK0YnRjlGO0Y+RkBGQkZERkZGSEZKL0ZORltyRmpxRlJGVS1GIzYmRmVvRmRzLUYjNiNGYXBGYHRGZ3JGZ3AtRiM2JS1GIzYlRmFyRjUtRiM2JUZicy1GNjYwUSp+Jm1pbnVzO35GJ0Y5RjtGPkZARkJGREZGRkhGW29GXW9GX29GUkZVRlt1RmdyRmdwLUYjNiUtRiM2JUZic0Y1Rl5yRmdyRmdwLUYjNiVGW3VGNS1GIzYlLUYjNiNGYXItRjY2MFEiL0YnRjlGO0Y+RmhzRkJGREZGRkhGSkZbdEZddEZSRlUtRiM2I0ZkcC1GaHA2JkZqcC9GXnFRJjAuMGVtRidGYHEvRmNxUTZkZWNyZWFzZWluZGVudG5ld2xpbmVGJy1GNjYxUSllbmR+cHJvY0YnRmduRmluRjtGPkZARkJGREZGRkhGW28vRk5GXXBGX29GUkZV">Zio2JkkiQUc2IkkiaUdGJUkiakdGJUkid0dGJTYlSSJYR0YlSSJZR0YlSSJlR0YlRiVGJUMmPkYqLCYmRiQ2I0YmIiIiJkYkNiNGJ0YyPkYrLCZGMEYyRjMhIiI+RjBGKj5GMyomRitGMkYoRjdGJUYlRiU=</Equation></Text-field>
</Output>
</Group>
<Group labelreference="L537" drawlabel="true">
<Input>
<Text-field prompt="&gt; " style="Maple Input" layout="Normal">#
# This procedure is a complex IFFT procedure.
# It use the ibutterfly procedure to operate on the vector A.
# The number of round in the FFT is k and T is a table of the
# powers of primitive root of unity.
#

icfft:=proc(A,T,k) local l,s,w,t;
for l from k-1 to 0 by -1 do
  for s from 0 to 2^l-1 do
    w:=T[s];
    for t from 0 to 2^(k-l-1)-1 do
      icbutterfly(A,2^(k-l)*s+t,2^(k-l)*s+t+2^(k-l-1),w);
    od;
  od;
od; end;</Text-field>
</Input>
<Output>
<Text-field style="2D Output" layout="Maple Output"><Equation executable="false" style="2D Output" display="LUklbXJvd0c2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGJzYlLUkjbWlHRiQ2JVEmaWNmZnRGJy8lJ2l0YWxpY0dRJXRydWVGJy8lLG1hdGh2YXJpYW50R1EnaXRhbGljRictSSNtb0dGJDYwUSM6PUYnL0YzUSdub3JtYWxGJy8lJmZlbmNlR1EmZmFsc2VGJy8lKnNlcGFyYXRvckdGPS8lKXN0cmV0Y2h5R0Y9LyUqc3ltbWV0cmljR0Y9LyUobGFyZ2VvcEdGPS8lLm1vdmFibGVsaW1pdHNHRj0vJSdhY2NlbnRHRj0vJSVmb3JtR1EmaW5maXhGJy8lJ2xzcGFjZUdRL3RoaWNrbWF0aHNwYWNlRicvJSdyc3BhY2VHRk8vJShtaW5zaXplR1EiMUYnLyUobWF4c2l6ZUdRKWluZmluaXR5RictRiM2KS1GNjYxUSVwcm9jRicvJSVib2xkR0YxL0YzUSVib2xkRidGO0Y+RkBGQkZERkZGSC9GS1EhRicvRk5RJDBlbUYnL0ZRRl5vRlJGVS1JKG1mZW5jZWRHRiQ2Iy1GIzYnLUYsNiVRIkFGJ0YvRjItRjY2MFEiLEYnRjlGOy9GP0YxRkBGQkZERkZGSEZKRl1vL0ZRUTN2ZXJ5dGhpY2ttYXRoc3BhY2VGJ0ZSRlUtRiw2JVEiVEYnRi9GMkZoby1GLDYlUSJrRidGL0YyLUknbXNwYWNlR0YkNiYvJSdoZWlnaHRHUSYwLjBleEYnLyUmd2lkdGhHUSYwLjNlbUYnLyUmZGVwdGhHRmlwLyUqbGluZWJyZWFrR1ExZmlyc3Rwcm9jbmV3bGluZUYnLUYjNiYtRjY2MVEmbG9jYWxGJ0ZnbkZpbkY7Rj5GQEZCRkRGRkZIRltvRl1vL0ZRUTBtZWRpdW1tYXRoc3BhY2VGJ0ZSRlUtRiM2KS1GLDYlUSJsRidGL0YyRmhvLUYsNiVRInNGJ0YvRjJGaG8tRiw2JVEid0YnRi9GMkZoby1GLDYlUSJ0RidGL0YyLUY2NjBRIjtGJ0Y5RjtGW3BGQEZCRkRGRkZIRkpGXW9GUEZSRlVGZHAtRiM2Jy1GIzYrLUY2NjFRJGZvckYnRmduRmluRjtGPkZARkJGREZGRkhGW29GXW9GZ3FGUkZVRltyLUY2NjFRJWZyb21GJ0ZnbkZpbkY7Rj5GQEZCRkRGRkZIRltvL0ZORmhxRmdxRlJGVS1GIzYlRmFwLUY2NjBRKn4mbWludXM7fkYnRjlGO0Y+RkBGQkZERkZGSEZbb0Zdb0Zfb0ZSRlUtSSNtbkdGJDYkRlRGOS1GNjYxUSNieUYnRmduRmluRjtGPkZARkJGREZGRkhGW29GZHNGZ3FGUkZVLUYjNiQtRjY2MFEoJm1pbnVzO0YnRjlGO0Y+RkBGQkZERkZGSEZbb0Zdb0Zfb0ZSRlVGanMtRjY2MVEjdG9GJ0ZnbkZpbkY7Rj5GQEZCRkRGRkZIRltvRmRzRmdxRlJGVS1GW3Q2JFEiMEYnRjktRjY2MVEjZG9GJ0ZnbkZpbkY7Rj5GQEZCRkRGRkZIRltvRmRzRmdxRlJGVS1GZXA2JkZncEZqcEZdcS9GYHFRNmluY3JlYXNlaW5kZW50bmV3bGluZUYnLUYjNictRiM2KUZec0ZeckZhc0ZodEZldC1GIzYlLUYjNiUtRlt0NiRRIjJGJ0Y5LUY2NjBRIl5GJ0Y5RjtGPkZARkJGREZGRkhGSi9GTlEydmVyeXRoaW5tYXRoc3BhY2VGJy9GUUZhdkZSRlVGW3JGZ3NGanNGW3VGXnUtRiM2JC1GIzYlLUYjNiVGYXJGNS1GIzYmRl5wLUY2NjBRIltGJ0Y5L0Y8RjFGPi9GQUYxRkJGREZGRkgvRktRJ3ByZWZpeEYnL0ZOUS50aGlubWF0aHNwYWNlRicvRlFGY3dGUkZVLUYjNiNGXnItRjY2MFEiXUYnRjlGXndGPkZfd0ZCRkRGRkZIL0ZLUShwb3N0Zml4RidGYndGYnZGUkZVRmdyRmRwLUYjNictRiM2KUZec0ZkckZhc0ZodEZldC1GIzYlLUYjNiVGanVGXXYtRmFvNiMtRiM2J0ZhcEZnc0ZbckZnc0Zqc0Znc0Zqc0ZbdUZedS1GIzYlLUYsNiVRLGljYnV0dGVyZmx5RidGL0YyLUY2NjBRMCZBcHBseUZ1bmN0aW9uO0YnRjlGO0Y+RkBGQkZERkZGSEZKRl1vRl9vRlJGVS1GYW82Iy1GIzYpRmVvRmhvLUYjNiUtRiM2JS1GIzYlRmp1Rl12LUZhbzYjLUYjNiVGYXBGZ3NGW3ItRjY2MFEiKkYnRjlGO0Y+RkBGQkZERkZGSEZKRmJ3RmR3RlJGVUZeci1GNjYwUSIrRidGOUY7Rj5GQEZCRkRGRkZIRkpGZHNGZ3FGUkZVRmRyRmhvLUYjNidGZnlGYXpGZHJGYXpGYnhGaG9GYXItRmVwNiZGZ3AvRltxUSYwLjBlbUYnRl1xL0ZgcVE2ZGVjcmVhc2VpbmRlbnRuZXdsaW5lRictRjY2MVEnZW5kfmRvRidGZ25GaW5GO0Y+RkBGQkZERkZGSEZbby9GTkZdcEZfb0ZSRlVGZnpGXFtsRmZ6RlxbbEZmei1GNjYxUSllbmR+cHJvY0YnRmduRmluRjtGPkZARkJGREZGRkhGW29GX1tsRl9vRlJGVQ==">Zio2JUkiQUc2IkkiVEdGJUkia0dGJTYmSSJsR0YlSSJzR0YlSSJ3R0YlSSJ0R0YlRiVGJT8oRiksJkYnIiIiRi8hIiJGMCIiIUkldHJ1ZUclKnByb3RlY3RlZEc/KEYqRjFGLywmKSIiI0YpRi9GL0YwRjJDJD5GKyZGJjYjRio/KEYsRjFGLywmKUY3LChGJ0YvRilGMEYvRjBGL0YvRjBGMi1JLGljYnV0dGVyZmx5R0YlNiZGJCwmKiYpRjcsJkYnRi9GKUYwRi9GKkYvRi9GLEYvLChGREYvRixGL0Y+Ri9GK0YlRiVGJQ==</Equation></Text-field>
</Output>
</Group>
<Group labelreference="L538" drawlabel="true">
<Input>
<Text-field prompt="&gt; " style="Maple Input" layout="Normal">for i from 0 to 2^k-1 do A[i]:=0 od:
A[1]:=1+I; cfft(A,T,5): print(A);</Text-field>
</Input>
<Output>
<Text-field style="2D Output" layout="Maple Output"><Equation executable="false" style="2D Output" display="LUklbXJvd0c2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGJzYlLUklbXN1YkdGJDYlLUkjbWlHRiQ2JVEiQUYnLyUnaXRhbGljR1EldHJ1ZUYnLyUsbWF0aHZhcmlhbnRHUSdpdGFsaWNGJy1GIzYjLUkjbW5HRiQ2JFEiMUYnL0Y2USdub3JtYWxGJy8lL3N1YnNjcmlwdHNoaWZ0R1EiMEYnLUkjbW9HRiQ2MFEjOj1GJ0Y+LyUmZmVuY2VHUSZmYWxzZUYnLyUqc2VwYXJhdG9yR0ZJLyUpc3RyZXRjaHlHRkkvJSpzeW1tZXRyaWNHRkkvJShsYXJnZW9wR0ZJLyUubW92YWJsZWxpbWl0c0dGSS8lJ2FjY2VudEdGSS8lJWZvcm1HUSZpbmZpeEYnLyUnbHNwYWNlR1EvdGhpY2ttYXRoc3BhY2VGJy8lJ3JzcGFjZUdGZW4vJShtaW5zaXplR0Y9LyUobWF4c2l6ZUdRKWluZmluaXR5RictRiM2JUY6LUZENjBRIitGJ0Y+RkdGSkZMRk5GUEZSRlRGVi9GWlEwbWVkaXVtbWF0aHNwYWNlRicvRmduRmNvRmhuRmpuLUY7NiRRIklGJ0Y+">LCYiIiJGI14jRiNGIw==</Equation></Text-field>
</Output>
<Output>
<Text-field style="2D Output" layout="Maple Output"><Equation executable="false" style="2D Output" display="LUklbXJvd0c2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGJzYlLUkjbWlHRiQ2JVEmQVJSQVlGJy8lJ2l0YWxpY0dRJXRydWVGJy8lLG1hdGh2YXJpYW50R1EnaXRhbGljRictSSNtb0dGJDYwUTAmQXBwbHlGdW5jdGlvbjtGJy9GM1Enbm9ybWFsRicvJSZmZW5jZUdRJmZhbHNlRicvJSpzZXBhcmF0b3JHRj0vJSlzdHJldGNoeUdGPS8lKnN5bW1ldHJpY0dGPS8lKGxhcmdlb3BHRj0vJS5tb3ZhYmxlbGltaXRzR0Y9LyUnYWNjZW50R0Y9LyUlZm9ybUdRJmluZml4RicvJSdsc3BhY2VHUSQwZW1GJy8lJ3JzcGFjZUdGTy8lKG1pbnNpemVHUSIxRicvJShtYXhzaXplR1EpaW5maW5pdHlGJy1JKG1mZW5jZWRHRiQ2Iy1GIzYlLUZZNiUtRiM2Iy1GIzYlLUkjbW5HRiQ2JFEiMEYnRjktRjY2MFEjLi5GJ0Y5RjtGPkZARkJGREZGRkgvRktRKHBvc3RmaXhGJy9GTlEwbWVkaXVtbWF0aHNwYWNlRidGUEZSRlUtRl5vNiRRIzMxRidGOS8lJW9wZW5HUSJbRicvJSZjbG9zZUdRIl1GJy1GNjYwUSIsRidGOUY7L0Y/RjFGQEZCRkRGRkZIRkpGTS9GUVEzdmVyeXRoaWNrbWF0aHNwYWNlRidGUkZVLUZZNiUtRiM2W28tRiM2JS1GIzYjRl1vLUY2NjBRIj1GJ0Y5RjtGPkZARkJGREZGRkhGSi9GTlEvdGhpY2ttYXRoc3BhY2VGJy9GUUZjcUZSRlUtRiM2JS1GXm82JFEjMS5GJ0Y5LUY2NjBRIitGJ0Y5RjtGPkZARkJGREZGRkhGSkZmby9GUUZnb0ZSRlUtRiM2JUZncS1GNjYwUTEmSW52aXNpYmxlVGltZXM7RidGOUY7Rj5GQEZCRkRGRkZIRkpGTUZQRlJGVS1GXm82JFEiSUYnRjlGYXAtRiM2JS1GIzYjLUZebzYkRlRGOUZfcS1GIzYmLUY2NjBRKiZ1bWludXMwO0YnRjlGO0Y+RkBGQkZERkZGSC9GS1EncHJlZml4RidGTS9GUVEydmVyeXRoaW5tYXRoc3BhY2VGJ0ZSRlVGZ3EtRjY2MFEoJm1pbnVzO0YnRjlGO0Y+RkBGQkZERkZGSEZKRmZvRl1yRlJGVUZeckZhcC1GIzYlLUYjNiMtRl5vNiRRIjJGJ0Y5Rl9xLUYjNiVGZ3FGZXNGXnJGYXAtRiM2JS1GIzYjLUZebzYkUSIzRidGOUZfcS1GIzYmRl5zRmdxRmpxRl5yRmFwLUYjNiUtRiM2Iy1GXm82JFEiNEYnRjlGX3EtRiM2JS1GXm82JFEsMS40MTQyMTM1NjJGJ0Y5RmpxLUYjNiUtRl5vNiRRIzAuRidGOUZgckZjckZhcC1GIzYlLUYjNiMtRl5vNiRRIjVGJ0Y5Rl9xLUYjNiZGXnNGY3VGZXNGZnVGYXAtRiM2JS1GIzYjLUZebzYkUSI2RidGOUZfcS1GIzYlRmh1RmVzLUYjNiVGY3VGYHJGY3JGYXAtRiM2JS1GIzYjLUZebzYkUSI3RidGOUZfcS1GIzYlRmh1RmpxRl13RmFwLUYjNiUtRiM2Iy1GXm82JFEiOEYnRjlGX3EtRiM2JS1GXm82JFEsMS4zMDY1NjI5NjVGJ0Y5RmpxLUYjNiUtRl5vNiRRLTAuNTQxMTk2MTAwMUYnRjlGYHJGY3JGYXAtRiM2JS1GIzYjLUZebzYkUSI5RidGOUZfcS1GIzYmRl5zRmF4RmVzRmR4RmFwLUYjNiUtRiM2Iy1GXm82JFEjMTBGJ0Y5Rl9xLUYjNiVGZnhGZXMtRiM2JUZheEZgckZjckZhcC1GIzYlLUYjNiMtRl5vNiRRIzExRidGOUZfcS1GIzYmRl5zRmZ4RmpxRlt6RmFwLUYjNiUtRiM2Iy1GXm82JFEjMTJGJ0Y5Rl9xLUYjNiVGYXhGZXNGZHhGYXAtRiM2JS1GIzYjLUZebzYkUSMxM0YnRjlGX3EtRiM2JkZec0ZheEZqcUZkeEZhcC1GIzYlLUYjNiMtRl5vNiRRIzE0RidGOUZfcS1GIzYmRl5zRmZ4RmVzRlt6RmFwLUYjNiUtRiM2Iy1GXm82JFEjMTVGJ0Y5Rl9xLUYjNiVGZnhGanFGW3pGYXAtRiM2JS1GIzYjLUZebzYkUSMxNkYnRjlGX3EtRiM2JS1GXm82JFEsMS4xNzU4NzU2MDJGJ0Y5RmpxLUYjNiUtRl5vNiRRLTAuNzg1Njk0OTU4NEYnRjlGYHJGY3JGYXAtRiM2JS1GIzYjLUZebzYkUSMxN0YnRjlGX3EtRiM2JkZec0ZjXWxGZXNGZl1sRmFwLUYjNiUtRiM2Iy1GXm82JFEjMThGJ0Y5Rl9xLUYjNiVGaF1sRmVzLUYjNiVGY11sRmByRmNyRmFwLUYjNiUtRiM2Iy1GXm82JFEjMTlGJ0Y5Rl9xLUYjNiZGXnNGaF1sRmpxRl1fbEZhcC1GIzYlLUYjNiMtRl5vNiRRIzIwRidGOUZfcS1GIzYlLUZebzYkUSwxLjM4NzAzOTg0NUYnRjlGZXMtRiM2JS1GXm82JFEtMC4yNzU4OTkzNzkzRidGOUZgckZjckZhcC1GIzYlLUYjNiMtRl5vNiRRIzIxRidGOUZfcS1GIzYmRl5zRmFgbEZqcUZkYGxGYXAtRiM2JS1GIzYjLUZebzYkUSMyMkYnRjlGX3EtRiM2JkZec0ZmYGxGZXMtRiM2JUZhYGxGYHJGY3JGYXAtRiM2JS1GIzYjLUZebzYkUSMyM0YnRjlGX3EtRiM2JUZmYGxGanFGW2JsRmFwLUYjNiUtRiM2Iy1GXm82JFEjMjRGJ0Y5Rl9xLUYjNiVGYWBsRmpxRmRgbEZhcC1GIzYlLUYjNiMtRl5vNiRRIzI1RidGOUZfcS1GIzYmRl5zRmFgbEZlc0ZkYGxGYXAtRiM2JS1GIzYjLUZebzYkUSMyNkYnRjlGX3EtRiM2JUZmYGxGZXNGW2JsRmFwLUYjNiUtRiM2Iy1GXm82JFEjMjdGJ0Y5Rl9xLUYjNiZGXnNGZmBsRmpxRltibEZhcC1GIzYlLUYjNiMtRl5vNiRRIzI4RidGOUZfcS1GIzYlRmNdbEZlc0ZmXWxGYXAtRiM2JS1GIzYjLUZebzYkUSMyOUYnRjlGX3EtRiM2JkZec0ZjXWxGanFGZl1sRmFwLUYjNiUtRiM2Iy1GXm82JFEjMzBGJ0Y5Rl9xLUYjNiZGXnNGaF1sRmVzRl1fbEZhcC1GIzYlLUYjNiNGaG9GX3EtRiM2JUZoXWxGanFGXV9sRltwRl5w">SSJBRzYi</Equation></Text-field>
</Output>
</Group>
<Group labelreference="L539" drawlabel="true">
<Input>
<Text-field prompt="&gt; " style="Maple Input" layout="Normal">icfft(A,T,k): print(A);</Text-field>
</Input>
<Output>
<Text-field style="2D Output" layout="Maple Output"><Equation executable="false" style="2D Output" display="LUklbXJvd0c2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGJzYlLUkjbWlHRiQ2JVEmQVJSQVlGJy8lJ2l0YWxpY0dRJXRydWVGJy8lLG1hdGh2YXJpYW50R1EnaXRhbGljRictSSNtb0dGJDYwUTAmQXBwbHlGdW5jdGlvbjtGJy9GM1Enbm9ybWFsRicvJSZmZW5jZUdRJmZhbHNlRicvJSpzZXBhcmF0b3JHRj0vJSlzdHJldGNoeUdGPS8lKnN5bW1ldHJpY0dGPS8lKGxhcmdlb3BHRj0vJS5tb3ZhYmxlbGltaXRzR0Y9LyUnYWNjZW50R0Y9LyUlZm9ybUdRJmluZml4RicvJSdsc3BhY2VHUSQwZW1GJy8lJ3JzcGFjZUdGTy8lKG1pbnNpemVHUSIxRicvJShtYXhzaXplR1EpaW5maW5pdHlGJy1JKG1mZW5jZWRHRiQ2Iy1GIzYlLUZZNiUtRiM2Iy1GIzYlLUkjbW5HRiQ2JFEiMEYnRjktRjY2MFEjLi5GJ0Y5RjtGPkZARkJGREZGRkgvRktRKHBvc3RmaXhGJy9GTlEwbWVkaXVtbWF0aHNwYWNlRidGUEZSRlUtRl5vNiRRIzMxRidGOS8lJW9wZW5HUSJbRicvJSZjbG9zZUdRIl1GJy1GNjYwUSIsRidGOUY7L0Y/RjFGQEZCRkRGRkZIRkpGTS9GUVEzdmVyeXRoaWNrbWF0aHNwYWNlRidGUkZVLUZZNiUtRiM2W28tRiM2JS1GIzYjRl1vLUY2NjBRIj1GJ0Y5RjtGPkZARkJGREZGRkhGSi9GTlEvdGhpY2ttYXRoc3BhY2VGJy9GUUZjcUZSRlUtRiM2JS1GXm82JFEjMC5GJ0Y5LUY2NjBRIitGJ0Y5RjtGPkZARkJGREZGRkhGSkZmby9GUUZnb0ZSRlUtRiM2JUZncS1GNjYwUTEmSW52aXNpYmxlVGltZXM7RidGOUY7Rj5GQEZCRkRGRkZIRkpGTUZQRlJGVS1GXm82JFEiSUYnRjlGYXAtRiM2JS1GIzYjLUZebzYkRlRGOUZfcS1GIzYlLUZebzYkUSwzMi4wMDAwMDAwMEYnRjlGanEtRiM2JUZec0ZgckZjckZhcC1GIzYlLUYjNiMtRl5vNiRRIjJGJ0Y5Rl9xRmVxRmFwLUYjNiUtRiM2Iy1GXm82JFEiM0YnRjlGX3FGZXFGYXAtRiM2JS1GIzYjLUZebzYkUSI0RidGOUZfcUZlcUZhcC1GIzYlLUYjNiMtRl5vNiRRIjVGJ0Y5Rl9xLUYjNiYtRjY2MFEqJnVtaW51czA7RidGOUY7Rj5GQEZCRkRGRkZIL0ZLUSdwcmVmaXhGJ0ZNL0ZRUTJ2ZXJ5dGhpbm1hdGhzcGFjZUYnRlJGVS1GIzYlLUZebzYkUSs4LjI4NDI3MTI0RidGOUZgci1JJW1zdXBHRiQ2JS1GXm82JFEjMTBGJ0Y5LUZebzYkUSQtMTBGJ0Y5LyUxc3VwZXJzY3JpcHRzaGlmdEdRIjBGJy1GNjYwUSgmbWludXM7RidGOUY7Rj5GQEZCRkRGRkZIRkpGZm9GXXJGUkZVLUYjNiVGaHVGYHJGY3JGYXAtRiM2JS1GIzYjLUZebzYkUSI2RidGOUZfcUZlcUZhcC1GIzYlLUYjNiMtRl5vNiRRIjdGJ0Y5Rl9xRmVxRmFwLUYjNiUtRiM2Iy1GXm82JFEiOEYnRjlGX3FGZXFGYXAtRiM2JS1GIzYjLUZebzYkUSI5RidGOUZfcS1GIzYmRmF1LUYjNiUtRl5vNiRRLDQuMDAwMDAwMDAwRidGOUZgci1GXnY2JUZgdi1GXm82JFEjLTlGJ0Y5RmZ2Rml2LUYjNiVGXHlGYHJGY3JGYXAtRiM2JS1GIzYjRmB2Rl9xRmVxRmFwLUYjNiUtRiM2Iy1GXm82JFEjMTFGJ0Y5Rl9xRmVxRmFwLUYjNiUtRiM2Iy1GXm82JFEjMTJGJ0Y5Rl9xRmVxRmFwLUYjNiUtRiM2Iy1GXm82JFEjMTNGJ0Y5Rl9xLUYjNiUtRiM2JS1GXm82JFEjMi5GJ0Y5RmByRmF5RmpxLUYjNiVGY1tsRmByRmNyRmFwLUYjNiUtRiM2Iy1GXm82JFEjMTRGJ0Y5Rl9xRmVxRmFwLUYjNiUtRiM2Iy1GXm82JFEjMTVGJ0Y5Rl9xRmVxRmFwLUYjNiUtRiM2Iy1GXm82JFEjMTZGJ0Y5Rl9xRmVxRmFwLUYjNiUtRiM2Iy1GXm82JFEjMTdGJ0Y5Rl9xRmVxRmFwLUYjNiUtRiM2Iy1GXm82JFEjMThGJ0Y5Rl9xRmVxRmFwLUYjNiUtRiM2Iy1GXm82JFEjMTlGJ0Y5Rl9xRmVxRmFwLUYjNiUtRiM2Iy1GXm82JFEjMjBGJ0Y5Rl9xRmVxRmFwLUYjNiUtRiM2Iy1GXm82JFEjMjFGJ0Y5Rl9xLUYjNiUtRiM2JS1GXm82JFEsNC44Mjg0MjcxMjRGJ0Y5RmByRmF5RmpxLUYjNiVGZF9sRmByRmNyRmFwLUYjNiUtRiM2Iy1GXm82JFEjMjJGJ0Y5Rl9xRmVxRmFwLUYjNiUtRiM2Iy1GXm82JFEjMjNGJ0Y5Rl9xRmVxRmFwLUYjNiUtRiM2Iy1GXm82JFEjMjRGJ0Y5Rl9xRmVxRmFwLUYjNiUtRiM2Iy1GXm82JFEjMjVGJ0Y5Rl9xRmVxRmFwLUYjNiUtRiM2Iy1GXm82JFEjMjZGJ0Y5Rl9xRmVxRmFwLUYjNiUtRiM2Iy1GXm82JFEjMjdGJ0Y5Rl9xRmVxRmFwLUYjNiUtRiM2Iy1GXm82JFEjMjhGJ0Y5Rl9xRmVxRmFwLUYjNiUtRiM2Iy1GXm82JFEjMjlGJ0Y5Rl9xRmFbbEZhcC1GIzYlLUYjNiMtRl5vNiRRIzMwRidGOUZfcUZlcUZhcC1GIzYlLUYjNiNGaG9GX3FGZXFGW3BGXnA=">SSJBRzYi</Equation></Text-field>
</Output>
</Group>
</Section>
<Section collapsed="false" MultipleChoiceAnswerIndex="-1" MultipleChoiceRandomizeChoices="false" TrueFalseAnswerIndex="-1" EssayAnswerRows="5" EssayAnswerColumns="60"><Title>
<Text-field style="Heading 2" layout="Heading 2">7.4. Szorz<Font encoding="UTF-8">\303\241</Font>s komplex FFT-vel.</Text-field></Title>
<Text-field style="Text" layout="Normal"></Text-field>
<Group labelreference="L574" drawlabel="true">
<Input>
<Text-field prompt="&gt; " style="Maple Input" layout="Normal">#
# The cdigmul procedure do the digit-by-digit
# multiplication of the two numbers after the
# cfft's. The result will be in the first table.
#

cdigmul:=proc(T,S,k) local i;
for i from 0 to 2^k-1 do T[i]:=T[i]*S[i]; od;
end;</Text-field>
</Input>
<Output>
<Text-field style="2D Output" layout="Maple Output"><Equation executable="false" style="2D Output" display="LUklbXJvd0c2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGJzYlLUkjbWlHRiQ2JVEoY2RpZ211bEYnLyUnaXRhbGljR1EldHJ1ZUYnLyUsbWF0aHZhcmlhbnRHUSdpdGFsaWNGJy1JI21vR0YkNjBRIzo9RicvRjNRJ25vcm1hbEYnLyUmZmVuY2VHUSZmYWxzZUYnLyUqc2VwYXJhdG9yR0Y9LyUpc3RyZXRjaHlHRj0vJSpzeW1tZXRyaWNHRj0vJShsYXJnZW9wR0Y9LyUubW92YWJsZWxpbWl0c0dGPS8lJ2FjY2VudEdGPS8lJWZvcm1HUSZpbmZpeEYnLyUnbHNwYWNlR1EvdGhpY2ttYXRoc3BhY2VGJy8lJ3JzcGFjZUdGTy8lKG1pbnNpemVHUSIxRicvJShtYXhzaXplR1EpaW5maW5pdHlGJy1GIzYpLUY2NjFRJXByb2NGJy8lJWJvbGRHRjEvRjNRJWJvbGRGJ0Y7Rj5GQEZCRkRGRkZIL0ZLUSFGJy9GTlEkMGVtRicvRlFGXm9GUkZVLUkobWZlbmNlZEdGJDYjLUYjNictRiw2JVEiVEYnRi9GMi1GNjYwUSIsRidGOUY7L0Y/RjFGQEZCRkRGRkZIRkpGXW8vRlFRM3Zlcnl0aGlja21hdGhzcGFjZUYnRlJGVS1GLDYlUSJTRidGL0YyRmhvLUYsNiVRImtGJ0YvRjItSSdtc3BhY2VHRiQ2Ji8lJ2hlaWdodEdRJjAuMGV4RicvJSZ3aWR0aEdRJjAuM2VtRicvJSZkZXB0aEdGaXAvJSpsaW5lYnJlYWtHUTFmaXJzdHByb2NuZXdsaW5lRictRiM2Ji1GNjYxUSZsb2NhbEYnRmduRmluRjtGPkZARkJGREZGRkhGW29GXW8vRlFRMG1lZGl1bW1hdGhzcGFjZUYnRlJGVS1GIzYjLUYsNiVRImlGJ0YvRjItRjY2MFEiO0YnRjlGO0ZbcEZARkJGREZGRkhGSkZdb0ZQRlJGVUZkcC1GIzYnLUYjNiktRjY2MVEkZm9yRidGZ25GaW5GO0Y+RkBGQkZERkZGSEZbb0Zdb0ZncUZSRlVGW3ItRjY2MVElZnJvbUYnRmduRmluRjtGPkZARkJGREZGRkhGW28vRk5GaHFGZ3FGUkZVLUkjbW5HRiQ2JFEiMEYnRjktRjY2MVEjdG9GJ0ZnbkZpbkY7Rj5GQEZCRkRGRkZIRltvRltzRmdxRlJGVS1GIzYlLUYjNiUtRl1zNiRRIjJGJ0Y5LUY2NjBRIl5GJ0Y5RjtGPkZARkJGREZGRkhGSi9GTlEydmVyeXRoaW5tYXRoc3BhY2VGJy9GUUZedEZSRlVGYXAtRjY2MFEqfiZtaW51czt+RidGOUY7Rj5GQEZCRkRGRkZIRltvRl1vRl9vRlJGVS1GXXM2JEZURjktRjY2MVEjZG9GJ0ZnbkZpbkY7Rj5GQEZCRkRGRkZIRltvRltzRmdxRlJGVS1GZXA2JkZncEZqcEZdcS9GYHFRNmluY3JlYXNlaW5kZW50bmV3bGluZUYnLUYjNiUtRiM2JkZlby1GNjYwUSJbRidGOS9GPEYxRj4vRkFGMUZCRkRGRkZIL0ZLUSdwcmVmaXhGJy9GTlEudGhpbm1hdGhzcGFjZUYnL0ZRRmh1RlJGVUZpcS1GNjYwUSJdRidGOUZjdUY+RmR1RkJGREZGRkgvRktRKHBvc3RmaXhGJ0ZndUZfdEZSRlVGNS1GIzYlRl51LUY2NjBRIipGJ0Y5RjtGPkZARkJGREZGRkhGSkZndUZpdUZSRlUtRiM2JkZecEZgdUZpcUZqdS1GZXA2JkZncC9GW3FRJjAuMGVtRidGXXEvRmBxUTZkZWNyZWFzZWluZGVudG5ld2xpbmVGJy1GNjYxUSdlbmR+ZG9GJ0ZnbkZpbkY7Rj5GQEZCRkRGRkZIRltvL0ZORl1wRl9vRlJGVUZmdi1GNjYxUSllbmR+cHJvY0YnRmduRmluRjtGPkZARkJGREZGRkhGW29GX3dGX29GUkZV">Zio2JUkiVEc2IkkiU0dGJUkia0dGJTYjSSJpR0YlRiVGJT8oRikiIiEiIiIsJikiIiNGJ0YsRiwhIiJJJXRydWVHJSpwcm90ZWN0ZWRHPiZGJEYoKiZGNEYsJkYmRihGLEYlRiVGJQ==</Equation></Text-field>
</Output>
</Group>
<Group labelreference="L542" drawlabel="true">
<Input>
<Text-field prompt="&gt; " style="Maple Input" layout="Normal">A:=array(0..2^k-1); for i from 0 to 2^k -1 do A[i]:=0 od:
B:=array(0..2^k-1); for i from 0 to 2^k -1 do B[i]:=0 od:</Text-field>
</Input>
<Output>
<Text-field style="2D Output" layout="Maple Output"><Equation executable="false" style="2D Output" display="LUklbXJvd0c2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGJzYlLUkjbWlHRiQ2JVEiQUYnLyUnaXRhbGljR1EldHJ1ZUYnLyUsbWF0aHZhcmlhbnRHUSdpdGFsaWNGJy1JI21vR0YkNjBRIzo9RicvRjNRJ25vcm1hbEYnLyUmZmVuY2VHUSZmYWxzZUYnLyUqc2VwYXJhdG9yR0Y9LyUpc3RyZXRjaHlHRj0vJSpzeW1tZXRyaWNHRj0vJShsYXJnZW9wR0Y9LyUubW92YWJsZWxpbWl0c0dGPS8lJ2FjY2VudEdGPS8lJWZvcm1HUSZpbmZpeEYnLyUnbHNwYWNlR1EvdGhpY2ttYXRoc3BhY2VGJy8lJ3JzcGFjZUdGTy8lKG1pbnNpemVHUSIxRicvJShtYXhzaXplR1EpaW5maW5pdHlGJy1GIzYlLUYsNiVRJmFycmF5RidGL0YyLUY2NjBRMCZBcHBseUZ1bmN0aW9uO0YnRjlGO0Y+RkBGQkZERkZGSEZKL0ZOUSQwZW1GJy9GUUZbb0ZSRlUtSShtZmVuY2VkR0YkNiMtRiM2JS1GIzYlLUkjbW5HRiQ2JFEiMEYnRjktRjY2MFEjLi5GJ0Y5RjtGPkZARkJGREZGRkgvRktRKHBvc3RmaXhGJy9GTlEwbWVkaXVtbWF0aHNwYWNlRidGXG9GUkZVLUZlbzYkUSMzMUYnRjktRjY2MFEiLEYnRjlGOy9GP0YxRkBGQkZERkZGSEZKRmpuL0ZRUTN2ZXJ5dGhpY2ttYXRoc3BhY2VGJ0ZSRlUtRl5vNiUtRiM2Iy1GLDYlUSFGJ0YvRjIvJSVvcGVuR1EiW0YnLyUmY2xvc2VHUSJdRic=">PTYiNiM7IiIhIiNKRVxbbCE=</Equation></Text-field>
</Output>
<Output>
<Text-field style="2D Output" layout="Maple Output"><Equation executable="false" style="2D Output" display="LUklbXJvd0c2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGJzYlLUkjbWlHRiQ2JVEiQkYnLyUnaXRhbGljR1EldHJ1ZUYnLyUsbWF0aHZhcmlhbnRHUSdpdGFsaWNGJy1JI21vR0YkNjBRIzo9RicvRjNRJ25vcm1hbEYnLyUmZmVuY2VHUSZmYWxzZUYnLyUqc2VwYXJhdG9yR0Y9LyUpc3RyZXRjaHlHRj0vJSpzeW1tZXRyaWNHRj0vJShsYXJnZW9wR0Y9LyUubW92YWJsZWxpbWl0c0dGPS8lJ2FjY2VudEdGPS8lJWZvcm1HUSZpbmZpeEYnLyUnbHNwYWNlR1EvdGhpY2ttYXRoc3BhY2VGJy8lJ3JzcGFjZUdGTy8lKG1pbnNpemVHUSIxRicvJShtYXhzaXplR1EpaW5maW5pdHlGJy1GIzYlLUYsNiVRJmFycmF5RidGL0YyLUY2NjBRMCZBcHBseUZ1bmN0aW9uO0YnRjlGO0Y+RkBGQkZERkZGSEZKL0ZOUSQwZW1GJy9GUUZbb0ZSRlUtSShtZmVuY2VkR0YkNiMtRiM2JS1GIzYlLUkjbW5HRiQ2JFEiMEYnRjktRjY2MFEjLi5GJ0Y5RjtGPkZARkJGREZGRkgvRktRKHBvc3RmaXhGJy9GTlEwbWVkaXVtbWF0aHNwYWNlRidGXG9GUkZVLUZlbzYkUSMzMUYnRjktRjY2MFEiLEYnRjlGOy9GP0YxRkBGQkZERkZGSEZKRmpuL0ZRUTN2ZXJ5dGhpY2ttYXRoc3BhY2VGJ0ZSRlUtRl5vNiUtRiM2Iy1GLDYlUSFGJ0YvRjIvJSVvcGVuR1EiW0YnLyUmY2xvc2VHUSJdRic=">PTYiNiM7IiIhIiNKRVxbbCE=</Equation></Text-field>
</Output>
</Group>
<Group labelreference="L543" drawlabel="true">
<Input>
<Text-field prompt="&gt; " style="Maple Input" layout="Normal">A[0]:=1: A[1]:=1: A[2]:=1: print(A);</Text-field>
</Input>
<Output>
<Text-field style="2D Output" layout="Maple Output"><Equation executable="false" style="2D Output" display="LUklbXJvd0c2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGJzYlLUkjbWlHRiQ2JVEmQVJSQVlGJy8lJ2l0YWxpY0dRJXRydWVGJy8lLG1hdGh2YXJpYW50R1EnaXRhbGljRictSSNtb0dGJDYwUTAmQXBwbHlGdW5jdGlvbjtGJy9GM1Enbm9ybWFsRicvJSZmZW5jZUdRJmZhbHNlRicvJSpzZXBhcmF0b3JHRj0vJSlzdHJldGNoeUdGPS8lKnN5bW1ldHJpY0dGPS8lKGxhcmdlb3BHRj0vJS5tb3ZhYmxlbGltaXRzR0Y9LyUnYWNjZW50R0Y9LyUlZm9ybUdRJmluZml4RicvJSdsc3BhY2VHUSQwZW1GJy8lJ3JzcGFjZUdGTy8lKG1pbnNpemVHUSIxRicvJShtYXhzaXplR1EpaW5maW5pdHlGJy1JKG1mZW5jZWRHRiQ2Iy1GIzYlLUZZNiUtRiM2Iy1GIzYlLUkjbW5HRiQ2JFEiMEYnRjktRjY2MFEjLi5GJ0Y5RjtGPkZARkJGREZGRkgvRktRKHBvc3RmaXhGJy9GTlEwbWVkaXVtbWF0aHNwYWNlRidGUEZSRlUtRl5vNiRRIzMxRidGOS8lJW9wZW5HUSJbRicvJSZjbG9zZUdRIl1GJy1GNjYwUSIsRidGOUY7L0Y/RjFGQEZCRkRGRkZIRkpGTS9GUVEzdmVyeXRoaWNrbWF0aHNwYWNlRidGUkZVLUZZNiUtRiM2W28tRiM2JS1GIzYjRl1vLUY2NjBRIj1GJ0Y5RjtGPkZARkJGREZGRkhGSi9GTlEvdGhpY2ttYXRoc3BhY2VGJy9GUUZjcUZSRlUtRl5vNiRGVEY5RmFwLUYjNiUtRiM2I0ZlcUZfcUZlcUZhcC1GIzYlLUYjNiMtRl5vNiRRIjJGJ0Y5Rl9xRmVxRmFwLUYjNiUtRiM2Iy1GXm82JFEiM0YnRjlGX3FGXW9GYXAtRiM2JS1GIzYjLUZebzYkUSI0RidGOUZfcUZdb0ZhcC1GIzYlLUYjNiMtRl5vNiRRIjVGJ0Y5Rl9xRl1vRmFwLUYjNiUtRiM2Iy1GXm82JFEiNkYnRjlGX3FGXW9GYXAtRiM2JS1GIzYjLUZebzYkUSI3RidGOUZfcUZdb0ZhcC1GIzYlLUYjNiMtRl5vNiRRIjhGJ0Y5Rl9xRl1vRmFwLUYjNiUtRiM2Iy1GXm82JFEiOUYnRjlGX3FGXW9GYXAtRiM2JS1GIzYjLUZebzYkUSMxMEYnRjlGX3FGXW9GYXAtRiM2JS1GIzYjLUZebzYkUSMxMUYnRjlGX3FGXW9GYXAtRiM2JS1GIzYjLUZebzYkUSMxMkYnRjlGX3FGXW9GYXAtRiM2JS1GIzYjLUZebzYkUSMxM0YnRjlGX3FGXW9GYXAtRiM2JS1GIzYjLUZebzYkUSMxNEYnRjlGX3FGXW9GYXAtRiM2JS1GIzYjLUZebzYkUSMxNUYnRjlGX3FGXW9GYXAtRiM2JS1GIzYjLUZebzYkUSMxNkYnRjlGX3FGXW9GYXAtRiM2JS1GIzYjLUZebzYkUSMxN0YnRjlGX3FGXW9GYXAtRiM2JS1GIzYjLUZebzYkUSMxOEYnRjlGX3FGXW9GYXAtRiM2JS1GIzYjLUZebzYkUSMxOUYnRjlGX3FGXW9GYXAtRiM2JS1GIzYjLUZebzYkUSMyMEYnRjlGX3FGXW9GYXAtRiM2JS1GIzYjLUZebzYkUSMyMUYnRjlGX3FGXW9GYXAtRiM2JS1GIzYjLUZebzYkUSMyMkYnRjlGX3FGXW9GYXAtRiM2JS1GIzYjLUZebzYkUSMyM0YnRjlGX3FGXW9GYXAtRiM2JS1GIzYjLUZebzYkUSMyNEYnRjlGX3FGXW9GYXAtRiM2JS1GIzYjLUZebzYkUSMyNUYnRjlGX3FGXW9GYXAtRiM2JS1GIzYjLUZebzYkUSMyNkYnRjlGX3FGXW9GYXAtRiM2JS1GIzYjLUZebzYkUSMyN0YnRjlGX3FGXW9GYXAtRiM2JS1GIzYjLUZebzYkUSMyOEYnRjlGX3FGXW9GYXAtRiM2JS1GIzYjLUZebzYkUSMyOUYnRjlGX3FGXW9GYXAtRiM2JS1GIzYjLUZebzYkUSMzMEYnRjlGX3FGXW9GYXAtRiM2JS1GIzYjRmhvRl9xRl1vRltwRl5w">SSJBRzYi</Equation></Text-field>
</Output>
</Group>
<Group labelreference="L544" drawlabel="true">
<Input>
<Text-field prompt="&gt; " style="Maple Input" layout="Normal">#
# This is the polynom multiplication, do multiplication or squaring.
# A and B are the two polynomials, the FFT and IFFT use k rounds.
#

polmulcfft:=proc(A,B,k) global T;
if A=B then
  cfft(A,T,k);
  cdigmul(A,A,k);
  icfft(A,T,k);
else
  cfft(A,T,k);
  cfft(B,T,k);
  cdigmul(A,B,k);
  icfft(A,T,k);
fi; end;</Text-field>
</Input>
<Output>
<Text-field style="2D Output" layout="Maple Output"><Equation executable="false" style="2D Output" display="LUklbXJvd0c2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGJzYlLUkjbWlHRiQ2JVErcG9sbXVsY2ZmdEYnLyUnaXRhbGljR1EldHJ1ZUYnLyUsbWF0aHZhcmlhbnRHUSdpdGFsaWNGJy1JI21vR0YkNjBRIzo9RicvRjNRJ25vcm1hbEYnLyUmZmVuY2VHUSZmYWxzZUYnLyUqc2VwYXJhdG9yR0Y9LyUpc3RyZXRjaHlHRj0vJSpzeW1tZXRyaWNHRj0vJShsYXJnZW9wR0Y9LyUubW92YWJsZWxpbWl0c0dGPS8lJ2FjY2VudEdGPS8lJWZvcm1HUSZpbmZpeEYnLyUnbHNwYWNlR1EvdGhpY2ttYXRoc3BhY2VGJy8lJ3JzcGFjZUdGTy8lKG1pbnNpemVHUSIxRicvJShtYXhzaXplR1EpaW5maW5pdHlGJy1GIzYpLUY2NjFRJXByb2NGJy8lJWJvbGRHRjEvRjNRJWJvbGRGJ0Y7Rj5GQEZCRkRGRkZIL0ZLUSFGJy9GTlEkMGVtRicvRlFGXm9GUkZVLUkobWZlbmNlZEdGJDYjLUYjNictRiw2JVEiQUYnRi9GMi1GNjYwUSIsRidGOUY7L0Y/RjFGQEZCRkRGRkZIRkpGXW8vRlFRM3Zlcnl0aGlja21hdGhzcGFjZUYnRlJGVS1GLDYlUSJCRidGL0YyRmhvLUYsNiVRImtGJ0YvRjItSSdtc3BhY2VHRiQ2Ji8lJ2hlaWdodEdRJjAuMGV4RicvJSZ3aWR0aEdRJjAuM2VtRicvJSZkZXB0aEdGaXAvJSpsaW5lYnJlYWtHUTFmaXJzdHByb2NuZXdsaW5lRictRiM2Ji1GNjYxUSdnbG9iYWxGJ0ZnbkZpbkY7Rj5GQEZCRkRGRkZIRltvRl1vL0ZRUTBtZWRpdW1tYXRoc3BhY2VGJ0ZSRlUtRiM2Iy1GLDYlUSJURidGL0YyLUY2NjBRIjtGJ0Y5RjtGW3BGQEZCRkRGRkZIRkpGXW9GUEZSRlVGZHAtRiM2JS1GIzYoLUY2NjFRI2lmRidGZ25GaW5GO0Y+RkBGQkZERkZGSEZbb0Zdb0ZncUZSRlUtRiM2JUZlby1GNjYwUSI9RidGOUY7Rj5GQEZCRkRGRkZIRkpGTUZQRlJGVUZecC1GNjYxUSV0aGVuRidGZ25GaW5GO0Y+RkBGQkZERkZGSEZbby9GTkZdcEZfb0ZSRlUtRmVwNiZGZ3BGanBGXXEvRmBxUTZpbmNyZWFzZWluZGVudG5ld2xpbmVGJy1GIzYlLUYjNiUtRiM2JS1GLDYlUSVjZmZ0RidGL0YyLUY2NjBRMCZBcHBseUZ1bmN0aW9uO0YnRjlGO0Y+RkBGQkZERkZGSEZKRl1vRl9vRlJGVS1GYW82Iy1GIzYnRmVvRmhvRltyRmhvRmFwRl5yRmRwLUYjNiUtRiM2JS1GLDYlUShjZGlnbXVsRidGL0YyRl50LUZhbzYjLUYjNidGZW9GaG9GZW9GaG9GYXBGXnJGZHAtRiM2JS1GLDYlUSZpY2ZmdEYnRi9GMkZedEZhdC1GZXA2JkZncC9GW3FRJjAuMGVtRidGXXEvRmBxUTZkZWNyZWFzZWluZGVudG5ld2xpbmVGJy1GIzYmLUY2NjFRJWVsc2VGJ0ZnbkZpbkY7Rj5GQEZCRkRGRkZIRltvRmBzRl9vRlJGVUZhcy1GIzYmRmdzLUYjNiUtRiM2JUZbdEZedC1GYW82Iy1GIzYnRl5wRmhvRltyRmhvRmFwRl5yRmRwLUYjNiUtRiM2JUZpdEZedEZgb0ZeckZkcEZgdUZldS1GNjYxUSdlbmR+aWZGJ0ZnbkZpbkY7Rj5GQEZCRkRGRkZIRltvRmBzRl9vRlJGVUZldS1GNjYxUSllbmR+cHJvY0YnRmduRmluRjtGPkZARkJGREZGRkhGW29GYHNGX29GUkZV">Zio2JUkiQUc2IkkiQkdGJUkia0dGJUYlRiVGJUAlL0YkRiZDJS1JJWNmZnRHRiU2JUYkSSJUR0YlRictSShjZGlnbXVsR0YlNiVGJEYkRictSSZpY2ZmdEdGJUYtQyZGKy1GLDYlRiZGLkYnLUYwRiNGMkYlNiNGLkYl</Equation></Text-field>
</Output>
</Group>
<Group labelreference="L545" drawlabel="true">
<Input>
<Text-field prompt="&gt; " style="Maple Input" layout="Normal">polmulcfft(A,A,k): print(map(x-&gt;x/2^k,A));</Text-field>
</Input>
<Output>
<Text-field style="2D Output" layout="Maple Output"><Equation executable="false" style="2D Output" display="LUklbXJvd0c2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGJzYlLUkjbWlHRiQ2JVEmQVJSQVlGJy8lJ2l0YWxpY0dRJXRydWVGJy8lLG1hdGh2YXJpYW50R1EnaXRhbGljRictSSNtb0dGJDYwUTAmQXBwbHlGdW5jdGlvbjtGJy9GM1Enbm9ybWFsRicvJSZmZW5jZUdRJmZhbHNlRicvJSpzZXBhcmF0b3JHRj0vJSlzdHJldGNoeUdGPS8lKnN5bW1ldHJpY0dGPS8lKGxhcmdlb3BHRj0vJS5tb3ZhYmxlbGltaXRzR0Y9LyUnYWNjZW50R0Y9LyUlZm9ybUdRJmluZml4RicvJSdsc3BhY2VHUSQwZW1GJy8lJ3JzcGFjZUdGTy8lKG1pbnNpemVHUSIxRicvJShtYXhzaXplR1EpaW5maW5pdHlGJy1JKG1mZW5jZWRHRiQ2Iy1GIzYlLUZZNiUtRiM2Iy1GIzYlLUkjbW5HRiQ2JFEiMEYnRjktRjY2MFEjLi5GJ0Y5RjtGPkZARkJGREZGRkgvRktRKHBvc3RmaXhGJy9GTlEwbWVkaXVtbWF0aHNwYWNlRidGUEZSRlUtRl5vNiRRIzMxRidGOS8lJW9wZW5HUSJbRicvJSZjbG9zZUdRIl1GJy1GNjYwUSIsRidGOUY7L0Y/RjFGQEZCRkRGRkZIRkpGTS9GUVEzdmVyeXRoaWNrbWF0aHNwYWNlRidGUkZVLUZZNiUtRiM2W28tRiM2JS1GIzYjRl1vLUY2NjBRIj1GJ0Y5RjtGPkZARkJGREZGRkhGSi9GTlEvdGhpY2ttYXRoc3BhY2VGJy9GUUZjcUZSRlUtRiM2JS1GXm82JFEtMC45OTk5OTk5OTk0RidGOS1GNjYwUSIrRidGOUY7Rj5GQEZCRkRGRkZIRkpGZm8vRlFGZ29GUkZVLUYjNiUtRl5vNiRRIzAuRidGOS1GNjYwUTEmSW52aXNpYmxlVGltZXM7RidGOUY7Rj5GQEZCRkRGRkZIRkpGTUZQRlJGVS1GXm82JFEiSUYnRjlGYXAtRiM2JS1GIzYjLUZebzYkRlRGOUZfcS1GIzYlLUZebzYkUSwxLjk5OTk5OTk5OUYnRjlGanFGXnJGYXAtRiM2JS1GIzYjLUZebzYkUSIyRidGOUZfcS1GIzYlLUZebzYkUSwyLjk5OTk5OTk5OUYnRjlGanFGXnJGYXAtRiM2JS1GIzYjLUZebzYkUSIzRidGOUZfcS1GIzYlLUZebzYkUSwyLjAwMDAwMDAwMEYnRjlGanFGXnJGYXAtRiM2JS1GIzYjLUZebzYkUSI0RidGOUZfcS1GIzYlLUZebzYkUSwxLjAwMDAwMDAwMEYnRjlGanFGXnJGYXAtRiM2JS1GIzYjLUZebzYkUSI1RidGOUZfcS1GIzYlLUYjNiUtRl5vNiRRLDguMDgwNTgyNjE5RidGOUZjci1JJW1zdXBHRiQ2JS1GXm82JFEjMTBGJ0Y5LUZebzYkUSQtMTFGJ0Y5LyUxc3VwZXJzY3JpcHRzaGlmdEdRIjBGJ0ZqcUZeckZhcC1GIzYlLUYjNiMtRl5vNiRRIjZGJ0Y5Rl9xLUYjNiYtRjY2MFEqJnVtaW51czA7RidGOUY7Rj5GQEZCRkRGRkZIL0ZLUSdwcmVmaXhGJ0ZNL0ZRUTJ2ZXJ5dGhpbm1hdGhzcGFjZUYnRlJGVS1GIzYlLUZebzYkUSwxLjA2MTMzNTA1MkYnRjlGY3ItRmd2NiVGaXYtRl5vNiRRJC0xMEYnRjlGX3dGanFGXnJGYXAtRiM2JS1GIzYjLUZebzYkUSI3RidGOUZfcS1GIzYlLUYjNiUtRl5vNiRRLDIuMjUxNzI3OTMwRidGOUZjckZneEZqcUZeckZhcC1GIzYlLUYjNiMtRl5vNiRRIjhGJ0Y5Rl9xLUYjNiVGYHJGanFGXnJGYXAtRiM2JS1GIzYjLUZebzYkUSI5RidGOUZfcS1GIzYmRlt4LUYjNiUtRl5vNiRRLDEuODc1MDAwMDAwRidGOUZjckZneEZqcUZeckZhcC1GIzYlLUYjNiNGaXZGX3EtRiM2JkZbeC1GIzYlLUZebzYkUSwxLjQxOTIzMTYxOUYnRjlGY3JGZ3hGanFGXnJGYXAtRiM2JS1GIzYjLUZebzYkUSMxMUYnRjlGX3EtRiM2JkZbeC1GIzYlLUZebzYkUSw2LjI0MzA5MzQyMkYnRjlGY3JGZ3hGanFGXnJGYXAtRiM2JS1GIzYjLUZebzYkUSMxMkYnRjlGX3EtRiM2JkZbeC1GIzYlLUZebzYkUSwyLjc1ODg4MzQ3NkYnRjlGY3JGZ3hGanFGXnJGYXAtRiM2JS1GIzYjLUZebzYkUSMxM0YnRjlGX3EtRiM2JS1GIzYlLUZebzYkUSwxLjMyNTgyNTIxNUYnRjlGY3JGZ3hGanFGXnJGYXAtRiM2JS1GIzYjLUZebzYkUSMxNEYnRjlGX3EtRiM2JS1GIzYlLUZebzYkUSw2Ljg5MzYxNjIzOEYnRjlGY3JGZ3hGanFGXnJGYXAtRiM2JS1GIzYjLUZebzYkUSMxNUYnRjlGX3EtRiM2JS1GIzYlLUZebzYkUSw1Ljc4NzI2MTgzOEYnRjlGY3JGZ3hGanFGXnJGYXAtRiM2JS1GIzYjLUZebzYkUSMxNkYnRjlGX3EtRiM2JS1GIzYlLUZebzYkUSw2LjI1MDAwMDAwMEYnRjlGY3JGZ3hGanFGXnJGYXAtRiM2JS1GIzYjLUZebzYkUSMxN0YnRjlGX3FGaWBsRmFwLUYjNiUtRiM2Iy1GXm82JFEjMThGJ0Y5Rl9xRmlgbEZhcC1GIzYlLUYjNiMtRl5vNiRRIzE5RidGOUZfcS1GIzYlLUYjNiUtRl5vNiRRLDMuMTI1MDAwMDAwRidGOUZjckZneEZqcUZeckZhcC1GIzYlLUYjNiMtRl5vNiRRIzIwRidGOUZfcUZpYGxGYXAtRiM2JS1GIzYjLUZebzYkUSMyMUYnRjlGX3EtRiM2JS1GIzYlLUZebzYkUSwxLjY5MTk0MTczOEYnRjlGY3JGZ3hGanFGXnJGYXAtRiM2JS1GIzYjLUZebzYkUSMyMkYnRjlGX3EtRiM2JS1GIzYlLUZebzYkUSwxLjk0NTIxODUyOEYnRjlGY3JGZ3hGanFGXnJGYXAtRiM2JS1GIzYjLUZebzYkUSMyM0YnRjlGX3EtRiM2JS1GIzYlLUZebzYkUSw3LjY2MDM5MDIyNUYnRjlGY3JGZnZGanFGXnJGYXAtRiM2JS1GIzYjLUZebzYkUSMyNEYnRjlGX3FGYXpGYXAtRiM2JS1GIzYjLUZebzYkUSMyNUYnRjlGX3EtRiM2JUZcW2xGanFGXnJGYXAtRiM2JS1GIzYjLUZebzYkUSMyNkYnRjlGX3EtRiM2JUZnW2xGanFGXnJGYXAtRiM2JS1GIzYjLUZebzYkUSMyN0YnRjlGX3EtRiM2JkZbeC1GIzYlLUZebzYkUSw2LjkwNjU3NzUwMEYnRjlGY3ItRmd2NiVGaXYtRl5vNiRRJC0xM0YnRjlGX3dGanFGXnJGYXAtRiM2JS1GIzYjLUZebzYkUSMyOEYnRjlGX3EtRiM2JkZbeC1GIzYlLUZebzYkUSw5LjkxMTE2NTIzOEYnRjlGY3JGZnZGanFGXnJGYXAtRiM2JS1GIzYjLUZebzYkUSMyOUYnRjlGX3EtRiM2JkZbeEZhXmxGanFGXnJGYXAtRiM2JS1GIzYjLUZebzYkUSMzMEYnRjlGX3EtRiM2JkZbeC1GIzYlLUZebzYkUSw3Ljc3NzQ5OTcxMkYnRjlGY3JGZ3gtRjY2MFEoJm1pbnVzO0YnRjlGO0Y+RkBGQkZERkZGSEZKRmZvRl1yRlJGVUZeckZhcC1GIzYlLUYjNiNGaG9GX3EtRiM2JkZbeC1GIzYlLUZebzYkUSw2LjMwNTAyODc4OEYnRjlGY3JGZ3hGXlttRl5yRltwRl5w">PTYiNiM7IiIhIiNKRVxbbEFGJiwmJCIrJSoqKioqKioqKiEjNSIiIiomJEYmRiZGLV4jRi1GLUYtRi0sJiQiKyoqKioqKioqPiEiKkYtRi5GLSIiIywmJCIrKioqKioqKipIRjRGLUYuRi0iIiQsJiQiKysrKys/RjRGLUYuRi0iIiYsJiQiKz5FZSEzKSEjP0YtRi5GLSIiJSwmJCIrKysrKzVGNEYtRi5GLSIiKCwmJCIrSXpzXkEhIz5GLUYuRi0iIicsJiQiK19dTGg1RkohIiJGLkYtIiM1LCYkIis+O0I+OUZKRk9GLkYtIiM2LCYkIitBTTRWaUZKRk9GLkYtIiIpLCZGL0YtRi5GLSIiKiwmJCIrKysrdj1GSkZPRi5GLSIjOiwmJCIrUT1FKHkmRkpGLUYuRi0iIzksJiQiK1FpaCQqb0ZKRi1GLkYtIiM4LCYkIis6XyNlSyJGSkYtRi5GLSIjNywmJCIrd00pKWVGRkpGT0YuRi0iI0AsJiQiK1E8JT5wIkZKRi1GLkYtIiM/LCYkIisrKytdaUZKRi1GLkYtIiNCLCYkIitELVJnd0ZBRi1GLkYtIiNBLCYkIitHJj1fJT5GSkYtRi5GLSIjO0ZdcCIjPEZdcCIjPUZdcCIjPiwmJCIrKysrREpGSkYtRi5GLUYnLCYkIispeUddSSdGSkZPRi5GTyIjSSwmJCIrNygqXHh4RkpGT0YuRk8iI0gsJkZib0ZPRi5GLSIjRywmJCIrUV87NioqRkFGT0YuRi0iI0UsJkZSRi1GLkYtIiNGLCYkIisrdmQxcCEjQUZPRi5GLSIjQ0ZZIiNELCZGZm5GLUYuRi0=</Equation></Text-field>
</Output>
</Group>
<Group labelreference="L575" drawlabel="true">
<Input>
<Text-field prompt="&gt; " style="Maple Input" layout="Normal">#
# The cfftpre procedure do the preparation for the
# table for cfft, where x is the number, A is the
# table, m the modulus, and k is the number of 
# rounds for the cfft, hence the table is 2^k long.
#

cfftpre:=proc(x,A,m,k) local i,xx;
xx:=x;
for i from 0 to 2^k-1 do A[i]:=irem(xx,m,'xx'); od;
end;</Text-field>
</Input>
<Output>
<Text-field style="2D Output" layout="Maple Output"><Equation executable="false" style="2D Output" display="LUklbXJvd0c2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGJzYlLUkjbWlHRiQ2JVEoY2ZmdHByZUYnLyUnaXRhbGljR1EldHJ1ZUYnLyUsbWF0aHZhcmlhbnRHUSdpdGFsaWNGJy1JI21vR0YkNjBRIzo9RicvRjNRJ25vcm1hbEYnLyUmZmVuY2VHUSZmYWxzZUYnLyUqc2VwYXJhdG9yR0Y9LyUpc3RyZXRjaHlHRj0vJSpzeW1tZXRyaWNHRj0vJShsYXJnZW9wR0Y9LyUubW92YWJsZWxpbWl0c0dGPS8lJ2FjY2VudEdGPS8lJWZvcm1HUSZpbmZpeEYnLyUnbHNwYWNlR1EvdGhpY2ttYXRoc3BhY2VGJy8lJ3JzcGFjZUdGTy8lKG1pbnNpemVHUSIxRicvJShtYXhzaXplR1EpaW5maW5pdHlGJy1GIzYpLUY2NjFRJXByb2NGJy8lJWJvbGRHRjEvRjNRJWJvbGRGJ0Y7Rj5GQEZCRkRGRkZIL0ZLUSFGJy9GTlEkMGVtRicvRlFGXm9GUkZVLUkobWZlbmNlZEdGJDYjLUYjNiktRiw2JVEieEYnRi9GMi1GNjYwUSIsRidGOUY7L0Y/RjFGQEZCRkRGRkZIRkpGXW8vRlFRM3Zlcnl0aGlja21hdGhzcGFjZUYnRlJGVS1GLDYlUSJBRidGL0YyRmhvLUYsNiVRIm1GJ0YvRjJGaG8tRiw2JVEia0YnRi9GMi1JJ21zcGFjZUdGJDYmLyUnaGVpZ2h0R1EmMC4wZXhGJy8lJndpZHRoR1EmMC4zZW1GJy8lJmRlcHRoR0ZccS8lKmxpbmVicmVha0dRMWZpcnN0cHJvY25ld2xpbmVGJy1GIzYmLUY2NjFRJmxvY2FsRidGZ25GaW5GO0Y+RkBGQkZERkZGSEZbb0Zdby9GUVEwbWVkaXVtbWF0aHNwYWNlRidGUkZVLUYjNiUtRiw2JVEiaUYnRi9GMkZoby1GLDYlUSN4eEYnRi9GMi1GNjYwUSI7RidGOUY7RltwRkBGQkZERkZGSEZKRl1vRlBGUkZVRmdwLUYjNiQtRiM2JS1GIzYlRmFyRjVGZW9GZHJGZ3AtRiM2Jy1GIzYpLUY2NjFRJGZvckYnRmduRmluRjtGPkZARkJGREZGRkhGW29GXW9GanFGUkZVRl5yLUY2NjFRJWZyb21GJ0ZnbkZpbkY7Rj5GQEZCRkRGRkZIRltvL0ZORltyRmpxRlJGVS1JI21uR0YkNiRRIjBGJ0Y5LUY2NjFRI3RvRidGZ25GaW5GO0Y+RkBGQkZERkZGSEZbb0Znc0ZqcUZSRlUtRiM2JS1GIzYlLUZpczYkUSIyRidGOS1GNjYwUSJeRidGOUY7Rj5GQEZCRkRGRkZIRkovRk5RMnZlcnl0aGlubWF0aHNwYWNlRicvRlFGanRGUkZVRmRwLUY2NjBRKn4mbWludXM7fkYnRjlGO0Y+RkBGQkZERkZGSEZbb0Zdb0Zfb0ZSRlUtRmlzNiRGVEY5LUY2NjFRI2RvRidGZ25GaW5GO0Y+RkBGQkZERkZGSEZbb0Znc0ZqcUZSRlUtRmhwNiZGanBGXXFGYHEvRmNxUTZpbmNyZWFzZWluZGVudG5ld2xpbmVGJy1GIzYlLUYjNiZGXnAtRjY2MFEiW0YnRjkvRjxGMUY+L0ZBRjFGQkZERkZGSC9GS1EncHJlZml4RicvRk5RLnRoaW5tYXRoc3BhY2VGJy9GUUZkdkZSRlUtRiM2I0Zeci1GNjYwUSJdRidGOUZfdkY+RmB2RkJGREZGRkgvRktRKHBvc3RmaXhGJ0ZjdkZbdUZSRlVGNS1GIzYlLUYsNiVRJWlyZW1GJ0YvRjItRjY2MFEwJkFwcGx5RnVuY3Rpb247RidGOUY7Rj5GQEZCRkRGRkZIRkpGXW9GX29GUkZVLUZhbzYjLUYjNidGYXJGaG9GYXBGaG8tRiM2JS1GNjYwUSInRidGOUY7Rj5GQEZCRkRGRkZIRlt3Rml0Rl9vRlJGVUZhckZbeC1GaHA2JkZqcC9GXnFRJjAuMGVtRidGYHEvRmNxUTZkZWNyZWFzZWluZGVudG5ld2xpbmVGJy1GNjYxUSdlbmR+ZG9GJ0ZnbkZpbkY7Rj5GQEZCRkRGRkZIRltvL0ZORl1wRl9vRlJGVUZeeC1GNjYxUSllbmR+cHJvY0YnRmduRmluRjtGPkZARkJGREZGRkhGW29GZ3hGX29GUkZV">Zio2JkkieEc2IkkiQUdGJUkibUdGJUkia0dGJTYkSSJpR0YlSSN4eEdGJUYlRiVDJD5GK0YkPyhGKiIiISIiIiwmKSIiI0YoRjBGMCEiIkkldHJ1ZUclKnByb3RlY3RlZEc+JkYmNiNGKi1JJWlyZW1HRjY2JUYrRicuRitGJUYlRiU=</Equation></Text-field>
</Output>
</Group>
<Group labelreference="L546" drawlabel="true">
<Input>
<Text-field prompt="&gt; " style="Maple Input" layout="Normal">#
# The cnorm procedure do the normalization
# after the icfft; A is the table, m the modulus,
# and k is the number of rounds for the cfft,
# hence the table is 2^k long. The fraction parts are
# left in the table A.
#

cnorm:=proc(A,m,k) local i,x;
x:=0;
for i from 2^k-1 to 0 by -1 do
  A[i]:=A[i]/2^k;
  x:=m*x+round(A[i]);
  A[i]:=A[i]-round(A[i]);
od; x; end;</Text-field>
</Input>
<Output>
<Text-field style="2D Output" layout="Maple Output"><Equation executable="false" style="2D Output" display="LUklbXJvd0c2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGJzYlLUkjbWlHRiQ2JVEmY25vcm1GJy8lJ2l0YWxpY0dRJXRydWVGJy8lLG1hdGh2YXJpYW50R1EnaXRhbGljRictSSNtb0dGJDYwUSM6PUYnL0YzUSdub3JtYWxGJy8lJmZlbmNlR1EmZmFsc2VGJy8lKnNlcGFyYXRvckdGPS8lKXN0cmV0Y2h5R0Y9LyUqc3ltbWV0cmljR0Y9LyUobGFyZ2VvcEdGPS8lLm1vdmFibGVsaW1pdHNHRj0vJSdhY2NlbnRHRj0vJSVmb3JtR1EmaW5maXhGJy8lJ2xzcGFjZUdRL3RoaWNrbWF0aHNwYWNlRicvJSdyc3BhY2VHRk8vJShtaW5zaXplR1EiMUYnLyUobWF4c2l6ZUdRKWluZmluaXR5RictRiM2KS1GNjYxUSVwcm9jRicvJSVib2xkR0YxL0YzUSVib2xkRidGO0Y+RkBGQkZERkZGSC9GS1EhRicvRk5RJDBlbUYnL0ZRRl5vRlJGVS1JKG1mZW5jZWRHRiQ2Iy1GIzYnLUYsNiVRIkFGJ0YvRjItRjY2MFEiLEYnRjlGOy9GP0YxRkBGQkZERkZGSEZKRl1vL0ZRUTN2ZXJ5dGhpY2ttYXRoc3BhY2VGJ0ZSRlUtRiw2JVEibUYnRi9GMkZoby1GLDYlUSJrRidGL0YyLUknbXNwYWNlR0YkNiYvJSdoZWlnaHRHUSYwLjBleEYnLyUmd2lkdGhHUSYwLjNlbUYnLyUmZGVwdGhHRmlwLyUqbGluZWJyZWFrR1ExZmlyc3Rwcm9jbmV3bGluZUYnLUYjNiYtRjY2MVEmbG9jYWxGJ0ZnbkZpbkY7Rj5GQEZCRkRGRkZIRltvRl1vL0ZRUTBtZWRpdW1tYXRoc3BhY2VGJ0ZSRlUtRiM2JS1GLDYlUSJpRidGL0YyRmhvLUYsNiVRInhGJ0YvRjItRjY2MFEiO0YnRjlGO0ZbcEZARkJGREZGRkhGSkZdb0ZQRlJGVUZkcC1GIzYlLUYjNiUtRiM2JUZeckY1LUkjbW5HRiQ2JFEiMEYnRjlGYXJGZHAtRiM2JS1GIzYnLUYjNistRjY2MVEkZm9yRidGZ25GaW5GO0Y+RkBGQkZERkZGSEZbb0Zdb0ZncUZSRlVGW3ItRjY2MVElZnJvbUYnRmduRmluRjtGPkZARkJGREZGRkhGW28vRk5GaHFGZ3FGUkZVLUYjNiUtRiM2JS1GW3M2JFEiMkYnRjktRjY2MFEiXkYnRjlGO0Y+RkBGQkZERkZGSEZKL0ZOUTJ2ZXJ5dGhpbm1hdGhzcGFjZUYnL0ZRRmZ0RlJGVUZhcC1GNjYwUSp+Jm1pbnVzO35GJ0Y5RjtGPkZARkJGREZGRkhGW29GXW9GX29GUkZVLUZbczYkRlRGOS1GNjYxUSNieUYnRmduRmluRjtGPkZARkJGREZGRkhGW29GanNGZ3FGUkZVLUYjNiQtRjY2MFEoJm1pbnVzO0YnRjlGO0Y+RkBGQkZERkZGSEZbb0Zdb0Zfb0ZSRlVGW3UtRjY2MVEjdG9GJ0ZnbkZpbkY7Rj5GQEZCRkRGRkZIRltvRmpzRmdxRlJGVUZqci1GNjYxUSNkb0YnRmduRmluRjtGPkZARkJGREZGRkhGW29GanNGZ3FGUkZVLUZlcDYmRmdwRmpwRl1xL0ZgcVE2aW5jcmVhc2VpbmRlbnRuZXdsaW5lRictRiM2JS1GIzYlLUYjNiUtRiM2JkZlby1GNjYwUSJbRidGOS9GPEYxRj4vRkFGMUZCRkRGRkZIL0ZLUSdwcmVmaXhGJy9GTlEudGhpbm1hdGhzcGFjZUYnL0ZRRl93RlJGVS1GIzYjRltyLUY2NjBRIl1GJ0Y5Rmp2Rj5GW3dGQkZERkZGSC9GS1EocG9zdGZpeEYnRl53Rmd0RlJGVUY1LUYjNiUtRiM2I0Zldi1GNjYwUSIvRidGOUY7Rj5GW3dGQkZERkZGSEZKRl53RmB3RlJGVS1GIzYjRl10RmFyRmRwLUYjNiUtRiM2JUZeckY1LUYjNiUtRiM2JUZecC1GNjYwUSIqRidGOUY7Rj5GQEZCRkRGRkZIRkpGXndGYHdGUkZVRl5yLUY2NjBRIitGJ0Y5RjtGPkZARkJGREZGRkhGSkZqc0ZncUZSRlUtRiM2JS1GLDYlUSZyb3VuZEYnL0YwRj1GOS1GNjYwUTAmQXBwbHlGdW5jdGlvbjtGJ0Y5RjtGPkZARkJGREZGRkhGSkZdb0Zfb0ZSRlUtRmFvNiNGandGYXJGZHAtRiM2JUZldkY1LUYjNiVGZXZGaHRGX3ktRmVwNiZGZ3AvRltxUSYwLjBlbUYnRl1xL0ZgcVE2ZGVjcmVhc2VpbmRlbnRuZXdsaW5lRictRjY2MVEnZW5kfmRvRidGZ25GaW5GO0Y+RkBGQkZERkZGSEZbby9GTkZdcEZfb0ZSRlVGYXJGZHBGXnJGXnotRjY2MVEpZW5kfnByb2NGJ0ZnbkZpbkY7Rj5GQEZCRkRGRkZIRltvRmd6Rl9vRlJGVQ==">Zio2JUkiQUc2IkkibUdGJUkia0dGJTYkSSJpR0YlSSJ4R0YlRiVGJUMlPkYqIiIhPyhGKSwmKSIiI0YnIiIiRjIhIiJGM0YtSSV0cnVlRyUqcHJvdGVjdGVkR0MlPiZGJDYjRikqJkY4RjJGMEYzPkYqLCYqJkYmRjJGKkYyRjItSSZyb3VuZEc2JEY1SShfc3lzbGliR0YlNiNGOEYyPkY4LCZGOEYyRj5GM0YqRiVGJUYl</Equation></Text-field>
</Output>
</Group>
<Group labelreference="L548" drawlabel="true">
<Input>
<Text-field prompt="&gt; " style="Maple Input" layout="Normal">#
# This is the main procedure, do the multiplication or the squaring.
# a and b are the two numbers, m is the modulus for the preparation. 
# The complex FFT and IFFT use k rounds.
#

mulcfft:=proc(a,b,m,k) global A,B,T;
if a=b then
  cfftpre(a,A,m,k);
  cfft(A,T,k);
  cdigmul(A,A,k);
  icfft(A,T,k);
  cnorm(A,m,k);
else
  cfftpre(a,A,m,k);
  cfft(A,T,k);
  cfftpre(b,B,m,k);
  cfft(B,T,k);
  cdigmul(A,B,k);
  icfft(A,T,k);
  cnorm(A,m,k);
fi; end;</Text-field>
</Input>
<Output>
<Text-field style="2D Output" layout="Maple Output"><Equation executable="false" style="2D Output" display="LUklbXJvd0c2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGJzYlLUkjbWlHRiQ2JVEobXVsY2ZmdEYnLyUnaXRhbGljR1EldHJ1ZUYnLyUsbWF0aHZhcmlhbnRHUSdpdGFsaWNGJy1JI21vR0YkNjBRIzo9RicvRjNRJ25vcm1hbEYnLyUmZmVuY2VHUSZmYWxzZUYnLyUqc2VwYXJhdG9yR0Y9LyUpc3RyZXRjaHlHRj0vJSpzeW1tZXRyaWNHRj0vJShsYXJnZW9wR0Y9LyUubW92YWJsZWxpbWl0c0dGPS8lJ2FjY2VudEdGPS8lJWZvcm1HUSZpbmZpeEYnLyUnbHNwYWNlR1EvdGhpY2ttYXRoc3BhY2VGJy8lJ3JzcGFjZUdGTy8lKG1pbnNpemVHUSIxRicvJShtYXhzaXplR1EpaW5maW5pdHlGJy1GIzYpLUY2NjFRJXByb2NGJy8lJWJvbGRHRjEvRjNRJWJvbGRGJ0Y7Rj5GQEZCRkRGRkZIL0ZLUSFGJy9GTlEkMGVtRicvRlFGXm9GUkZVLUkobWZlbmNlZEdGJDYjLUYjNiktRiw2JVEiYUYnRi9GMi1GNjYwUSIsRidGOUY7L0Y/RjFGQEZCRkRGRkZIRkpGXW8vRlFRM3Zlcnl0aGlja21hdGhzcGFjZUYnRlJGVS1GLDYlUSJiRidGL0YyRmhvLUYsNiVRIm1GJ0YvRjJGaG8tRiw2JVEia0YnRi9GMi1JJ21zcGFjZUdGJDYmLyUnaGVpZ2h0R1EmMC4wZXhGJy8lJndpZHRoR1EmMC4zZW1GJy8lJmRlcHRoR0ZccS8lKmxpbmVicmVha0dRMWZpcnN0cHJvY25ld2xpbmVGJy1GIzYmLUY2NjFRJ2dsb2JhbEYnRmduRmluRjtGPkZARkJGREZGRkhGW29GXW8vRlFRMG1lZGl1bW1hdGhzcGFjZUYnRlJGVS1GIzYnLUYsNiVRIkFGJ0YvRjJGaG8tRiw2JVEiQkYnRi9GMkZoby1GLDYlUSJURidGL0YyLUY2NjBRIjtGJ0Y5RjtGW3BGQEZCRkRGRkZIRkpGXW9GUEZSRlVGZ3AtRiM2JS1GIzYoLUY2NjFRI2lmRidGZ25GaW5GO0Y+RkBGQkZERkZGSEZbb0Zdb0ZqcUZSRlUtRiM2JUZlby1GNjYwUSI9RidGOUY7Rj5GQEZCRkRGRkZIRkpGTUZQRlJGVUZecC1GNjYxUSV0aGVuRidGZ25GaW5GO0Y+RkBGQkZERkZGSEZbby9GTkZdcEZfb0ZSRlUtRmhwNiZGanBGXXFGYHEvRmNxUTZpbmNyZWFzZWluZGVudG5ld2xpbmVGJy1GIzYnLUYjNiUtRiM2JS1GLDYlUShjZmZ0cHJlRidGL0YyLUY2NjBRMCZBcHBseUZ1bmN0aW9uO0YnRjlGO0Y+RkBGQkZERkZGSEZKRl1vRl9vRlJGVS1GYW82Iy1GIzYpRmVvRmhvRl5yRmhvRmFwRmhvRmRwRmdyRmdwLUYjNiUtRiM2JS1GLDYlUSVjZmZ0RidGL0YyRmd0LUZhbzYjLUYjNidGXnJGaG9GZHJGaG9GZHBGZ3JGZ3AtRiM2JS1GIzYlLUYsNiVRKGNkaWdtdWxGJ0YvRjJGZ3QtRmFvNiMtRiM2J0ZeckZob0ZeckZob0ZkcEZnckZncC1GIzYlLUYjNiUtRiw2JVEmaWNmZnRGJ0YvRjJGZ3RGZXVGZ3JGZ3AtRiM2JS1GLDYlUSZjbm9ybUYnRi9GMkZndC1GYW82Iy1GIzYnRl5yRmhvRmFwRmhvRmRwLUZocDYmRmpwL0ZecVEmMC4wZW1GJ0ZgcS9GY3FRNmRlY3JlYXNlaW5kZW50bmV3bGluZUYnLUYjNiYtRjY2MVElZWxzZUYnRmduRmluRjtGPkZARkJGREZGRkhGW29GaXNGX29GUkZVRmpzLUYjNilGYHRGXnUtRiM2JS1GIzYlRmR0Rmd0LUZhbzYjLUYjNilGXnBGaG9GYXJGaG9GYXBGaG9GZHBGZ3JGZ3AtRiM2JS1GIzYlRmJ1Rmd0LUZhbzYjLUYjNidGYXJGaG9GZHJGaG9GZHBGZ3JGZ3AtRiM2JS1GIzYlRl12Rmd0LUZhbzYjLUYjNidGXnJGaG9GYXJGaG9GZHBGZ3JGZ3BGZHZGW3dGZHctRjY2MVEnZW5kfmlmRidGZ25GaW5GO0Y+RkBGQkZERkZGSEZbb0Zpc0Zfb0ZSRlVGZHctRjY2MVEpZW5kfnByb2NGJ0ZnbkZpbkY7Rj5GQEZCRkRGRkZIRltvRmlzRl9vRlJGVQ==">Zio2JkkiYUc2IkkiYkdGJUkibUdGJUkia0dGJUYlRiVGJUAlL0YkRiZDJy1JKGNmZnRwcmVHRiU2JkYkSSJBR0YlRidGKC1JJWNmZnRHRiU2JUYvSSJUR0YlRigtSShjZGlnbXVsR0YlNiVGL0YvRigtSSZpY2ZmdEdGJUYyLUkmY25vcm1HRiU2JUYvRidGKEMpRixGMC1GLTYmRiZJIkJHRiVGJ0YoLUYxNiVGP0YzRigtRjU2JUYvRj9GKEY3RjlGJTYlRi9GP0YzRiU=</Equation></Text-field>
</Output>
</Group>
<Group labelreference="L549" drawlabel="true">
<Input>
<Text-field prompt="&gt; " style="Maple Input" layout="Normal">mulcfft(123456789,987654321,20,5);</Text-field>
</Input>
<Output>
<Text-field style="2D Output" layout="Maple Output"><Equation executable="false" style="2D Output">IjNwX2o3NmpLPjc=</Equation></Text-field>
</Output>
</Group>
<Group labelreference="L550" drawlabel="true">
<Input>
<Text-field prompt="&gt; " style="Maple Input" layout="Normal">123456789*987654321;</Text-field>
</Input>
<Output>
<Text-field style="2D Output" layout="Maple Output"><Equation executable="false" style="2D Output">IjNwX2o3NmpLPjc=</Equation></Text-field>
</Output>
</Group>
<Group labelreference="L551" drawlabel="true">
<Input>
<Text-field prompt="&gt; " style="Maple Input" layout="Normal">print(A);</Text-field>
</Input>
<Output>
<Text-field style="2D Output" layout="Maple Output"><Equation executable="false" style="2D Output" display="LUklbXJvd0c2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGJzYlLUkjbWlHRiQ2JVEmQVJSQVlGJy8lJ2l0YWxpY0dRJXRydWVGJy8lLG1hdGh2YXJpYW50R1EnaXRhbGljRictSSNtb0dGJDYwUTAmQXBwbHlGdW5jdGlvbjtGJy9GM1Enbm9ybWFsRicvJSZmZW5jZUdRJmZhbHNlRicvJSpzZXBhcmF0b3JHRj0vJSlzdHJldGNoeUdGPS8lKnN5bW1ldHJpY0dGPS8lKGxhcmdlb3BHRj0vJS5tb3ZhYmxlbGltaXRzR0Y9LyUnYWNjZW50R0Y9LyUlZm9ybUdRJmluZml4RicvJSdsc3BhY2VHUSQwZW1GJy8lJ3JzcGFjZUdGTy8lKG1pbnNpemVHUSIxRicvJShtYXhzaXplR1EpaW5maW5pdHlGJy1JKG1mZW5jZWRHRiQ2Iy1GIzYlLUZZNiUtRiM2Iy1GIzYlLUkjbW5HRiQ2JFEiMEYnRjktRjY2MFEjLi5GJ0Y5RjtGPkZARkJGREZGRkgvRktRKHBvc3RmaXhGJy9GTlEwbWVkaXVtbWF0aHNwYWNlRidGUEZSRlUtRl5vNiRRIzMxRidGOS8lJW9wZW5HUSJbRicvJSZjbG9zZUdRIl1GJy1GNjYwUSIsRidGOUY7L0Y/RjFGQEZCRkRGRkZIRkpGTS9GUVEzdmVyeXRoaWNrbWF0aHNwYWNlRidGUkZVLUZZNiUtRiM2W28tRiM2JS1GIzYjRl1vLUY2NjBRIj1GJ0Y5RjtGPkZARkJGREZGRkhGSi9GTlEvdGhpY2ttYXRoc3BhY2VGJy9GUUZjcUZSRlUtRiM2JS1GIzYlLUZebzYkUSQ2LjJGJ0Y5LUY2NjBRMSZJbnZpc2libGVUaW1lcztGJ0Y5RjtGPkZARkJGREZGRkhGSkZNRlBGUkZVLUklbXN1cEdGJDYlLUZebzYkUSMxMEYnRjktRl5vNiRRIy04RidGOS8lMXN1cGVyc2NyaXB0c2hpZnRHUSIwRictRjY2MFEiK0YnRjlGO0Y+RkBGQkZERkZGSEZKRmZvL0ZRRmdvRlJGVS1GIzYlLUZebzYkUSMwLkYnRjlGXHItRl5vNiRRIklGJ0Y5RmFwLUYjNiUtRiM2Iy1GXm82JEZURjlGX3EtRiM2Ji1GNjYwUSomdW1pbnVzMDtGJ0Y5RjtGPkZARkJGREZGRkgvRktRJ3ByZWZpeEYnRk0vRlFRMnZlcnl0aGlubWF0aHNwYWNlRidGUkZVLUYjNiUtRl5vNiRRIzEuRidGOUZcci1GYHI2JUZici1GXm82JFEjLTdGJ0Y5RmhyRltzRl9zRmFwLUYjNiUtRiM2Iy1GXm82JFEiMkYnRjlGX3EtRiM2JUZhc0Zbc0Zfc0ZhcC1GIzYlLUYjNiMtRl5vNiRRIjNGJ0Y5Rl9xRmd1RmFwLUYjNiUtRiM2Iy1GXm82JFEiNEYnRjlGX3FGZ3VGYXAtRiM2JS1GIzYjLUZebzYkUSI1RidGOUZfcUZndUZhcC1GIzYlLUYjNiMtRl5vNiRRIjZGJ0Y5Rl9xRmd1RmFwLUYjNiUtRiM2Iy1GXm82JFEiN0YnRjlGX3FGZ3VGYXAtRiM2JS1GIzYjLUZebzYkUSI4RidGOUZfcUZndUZhcC1GIzYlLUYjNiMtRl5vNiRRIjlGJ0Y5Rl9xRmd1RmFwLUYjNiUtRiM2I0ZickZfcUZndUZhcC1GIzYlLUYjNiMtRl5vNiRRIzExRidGOUZfcS1GIzYlRmZ0RltzRl9zRmFwLUYjNiUtRiM2Iy1GXm82JFEjMTJGJ0Y5Rl9xLUYjNiUtRiM2JS1GXm82JFEjNy5GJ0Y5RlxyRl9yRltzRl9zRmFwLUYjNiUtRiM2Iy1GXm82JFEjMTNGJ0Y5Rl9xLUYjNiZGX3QtRiM2JS1GXm82JFEsMS44MzA1ODI2MTlGJ0Y5RlxyRl9yRltzRl9zRmFwLUYjNiUtRiM2Iy1GXm82JFEjMTRGJ0Y5Rl9xRmd1RmFwLUYjNiUtRiM2Iy1GXm82JFEjMTVGJ0Y5Rl9xLUYjNiUtRiM2JS1GXm82JFEsMS4zMjU4MjUyMTVGJ0Y5RlxyRlt1RltzRl9zRmFwLUYjNiUtRiM2Iy1GXm82JFEjMTZGJ0Y5Rl9xLUYjNiZGX3QtRiM2JS1GXm82JFEsNi4yNTAwMDAwMDBGJ0Y5RlxyRl9yRltzRl9zRmFwLUYjNiUtRiM2Iy1GXm82JFEjMTdGJ0Y5Rl9xLUYjNiUtRiM2JS1GXm82JFEsMS4yNTAwMDAwMDBGJ0Y5RlxyRlt1RltzRl9zRmFwLUYjNiUtRiM2Iy1GXm82JFEjMThGJ0Y5Rl9xLUYjNiZGX3RGX15sRltzRl9zRmFwLUYjNiUtRiM2Iy1GXm82JFEjMTlGJ0Y5Rl9xRmd1RmFwLUYjNiUtRiM2Iy1GXm82JFEjMjBGJ0Y5Rl9xRmd1RmFwLUYjNiUtRiM2Iy1GXm82JFEjMjFGJ0Y5Rl9xRmd1RmFwLUYjNiUtRiM2Iy1GXm82JFEjMjJGJ0Y5Rl9xRmd1RmFwLUYjNiUtRiM2Iy1GXm82JFEjMjNGJ0Y5Rl9xRmd1RmFwLUYjNiUtRiM2Iy1GXm82JFEjMjRGJ0Y5Rl9xRmd1RmFwLUYjNiUtRiM2Iy1GXm82JFEjMjVGJ0Y5Rl9xRl9dbEZhcC1GIzYlLUYjNiMtRl5vNiRRIzI2RidGOUZfcUZndUZhcC1GIzYlLUYjNiMtRl5vNiRRIzI3RidGOUZfcUZfXWxGYXAtRiM2JS1GIzYjLUZebzYkUSMyOEYnRjlGX3EtRiM2JkZfdC1GIzYlLUZebzYkUSw2Ljg3NTAwMDAwMEYnRjlGXHJGX3JGW3NGX3NGYXAtRiM2JS1GIzYjLUZebzYkUSMyOUYnRjlGX3EtRiM2JkZfdC1GIzYlLUZebzYkUSwxLjA2Njk0MTczOEYnRjlGXHJGW3VGW3NGX3NGYXAtRiM2JS1GIzYjLUZebzYkUSMzMEYnRjlGX3EtRiM2JUZhcy1GNjYwUSgmbWludXM7RidGOUY7Rj5GQEZCRkRGRkZIRkpGZm9GXnNGUkZVRl9zRmFwLUYjNiUtRiM2I0Zob0ZfcS1GIzYmRl90RmNcbEZhZWxGX3NGW3BGXnA=">SSJBRzYi</Equation></Text-field>
</Output>
</Group>
</Section>
<Section collapsed="false" MultipleChoiceAnswerIndex="-1" MultipleChoiceRandomizeChoices="false" TrueFalseAnswerIndex="-1" EssayAnswerRows="5" EssayAnswerColumns="60"><Title>
<Text-field style="Heading 2" layout="Heading 2">7.5. Val<Font encoding="UTF-8">\303\263</Font>s FFT.</Text-field></Title>
<Text-field style="Text" layout="Normal"></Text-field>
<Group labelreference="L515" drawlabel="true">
<Input>
<Text-field prompt="&gt; " style="Maple Input" layout="Normal">#
# The CtoR procedure do the conversion from complex
# representation to real representation.
# The result will be in the same table.
#

CtoR:=proc(A,T,k) local i,x,y;
x:=Re(A[0]); y:=Im(A[0]);
A[0]:=2*(x+y)+I*2*(x-y);
x:=Re(A[1]); y:=Im(A[1]);
A[1]:=2*x-I*2*y;
for i to k-1 do CtoRsteps(A,T,2^i); od;
end;</Text-field>
</Input>
<Output>
<Text-field style="2D Output" layout="Maple Output"><Equation executable="false" style="2D Output" display="LUklbXJvd0c2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGJzYlLUkjbWlHRiQ2JVElQ3RvUkYnLyUnaXRhbGljR1EldHJ1ZUYnLyUsbWF0aHZhcmlhbnRHUSdpdGFsaWNGJy1JI21vR0YkNjBRIzo9RicvRjNRJ25vcm1hbEYnLyUmZmVuY2VHUSZmYWxzZUYnLyUqc2VwYXJhdG9yR0Y9LyUpc3RyZXRjaHlHRj0vJSpzeW1tZXRyaWNHRj0vJShsYXJnZW9wR0Y9LyUubW92YWJsZWxpbWl0c0dGPS8lJ2FjY2VudEdGPS8lJWZvcm1HUSZpbmZpeEYnLyUnbHNwYWNlR1EvdGhpY2ttYXRoc3BhY2VGJy8lJ3JzcGFjZUdGTy8lKG1pbnNpemVHUSIxRicvJShtYXhzaXplR1EpaW5maW5pdHlGJy1GIzYpLUY2NjFRJXByb2NGJy8lJWJvbGRHRjEvRjNRJWJvbGRGJ0Y7Rj5GQEZCRkRGRkZIL0ZLUSFGJy9GTlEkMGVtRicvRlFGXm9GUkZVLUkobWZlbmNlZEdGJDYjLUYjNictRiw2JVEiQUYnRi9GMi1GNjYwUSIsRidGOUY7L0Y/RjFGQEZCRkRGRkZIRkpGXW8vRlFRM3Zlcnl0aGlja21hdGhzcGFjZUYnRlJGVS1GLDYlUSJURidGL0YyRmhvLUYsNiVRImtGJ0YvRjItSSdtc3BhY2VHRiQ2Ji8lJ2hlaWdodEdRJjAuMGV4RicvJSZ3aWR0aEdRJjAuM2VtRicvJSZkZXB0aEdGaXAvJSpsaW5lYnJlYWtHUTFmaXJzdHByb2NuZXdsaW5lRictRiM2Ji1GNjYxUSZsb2NhbEYnRmduRmluRjtGPkZARkJGREZGRkhGW29GXW8vRlFRMG1lZGl1bW1hdGhzcGFjZUYnRlJGVS1GIzYnLUYsNiVRImlGJ0YvRjJGaG8tRiw2JVEieEYnRi9GMkZoby1GLDYlUSJ5RidGL0YyLUY2NjBRIjtGJ0Y5RjtGW3BGQEZCRkRGRkZIRkpGXW9GUEZSRlVGZHAtRiM2KS1GIzYlLUYjNiVGXnJGNS1GIzYlLUYsNiVRI1JlRicvRjBGPUY5LUY2NjBRMCZBcHBseUZ1bmN0aW9uO0YnRjlGO0Y+RkBGQkZERkZGSEZKRl1vRl9vRlJGVS1GYW82Iy1GIzYjLUYjNiZGZW8tRjY2MFEiW0YnRjkvRjxGMUY+L0ZBRjFGQkZERkZGSC9GS1EncHJlZml4RicvRk5RLnRoaW5tYXRoc3BhY2VGJy9GUUZkdEZSRlUtRiM2Iy1JI21uR0YkNiRRIjBGJ0Y5LUY2NjBRIl1GJ0Y5Rl90Rj5GYHRGQkZERkZGSC9GS1EocG9zdGZpeEYnRmN0L0ZRUTJ2ZXJ5dGhpbm1hdGhzcGFjZUYnRlJGVUZkckZkcC1GIzYlLUYjNiVGYXJGNS1GIzYlLUYsNiVRI0ltRidGYnNGOUZjc0Zmc0ZkckZkcC1GIzYlLUYjNiVGanNGNS1GIzYnLUYjNiUtRml0NiRRIjJGJ0Y5LUY2NjBRIipGJ0Y5RjtGPkZARkJGREZGRkhGSkZjdEZldEZSRlVGXnItRjY2MFEiK0YnRjlGO0Y+RkBGQkZERkZGSEZKL0ZORmhxRmdxRlJGVS1GIzYlRmR2Rmd2RmFyRmp2LUYjNiUtRiM2JUZkdkZndi1GaXQ2JFEiSUYnRjlGZ3YtRmFvNiMtRiM2JUZeci1GNjYwUSp+Jm1pbnVzO35GJ0Y5RjtGPkZARkJGREZGRkhGW29GXW9GX29GUkZVRmFyRmRyRmRwLUYjNiUtRiM2JUZeckY1LUYjNiVGX3NGY3MtRmFvNiMtRiM2Iy1GIzYmRmVvRlx0LUYjNiMtRml0NiRGVEY5Rlx1RmRyRmRwLUYjNiUtRiM2JUZhckY1LUYjNiVGaXVGY3NGZHhGZHJGZHAtRiM2JS1GIzYlRmh4RjUtRiM2JUZidkZbeC1GIzYlRmJ3Rmd2RmFyRmRyRmRwLUYjNictRiM2Jy1GNjYxUSRmb3JGJ0ZnbkZpbkY7Rj5GQEZCRkRGRkZIRltvRl1vRmdxRlJGVUZbci1GNjYxUSN0b0YnRmduRmluRjtGPkZARkJGREZGRkhGW29GXXdGZ3FGUkZVLUYjNiVGYXBGW3hGXHktRjY2MVEjZG9GJ0ZnbkZpbkY7Rj5GQEZCRkRGRkZIRltvRl13RmdxRlJGVS1GZXA2JkZncEZqcEZdcS9GYHFRNmluY3JlYXNlaW5kZW50bmV3bGluZUYnLUYjNiUtRiw2JVEqQ3RvUnN0ZXBzRidGL0YyRmNzLUZhbzYjLUYjNidGZW9GaG9GXnBGaG8tRiM2JUZkdi1GNjYwUSJeRidGOUY7Rj5GQEZCRkRGRkZIRkovRk5GYnVGYXVGUkZVRltyLUZlcDYmRmdwL0ZbcVEmMC4wZW1GJ0ZdcS9GYHFRNmRlY3JlYXNlaW5kZW50bmV3bGluZUYnLUY2NjFRJ2VuZH5kb0YnRmduRmluRjtGPkZARkJGREZGRkhGW28vRk5GXXBGX29GUkZVRl5cbC1GNjYxUSllbmR+cHJvY0YnRmduRmluRjtGPkZARkJGREZGRkhGW29GZ1xsRl9vRlJGVQ==">Zio2JUkiQUc2IkkiVEdGJUkia0dGJTYlSSJpR0YlSSJ4R0YlSSJ5R0YlRiVGJUMpPkYqLUkjUmVHJSpwcm90ZWN0ZWRHNiMmRiQ2IyIiIT5GKy1JI0ltR0YwRjE+RjIsKComIiIjIiIiRipGPEY8KiZGO0Y8RitGPEY8KiYqJkY7RjxeI0Y8RjxGPCwmRipGPEYrISIiRjxGPD5GKi1GLzYjJkYkNiNGPD5GKy1GN0ZFPkZGLCZGOkY8KiYsJEY/RjxGPEYrRjxGQj8oRilGPEY8LCZGJ0Y8RjxGQkkldHJ1ZUdGMC1JKkN0b1JzdGVwc0dGJTYlRiRGJilGO0YpRiVGJUYl</Equation></Text-field>
</Output>
</Group>
<Group labelreference="L552" drawlabel="true">
<Input>
<Text-field prompt="&gt; " style="Maple Input" layout="Normal">#
# The CtoRstep procedure do the conversion from complex
# representation to real representation for one pair 
# ll, uu with weight w.
#

CtoRstep:=proc(ll,uu,w) local al,be,ga,de,xi,et,a,b,x,y,u,v;
xi:=Re(w); et:=Im(w);
al:=Re(ll); be:=Im(ll);
ga:=Re(uu); de:=Im(uu);
x:=al+ga; y:=be-de;
a:=al-ga; b:=be+de;
u:=et*b-xi*a; v:=xi*b+et*a;
[x+v+I*(y+u),x-v+I*(u-y)]
end;</Text-field>
</Input>
<Output>
<Text-field style="2D Output" layout="Maple Output"><Equation executable="false" style="2D Output" display="LUklbXJvd0c2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGJzYlLUkjbWlHRiQ2JVEpQ3RvUnN0ZXBGJy8lJ2l0YWxpY0dRJXRydWVGJy8lLG1hdGh2YXJpYW50R1EnaXRhbGljRictSSNtb0dGJDYwUSM6PUYnL0YzUSdub3JtYWxGJy8lJmZlbmNlR1EmZmFsc2VGJy8lKnNlcGFyYXRvckdGPS8lKXN0cmV0Y2h5R0Y9LyUqc3ltbWV0cmljR0Y9LyUobGFyZ2VvcEdGPS8lLm1vdmFibGVsaW1pdHNHRj0vJSdhY2NlbnRHRj0vJSVmb3JtR1EmaW5maXhGJy8lJ2xzcGFjZUdRL3RoaWNrbWF0aHNwYWNlRicvJSdyc3BhY2VHRk8vJShtaW5zaXplR1EiMUYnLyUobWF4c2l6ZUdRKWluZmluaXR5RictRiM2KS1GNjYxUSVwcm9jRicvJSVib2xkR0YxL0YzUSVib2xkRidGO0Y+RkBGQkZERkZGSC9GS1EhRicvRk5RJDBlbUYnL0ZRRl5vRlJGVS1JKG1mZW5jZWRHRiQ2Iy1GIzYnLUYsNiVRI2xsRidGL0YyLUY2NjBRIixGJ0Y5RjsvRj9GMUZARkJGREZGRkhGSkZdby9GUVEzdmVyeXRoaWNrbWF0aHNwYWNlRidGUkZVLUYsNiVRI3V1RidGL0YyRmhvLUYsNiVRIndGJ0YvRjItSSdtc3BhY2VHRiQ2Ji8lJ2hlaWdodEdRJjAuMGV4RicvJSZ3aWR0aEdRJjAuM2VtRicvJSZkZXB0aEdGaXAvJSpsaW5lYnJlYWtHUTFmaXJzdHByb2NuZXdsaW5lRictRiM2Ji1GNjYxUSZsb2NhbEYnRmduRmluRjtGPkZARkJGREZGRkhGW29GXW8vRlFRMG1lZGl1bW1hdGhzcGFjZUYnRlJGVS1GIzY5LUYsNiVRI2FsRidGL0YyRmhvLUYsNiVRI2JlRidGL0YyRmhvLUYsNiVRI2dhRidGL0YyRmhvLUYsNiVRI2RlRidGL0YyRmhvLUYsNiVRI3hpRicvRjBGPUY5RmhvLUYsNiVRI2V0RidGL0YyRmhvLUYsNiVRImFGJ0YvRjJGaG8tRiw2JVEiYkYnRi9GMkZoby1GLDYlUSJ4RidGL0YyRmhvLUYsNiVRInlGJ0YvRjJGaG8tRiw2JVEidUYnRi9GMkZoby1GLDYlUSJ2RidGL0YyLUY2NjBRIjtGJ0Y5RjtGW3BGQEZCRkRGRkZIRkpGXW9GUEZSRlVGZHAtRiM2Ly1GIzYlLUYjNiVGZ3JGNS1GIzYlLUYsNiVRI1JlRidGanJGOS1GNjYwUTAmQXBwbHlGdW5jdGlvbjtGJ0Y5RjtGPkZARkJGREZGRkhGSkZdb0Zfb0ZSRlUtRmFvNiMtRiM2I0ZhcEZgdEZkcC1GIzYlLUYjNiVGW3NGNS1GIzYlLUYsNiVRI0ltRidGanJGOUZedUZhdUZgdEZkcC1GIzYlLUYjNiVGW3JGNS1GIzYlRlt1Rl51LUZhbzYjLUYjNiNGZW9GYHRGZHAtRiM2JS1GIzYlRl5yRjUtRiM2JUZbdkZedUZkdkZgdEZkcC1GIzYlLUYjNiVGYXJGNS1GIzYlRlt1Rl51LUZhbzYjLUYjNiNGXnBGYHRGZHAtRiM2JS1GIzYlRmRyRjUtRiM2JUZbdkZedUZkd0ZgdEZkcC1GIzYlLUYjNiVGZHNGNS1GIzYlRltyLUY2NjBRIitGJ0Y5RjtGPkZARkJGREZGRkhGSi9GTkZocUZncUZSRlVGYXJGYHRGZHAtRiM2JS1GIzYlRmdzRjUtRiM2JUZeci1GNjYwUSp+Jm1pbnVzO35GJ0Y5RjtGPkZARkJGREZGRkhGW29GXW9GX29GUkZVRmRyRmB0RmRwLUYjNiUtRiM2JUZec0Y1LUYjNiVGW3JGXnlGYXJGYHRGZHAtRiM2JS1GIzYlRmFzRjUtRiM2JUZeckZkeEZkckZgdEZkcC1GIzYlLUYjNiVGanNGNS1GIzYlLUYjNiVGW3MtRjY2MFEiKkYnRjlGO0Y+RkBGQkZERkZGSEZKL0ZOUS50aGlubWF0aHNwYWNlRicvRlFGaXpGUkZVRmFzRl55LUYjNiVGZ3JGZXpGXnNGYHRGZHAtRiM2JS1GIzYlRl10RjUtRiM2JS1GIzYlRmdyRmV6RmFzRmR4LUYjNiVGW3NGZXpGXnNGYHRGZHAtRmFvNiUtRiM2JS1GIzYnRmRzRmR4Rl10RmR4LUYjNiUtSSNtbkdGJDYkUSJJRidGOUZlei1GYW82Iy1GIzYlRmdzRmR4RmpzRmhvLUYjNidGZHNGXnlGXXRGZHgtRiM2JUZfXGxGZXotRmFvNiMtRiM2JUZqc0ZeeUZncy8lJW9wZW5HUSJbRicvJSZjbG9zZUdRIl1GJy1GZXA2JkZncC9GW3FRJjAuMGVtRidGXXEvRmBxUTZkZWNyZWFzZWluZGVudG5ld2xpbmVGJy1GNjYxUSllbmR+cHJvY0YnRmduRmluRjtGPkZARkJGREZGRkhGW28vRk5GXXBGX29GUkZV">Zio2JUkjbGxHNiJJI3V1R0YlSSJ3R0YlNi5JI2FsR0YlSSNiZUdGJUkjZ2FHRiVJI2RlR0YlSSN4aUdGJUkjZXRHRiVJImFHRiVJImJHRiVJInhHRiVJInlHRiVJInVHRiVJInZHRiVGJUYlQy8+Ri0tSSNSZUclKnByb3RlY3RlZEc2I0YnPkYuLUkjSW1HRjlGOj5GKS1GODYjRiQ+RiotRj1GQD5GKy1GODYjRiY+RiwtRj1GRT5GMSwmRikiIiJGK0ZKPkYyLCZGKkZKRiwhIiI+Ri8sJkYpRkpGK0ZNPkYwLCZGKkZKRixGSj5GMywmKiZGLkZKRjBGSkZKKiZGLUZKRi9GSkZNPkY0LCYqJkYtRkpGMEZKRkoqJkYuRkpGL0ZKRko3JCwoRjFGSkY0RkoqJl4jRkpGSiwmRjJGSkYzRkpGSkZKLChGMUZKRjRGTSomRmduRkosJkYzRkpGMkZNRkpGSkYlRiVGJQ==</Equation></Text-field>
</Output>
</Group>
<Group labelreference="L553" drawlabel="true">
<Input>
<Text-field prompt="&gt; " style="Maple Input" layout="Normal">#
# The CtoRsteps procedure do the conversion from complex
# representation to real representation for one series.
# The index i is the lower index for the first pair.
# The result will be in the same table.
#

CtoRsteps:=proc(A,T,i) local k,j,z;
k:=i; j:=2*i-1;
while j&gt;k do
  z:=CtoRstep(A[k],A[j],T[k]); A[k]:=z[1]; A[j]:=z[2]; k:=k+1; j:=j-1;
od; end;</Text-field>
</Input>
<Output>
<Text-field style="2D Output" layout="Maple Output"><Equation executable="false" style="2D Output" display="LUklbXJvd0c2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGJzYlLUkjbWlHRiQ2JVEqQ3RvUnN0ZXBzRicvJSdpdGFsaWNHUSV0cnVlRicvJSxtYXRodmFyaWFudEdRJ2l0YWxpY0YnLUkjbW9HRiQ2MFEjOj1GJy9GM1Enbm9ybWFsRicvJSZmZW5jZUdRJmZhbHNlRicvJSpzZXBhcmF0b3JHRj0vJSlzdHJldGNoeUdGPS8lKnN5bW1ldHJpY0dGPS8lKGxhcmdlb3BHRj0vJS5tb3ZhYmxlbGltaXRzR0Y9LyUnYWNjZW50R0Y9LyUlZm9ybUdRJmluZml4RicvJSdsc3BhY2VHUS90aGlja21hdGhzcGFjZUYnLyUncnNwYWNlR0ZPLyUobWluc2l6ZUdRIjFGJy8lKG1heHNpemVHUSlpbmZpbml0eUYnLUYjNiktRjY2MVElcHJvY0YnLyUlYm9sZEdGMS9GM1ElYm9sZEYnRjtGPkZARkJGREZGRkgvRktRIUYnL0ZOUSQwZW1GJy9GUUZeb0ZSRlUtSShtZmVuY2VkR0YkNiMtRiM2Jy1GLDYlUSJBRidGL0YyLUY2NjBRIixGJ0Y5RjsvRj9GMUZARkJGREZGRkhGSkZdby9GUVEzdmVyeXRoaWNrbWF0aHNwYWNlRidGUkZVLUYsNiVRIlRGJ0YvRjJGaG8tRiw2JVEiaUYnRi9GMi1JJ21zcGFjZUdGJDYmLyUnaGVpZ2h0R1EmMC4wZXhGJy8lJndpZHRoR1EmMC4zZW1GJy8lJmRlcHRoR0ZpcC8lKmxpbmVicmVha0dRMWZpcnN0cHJvY25ld2xpbmVGJy1GIzYmLUY2NjFRJmxvY2FsRidGZ25GaW5GO0Y+RkBGQkZERkZGSEZbb0Zdby9GUVEwbWVkaXVtbWF0aHNwYWNlRidGUkZVLUYjNictRiw2JVEia0YnRi9GMkZoby1GLDYlUSJqRidGL0YyRmhvLUYsNiVRInpGJ0YvRjItRjY2MFEiO0YnRjlGO0ZbcEZARkJGREZGRkhGSkZdb0ZQRlJGVUZkcC1GIzYlLUYjNiUtRiM2JUZbckY1RmFwRmRyRmRwLUYjNiUtRiM2JUZeckY1LUYjNiUtRiM2JS1JI21uR0YkNiRRIjJGJ0Y5LUY2NjBRIipGJ0Y5RjtGPkZARkJGREZGRkhGSi9GTlEudGhpbm1hdGhzcGFjZUYnL0ZRRl10RlJGVUZhcC1GNjYwUSp+Jm1pbnVzO35GJ0Y5RjtGPkZARkJGREZGRkhGW29GXW9GX29GUkZVLUZmczYkRlRGOUZkckZkcC1GIzYnLUYjNiUtRjY2MVEmd2hpbGVGJ0ZnbkZpbkY7Rj5GQEZCRkRGRkZIRltvL0ZORmhxRmdxRlJGVS1GIzYlRltyLUY2NjBRIjxGJ0Y5RjtGPkZARkJGREZGRkhGSkZNRlBGUkZVRl5yLUY2NjFRI2RvRidGZ25GaW5GO0Y+RkBGQkZERkZGSEZbb0ZbdUZncUZSRlUtRmVwNiZGZ3BGanBGXXEvRmBxUTZpbmNyZWFzZWluZGVudG5ld2xpbmVGJy1GIzYnLUYjNiUtRiM2JUZhckY1LUYjNiUtRiw2JVEpQ3RvUnN0ZXBGJ0YvRjItRjY2MFEwJkFwcGx5RnVuY3Rpb247RidGOUY7Rj5GQEZCRkRGRkZIRkpGXW9GX29GUkZVLUZhbzYjLUYjNictRiM2JkZlby1GNjYwUSJbRidGOS9GPEYxRj4vRkFGMUZCRkRGRkZIL0ZLUSdwcmVmaXhGJ0ZcdEZedEZSRlUtRiM2I0Zbci1GNjYwUSJdRidGOUZfd0Y+RmB3RkJGREZGRkgvRktRKHBvc3RmaXhGJ0ZcdC9GUVEydmVyeXRoaW5tYXRoc3BhY2VGJ0ZSRlVGaG8tRiM2JkZlb0Zcdy1GIzYjRl5yRmV3RmhvLUYjNiZGXnBGXHdGY3dGZXdGZHJGZHAtRiM2JS1GIzYlRmp2RjUtRiM2JkZhckZcdy1GIzYjRmJ0RmV3RmRyRmRwLUYjNiUtRiM2JUZceEY1LUYjNiZGYXJGXHctRiM2I0Zlc0Zld0ZkckZkcC1GIzYlLUYjNiVGW3JGNS1GIzYlRltyLUY2NjBRIitGJ0Y5RjtGPkZARkJGREZGRkhGSkZbdUZncUZSRlVGYnRGZHJGZHAtRiM2JUZeckY1LUYjNiVGXnJGX3RGYnQtRmVwNiZGZ3AvRltxUSYwLjBlbUYnRl1xL0ZgcVE2ZGVjcmVhc2VpbmRlbnRuZXdsaW5lRictRjY2MVEnZW5kfmRvRidGZ25GaW5GO0Y+RkBGQkZERkZGSEZbby9GTkZdcEZfb0ZSRlVGX3otRjY2MVEpZW5kfnByb2NGJ0ZnbkZpbkY7Rj5GQEZCRkRGRkZIRltvRmh6Rl9vRlJGVQ==">Zio2JUkiQUc2IkkiVEdGJUkiaUdGJTYlSSJrR0YlSSJqR0YlSSJ6R0YlRiVGJUMlPkYpRic+RiosJiomIiIjIiIiRidGMkYyRjIhIiI/KEYlRjJGMkYlMkYpRipDJz5GKy1JKUN0b1JzdGVwR0YlNiUmRiQ2I0YpJkYkNiNGKiZGJkY8PkY7JkYrNiNGMj5GPSZGKzYjRjE+RiksJkYpRjJGMkYyPkYqLCZGKkYyRjJGM0YlRiVGJQ==</Equation></Text-field>
</Output>
</Group>
<Group labelreference="L554" drawlabel="true">
<Input>
<Text-field prompt="&gt; " style="Maple Input" layout="Normal">#
# The RtoC procedure do the conversion from real
# representation to complex representation.
# The result will be in the same table.
#

RtoC:=proc(A,T,k) local i,x,y;
x:=Re(A[0]); y:=Im(A[0]);
A[0]:=x+y+I*(x-y);
x:=Re(A[1]); y:=Im(A[1]);
A[1]:=2*x-I*2*y;
for i to k-1 do RtoCsteps(A,T,2^i); od;
end;</Text-field>
</Input>
<Output>
<Text-field style="2D Output" layout="Maple Output"><Equation executable="false" style="2D Output" display="LUklbXJvd0c2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGJzYlLUkjbWlHRiQ2JVElUnRvQ0YnLyUnaXRhbGljR1EldHJ1ZUYnLyUsbWF0aHZhcmlhbnRHUSdpdGFsaWNGJy1JI21vR0YkNjBRIzo9RicvRjNRJ25vcm1hbEYnLyUmZmVuY2VHUSZmYWxzZUYnLyUqc2VwYXJhdG9yR0Y9LyUpc3RyZXRjaHlHRj0vJSpzeW1tZXRyaWNHRj0vJShsYXJnZW9wR0Y9LyUubW92YWJsZWxpbWl0c0dGPS8lJ2FjY2VudEdGPS8lJWZvcm1HUSZpbmZpeEYnLyUnbHNwYWNlR1EvdGhpY2ttYXRoc3BhY2VGJy8lJ3JzcGFjZUdGTy8lKG1pbnNpemVHUSIxRicvJShtYXhzaXplR1EpaW5maW5pdHlGJy1GIzYpLUY2NjFRJXByb2NGJy8lJWJvbGRHRjEvRjNRJWJvbGRGJ0Y7Rj5GQEZCRkRGRkZIL0ZLUSFGJy9GTlEkMGVtRicvRlFGXm9GUkZVLUkobWZlbmNlZEdGJDYjLUYjNictRiw2JVEiQUYnRi9GMi1GNjYwUSIsRidGOUY7L0Y/RjFGQEZCRkRGRkZIRkpGXW8vRlFRM3Zlcnl0aGlja21hdGhzcGFjZUYnRlJGVS1GLDYlUSJURidGL0YyRmhvLUYsNiVRImtGJ0YvRjItSSdtc3BhY2VHRiQ2Ji8lJ2hlaWdodEdRJjAuMGV4RicvJSZ3aWR0aEdRJjAuM2VtRicvJSZkZXB0aEdGaXAvJSpsaW5lYnJlYWtHUTFmaXJzdHByb2NuZXdsaW5lRictRiM2Ji1GNjYxUSZsb2NhbEYnRmduRmluRjtGPkZARkJGREZGRkhGW29GXW8vRlFRMG1lZGl1bW1hdGhzcGFjZUYnRlJGVS1GIzYnLUYsNiVRImlGJ0YvRjJGaG8tRiw2JVEieEYnRi9GMkZoby1GLDYlUSJ5RidGL0YyLUY2NjBRIjtGJ0Y5RjtGW3BGQEZCRkRGRkZIRkpGXW9GUEZSRlVGZHAtRiM2KS1GIzYlLUYjNiVGXnJGNS1GIzYlLUYsNiVRI1JlRicvRjBGPUY5LUY2NjBRMCZBcHBseUZ1bmN0aW9uO0YnRjlGO0Y+RkBGQkZERkZGSEZKRl1vRl9vRlJGVS1GYW82Iy1GIzYjLUYjNiZGZW8tRjY2MFEiW0YnRjkvRjxGMUY+L0ZBRjFGQkZERkZGSC9GS1EncHJlZml4RicvRk5RLnRoaW5tYXRoc3BhY2VGJy9GUUZkdEZSRlUtRiM2Iy1JI21uR0YkNiRRIjBGJ0Y5LUY2NjBRIl1GJ0Y5Rl90Rj5GYHRGQkZERkZGSC9GS1EocG9zdGZpeEYnRmN0L0ZRUTJ2ZXJ5dGhpbm1hdGhzcGFjZUYnRlJGVUZkckZkcC1GIzYlLUYjNiVGYXJGNS1GIzYlLUYsNiVRI0ltRidGYnNGOUZjc0Zmc0ZkckZkcC1GIzYlLUYjNiVGanNGNS1GIzYnRl5yLUY2NjBRIitGJ0Y5RjtGPkZARkJGREZGRkhGSi9GTkZocUZncUZSRlVGYXJGYnYtRiM2JS1GaXQ2JFEiSUYnRjktRjY2MFEiKkYnRjlGO0Y+RkBGQkZERkZGSEZKRmN0RmV0RlJGVS1GYW82Iy1GIzYlRl5yLUY2NjBRKn4mbWludXM7fkYnRjlGO0Y+RkBGQkZERkZGSEZbb0Zdb0Zfb0ZSRlVGYXJGZHJGZHAtRiM2JS1GIzYlRl5yRjUtRiM2JUZfc0Zjcy1GYW82Iy1GIzYjLUYjNiZGZW9GXHQtRiM2Iy1GaXQ2JEZURjlGXHVGZHJGZHAtRiM2JS1GIzYlRmFyRjUtRiM2JUZpdUZjc0ZbeEZkckZkcC1GIzYlLUYjNiVGX3hGNS1GIzYlLUYjNiUtRml0NiRRIjJGJ0Y5Rlt3Rl5yRmJ3LUYjNiUtRiM2JUZjeUZbd0ZodkZbd0ZhckZkckZkcC1GIzYnLUYjNictRjY2MVEkZm9yRidGZ25GaW5GO0Y+RkBGQkZERkZGSEZbb0Zdb0ZncUZSRlVGW3ItRjY2MVEjdG9GJ0ZnbkZpbkY7Rj5GQEZCRkRGRkZIRltvRmV2RmdxRlJGVS1GIzYlRmFwRmJ3RmN4LUY2NjFRI2RvRidGZ25GaW5GO0Y+RkBGQkZERkZGSEZbb0ZldkZncUZSRlUtRmVwNiZGZ3BGanBGXXEvRmBxUTZpbmNyZWFzZWluZGVudG5ld2xpbmVGJy1GIzYlLUYsNiVRKlJ0b0NzdGVwc0YnRi9GMkZjcy1GYW82Iy1GIzYnRmVvRmhvRl5wRmhvLUYjNiVGY3ktRjY2MFEiXkYnRjlGO0Y+RkBGQkZERkZGSEZKL0ZORmJ1RmF1RlJGVUZbci1GZXA2JkZncC9GW3FRJjAuMGVtRidGXXEvRmBxUTZkZWNyZWFzZWluZGVudG5ld2xpbmVGJy1GNjYxUSdlbmR+ZG9GJ0ZnbkZpbkY7Rj5GQEZCRkRGRkZIRltvL0ZORl1wRl9vRlJGVUZcXGwtRjY2MVEpZW5kfnByb2NGJ0ZnbkZpbkY7Rj5GQEZCRkRGRkZIRltvRmVcbEZfb0ZSRlU=">Zio2JUkiQUc2IkkiVEdGJUkia0dGJTYlSSJpR0YlSSJ4R0YlSSJ5R0YlRiVGJUMpPkYqLUkjUmVHJSpwcm90ZWN0ZWRHNiMmRiQ2IyIiIT5GKy1JI0ltR0YwRjE+RjIsKEYqIiIiRitGOiomXiNGOkY6LCZGKkY6RishIiJGOkY6PkYqLUYvNiMmRiQ2I0Y6PkYrLUY3RkE+RkIsJiomIiIjRjpGKkY6RjoqJiwkKiZGSUY6RjxGOkY6RjpGK0Y6Rj4/KEYpRjpGOiwmRidGOkY6Rj5JJXRydWVHRjAtSSpSdG9Dc3RlcHNHRiU2JUYkRiYpRklGKUYlRiVGJQ==</Equation></Text-field>
</Output>
</Group>
<Group labelreference="L555" drawlabel="true">
<Input>
<Text-field prompt="&gt; " style="Maple Input" layout="Normal">#
# The RtoCstep procedure do the conversion from real representation
# to complex representation for one pair ll, uu using weight w.
#

RtoCstep:=proc(ll,uu,w) local al,be,ga,de,xi,et,a,b,x,y,u,v;
xi:=Re(w); et:=Im(w);
al:=Re(ll); be:=Im(ll);
ga:=Re(uu); de:=Im(uu);
x:=al+ga; y:=be-de;
a:=al-ga; b:=be+de;
u:=xi*a+et*b; v:=xi*b-et*a;
[x-v+I*(u+y),x+v+I*(u-y)]
end;</Text-field>
</Input>
<Output>
<Text-field style="2D Output" layout="Maple Output"><Equation executable="false" style="2D Output" display="LUklbXJvd0c2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGJzYlLUkjbWlHRiQ2JVEpUnRvQ3N0ZXBGJy8lJ2l0YWxpY0dRJXRydWVGJy8lLG1hdGh2YXJpYW50R1EnaXRhbGljRictSSNtb0dGJDYwUSM6PUYnL0YzUSdub3JtYWxGJy8lJmZlbmNlR1EmZmFsc2VGJy8lKnNlcGFyYXRvckdGPS8lKXN0cmV0Y2h5R0Y9LyUqc3ltbWV0cmljR0Y9LyUobGFyZ2VvcEdGPS8lLm1vdmFibGVsaW1pdHNHRj0vJSdhY2NlbnRHRj0vJSVmb3JtR1EmaW5maXhGJy8lJ2xzcGFjZUdRL3RoaWNrbWF0aHNwYWNlRicvJSdyc3BhY2VHRk8vJShtaW5zaXplR1EiMUYnLyUobWF4c2l6ZUdRKWluZmluaXR5RictRiM2KS1GNjYxUSVwcm9jRicvJSVib2xkR0YxL0YzUSVib2xkRidGO0Y+RkBGQkZERkZGSC9GS1EhRicvRk5RJDBlbUYnL0ZRRl5vRlJGVS1JKG1mZW5jZWRHRiQ2Iy1GIzYnLUYsNiVRI2xsRidGL0YyLUY2NjBRIixGJ0Y5RjsvRj9GMUZARkJGREZGRkhGSkZdby9GUVEzdmVyeXRoaWNrbWF0aHNwYWNlRidGUkZVLUYsNiVRI3V1RidGL0YyRmhvLUYsNiVRIndGJ0YvRjItSSdtc3BhY2VHRiQ2Ji8lJ2hlaWdodEdRJjAuMGV4RicvJSZ3aWR0aEdRJjAuM2VtRicvJSZkZXB0aEdGaXAvJSpsaW5lYnJlYWtHUTFmaXJzdHByb2NuZXdsaW5lRictRiM2Ji1GNjYxUSZsb2NhbEYnRmduRmluRjtGPkZARkJGREZGRkhGW29GXW8vRlFRMG1lZGl1bW1hdGhzcGFjZUYnRlJGVS1GIzY5LUYsNiVRI2FsRidGL0YyRmhvLUYsNiVRI2JlRidGL0YyRmhvLUYsNiVRI2dhRidGL0YyRmhvLUYsNiVRI2RlRidGL0YyRmhvLUYsNiVRI3hpRicvRjBGPUY5RmhvLUYsNiVRI2V0RidGL0YyRmhvLUYsNiVRImFGJ0YvRjJGaG8tRiw2JVEiYkYnRi9GMkZoby1GLDYlUSJ4RidGL0YyRmhvLUYsNiVRInlGJ0YvRjJGaG8tRiw2JVEidUYnRi9GMkZoby1GLDYlUSJ2RidGL0YyLUY2NjBRIjtGJ0Y5RjtGW3BGQEZCRkRGRkZIRkpGXW9GUEZSRlVGZHAtRiM2Ly1GIzYlLUYjNiVGZ3JGNS1GIzYlLUYsNiVRI1JlRidGanJGOS1GNjYwUTAmQXBwbHlGdW5jdGlvbjtGJ0Y5RjtGPkZARkJGREZGRkhGSkZdb0Zfb0ZSRlUtRmFvNiMtRiM2I0ZhcEZgdEZkcC1GIzYlLUYjNiVGW3NGNS1GIzYlLUYsNiVRI0ltRidGanJGOUZedUZhdUZgdEZkcC1GIzYlLUYjNiVGW3JGNS1GIzYlRlt1Rl51LUZhbzYjLUYjNiNGZW9GYHRGZHAtRiM2JS1GIzYlRl5yRjUtRiM2JUZbdkZedUZkdkZgdEZkcC1GIzYlLUYjNiVGYXJGNS1GIzYlRlt1Rl51LUZhbzYjLUYjNiNGXnBGYHRGZHAtRiM2JS1GIzYlRmRyRjUtRiM2JUZbdkZedUZkd0ZgdEZkcC1GIzYlLUYjNiVGZHNGNS1GIzYlRltyLUY2NjBRIitGJ0Y5RjtGPkZARkJGREZGRkhGSi9GTkZocUZncUZSRlVGYXJGYHRGZHAtRiM2JS1GIzYlRmdzRjUtRiM2JUZeci1GNjYwUSp+Jm1pbnVzO35GJ0Y5RjtGPkZARkJGREZGRkhGW29GXW9GX29GUkZVRmRyRmB0RmRwLUYjNiUtRiM2JUZec0Y1LUYjNiVGW3JGXnlGYXJGYHRGZHAtRiM2JS1GIzYlRmFzRjUtRiM2JUZeckZkeEZkckZgdEZkcC1GIzYlLUYjNiVGanNGNS1GIzYlLUYjNiVGZ3ItRjY2MFEiKkYnRjlGO0Y+RkBGQkZERkZGSEZKL0ZOUS50aGlubWF0aHNwYWNlRicvRlFGaXpGUkZVRl5zRmR4LUYjNiVGW3NGZXpGYXNGYHRGZHAtRiM2JS1GIzYlRl10RjUtRiM2JS1GIzYlRmdyRmV6RmFzRl55LUYjNiVGW3NGZXpGXnNGYHRGZHAtRmFvNiUtRiM2JS1GIzYnRmRzRl55Rl10RmR4LUYjNiUtSSNtbkdGJDYkUSJJRidGOUZlei1GYW82Iy1GIzYlRmdzRmR4RmpzRmhvLUYjNidGZHNGZHhGXXRGZHgtRiM2JUZfXGxGZXotRmFvNiMtRiM2JUZqc0ZeeUZncy8lJW9wZW5HUSJbRicvJSZjbG9zZUdRIl1GJy1GZXA2JkZncC9GW3FRJjAuMGVtRidGXXEvRmBxUTZkZWNyZWFzZWluZGVudG5ld2xpbmVGJy1GNjYxUSllbmR+cHJvY0YnRmduRmluRjtGPkZARkJGREZGRkhGW28vRk5GXXBGX29GUkZV">Zio2JUkjbGxHNiJJI3V1R0YlSSJ3R0YlNi5JI2FsR0YlSSNiZUdGJUkjZ2FHRiVJI2RlR0YlSSN4aUdGJUkjZXRHRiVJImFHRiVJImJHRiVJInhHRiVJInlHRiVJInVHRiVJInZHRiVGJUYlQy8+Ri0tSSNSZUclKnByb3RlY3RlZEc2I0YnPkYuLUkjSW1HRjlGOj5GKS1GODYjRiQ+RiotRj1GQD5GKy1GODYjRiY+RiwtRj1GRT5GMSwmRikiIiJGK0ZKPkYyLCZGKkZKRiwhIiI+Ri8sJkYpRkpGK0ZNPkYwLCZGKkZKRixGSj5GMywmKiZGLUZKRi9GSkZKKiZGLkZKRjBGSkZKPkY0LCYqJkYtRkpGMEZKRkoqJkYuRkpGL0ZKRk03JCwoRjFGSkY0Rk0qJl4jRkpGSiwmRjJGSkYzRkpGSkZKLChGMUZKRjRGSiomRmduRkosJkYzRkpGMkZNRkpGSkYlRiVGJQ==</Equation></Text-field>
</Output>
</Group>
<Group labelreference="L556" drawlabel="true">
<Input>
<Text-field prompt="&gt; " style="Maple Input" layout="Normal">#
# The RtoCsteps procedure do the conversion from real
# representation to complex representation for one series.
# The index i is the lower index for the first pair.
# The result will be in the same table.
#

RtoCsteps:=proc(A,T,i) local k,j,z;
k:=i; j:=2*i-1;
while j&gt;k do
  z:=RtoCstep(A[k],A[j],T[k]);
  A[k]:=z[1]; A[j]:=z[2]; k:=k+1; j:=j-1; od;
end;</Text-field>
</Input>
<Output>
<Text-field style="2D Output" layout="Maple Output"><Equation executable="false" style="2D Output" display="LUklbXJvd0c2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGJzYlLUkjbWlHRiQ2JVEqUnRvQ3N0ZXBzRicvJSdpdGFsaWNHUSV0cnVlRicvJSxtYXRodmFyaWFudEdRJ2l0YWxpY0YnLUkjbW9HRiQ2MFEjOj1GJy9GM1Enbm9ybWFsRicvJSZmZW5jZUdRJmZhbHNlRicvJSpzZXBhcmF0b3JHRj0vJSlzdHJldGNoeUdGPS8lKnN5bW1ldHJpY0dGPS8lKGxhcmdlb3BHRj0vJS5tb3ZhYmxlbGltaXRzR0Y9LyUnYWNjZW50R0Y9LyUlZm9ybUdRJmluZml4RicvJSdsc3BhY2VHUS90aGlja21hdGhzcGFjZUYnLyUncnNwYWNlR0ZPLyUobWluc2l6ZUdRIjFGJy8lKG1heHNpemVHUSlpbmZpbml0eUYnLUYjNiktRjY2MVElcHJvY0YnLyUlYm9sZEdGMS9GM1ElYm9sZEYnRjtGPkZARkJGREZGRkgvRktRIUYnL0ZOUSQwZW1GJy9GUUZeb0ZSRlUtSShtZmVuY2VkR0YkNiMtRiM2Jy1GLDYlUSJBRidGL0YyLUY2NjBRIixGJ0Y5RjsvRj9GMUZARkJGREZGRkhGSkZdby9GUVEzdmVyeXRoaWNrbWF0aHNwYWNlRidGUkZVLUYsNiVRIlRGJ0YvRjJGaG8tRiw2JVEiaUYnRi9GMi1JJ21zcGFjZUdGJDYmLyUnaGVpZ2h0R1EmMC4wZXhGJy8lJndpZHRoR1EmMC4zZW1GJy8lJmRlcHRoR0ZpcC8lKmxpbmVicmVha0dRMWZpcnN0cHJvY25ld2xpbmVGJy1GIzYmLUY2NjFRJmxvY2FsRidGZ25GaW5GO0Y+RkBGQkZERkZGSEZbb0Zdby9GUVEwbWVkaXVtbWF0aHNwYWNlRidGUkZVLUYjNictRiw2JVEia0YnRi9GMkZoby1GLDYlUSJqRidGL0YyRmhvLUYsNiVRInpGJ0YvRjItRjY2MFEiO0YnRjlGO0ZbcEZARkJGREZGRkhGSkZdb0ZQRlJGVUZkcC1GIzYlLUYjNiUtRiM2JUZbckY1RmFwRmRyRmRwLUYjNiUtRiM2JUZeckY1LUYjNiUtRiM2JS1JI21uR0YkNiRRIjJGJ0Y5LUY2NjBRIipGJ0Y5RjtGPkZARkJGREZGRkhGSi9GTlEudGhpbm1hdGhzcGFjZUYnL0ZRRl10RlJGVUZhcC1GNjYwUSp+Jm1pbnVzO35GJ0Y5RjtGPkZARkJGREZGRkhGW29GXW9GX29GUkZVLUZmczYkRlRGOUZkckZkcC1GIzYnLUYjNiUtRjY2MVEmd2hpbGVGJ0ZnbkZpbkY7Rj5GQEZCRkRGRkZIRltvL0ZORmhxRmdxRlJGVS1GIzYlRltyLUY2NjBRIjxGJ0Y5RjtGPkZARkJGREZGRkhGSkZNRlBGUkZVRl5yLUY2NjFRI2RvRidGZ25GaW5GO0Y+RkBGQkZERkZGSEZbb0ZbdUZncUZSRlUtRmVwNiZGZ3BGanBGXXEvRmBxUTZpbmNyZWFzZWluZGVudG5ld2xpbmVGJy1GIzYnLUYjNiUtRiM2JUZhckY1LUYjNiUtRiw2JVEpUnRvQ3N0ZXBGJ0YvRjItRjY2MFEwJkFwcGx5RnVuY3Rpb247RidGOUY7Rj5GQEZCRkRGRkZIRkpGXW9GX29GUkZVLUZhbzYjLUYjNictRiM2JkZlby1GNjYwUSJbRidGOS9GPEYxRj4vRkFGMUZCRkRGRkZIL0ZLUSdwcmVmaXhGJ0ZcdEZedEZSRlUtRiM2I0Zbci1GNjYwUSJdRidGOUZfd0Y+RmB3RkJGREZGRkgvRktRKHBvc3RmaXhGJ0ZcdC9GUVEydmVyeXRoaW5tYXRoc3BhY2VGJ0ZSRlVGaG8tRiM2JkZlb0Zcdy1GIzYjRl5yRmV3RmhvLUYjNiZGXnBGXHdGY3dGZXdGZHJGZHAtRiM2JS1GIzYlRmp2RjUtRiM2JkZhckZcdy1GIzYjRmJ0RmV3RmRyRmRwLUYjNiUtRiM2JUZceEY1LUYjNiZGYXJGXHctRiM2I0Zlc0Zld0ZkckZkcC1GIzYlLUYjNiVGW3JGNS1GIzYlRltyLUY2NjBRIitGJ0Y5RjtGPkZARkJGREZGRkhGSkZbdUZncUZSRlVGYnRGZHJGZHAtRiM2JUZeckY1LUYjNiVGXnJGX3RGYnQtRmVwNiZGZ3AvRltxUSYwLjBlbUYnRl1xL0ZgcVE2ZGVjcmVhc2VpbmRlbnRuZXdsaW5lRictRjY2MVEnZW5kfmRvRidGZ25GaW5GO0Y+RkBGQkZERkZGSEZbby9GTkZdcEZfb0ZSRlVGX3otRjY2MVEpZW5kfnByb2NGJ0ZnbkZpbkY7Rj5GQEZCRkRGRkZIRltvRmh6Rl9vRlJGVQ==">Zio2JUkiQUc2IkkiVEdGJUkiaUdGJTYlSSJrR0YlSSJqR0YlSSJ6R0YlRiVGJUMlPkYpRic+RiosJiomIiIjIiIiRidGMkYyRjIhIiI/KEYlRjJGMkYlMkYpRipDJz5GKy1JKVJ0b0NzdGVwR0YlNiUmRiQ2I0YpJkYkNiNGKiZGJkY8PkY7JkYrNiNGMj5GPSZGKzYjRjE+RiksJkYpRjJGMkYyPkYqLCZGKkYyRjJGM0YlRiVGJQ==</Equation></Text-field>
</Output>
</Group>
</Section>
<Section collapsed="false" MultipleChoiceAnswerIndex="-1" MultipleChoiceRandomizeChoices="false" TrueFalseAnswerIndex="-1" EssayAnswerRows="5" EssayAnswerColumns="60"><Title>
<Text-field style="Heading 2" layout="Heading 2">7.6. Szorz<Font encoding="UTF-8">\303\241</Font>s komplex FFT-vel a gyakorlatban.</Text-field></Title>
<Text-field style="Text" layout="Normal"></Text-field>
<Group labelreference="L559" drawlabel="true">
<Input>
<Text-field prompt="&gt; " style="Maple Input" layout="Normal">#
# The srfftpre procedure do the preparation for the
# signed table for rfft; x is the number, A is the
# table, m the even positive modulus, and k is the
# number of rounds for the rfft, hence the table is 2^k long.
# All number is multipled by the factor f.
#

srfftpre:=proc(x,A,m,k,f) local i,c,d,xx;
xx:=x; c:=0;
for i from 0 to 2^k-1 do
  d:=irem(xx,m,'xx');
  if d&gt;=m/2 then d:=d-m+c; c:=1; else d:=d+c; c:=0; fi;
  A[i]:=evalf(d*f);
  d:=irem(xx,m,'xx');
  if d&gt;=m/2 then d:=d-m+c; c:=1; else d:=d+c; c:=0; fi;
  A[i]:=A[i]+I*evalf(d*f);
od; end;</Text-field>
</Input>
<Output>
<Text-field style="2D Output" layout="Maple Output"><Equation executable="false" style="2D Output" display="LUklbXJvd0c2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGJzYlLUkjbWlHRiQ2JVEpc3JmZnRwcmVGJy8lJ2l0YWxpY0dRJXRydWVGJy8lLG1hdGh2YXJpYW50R1EnaXRhbGljRictSSNtb0dGJDYwUSM6PUYnL0YzUSdub3JtYWxGJy8lJmZlbmNlR1EmZmFsc2VGJy8lKnNlcGFyYXRvckdGPS8lKXN0cmV0Y2h5R0Y9LyUqc3ltbWV0cmljR0Y9LyUobGFyZ2VvcEdGPS8lLm1vdmFibGVsaW1pdHNHRj0vJSdhY2NlbnRHRj0vJSVmb3JtR1EmaW5maXhGJy8lJ2xzcGFjZUdRL3RoaWNrbWF0aHNwYWNlRicvJSdyc3BhY2VHRk8vJShtaW5zaXplR1EiMUYnLyUobWF4c2l6ZUdRKWluZmluaXR5RictRiM2KS1GNjYxUSVwcm9jRicvJSVib2xkR0YxL0YzUSVib2xkRidGO0Y+RkBGQkZERkZGSC9GS1EhRicvRk5RJDBlbUYnL0ZRRl5vRlJGVS1JKG1mZW5jZWRHRiQ2Iy1GIzYrLUYsNiVRInhGJ0YvRjItRjY2MFEiLEYnRjlGOy9GP0YxRkBGQkZERkZGSEZKRl1vL0ZRUTN2ZXJ5dGhpY2ttYXRoc3BhY2VGJ0ZSRlUtRiw2JVEiQUYnRi9GMkZoby1GLDYlUSJtRidGL0YyRmhvLUYsNiVRImtGJ0YvRjJGaG8tRiw2JVEiZkYnRi9GMi1JJ21zcGFjZUdGJDYmLyUnaGVpZ2h0R1EmMC4wZXhGJy8lJndpZHRoR1EmMC4zZW1GJy8lJmRlcHRoR0ZfcS8lKmxpbmVicmVha0dRMWZpcnN0cHJvY25ld2xpbmVGJy1GIzYmLUY2NjFRJmxvY2FsRidGZ25GaW5GO0Y+RkBGQkZERkZGSEZbb0Zdby9GUVEwbWVkaXVtbWF0aHNwYWNlRidGUkZVLUYjNiktRiw2JVEiaUYnRi9GMkZoby1GLDYlUSJjRidGL0YyRmhvLUYsNiVRImRGJ0YvRjJGaG8tRiw2JVEjeHhGJ0YvRjItRjY2MFEiO0YnRjlGO0ZbcEZARkJGREZGRkhGSkZdb0ZQRlJGVUZqcC1GIzYlLUYjNiUtRiM2JUZqckY1RmVvRl1zRmpwLUYjNiUtRiM2JUZkckY1LUkjbW5HRiQ2JFEiMEYnRjlGXXNGanAtRiM2Jy1GIzYpLUY2NjFRJGZvckYnRmduRmluRjtGPkZARkJGREZGRkhGW29GXW9GXXJGUkZVRmFyLUY2NjFRJWZyb21GJ0ZnbkZpbkY7Rj5GQEZCRkRGRkZIRltvL0ZORl5yRl1yRlJGVUZqcy1GNjYxUSN0b0YnRmduRmluRjtGPkZARkJGREZGRkhGW29GaHRGXXJGUkZVLUYjNiUtRiM2JS1GW3Q2JFEiMkYnRjktRjY2MFEiXkYnRjlGO0Y+RkBGQkZERkZGSEZKL0ZOUTJ2ZXJ5dGhpbm1hdGhzcGFjZUYnL0ZRRmd1RlJGVUZkcC1GNjYwUSp+Jm1pbnVzO35GJ0Y5RjtGPkZARkJGREZGRkhGW29GXW9GX29GUkZVLUZbdDYkRlRGOS1GNjYxUSNkb0YnRmduRmluRjtGPkZARkJGREZGRkhGW29GaHRGXXJGUkZVLUZbcTYmRl1xRmBxRmNxL0ZmcVE2aW5jcmVhc2VpbmRlbnRuZXdsaW5lRictRiM2KC1GIzYlLUYjNiVGZ3JGNS1GIzYlLUYsNiVRJWlyZW1GJ0YvRjItRjY2MFEwJkFwcGx5RnVuY3Rpb247RidGOUY7Rj5GQEZCRkRGRkZIRkpGXW9GX29GUkZVLUZhbzYjLUYjNidGanJGaG9GYXBGaG8tRiM2JS1GNjYwUSInRidGOUY7Rj5GQEZCRkRGRkZIL0ZLUShwb3N0Zml4RidGZnVGX29GUkZVRmpyRml3Rl1zRmpwLUYjNiUtRiM2JS1GIzYoLUY2NjFRI2lmRidGZ25GaW5GO0Y+RkBGQkZERkZGSEZbb0Zdb0ZdckZSRlUtRiM2JS1GIzYlLUYjNiVGXHYtRjY2MFEiL0YnRjlGO0Y+L0ZBRjFGQkZERkZGSEZKL0ZOUS50aGlubWF0aHNwYWNlRicvRlFGYnlGUkZVRmB1LUY2NjBRIipGJ0Y5RjtGPkZARkJGREZGRkhGSkZheUZjeUZSRlUtRiM2I0ZhcC1GNjYwUSM8PUYnRjlGO0Y+RkBGQkZERkZGSEZKRk1GUEZSRlVGZ3ItRjY2MVEldGhlbkYnRmduRmluRjtGPkZARkJGREZGRkhGW28vRk5GXXBGX29GUkZVRmF2LUYjNiQtRiM2JS1GIzYlRmdyRjUtRiM2J0ZnckZpdUZhcC1GNjYwUSIrRidGOUY7Rj5GQEZCRkRGRkZIRkpGaHRGXXJGUkZVRmRyRl1zRmpwLUYjNiVGZHJGNUZcdi1GW3E2JkZdcS9GYXFRJjAuMGVtRidGY3EvRmZxUTZkZWNyZWFzZWluZGVudG5ld2xpbmVGJy1GIzYmLUY2NjFRJWVsc2VGJ0ZnbkZpbkY7Rj5GQEZCRkRGRkZIRltvRl96Rl9vRlJGVUZhdi1GIzYkLUYjNiUtRiM2JUZnckY1LUYjNiVGZHJGaHpGZ3JGXXNGanBGaHNGXVtsLUY2NjFRJ2VuZH5pZkYnRmduRmluRjtGPkZARkJGREZGRkhGW29GX3pGX29GUkZVRl1zRmpwLUYjNiUtRiM2JS1GIzYmRl5wLUY2NjBRIltGJ0Y5L0Y8RjFGPkZgeUZCRkRGRkZIL0ZLUSdwcmVmaXhGJ0ZheUZjeUZSRlUtRiM2I0Zhci1GNjYwUSJdRidGOUZcXWxGPkZgeUZCRkRGRkZIRlx4RmF5Rmh1RlJGVUY1LUYjNiUtRiw2JVEmZXZhbGZGJ0YvRjJGYHctRmFvNiMtRiM2Iy1GIzYlRmdyRmR5RmdwRl1zRmpwRmd2Rl54LUYjNiVGZ1xsRjUtRiM2JUZnXGxGaHotRiM2JS1GW3Q2JFEiSUYnRjlGZHlGZF1sRl1bbC1GNjYxUSdlbmR+ZG9GJ0ZnbkZpbkY7Rj5GQEZCRkRGRkZIRltvRl96Rl9vRlJGVUZdW2wtRjY2MVEpZW5kfnByb2NGJ0ZnbkZpbkY7Rj5GQEZCRkRGRkZIRltvRl96Rl9vRlJGVQ==">Zio2J0kieEc2IkkiQUdGJUkibUdGJUkia0dGJUkiZkdGJTYmSSJpR0YlSSJjR0YlSSJkR0YlSSN4eEdGJUYlRiVDJT5GLkYkPkYsIiIhPyhGK0YyIiIiLCYpIiIjRihGNEY0ISIiSSV0cnVlRyUqcHJvdGVjdGVkR0MoPkYtLUklaXJlbUdGOjYlRi5GJy5GLkAlMSwkKiYjRjRGN0Y0RidGNEY0Ri1DJD5GLSwoRi1GNEYnRjhGLEY0PkYsRjRDJD5GLSwmRixGNEYtRjRGMT4mRiY2I0YrLUkmZXZhbGZHRjo2IyomRi1GNEYpRjRGPEZBPkZOLCZGTkY0KiZeI0Y0RjRGUEY0RjRGJUYlRiU=</Equation></Text-field>
</Output>
</Group>
<Group labelreference="L561" drawlabel="true">
<Input>
<Text-field prompt="&gt; " style="Maple Input" layout="Normal">#
# The rnorm procedure do the normalization after the irfft.
# A is the table, m the modulus, and k is the number of
# rounds for the rfft, hence the table is 2^k long.
# Before conversion, all entry in A multiplied by the factor f.
# The fraction parts are left in the table A.
#

rnorm:=proc(A,m,k,f) local i,x;
x:=0;
for i from 2^k-1 to 0 by -1 do
  A[i]:=evalf(A[i]*f);
  x:=m*x+round(Im(A[i]));
  A[i]:=A[i]-I*round(Im(A[i]));
  x:=m*x+round(Re(A[i]));
  A[i]:=A[i]-round(Re(A[i]));
od; x; end;</Text-field>
</Input>
<Output>
<Text-field style="2D Output" layout="Maple Output"><Equation executable="false" style="2D Output" display="LUklbXJvd0c2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGJzYlLUkjbWlHRiQ2JVEmcm5vcm1GJy8lJ2l0YWxpY0dRJXRydWVGJy8lLG1hdGh2YXJpYW50R1EnaXRhbGljRictSSNtb0dGJDYwUSM6PUYnL0YzUSdub3JtYWxGJy8lJmZlbmNlR1EmZmFsc2VGJy8lKnNlcGFyYXRvckdGPS8lKXN0cmV0Y2h5R0Y9LyUqc3ltbWV0cmljR0Y9LyUobGFyZ2VvcEdGPS8lLm1vdmFibGVsaW1pdHNHRj0vJSdhY2NlbnRHRj0vJSVmb3JtR1EmaW5maXhGJy8lJ2xzcGFjZUdRL3RoaWNrbWF0aHNwYWNlRicvJSdyc3BhY2VHRk8vJShtaW5zaXplR1EiMUYnLyUobWF4c2l6ZUdRKWluZmluaXR5RictRiM2KS1GNjYxUSVwcm9jRicvJSVib2xkR0YxL0YzUSVib2xkRidGO0Y+RkBGQkZERkZGSC9GS1EhRicvRk5RJDBlbUYnL0ZRRl5vRlJGVS1JKG1mZW5jZWRHRiQ2Iy1GIzYpLUYsNiVRIkFGJ0YvRjItRjY2MFEiLEYnRjlGOy9GP0YxRkBGQkZERkZGSEZKRl1vL0ZRUTN2ZXJ5dGhpY2ttYXRoc3BhY2VGJ0ZSRlUtRiw2JVEibUYnRi9GMkZoby1GLDYlUSJrRidGL0YyRmhvLUYsNiVRImZGJ0YvRjItSSdtc3BhY2VHRiQ2Ji8lJ2hlaWdodEdRJjAuMGV4RicvJSZ3aWR0aEdRJjAuM2VtRicvJSZkZXB0aEdGXHEvJSpsaW5lYnJlYWtHUTFmaXJzdHByb2NuZXdsaW5lRictRiM2Ji1GNjYxUSZsb2NhbEYnRmduRmluRjtGPkZARkJGREZGRkhGW29GXW8vRlFRMG1lZGl1bW1hdGhzcGFjZUYnRlJGVS1GIzYlLUYsNiVRImlGJ0YvRjJGaG8tRiw2JVEieEYnRi9GMi1GNjYwUSI7RidGOUY7RltwRkBGQkZERkZGSEZKRl1vRlBGUkZVRmdwLUYjNiUtRiM2JS1GIzYlRmFyRjUtSSNtbkdGJDYkUSIwRidGOUZkckZncC1GIzYlLUYjNictRiM2Ky1GNjYxUSRmb3JGJ0ZnbkZpbkY7Rj5GQEZCRkRGRkZIRltvRl1vRmpxRlJGVUZeci1GNjYxUSVmcm9tRidGZ25GaW5GO0Y+RkBGQkZERkZGSEZbby9GTkZbckZqcUZSRlUtRiM2JS1GIzYlLUZeczYkUSIyRidGOS1GNjYwUSJeRidGOUY7Rj5GQEZCRkRGRkZIRkovRk5RMnZlcnl0aGlubWF0aHNwYWNlRicvRlFGaXRGUkZVRmFwLUY2NjBRKn4mbWludXM7fkYnRjlGO0Y+RkBGQkZERkZGSEZbb0Zdb0Zfb0ZSRlUtRl5zNiRGVEY5LUY2NjFRI2J5RidGZ25GaW5GO0Y+RkBGQkZERkZGSEZbb0ZddEZqcUZSRlUtRiM2JC1GNjYwUSgmbWludXM7RidGOUY7Rj5GQEZCRkRGRkZIRltvRl1vRl9vRlJGVUZedS1GNjYxUSN0b0YnRmduRmluRjtGPkZARkJGREZGRkhGW29GXXRGanFGUkZVRl1zLUY2NjFRI2RvRidGZ25GaW5GO0Y+RkBGQkZERkZGSEZbb0ZddEZqcUZSRlUtRmhwNiZGanBGXXFGYHEvRmNxUTZpbmNyZWFzZWluZGVudG5ld2xpbmVGJy1GIzYnLUYjNiUtRiM2JS1GIzYmRmVvLUY2NjBRIltGJ0Y5L0Y8RjFGPi9GQUYxRkJGREZGRkgvRktRJ3ByZWZpeEYnL0ZOUS50aGlubWF0aHNwYWNlRicvRlFGYndGUkZVLUYjNiNGXnItRjY2MFEiXUYnRjlGXXdGPkZed0ZCRkRGRkZIL0ZLUShwb3N0Zml4RidGYXdGanRGUkZVRjUtRiM2JS1GLDYlUSZldmFsZkYnRi9GMi1GNjYwUTAmQXBwbHlGdW5jdGlvbjtGJ0Y5RjtGPkZARkJGREZGRkhGSkZdb0Zfb0ZSRlUtRmFvNiMtRiM2Iy1GIzYlRmh2LUY2NjBRIipGJ0Y5RjtGPkZARkJGREZGRkhGSkZhd0Zjd0ZSRlVGZHBGZHJGZ3AtRiM2JS1GIzYlRmFyRjUtRiM2JS1GIzYlRl5wRml4RmFyLUY2NjBRIitGJ0Y5RjtGPkZARkJGREZGRkhGSkZddEZqcUZSRlUtRiM2JS1GLDYlUSZyb3VuZEYnL0YwRj1GOUZgeC1GYW82Iy1GIzYjLUYjNiUtRiw2JVEjSW1GJ0ZcekY5RmB4LUZhbzYjLUYjNiNGaHZGZHJGZ3AtRiM2JS1GIzYlRmh2RjUtRiM2JUZodkZbdS1GIzYlLUZeczYkUSJJRidGOUZpeEZneUZkckZncC1GIzYlLUYjNiVGYXJGNS1GIzYlRmJ5RmR5LUYjNiVGaXlGYHgtRmFvNiMtRiM2Iy1GIzYlLUYsNiVRI1JlRidGXHpGOUZgeEZmekZkckZncC1GIzYlRmh2RjUtRiM2JUZodkZbdUZbXGwtRmhwNiZGanAvRl5xUSYwLjBlbUYnRmBxL0ZjcVE2ZGVjcmVhc2VpbmRlbnRuZXdsaW5lRictRjY2MVEnZW5kfmRvRidGZ25GaW5GO0Y+RkBGQkZERkZGSEZbby9GTkZdcEZfb0ZSRlVGZHJGZ3BGYXJGalxsLUY2NjFRKWVuZH5wcm9jRidGZ25GaW5GO0Y+RkBGQkZERkZGSEZbb0ZjXWxGX29GUkZV">Zio2JkkiQUc2IkkibUdGJUkia0dGJUkiZkdGJTYkSSJpR0YlSSJ4R0YlRiVGJUMlPkYrIiIhPyhGKiwmKSIiI0YnIiIiRjMhIiJGNEYuSSV0cnVlRyUqcHJvdGVjdGVkR0MnPiZGJDYjRiotSSZldmFsZkdGNjYjKiZGOUYzRihGMz5GKywmKiZGJkYzRitGM0YzLUkmcm91bmRHNiRGNkkoX3N5c2xpYkdGJTYjLUkjSW1HRjY2I0Y5RjM+RjksJkY5RjMqJiwkXiNGM0YzRjNGQkYzRjQ+RissJkZBRjMtRkM2Iy1JI1JlR0Y2RklGMz5GOSwmRjlGM0ZRRjRGK0YlRiVGJQ==</Equation></Text-field>
</Output>
</Group>
<Group labelreference="L567" drawlabel="true">
<Input>
<Text-field prompt="&gt; " style="Maple Input" layout="Normal">#
# The rdigmul procedure do the digit-by-digit
# multiplication of the two numbers after the
# rfft's. The result will be in the first table.
#

rdigmul:=proc(A,B,k) local i;
A[0]:=Re(A[0])*Re(B[0])+I*Im(A[0])*Im(B[0]);
for i from 1 to 2^k-1 do A[i]:=A[i]*B[i]; od;
end;</Text-field>
</Input>
<Output>
<Text-field style="2D Output" layout="Maple Output"><Equation executable="false" style="2D Output" display="LUklbXJvd0c2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGJzYlLUkjbWlHRiQ2JVEocmRpZ211bEYnLyUnaXRhbGljR1EldHJ1ZUYnLyUsbWF0aHZhcmlhbnRHUSdpdGFsaWNGJy1JI21vR0YkNjBRIzo9RicvRjNRJ25vcm1hbEYnLyUmZmVuY2VHUSZmYWxzZUYnLyUqc2VwYXJhdG9yR0Y9LyUpc3RyZXRjaHlHRj0vJSpzeW1tZXRyaWNHRj0vJShsYXJnZW9wR0Y9LyUubW92YWJsZWxpbWl0c0dGPS8lJ2FjY2VudEdGPS8lJWZvcm1HUSZpbmZpeEYnLyUnbHNwYWNlR1EvdGhpY2ttYXRoc3BhY2VGJy8lJ3JzcGFjZUdGTy8lKG1pbnNpemVHUSIxRicvJShtYXhzaXplR1EpaW5maW5pdHlGJy1GIzYpLUY2NjFRJXByb2NGJy8lJWJvbGRHRjEvRjNRJWJvbGRGJ0Y7Rj5GQEZCRkRGRkZIL0ZLUSFGJy9GTlEkMGVtRicvRlFGXm9GUkZVLUkobWZlbmNlZEdGJDYjLUYjNictRiw2JVEiQUYnRi9GMi1GNjYwUSIsRidGOUY7L0Y/RjFGQEZCRkRGRkZIRkpGXW8vRlFRM3Zlcnl0aGlja21hdGhzcGFjZUYnRlJGVS1GLDYlUSJCRidGL0YyRmhvLUYsNiVRImtGJ0YvRjItSSdtc3BhY2VHRiQ2Ji8lJ2hlaWdodEdRJjAuMGV4RicvJSZ3aWR0aEdRJjAuM2VtRicvJSZkZXB0aEdGaXAvJSpsaW5lYnJlYWtHUTFmaXJzdHByb2NuZXdsaW5lRictRiM2Ji1GNjYxUSZsb2NhbEYnRmduRmluRjtGPkZARkJGREZGRkhGW29GXW8vRlFRMG1lZGl1bW1hdGhzcGFjZUYnRlJGVS1GIzYjLUYsNiVRImlGJ0YvRjItRjY2MFEiO0YnRjlGO0ZbcEZARkJGREZGRkhGSkZdb0ZQRlJGVUZkcC1GIzYkLUYjNiUtRiM2JS1GIzYmRmVvLUY2NjBRIltGJ0Y5L0Y8RjFGPi9GQUYxRkJGREZGRkgvRktRJ3ByZWZpeEYnL0ZOUS50aGlubWF0aHNwYWNlRicvRlFGYXNGUkZVLUYjNiMtSSNtbkdGJDYkUSIwRidGOS1GNjYwUSJdRidGOUZcc0Y+Rl1zRkJGREZGRkgvRktRKHBvc3RmaXhGJ0Zgcy9GUVEydmVyeXRoaW5tYXRoc3BhY2VGJ0ZSRlVGNS1GIzYlLUYjNiUtRiM2JS1GLDYlUSNSZUYnL0YwRj1GOS1GNjYwUTAmQXBwbHlGdW5jdGlvbjtGJ0Y5RjtGPkZARkJGREZGRkhGSkZdb0Zfb0ZSRlUtRmFvNiMtRiM2I0Znci1GNjYwUSIqRidGOUY7Rj5GQEZCRkRGRkZIRkpGYHNGYnNGUkZVLUYjNiVGZnRGanQtRmFvNiMtRiM2Iy1GIzYmRl5wRmlyRmNzRmlzLUY2NjBRIitGJ0Y5RjtGPkZARkJGREZGRkhGSi9GTkZocUZncUZSRlUtRiM2Jy1GZnM2JFEiSUYnRjlGYXUtRiM2JS1GLDYlUSNJbUYnRml0RjlGanRGXXVGYXUtRiM2JUZndkZqdEZmdUZeckZkcC1GIzYnLUYjNictRjY2MVEkZm9yRidGZ25GaW5GO0Y+RkBGQkZERkZGSEZbb0Zdb0ZncUZSRlVGW3ItRjY2MVEjdG9GJ0ZnbkZpbkY7Rj5GQEZCRkRGRkZIRltvRl92RmdxRlJGVS1GIzYlLUYjNiUtRmZzNiRRIjJGJ0Y5LUY2NjBRIl5GJ0Y5RjtGPkZARkJGREZGRkhGSi9GTkZfdEZedEZSRlVGYXAtRjY2MFEqfiZtaW51czt+RidGOUY7Rj5GQEZCRkRGRkZIRltvRl1vRl9vRlJGVS1GZnM2JEZURjktRjY2MVEjZG9GJ0ZnbkZpbkY7Rj5GQEZCRkRGRkZIRltvRl92RmdxRlJGVS1GZXA2JkZncEZqcEZdcS9GYHFRNmluY3JlYXNlaW5kZW50bmV3bGluZUYnLUYjNiUtRiM2JkZlb0ZpckZpcUZpc0Y1LUYjNiVGX3lGYXUtRiM2JkZecEZpckZpcUZpcy1GZXA2JkZncC9GW3FRJjAuMGVtRidGXXEvRmBxUTZkZWNyZWFzZWluZGVudG5ld2xpbmVGJy1GNjYxUSdlbmR+ZG9GJ0ZnbkZpbkY7Rj5GQEZCRkRGRkZIRltvL0ZORl1wRl9vRlJGVUZleS1GNjYxUSllbmR+cHJvY0YnRmduRmluRjtGPkZARkJGREZGRkhGW29GXnpGX29GUkZV">Zio2JUkiQUc2IkkiQkdGJUkia0dGJTYjSSJpR0YlRiVGJUMkPiZGJDYjIiIhLCYqJi1JI1JlRyUqcHJvdGVjdGVkRzYjRiwiIiItRjI2IyZGJkYtRjVGNSooXiNGNUY1LUkjSW1HRjNGNEY1LUY8RjdGNUY1PyhGKUY1RjUsJikiIiNGJ0Y1RjUhIiJJJXRydWVHRjM+JkYkRigqJkZFRjUmRiZGKEY1RiVGJUYl</Equation></Text-field>
</Output>
</Group>
<Group labelreference="L576" drawlabel="true">
<Input>
<Text-field prompt="&gt; " style="Maple Input" layout="Normal">#
# This is the main procedure, do the multiplication
# or the squaring using real FFT and IFFF.
# a and b are the two numbers, m is the modulus for
# the preparation. The FFT and IFFT use k rounds.
#

mulrfft:=proc(a,b,m,k) 	local f1,f2,r; global A,B,T;
if type(k,odd) then
  f1:=2^(-(k+1)/2-HWS);
  f2:=2^(2*HWS-2);
else
  f1:=2^(-k/2-HWS);
  f2:=2^(2*HWS-3);
fi;
if a=b then
  srfftpre(a,A,m,k,f1); print(A);
  cfft(A,T,k); print(A);
  CtoR(A,T,k); print(A);
  rdigmul(A,A,k); print(A);
  RtoC(A,T,k); print(A);
  icfft(A,T,k); print(A);
  rnorm(A,m,k,f2);
else
  srfftpre(a,A,m,k,f1);
  cfft(A,T,k);
  CtoR(A,T,k);
  srfftpre(b,B,m,k,f1);
  cfft(B,T,k);
  CtoR(B,T,k);
  rdigmul(A,B,k);
  RtoC(A,T,k);
  icfft(A,T,k);
  rnorm(A,m,k,f2);
fi; end;</Text-field>
</Input>
<Output>
<Text-field style="2D Output" layout="Maple Output"><Equation executable="false" style="2D Output" display="LUklbXJvd0c2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGJzYlLUkjbWlHRiQ2JVEobXVscmZmdEYnLyUnaXRhbGljR1EldHJ1ZUYnLyUsbWF0aHZhcmlhbnRHUSdpdGFsaWNGJy1JI21vR0YkNjBRIzo9RicvRjNRJ25vcm1hbEYnLyUmZmVuY2VHUSZmYWxzZUYnLyUqc2VwYXJhdG9yR0Y9LyUpc3RyZXRjaHlHRj0vJSpzeW1tZXRyaWNHRj0vJShsYXJnZW9wR0Y9LyUubW92YWJsZWxpbWl0c0dGPS8lJ2FjY2VudEdGPS8lJWZvcm1HUSZpbmZpeEYnLyUnbHNwYWNlR1EvdGhpY2ttYXRoc3BhY2VGJy8lJ3JzcGFjZUdGTy8lKG1pbnNpemVHUSIxRicvJShtYXhzaXplR1EpaW5maW5pdHlGJy1GIzYqLUY2NjFRJXByb2NGJy8lJWJvbGRHRjEvRjNRJWJvbGRGJ0Y7Rj5GQEZCRkRGRkZIL0ZLUSFGJy9GTlEkMGVtRicvRlFGXm9GUkZVLUkobWZlbmNlZEdGJDYjLUYjNiktRiw2JVEiYUYnRi9GMi1GNjYwUSIsRidGOUY7L0Y/RjFGQEZCRkRGRkZIRkpGXW8vRlFRM3Zlcnl0aGlja21hdGhzcGFjZUYnRlJGVS1GLDYlUSJiRidGL0YyRmhvLUYsNiVRIm1GJ0YvRjJGaG8tRiw2JVEia0YnRi9GMi1JJ21zcGFjZUdGJDYmLyUnaGVpZ2h0R1EmMC4wZXhGJy8lJndpZHRoR1EmMC4zZW1GJy8lJmRlcHRoR0ZccS8lKmxpbmVicmVha0dRMWZpcnN0cHJvY25ld2xpbmVGJy1GIzYmLUY2NjFRJmxvY2FsRidGZ25GaW5GO0Y+RkBGQkZERkZGSEZbb0Zdby9GUVEwbWVkaXVtbWF0aHNwYWNlRidGUkZVLUYjNictRiw2JVEjZjFGJ0YvRjJGaG8tRiw2JVEjZjJGJ0YvRjJGaG8tRiw2JVEickYnRi9GMi1GNjYwUSI7RidGOUY7RltwRkBGQkZERkZGSEZKRl1vRlBGUkZVRmdwLUYjNiYtRjY2MVEnZ2xvYmFsRidGZ25GaW5GO0Y+RkBGQkZERkZGSEZbb0Zdb0ZqcUZSRlUtRiM2Jy1GLDYlUSJBRidGL0YyRmhvLUYsNiVRIkJGJ0YvRjJGaG8tRiw2JVEiVEYnRi9GMkZnckZncC1GIzYkLUYjNiUtRiM2JS1GIzYoLUY2NjFRI2lmRidGZ25GaW5GO0Y+RkBGQkZERkZGSEZbb0Zdb0ZqcUZSRlUtRiM2JS1GLDYlUSV0eXBlRidGL0YyLUY2NjBRMCZBcHBseUZ1bmN0aW9uO0YnRjlGO0Y+RkBGQkZERkZGSEZKRl1vRl9vRlJGVS1GYW82Iy1GIzYlRmRwRmhvLUYsNiVRJG9kZEYnRi9GMi1GNjYxUSV0aGVuRidGZ25GaW5GO0Y+RkBGQkZERkZGSEZbby9GTkZdcEZfb0ZSRlUtRmhwNiZGanBGXXFGYHEvRmNxUTZpbmNyZWFzZWluZGVudG5ld2xpbmVGJy1GIzYkLUYjNiUtRiM2JUZeckY1LUYjNiUtSSNtbkdGJDYkUSIyRidGOS1GNjYwUSJeRidGOUY7Rj5GQEZCRkRGRkZIRkovRk5RMnZlcnl0aGlubWF0aHNwYWNlRicvRlFGXHdGUkZVLUZhbzYjLUYjNigtRjY2MFEoJm1pbnVzO0YnRjlGO0Y+RkBGQkZERkZGSEZbb0Zdb0Zfb0ZSRlUtRiM2JS1GIzYlLUZldjYkRlRGOS1GNjYwUSIvRidGOUY7Rj4vRkFGMUZCRkRGRkZIRkovRk5RLnRoaW5tYXRoc3BhY2VGJy9GUUZgeEZSRlVGZHYtRjY2MFEiKkYnRjlGO0Y+RkBGQkZERkZGSEZKRl94RmF4RlJGVS1GIzYjRmRwLUY2NjBRKn4mbWludXM7fkYnRjlGO0Y+RkBGQkZERkZGSEZbb0Zdb0Zfb0ZSRlVGZ3dGZ3gtRiw2JVEkSFdTRidGL0YyRmdyRmdwLUYjNiVGYXJGNS1GIzYlRmR2Rmh2LUZhbzYjLUYjNiUtRiM2JUZkdkZieEZqeEZneEZkdi1GaHA2JkZqcC9GXnFRJjAuMGVtRidGYHEvRmNxUTZkZWNyZWFzZWluZGVudG5ld2xpbmVGJy1GIzYmLUY2NjFRJWVsc2VGJ0ZnbkZpbkY7Rj5GQEZCRkRGRkZIRltvRmd1Rl9vRlJGVUZodS1GIzYkLUYjNiUtRiM2JUZeckY1LUYjNiVGZHZGaHYtRmFvNiMtRiM2JkZid0Zld0ZneEZqeEZnckZncC1GIzYlRmFyRjUtRiM2JUZkdkZodi1GYW82Iy1GIzYlRmV5Rmd4LUZldjYkUSIzRidGOUZneS1GNjYxUSdlbmR+aWZGJ0ZnbkZpbkY7Rj5GQEZCRkRGRkZIRltvRmd1Rl9vRlJGVUZnckZncC1GIzYlLUYjNihGYnQtRiM2JUZlby1GNjYwUSI9RidGOUY7Rj5GQEZCRkRGRkZIRkpGTUZQRlJGVUZecEZkdUZodS1GIzYvLUYjNiUtRiM2JS1GLDYlUSlzcmZmdHByZUYnRi9GMkZqdC1GYW82Iy1GIzYrRmVvRmhvRmFzRmhvRmFwRmhvRmRwRmhvRl5yRmdyRmdwLUYjNiUtRiM2JS1GLDYlUSZwcmludEYnRi9GMkZqdC1GYW82Iy1GIzYjRmFzRmdyRmdwLUYjNiUtRiM2JS1GLDYlUSVjZmZ0RidGL0YyRmp0LUZhbzYjLUYjNidGYXNGaG9GZ3NGaG9GZHBGZ3JGZ3BGYl1sLUYjNiUtRiM2JS1GLDYlUSVDdG9SRidGL0YyRmp0RmRebEZnckZncEZiXWwtRiM2JS1GIzYlLUYsNiVRKHJkaWdtdWxGJ0YvRjJGanQtRmFvNiMtRiM2J0Zhc0Zob0Zhc0Zob0ZkcEZnckZncEZiXWwtRiM2JS1GIzYlLUYsNiVRJVJ0b0NGJ0YvRjJGanRGZF5sRmdyRmdwRmJdbC1GIzYlLUYjNiUtRiw2JVEmaWNmZnRGJ0YvRjJGanRGZF5sRmdyRmdwRmJdbC1GIzYlLUYsNiVRJnJub3JtRidGL0YyRmp0LUZhbzYjLUYjNilGYXNGaG9GYXBGaG9GZHBGaG9GYXJGZ3ktRiM2JkZfekZodS1GIzYsRmdcbEZdXmxGaF5sLUYjNiUtRiM2JUZbXWxGanQtRmFvNiMtRiM2K0ZecEZob0Zkc0Zob0ZhcEZob0ZkcEZob0ZeckZnckZncC1GIzYlLUYjNiVGYV5sRmp0LUZhbzYjLUYjNidGZHNGaG9GZ3NGaG9GZHBGZ3JGZ3AtRiM2JS1GIzYlRlxfbEZqdEZhYmxGZ3JGZ3AtRiM2JS1GIzYlRmNfbEZqdC1GYW82Iy1GIzYnRmFzRmhvRmRzRmhvRmRwRmdyRmdwRmpfbEZhYGxGaGBsRmd5RmlbbEZneS1GNjYxUSllbmR+cHJvY0YnRmduRmluRjtGPkZARkJGREZGRkhGW29GZ3VGX29GUkZV">Zio2JkkiYUc2IkkiYkdGJUkibUdGJUkia0dGJTYlSSNmMUdGJUkjZjJHRiVJInJHRiVGJUYlQyRAJS1JJXR5cGVHJSpwcm90ZWN0ZWRHNiRGKEkkb2RkR0YxQyQ+RiopIiIjLCgqJiMiIiJGN0Y7RihGOyEiIkY6RjxJJEhXU0dGJUY8PkYrKUY3LCYqJkY3RjtGPUY7RjtGN0Y8QyQ+RiopRjcsJkY5RjxGPUY8PkYrKUY3LCZGQUY7IiIkRjxAJS9GJEYmQy8tSSlzcmZmdHByZUdGJTYnRiRJIkFHRiVGJ0YoRiotSSZwcmludEdGMTYjRlAtSSVjZmZ0R0YlNiVGUEkiVEdGJUYoRlEtSSVDdG9SR0YlRlZGUS1JKHJkaWdtdWxHRiU2JUZQRlBGKEZRLUklUnRvQ0dGJUZWRlEtSSZpY2ZmdEdGJUZWRlEtSSZybm9ybUdGJTYmRlBGJ0YoRitDLEZNRlRGWC1GTjYnRiZJIkJHRiVGJ0YoRiotRlU2JUZhb0ZXRigtRllGY28tRmVuNiVGUEZhb0YoRmduRmluRltvRiU2JUZQRmFvRldGJQ==</Equation></Text-field>
</Output>
</Group>
<Group labelreference="L564" drawlabel="true">
<Input>
<Text-field prompt="&gt; " style="Maple Input" layout="Normal">HWS:=16; k:=5;
A:=array(0..2^k-1); B:=array(0..2^k-1); 
T:=array(0..2^k-1); pre(T,k):</Text-field>
</Input>
<Output>
<Text-field style="2D Output" layout="Maple Output"><Equation executable="false" style="2D Output" display="LUklbXJvd0c2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGJzYlLUkjbWlHRiQ2JVEkSFdTRicvJSdpdGFsaWNHUSV0cnVlRicvJSxtYXRodmFyaWFudEdRJ2l0YWxpY0YnLUkjbW9HRiQ2MFEjOj1GJy9GM1Enbm9ybWFsRicvJSZmZW5jZUdRJmZhbHNlRicvJSpzZXBhcmF0b3JHRj0vJSlzdHJldGNoeUdGPS8lKnN5bW1ldHJpY0dGPS8lKGxhcmdlb3BHRj0vJS5tb3ZhYmxlbGltaXRzR0Y9LyUnYWNjZW50R0Y9LyUlZm9ybUdRJmluZml4RicvJSdsc3BhY2VHUS90aGlja21hdGhzcGFjZUYnLyUncnNwYWNlR0ZPLyUobWluc2l6ZUdRIjFGJy8lKG1heHNpemVHUSlpbmZpbml0eUYnLUkjbW5HRiQ2JFEjMTZGJ0Y5">IiM7</Equation></Text-field>
</Output>
<Output>
<Text-field style="2D Output" layout="Maple Output"><Equation executable="false" style="2D Output" display="LUklbXJvd0c2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGJzYlLUkjbWlHRiQ2JVEia0YnLyUnaXRhbGljR1EldHJ1ZUYnLyUsbWF0aHZhcmlhbnRHUSdpdGFsaWNGJy1JI21vR0YkNjBRIzo9RicvRjNRJ25vcm1hbEYnLyUmZmVuY2VHUSZmYWxzZUYnLyUqc2VwYXJhdG9yR0Y9LyUpc3RyZXRjaHlHRj0vJSpzeW1tZXRyaWNHRj0vJShsYXJnZW9wR0Y9LyUubW92YWJsZWxpbWl0c0dGPS8lJ2FjY2VudEdGPS8lJWZvcm1HUSZpbmZpeEYnLyUnbHNwYWNlR1EvdGhpY2ttYXRoc3BhY2VGJy8lJ3JzcGFjZUdGTy8lKG1pbnNpemVHUSIxRicvJShtYXhzaXplR1EpaW5maW5pdHlGJy1JI21uR0YkNiRRIjVGJ0Y5">IiIm</Equation></Text-field>
</Output>
<Output>
<Text-field style="2D Output" layout="Maple Output"><Equation executable="false" style="2D Output" display="LUklbXJvd0c2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGJzYlLUkjbWlHRiQ2JVEiQUYnLyUnaXRhbGljR1EldHJ1ZUYnLyUsbWF0aHZhcmlhbnRHUSdpdGFsaWNGJy1JI21vR0YkNjBRIzo9RicvRjNRJ25vcm1hbEYnLyUmZmVuY2VHUSZmYWxzZUYnLyUqc2VwYXJhdG9yR0Y9LyUpc3RyZXRjaHlHRj0vJSpzeW1tZXRyaWNHRj0vJShsYXJnZW9wR0Y9LyUubW92YWJsZWxpbWl0c0dGPS8lJ2FjY2VudEdGPS8lJWZvcm1HUSZpbmZpeEYnLyUnbHNwYWNlR1EvdGhpY2ttYXRoc3BhY2VGJy8lJ3JzcGFjZUdGTy8lKG1pbnNpemVHUSIxRicvJShtYXhzaXplR1EpaW5maW5pdHlGJy1GIzYlLUYsNiVRJmFycmF5RidGL0YyLUY2NjBRMCZBcHBseUZ1bmN0aW9uO0YnRjlGO0Y+RkBGQkZERkZGSEZKL0ZOUSQwZW1GJy9GUUZbb0ZSRlUtSShtZmVuY2VkR0YkNiMtRiM2JS1GIzYlLUkjbW5HRiQ2JFEiMEYnRjktRjY2MFEjLi5GJ0Y5RjtGPkZARkJGREZGRkgvRktRKHBvc3RmaXhGJy9GTlEwbWVkaXVtbWF0aHNwYWNlRidGXG9GUkZVLUZlbzYkUSMzMUYnRjktRjY2MFEiLEYnRjlGOy9GP0YxRkBGQkZERkZGSEZKRmpuL0ZRUTN2ZXJ5dGhpY2ttYXRoc3BhY2VGJ0ZSRlUtRl5vNiUtRiM2Iy1GLDYlUSFGJ0YvRjIvJSVvcGVuR1EiW0YnLyUmY2xvc2VHUSJdRic=">PTYiNiM7IiIhIiNKRVxbbCE=</Equation></Text-field>
</Output>
<Output>
<Text-field style="2D Output" layout="Maple Output"><Equation executable="false" style="2D Output" display="LUklbXJvd0c2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGJzYlLUkjbWlHRiQ2JVEiQkYnLyUnaXRhbGljR1EldHJ1ZUYnLyUsbWF0aHZhcmlhbnRHUSdpdGFsaWNGJy1JI21vR0YkNjBRIzo9RicvRjNRJ25vcm1hbEYnLyUmZmVuY2VHUSZmYWxzZUYnLyUqc2VwYXJhdG9yR0Y9LyUpc3RyZXRjaHlHRj0vJSpzeW1tZXRyaWNHRj0vJShsYXJnZW9wR0Y9LyUubW92YWJsZWxpbWl0c0dGPS8lJ2FjY2VudEdGPS8lJWZvcm1HUSZpbmZpeEYnLyUnbHNwYWNlR1EvdGhpY2ttYXRoc3BhY2VGJy8lJ3JzcGFjZUdGTy8lKG1pbnNpemVHUSIxRicvJShtYXhzaXplR1EpaW5maW5pdHlGJy1GIzYlLUYsNiVRJmFycmF5RidGL0YyLUY2NjBRMCZBcHBseUZ1bmN0aW9uO0YnRjlGO0Y+RkBGQkZERkZGSEZKL0ZOUSQwZW1GJy9GUUZbb0ZSRlUtSShtZmVuY2VkR0YkNiMtRiM2JS1GIzYlLUkjbW5HRiQ2JFEiMEYnRjktRjY2MFEjLi5GJ0Y5RjtGPkZARkJGREZGRkgvRktRKHBvc3RmaXhGJy9GTlEwbWVkaXVtbWF0aHNwYWNlRidGXG9GUkZVLUZlbzYkUSMzMUYnRjktRjY2MFEiLEYnRjlGOy9GP0YxRkBGQkZERkZGSEZKRmpuL0ZRUTN2ZXJ5dGhpY2ttYXRoc3BhY2VGJ0ZSRlUtRl5vNiUtRiM2Iy1GLDYlUSFGJ0YvRjIvJSVvcGVuR1EiW0YnLyUmY2xvc2VHUSJdRic=">PTYiNiM7IiIhIiNKRVxbbCE=</Equation></Text-field>
</Output>
<Output>
<Text-field style="2D Output" layout="Maple Output"><Equation executable="false" style="2D Output" display="LUklbXJvd0c2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGJzYlLUkjbWlHRiQ2JVEiVEYnLyUnaXRhbGljR1EldHJ1ZUYnLyUsbWF0aHZhcmlhbnRHUSdpdGFsaWNGJy1JI21vR0YkNjBRIzo9RicvRjNRJ25vcm1hbEYnLyUmZmVuY2VHUSZmYWxzZUYnLyUqc2VwYXJhdG9yR0Y9LyUpc3RyZXRjaHlHRj0vJSpzeW1tZXRyaWNHRj0vJShsYXJnZW9wR0Y9LyUubW92YWJsZWxpbWl0c0dGPS8lJ2FjY2VudEdGPS8lJWZvcm1HUSZpbmZpeEYnLyUnbHNwYWNlR1EvdGhpY2ttYXRoc3BhY2VGJy8lJ3JzcGFjZUdGTy8lKG1pbnNpemVHUSIxRicvJShtYXhzaXplR1EpaW5maW5pdHlGJy1GIzYlLUYsNiVRJmFycmF5RidGL0YyLUY2NjBRMCZBcHBseUZ1bmN0aW9uO0YnRjlGO0Y+RkBGQkZERkZGSEZKL0ZOUSQwZW1GJy9GUUZbb0ZSRlUtSShtZmVuY2VkR0YkNiMtRiM2JS1GIzYlLUkjbW5HRiQ2JFEiMEYnRjktRjY2MFEjLi5GJ0Y5RjtGPkZARkJGREZGRkgvRktRKHBvc3RmaXhGJy9GTlEwbWVkaXVtbWF0aHNwYWNlRidGXG9GUkZVLUZlbzYkUSMzMUYnRjktRjY2MFEiLEYnRjlGOy9GP0YxRkBGQkZERkZGSEZKRmpuL0ZRUTN2ZXJ5dGhpY2ttYXRoc3BhY2VGJ0ZSRlUtRl5vNiUtRiM2Iy1GLDYlUSFGJ0YvRjIvJSVvcGVuR1EiW0YnLyUmY2xvc2VHUSJdRic=">PTYiNiM7IiIhIiNKRVxbbCE=</Equation></Text-field>
</Output>
</Group>
<Group labelreference="L565" drawlabel="true">
<Input>
<Text-field prompt="&gt; " style="Maple Input" layout="Normal">mulrfft(123456789,987654321,18,5);</Text-field>
</Input>
<Output>
<Text-field style="2D Output" layout="Maple Output"><Equation executable="false" style="2D Output">IjNwX2o3NmpLPjc=</Equation></Text-field>
</Output>
</Group>
<Group labelreference="L566" drawlabel="true">
<Input>
<Text-field prompt="&gt; " style="Maple Input" layout="Normal">123456789*987654321;</Text-field>
</Input>
<Output>
<Text-field style="2D Output" layout="Maple Output"><Equation executable="false" style="2D Output">IjNwX2o3NmpLPjc=</Equation></Text-field>
</Output>
</Group>
<Group labelreference="L568" drawlabel="true">
<Input>
<Text-field prompt="&gt; " style="Maple Input" layout="Normal">print(A);</Text-field>
</Input>
<Output>
<Text-field style="2D Output" layout="Maple Output"><Equation executable="false" style="2D Output" display="LUklbXJvd0c2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGJzYlLUkjbWlHRiQ2JVEmQVJSQVlGJy8lJ2l0YWxpY0dRJXRydWVGJy8lLG1hdGh2YXJpYW50R1EnaXRhbGljRictSSNtb0dGJDYwUTAmQXBwbHlGdW5jdGlvbjtGJy9GM1Enbm9ybWFsRicvJSZmZW5jZUdRJmZhbHNlRicvJSpzZXBhcmF0b3JHRj0vJSlzdHJldGNoeUdGPS8lKnN5bW1ldHJpY0dGPS8lKGxhcmdlb3BHRj0vJS5tb3ZhYmxlbGltaXRzR0Y9LyUnYWNjZW50R0Y9LyUlZm9ybUdRJmluZml4RicvJSdsc3BhY2VHUSQwZW1GJy8lJ3JzcGFjZUdGTy8lKG1pbnNpemVHUSIxRicvJShtYXhzaXplR1EpaW5maW5pdHlGJy1JKG1mZW5jZWRHRiQ2Iy1GIzYlLUZZNiUtRiM2Iy1GIzYlLUkjbW5HRiQ2JFEiMEYnRjktRjY2MFEjLi5GJ0Y5RjtGPkZARkJGREZGRkgvRktRKHBvc3RmaXhGJy9GTlEwbWVkaXVtbWF0aHNwYWNlRidGUEZSRlUtRl5vNiRRIzMxRidGOS8lJW9wZW5HUSJbRicvJSZjbG9zZUdRIl1GJy1GNjYwUSIsRidGOUY7L0Y/RjFGQEZCRkRGRkZIRkpGTS9GUVEzdmVyeXRoaWNrbWF0aHNwYWNlRidGUkZVLUZZNiUtRiM2W28tRiM2JS1GIzYjRl1vLUY2NjBRIj1GJ0Y5RjtGPkZARkJGREZGRkhGSi9GTlEvdGhpY2ttYXRoc3BhY2VGJy9GUUZjcUZSRlUtRiM2JS1GIzYlLUZebzYkUSM2LkYnRjktRjY2MFExJkludmlzaWJsZVRpbWVzO0YnRjlGO0Y+RkBGQkZERkZGSEZKRk1GUEZSRlUtSSVtc3VwR0YkNiUtRl5vNiRRIzEwRidGOS1GXm82JFEjLThGJ0Y5LyUxc3VwZXJzY3JpcHRzaGlmdEdRIjBGJy1GNjYwUSgmbWludXM7RidGOUY7Rj5GQEZCRkRGRkZIRkpGZm8vRlFGZ29GUkZVLUYjNiUtRiM2JS1GXm82JFEjMi5GJ0Y5RlxyRl9yRlxyLUZebzYkUSJJRidGOUZhcC1GIzYlLUYjNiMtRl5vNiRGVEY5Rl9xLUYjNiUtRiM2JS1GXm82JFEjMS5GJ0Y5RlxyRl9yRltzLUYjNiUtRiM2JS1GXm82JFEjNC5GJ0Y5RlxyRl9yRlxyRmZzRmFwLUYjNiUtRiM2Iy1GXm82JFEiMkYnRjlGX3EtRiM2JUZhc0Zbcy1GIzYlRmF0RlxyRmZzRmFwLUYjNiUtRiM2Iy1GXm82JFEiM0YnRjlGX3EtRiM2JUZhdEZbc0Zfc0ZhcC1GIzYlLUYjNiMtRl5vNiRRIjRGJ0Y5Rl9xLUYjNiUtRl5vNiRRIzAuRidGOS1GNjYwUSIrRidGOUY7Rj5GQEZCRkRGRkZIRkpGZm9GXnNGUkZVRmZ1RmFwLUYjNiUtRiM2Iy1GXm82JFEiNUYnRjlGX3EtRiM2Ji1GNjYwUSomdW1pbnVzMDtGJ0Y5RjtGPkZARkJGREZGRkgvRktRJ3ByZWZpeEYnRk0vRlFRMnZlcnl0aGlubWF0aHNwYWNlRidGUkZVRmF0Rl13RmZ1RmFwLUYjNiUtRiM2Iy1GXm82JFEiNkYnRjlGX3EtRiM2JkZpd0ZhdEZbcy1GIzYlLUYjNiVGaXFGXHItRmByNiVGYnItRl5vNiRRIy05RidGOUZockZcckZmc0ZhcC1GIzYlLUYjNiMtRl5vNiRRIjdGJ0Y5Rl9xLUYjNiUtRiM2JS1GXm82JFEsMS4xOTQxNDI2NzlGJ0Y5RlxyRl9yRltzLUYjNiUtRiM2JS1GXm82JFEsMS42NzU3NDYxMDBGJ0Y5RlxyRl9yRlxyRmZzRmFwLUYjNiUtRiM2Iy1GXm82JFEiOEYnRjlGX3EtRiM2JUZqdkZbcy1GIzYlLUYjNiUtRl5vNiRRLDEuMDczNzQxODI0RidGOUZcckZfckZcckZmc0ZhcC1GIzYlLUYjNiMtRl5vNiRRIjlGJ0Y5Rl9xLUYjNiZGaXctRiM2JUZkW2xGXHJGXXlGXXctRiM2JS1GIzYlLUZebzYkUSw5LjY2MzY3NjQxNkYnRjlGXHJGXXlGXHJGZnNGYXAtRiM2JS1GIzYjRmJyRl9xLUYjNiZGaXctRiM2JS1GXm82JFEsNC4yOTQ5NjcyOTZGJ0Y5RlxyRl15RltzLUYjNiUtRiM2JS1GXm82JFEsMy4yMjEyMjU0NzJGJ0Y5RlxyRl15RlxyRmZzRmFwLUYjNiUtRiM2Iy1GXm82JFEjMTFGJ0Y5Rl9xLUYjNiZGaXdGYltsRl13RmBbbEZhcC1GIzYlLUYjNiMtRl5vNiRRIzEyRidGOUZfcS1GIzYlLUYjNiUtRl5vNiRRLDIuMTQ3NDgzNjQ4RidGOUZcckZfckZbcy1GIzYlRl1fbEZcckZmc0ZhcC1GIzYlLUYjNiMtRl5vNiRRIzEzRidGOUZfcS1GIzYlRmJbbEZddy1GIzYlRmp2RlxyRmZzRmFwLUYjNiUtRiM2Iy1GXm82JFEjMTRGJ0Y5Rl9xLUYjNiZGaXctRiM2JS1GXm82JFEsMS42MTA2MTI3MzZGJ0Y5RlxyRl9yRl13RmJcbEZhcC1GIzYlLUYjNiMtRl5vNiRRIzE1RidGOUZfcS1GIzYmRml3LUYjNiUtRl5vNiRRLDIuMzE5OTkxMTk0RidGOUZcckZfckZbcy1GIzYlLUYjNiUtRl5vNiRRLDIuMDE2MjkxMTQ0RidGOUZcckZfckZcckZmc0ZhcC1GIzYlLUYjNiMtRl5vNiRRIzE2RidGOUZfcUZeW2xGYXAtRiM2JS1GIzYjLUZebzYkUSMxN0YnRjlGX3EtRiM2JUZfXWxGXXdGXWBsRmFwLUYjNiUtRiM2Iy1GXm82JFEjMThGJ0Y5Rl9xRl5bbEZhcC1GIzYlLUYjNiMtRl5vNiRRIzE5RidGOUZfcS1GIzYlRmJbbEZdd0ZgW2xGYXAtRiM2JS1GIzYjLUZebzYkUSMyMEYnRjlGX3EtRiM2JkZpd0ZiW2xGXXctRiM2JS1GIzYlRmhdbEZcckZfckZcckZmc0ZhcC1GIzYlLUYjNiMtRl5vNiRRIzIxRidGOUZfcS1GIzYmRml3RmJbbEZdd0ZdYGxGYXAtRiM2JS1GIzYjLUZebzYkUSMyMkYnRjlGX3EtRiM2JUZdX2xGW3MtRiM2JS1GIzYlLUZebzYkUSwxLjM5NTg2NDM3MUYnRjlGXHJGX3JGXHJGZnNGYXAtRiM2JS1GIzYjLUZebzYkUSMyM0YnRjlGX3EtRiM2JS1GIzYlLUZebzYkUSw3LjM4NTkyNjA0MkYnRjlGXHJGXXlGXXctRiM2JS1GIzYlLUZebzYkUSw2LjAyMDA0Mjc1N0YnRjlGXHJGXXlGXHJGZnNGYXAtRiM2JS1GIzYjLUZebzYkUSMyNEYnRjlGX3FGXltsRmFwLUYjNiUtRiM2Iy1GXm82JFEjMjVGJ0Y5Rl9xLUYjNiZGaXctRiM2JS1GXm82JFEsMi4yNTQ4NTc4MzBGJ0Y5RlxyRl9yRl13LUYjNiUtRiM2JS1GXm82JFEsMS4xODExMTYwMDZGJ0Y5RlxyRl9yRlxyRmZzRmFwLUYjNiUtRiM2Iy1GXm82JFEjMjZGJ0Y5Rl9xLUYjNiZGaXctRiM2JS1GXm82JFEsMS43MTc5ODY5MThGJ0Y5RlxyRl9yRl13LUYjNiUtRiM2JS1GXm82JFEsMS44MjUzNjExMDFGJ0Y5RlxyRl9yRlxyRmZzRmFwLUYjNiUtRiM2Iy1GXm82JFEjMjdGJ0Y5Rl9xLUYjNiVGYltsRltzRmBbbEZhcC1GIzYlLUYjNiMtRl5vNiRRIzI4RidGOUZfcS1GIzYlRmp2RltzRmJfbEZhcC1GIzYlLUYjNiMtRl5vNiRRIzI5RidGOUZfcUZbYGxGYXAtRiM2JS1GIzYjLUZebzYkUSMzMEYnRjlGX3EtRiM2JUZgXGxGW3NGZF1sRmFwLUYjNiUtRiM2I0Zob0ZfcS1GIzYmRml3LUYjNiUtRl5vNiRRLDQuMjI0MDgxODY3RidGOUZcci1GYHI2JUZici1GXm82JFEkLTEwRidGOUZockZbcy1GIzYlLUYjNiUtRl5vNiRRLDMuNDU5NDA4Njg5RidGOUZcckZdeUZcckZmc0ZbcEZecA==">SSJBRzYi</Equation></Text-field>
</Output>
</Group>
</Section>
<Section collapsed="false" MultipleChoiceAnswerIndex="-1" MultipleChoiceRandomizeChoices="false" TrueFalseAnswerIndex="-1" EssayAnswerRows="5" EssayAnswerColumns="60"><Title>
<Text-field style="Heading 2" layout="Heading 2">7.7. P<Font encoding="UTF-8">\303\251</Font>lda.</Text-field></Title>
<Text-field style="Text" layout="Normal"></Text-field>
<Group labelreference="L569" drawlabel="true">
<Input>
<Text-field prompt="&gt; " style="Maple Input" layout="Normal">HWS:=16; k:=15;
A:=array(0..2^k-1); B:=array(0..2^k-1); 
T:=array(0..2^k-1); pre(T,k):</Text-field>
</Input>
<Output>
<Text-field style="2D Output" layout="Maple Output"><Equation executable="false" style="2D Output" display="LUklbXJvd0c2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGJzYlLUkjbWlHRiQ2JVEkSFdTRicvJSdpdGFsaWNHUSV0cnVlRicvJSxtYXRodmFyaWFudEdRJ2l0YWxpY0YnLUkjbW9HRiQ2MFEjOj1GJy9GM1Enbm9ybWFsRicvJSZmZW5jZUdRJmZhbHNlRicvJSpzZXBhcmF0b3JHRj0vJSlzdHJldGNoeUdGPS8lKnN5bW1ldHJpY0dGPS8lKGxhcmdlb3BHRj0vJS5tb3ZhYmxlbGltaXRzR0Y9LyUnYWNjZW50R0Y9LyUlZm9ybUdRJmluZml4RicvJSdsc3BhY2VHUS90aGlja21hdGhzcGFjZUYnLyUncnNwYWNlR0ZPLyUobWluc2l6ZUdRIjFGJy8lKG1heHNpemVHUSlpbmZpbml0eUYnLUkjbW5HRiQ2JFEjMTZGJ0Y5">IiM7</Equation></Text-field>
</Output>
<Output>
<Text-field style="2D Output" layout="Maple Output"><Equation executable="false" style="2D Output" display="LUklbXJvd0c2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGJzYlLUkjbWlHRiQ2JVEia0YnLyUnaXRhbGljR1EldHJ1ZUYnLyUsbWF0aHZhcmlhbnRHUSdpdGFsaWNGJy1JI21vR0YkNjBRIzo9RicvRjNRJ25vcm1hbEYnLyUmZmVuY2VHUSZmYWxzZUYnLyUqc2VwYXJhdG9yR0Y9LyUpc3RyZXRjaHlHRj0vJSpzeW1tZXRyaWNHRj0vJShsYXJnZW9wR0Y9LyUubW92YWJsZWxpbWl0c0dGPS8lJ2FjY2VudEdGPS8lJWZvcm1HUSZpbmZpeEYnLyUnbHNwYWNlR1EvdGhpY2ttYXRoc3BhY2VGJy8lJ3JzcGFjZUdGTy8lKG1pbnNpemVHUSIxRicvJShtYXhzaXplR1EpaW5maW5pdHlGJy1JI21uR0YkNiRRIzE1RidGOQ==">IiM6</Equation></Text-field>
</Output>
<Output>
<Text-field style="2D Output" layout="Maple Output"><Equation executable="false" style="2D Output" display="LUklbXJvd0c2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGJzYlLUkjbWlHRiQ2JVEiQUYnLyUnaXRhbGljR1EldHJ1ZUYnLyUsbWF0aHZhcmlhbnRHUSdpdGFsaWNGJy1JI21vR0YkNjBRIzo9RicvRjNRJ25vcm1hbEYnLyUmZmVuY2VHUSZmYWxzZUYnLyUqc2VwYXJhdG9yR0Y9LyUpc3RyZXRjaHlHRj0vJSpzeW1tZXRyaWNHRj0vJShsYXJnZW9wR0Y9LyUubW92YWJsZWxpbWl0c0dGPS8lJ2FjY2VudEdGPS8lJWZvcm1HUSZpbmZpeEYnLyUnbHNwYWNlR1EvdGhpY2ttYXRoc3BhY2VGJy8lJ3JzcGFjZUdGTy8lKG1pbnNpemVHUSIxRicvJShtYXhzaXplR1EpaW5maW5pdHlGJy1GIzYlLUYsNiVRJmFycmF5RidGL0YyLUY2NjBRMCZBcHBseUZ1bmN0aW9uO0YnRjlGO0Y+RkBGQkZERkZGSEZKL0ZOUSQwZW1GJy9GUUZbb0ZSRlUtSShtZmVuY2VkR0YkNiMtRiM2JS1GIzYlLUkjbW5HRiQ2JFEiMEYnRjktRjY2MFEjLi5GJ0Y5RjtGPkZARkJGREZGRkgvRktRKHBvc3RmaXhGJy9GTlEwbWVkaXVtbWF0aHNwYWNlRidGXG9GUkZVLUZlbzYkUSYzMjc2N0YnRjktRjY2MFEiLEYnRjlGOy9GP0YxRkBGQkZERkZGSEZKRmpuL0ZRUTN2ZXJ5dGhpY2ttYXRoc3BhY2VGJ0ZSRlUtRl5vNiUtRiM2Iy1GLDYlUSFGJ0YvRjIvJSVvcGVuR1EiW0YnLyUmY2xvc2VHUSJdRic=">PTYiNiM7IiIhIiZuRiRFXFtsIQ==</Equation></Text-field>
</Output>
<Output>
<Text-field style="2D Output" layout="Maple Output"><Equation executable="false" style="2D Output" display="LUklbXJvd0c2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGJzYlLUkjbWlHRiQ2JVEiQkYnLyUnaXRhbGljR1EldHJ1ZUYnLyUsbWF0aHZhcmlhbnRHUSdpdGFsaWNGJy1JI21vR0YkNjBRIzo9RicvRjNRJ25vcm1hbEYnLyUmZmVuY2VHUSZmYWxzZUYnLyUqc2VwYXJhdG9yR0Y9LyUpc3RyZXRjaHlHRj0vJSpzeW1tZXRyaWNHRj0vJShsYXJnZW9wR0Y9LyUubW92YWJsZWxpbWl0c0dGPS8lJ2FjY2VudEdGPS8lJWZvcm1HUSZpbmZpeEYnLyUnbHNwYWNlR1EvdGhpY2ttYXRoc3BhY2VGJy8lJ3JzcGFjZUdGTy8lKG1pbnNpemVHUSIxRicvJShtYXhzaXplR1EpaW5maW5pdHlGJy1GIzYlLUYsNiVRJmFycmF5RidGL0YyLUY2NjBRMCZBcHBseUZ1bmN0aW9uO0YnRjlGO0Y+RkBGQkZERkZGSEZKL0ZOUSQwZW1GJy9GUUZbb0ZSRlUtSShtZmVuY2VkR0YkNiMtRiM2JS1GIzYlLUkjbW5HRiQ2JFEiMEYnRjktRjY2MFEjLi5GJ0Y5RjtGPkZARkJGREZGRkgvRktRKHBvc3RmaXhGJy9GTlEwbWVkaXVtbWF0aHNwYWNlRidGXG9GUkZVLUZlbzYkUSYzMjc2N0YnRjktRjY2MFEiLEYnRjlGOy9GP0YxRkBGQkZERkZGSEZKRmpuL0ZRUTN2ZXJ5dGhpY2ttYXRoc3BhY2VGJ0ZSRlUtRl5vNiUtRiM2Iy1GLDYlUSFGJ0YvRjIvJSVvcGVuR1EiW0YnLyUmY2xvc2VHUSJdRic=">PTYiNiM7IiIhIiZuRiRFXFtsIQ==</Equation></Text-field>
</Output>
<Output>
<Text-field style="2D Output" layout="Maple Output"><Equation executable="false" style="2D Output" display="LUklbXJvd0c2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGJzYlLUkjbWlHRiQ2JVEiVEYnLyUnaXRhbGljR1EldHJ1ZUYnLyUsbWF0aHZhcmlhbnRHUSdpdGFsaWNGJy1JI21vR0YkNjBRIzo9RicvRjNRJ25vcm1hbEYnLyUmZmVuY2VHUSZmYWxzZUYnLyUqc2VwYXJhdG9yR0Y9LyUpc3RyZXRjaHlHRj0vJSpzeW1tZXRyaWNHRj0vJShsYXJnZW9wR0Y9LyUubW92YWJsZWxpbWl0c0dGPS8lJ2FjY2VudEdGPS8lJWZvcm1HUSZpbmZpeEYnLyUnbHNwYWNlR1EvdGhpY2ttYXRoc3BhY2VGJy8lJ3JzcGFjZUdGTy8lKG1pbnNpemVHUSIxRicvJShtYXhzaXplR1EpaW5maW5pdHlGJy1GIzYlLUYsNiVRJmFycmF5RidGL0YyLUY2NjBRMCZBcHBseUZ1bmN0aW9uO0YnRjlGO0Y+RkBGQkZERkZGSEZKL0ZOUSQwZW1GJy9GUUZbb0ZSRlUtSShtZmVuY2VkR0YkNiMtRiM2JS1GIzYlLUkjbW5HRiQ2JFEiMEYnRjktRjY2MFEjLi5GJ0Y5RjtGPkZARkJGREZGRkgvRktRKHBvc3RmaXhGJy9GTlEwbWVkaXVtbWF0aHNwYWNlRidGXG9GUkZVLUZlbzYkUSYzMjc2N0YnRjktRjY2MFEiLEYnRjlGOy9GP0YxRkBGQkZERkZGSEZKRmpuL0ZRUTN2ZXJ5dGhpY2ttYXRoc3BhY2VGJ0ZSRlUtRl5vNiUtRiM2Iy1GLDYlUSFGJ0YvRjIvJSVvcGVuR1EiW0YnLyUmY2xvc2VHUSJdRic=">PTYiNiM7IiIhIiZuRiRFXFtsIQ==</Equation></Text-field>
</Output>
</Group>
<Group labelreference="L571" drawlabel="true">
<Input>
<Text-field prompt="&gt; " style="Maple Input" layout="Normal">mulrfft(123456789,987654321,16,5);</Text-field>
</Input>
<Output>
<Text-field style="2D Output" layout="Maple Output"><Equation executable="false" style="2D Output">IjNwX2o3NmpLPjc=</Equation></Text-field>
</Output>
</Group>
<Group labelreference="L570" drawlabel="true">
<Input>
<Text-field prompt="&gt; " style="Maple Input" layout="Normal">123456789*987654321;</Text-field>
</Input>
<Output>
<Text-field style="2D Output" layout="Maple Output"><Equation executable="false" style="2D Output">IjNwX2o3NmpLPjc=</Equation></Text-field>
</Output>
</Group>
</Section>
<Section collapsed="false" MultipleChoiceAnswerIndex="-1" MultipleChoiceRandomizeChoices="false" TrueFalseAnswerIndex="-1" EssayAnswerRows="5" EssayAnswerColumns="60"><Title>
<Text-field style="Heading 2" layout="Heading 2">7.8. FFT v<Font encoding="UTF-8">\303\251</Font>ges testek felett.</Text-field></Title>
<Text-field style="Text" layout="Normal"></Text-field>
<Group labelreference="L517" drawlabel="true">
<Input>
<Text-field prompt="&gt; " style="Maple Input" layout="Normal"></Text-field>
</Input>
</Group>
</Section>
<Section collapsed="false" MultipleChoiceAnswerIndex="-1" MultipleChoiceRandomizeChoices="false" TrueFalseAnswerIndex="-1" EssayAnswerRows="5" EssayAnswerColumns="60"><Title>
<Text-field style="Heading 2" layout="Heading 2">7.9. Fermat-sz<Font encoding="UTF-8">\303\241</Font>m transzform<Font encoding="UTF-8">\303\241</Font>ci<Font encoding="UTF-8">\303\263</Font>.</Text-field></Title>
<Text-field style="Text" layout="Normal"></Text-field>
<Group labelreference="L518" drawlabel="true">
<Input>
<Text-field prompt="&gt; " style="Maple Input" layout="Normal">#
# This procedure adds 1 to the number represented by the
# bit vector b (used in reverse bit order) on length k.
#

incrementreverse:=proc(b,k) local i,c;
c:=b;
for i to k do if c[i]=0 then c[i]:=1; return c; else c[i]:=0 fi;
od; c; end;</Text-field>
</Input>
<Output>
<Text-field style="2D Output" layout="Maple Output"><Equation executable="false" style="2D Output" display="LUklbXJvd0c2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGJzYlLUkjbWlHRiQ2JVExaW5jcmVtZW50cmV2ZXJzZUYnLyUnaXRhbGljR1EldHJ1ZUYnLyUsbWF0aHZhcmlhbnRHUSdpdGFsaWNGJy1JI21vR0YkNjBRIzo9RicvRjNRJ25vcm1hbEYnLyUmZmVuY2VHUSZmYWxzZUYnLyUqc2VwYXJhdG9yR0Y9LyUpc3RyZXRjaHlHRj0vJSpzeW1tZXRyaWNHRj0vJShsYXJnZW9wR0Y9LyUubW92YWJsZWxpbWl0c0dGPS8lJ2FjY2VudEdGPS8lJWZvcm1HUSZpbmZpeEYnLyUnbHNwYWNlR1EvdGhpY2ttYXRoc3BhY2VGJy8lJ3JzcGFjZUdGTy8lKG1pbnNpemVHUSIxRicvJShtYXhzaXplR1EpaW5maW5pdHlGJy1GIzYpLUY2NjFRJXByb2NGJy8lJWJvbGRHRjEvRjNRJWJvbGRGJ0Y7Rj5GQEZCRkRGRkZIL0ZLUSFGJy9GTlEkMGVtRicvRlFGXm9GUkZVLUkobWZlbmNlZEdGJDYjLUYjNiUtRiw2JVEiYkYnRi9GMi1GNjYwUSIsRidGOUY7L0Y/RjFGQEZCRkRGRkZIRkpGXW8vRlFRM3Zlcnl0aGlja21hdGhzcGFjZUYnRlJGVS1GLDYlUSJrRidGL0YyLUknbXNwYWNlR0YkNiYvJSdoZWlnaHRHUSYwLjBleEYnLyUmd2lkdGhHUSYwLjNlbUYnLyUmZGVwdGhHRmZwLyUqbGluZWJyZWFrR1ExZmlyc3Rwcm9jbmV3bGluZUYnLUYjNiYtRjY2MVEmbG9jYWxGJ0ZnbkZpbkY7Rj5GQEZCRkRGRkZIRltvRl1vL0ZRUTBtZWRpdW1tYXRoc3BhY2VGJ0ZSRlUtRiM2JS1GLDYlUSJpRidGL0YyRmhvLUYsNiVRImNGJ0YvRjItRjY2MFEiO0YnRjlGO0ZbcEZARkJGREZGRkhGSkZdb0ZQRlJGVUZhcC1GIzYlLUYjNiUtRiM2JUZbckY1RmVvRl5yRmFwLUYjNiUtRiM2Jy1GIzYnLUY2NjFRJGZvckYnRmduRmluRjtGPkZARkJGREZGRkhGW29GXW9GZHFGUkZVRmhxLUY2NjFRI3RvRidGZ25GaW5GO0Y+RkBGQkZERkZGSEZbby9GTkZlcUZkcUZSRlVGXnAtRjY2MVEjZG9GJ0ZnbkZpbkY7Rj5GQEZCRkRGRkZIRltvRmNzRmRxRlJGVS1GYnA2JkZkcEZncEZqcC9GXXFRNmluY3JlYXNlaW5kZW50bmV3bGluZUYnLUYjNiUtRiM2KC1GNjYxUSNpZkYnRmduRmluRjtGPkZARkJGREZGRkhGW29GXW9GZHFGUkZVLUYjNiUtRiM2JkZbci1GNjYwUSJbRidGOS9GPEYxRj4vRkFGMUZCRkRGRkZIL0ZLUSdwcmVmaXhGJy9GTlEudGhpbm1hdGhzcGFjZUYnL0ZRRl51RlJGVS1GIzYjRmhxLUY2NjBRIl1GJ0Y5Rml0Rj5GanRGQkZERkZGSC9GS1EocG9zdGZpeEYnRl11L0ZRUTJ2ZXJ5dGhpbm1hdGhzcGFjZUYnRlJGVS1GNjYwUSI9RidGOUY7Rj5GQEZCRkRGRkZIRkpGTUZQRlJGVS1JI21uR0YkNiRRIjBGJ0Y5LUY2NjFRJXRoZW5GJ0ZnbkZpbkY7Rj5GQEZCRkRGRkZIRltvL0ZORl1wRl9vRlJGVUZncy1GIzYkLUYjNiUtRiM2JUZkdEY1LUZddjYkRlRGOUZeckZhcC1GIzYkLUY2NjFRJ3JldHVybkYnRmduRmluRjtGPkZARkJGREZGRkhGW29GXW9GZHFGUkZVRltyLUZicDYmRmRwL0ZocFEmMC4wZW1GJ0ZqcC9GXXFRNmRlY3JlYXNlaW5kZW50bmV3bGluZUYnLUYjNiYtRjY2MVElZWxzZUYnRmduRmluRjtGPkZARkJGREZGRkhGW29GY3ZGX29GUkZVRmdzLUYjNiVGZHRGNUZcdkZhdy1GNjYxUSdlbmR+aWZGJ0ZnbkZpbkY7Rj5GQEZCRkRGRkZIRltvRmN2Rl9vRlJGVUZhdy1GNjYxUSdlbmR+ZG9GJ0ZnbkZpbkY7Rj5GQEZCRkRGRkZIRltvRmN2Rl9vRlJGVUZeckZhcEZbckZhdy1GNjYxUSllbmR+cHJvY0YnRmduRmluRjtGPkZARkJGREZGRkhGW29GY3ZGX29GUkZV">Zio2JEkiYkc2Ikkia0dGJTYkSSJpR0YlSSJjR0YlRiVGJUMlPkYpRiQ/KEYoIiIiRi1GJkkldHJ1ZUclKnByb3RlY3RlZEdAJS8mRik2I0YoIiIhQyQ+RjJGLU9GKT5GMkY0RilGJUYlRiU=</Equation></Text-field>
</Output>
</Group>
<Group labelreference="L579" drawlabel="true">
<Input>
<Text-field prompt="&gt; " style="Maple Input" layout="Normal">#
# This procedure convert the bits in interval II of the
# bit vector b. The bit b[1] represents the highest bit,
# 2^(m-2+op(1,II)), usually 2^(m-1).
#

convertreverse:=proc(b,m,II) local i,lw; lw:=0;
for i from op(1,II) to op(2,II) do
  lw:=lw+b[i]*2^(m-1-i+op(1,II))
od; lw; end;</Text-field>
</Input>
<Output>
<Text-field style="2D Output" layout="Maple Output"><Equation executable="false" style="2D Output" display="LUklbXJvd0c2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGJzYlLUkjbWlHRiQ2JVEvY29udmVydHJldmVyc2VGJy8lJ2l0YWxpY0dRJXRydWVGJy8lLG1hdGh2YXJpYW50R1EnaXRhbGljRictSSNtb0dGJDYwUSM6PUYnL0YzUSdub3JtYWxGJy8lJmZlbmNlR1EmZmFsc2VGJy8lKnNlcGFyYXRvckdGPS8lKXN0cmV0Y2h5R0Y9LyUqc3ltbWV0cmljR0Y9LyUobGFyZ2VvcEdGPS8lLm1vdmFibGVsaW1pdHNHRj0vJSdhY2NlbnRHRj0vJSVmb3JtR1EmaW5maXhGJy8lJ2xzcGFjZUdRL3RoaWNrbWF0aHNwYWNlRicvJSdyc3BhY2VHRk8vJShtaW5zaXplR1EiMUYnLyUobWF4c2l6ZUdRKWluZmluaXR5RictRiM2KS1GNjYxUSVwcm9jRicvJSVib2xkR0YxL0YzUSVib2xkRidGO0Y+RkBGQkZERkZGSC9GS1EhRicvRk5RJDBlbUYnL0ZRRl5vRlJGVS1JKG1mZW5jZWRHRiQ2Iy1GIzYnLUYsNiVRImJGJ0YvRjItRjY2MFEiLEYnRjlGOy9GP0YxRkBGQkZERkZGSEZKRl1vL0ZRUTN2ZXJ5dGhpY2ttYXRoc3BhY2VGJ0ZSRlUtRiw2JVEibUYnRi9GMkZoby1GLDYlUSNJSUYnRi9GMi1JJ21zcGFjZUdGJDYmLyUnaGVpZ2h0R1EmMC4wZXhGJy8lJndpZHRoR1EmMC4zZW1GJy8lJmRlcHRoR0ZpcC8lKmxpbmVicmVha0dRMWZpcnN0cHJvY25ld2xpbmVGJy1GIzYmLUY2NjFRJmxvY2FsRidGZ25GaW5GO0Y+RkBGQkZERkZGSEZbb0Zdby9GUVEwbWVkaXVtbWF0aHNwYWNlRidGUkZVLUYjNiUtRiw2JVEiaUYnRi9GMkZoby1GLDYlUSNsd0YnRi9GMi1GNjYwUSI7RidGOUY7RltwRkBGQkZERkZGSEZKRl1vRlBGUkZVRmRwLUYjNiUtRiM2JS1GIzYlRl5yRjUtSSNtbkdGJDYkUSIwRidGOUZhckZkcC1GIzYlLUYjNictRiM2KS1GNjYxUSRmb3JGJ0ZnbkZpbkY7Rj5GQEZCRkRGRkZIRltvRl1vRmdxRlJGVUZbci1GNjYxUSVmcm9tRidGZ25GaW5GO0Y+RkBGQkZERkZGSEZbby9GTkZocUZncUZSRlUtRiM2JS1GLDYlUSNvcEYnRi9GMi1GNjYwUTAmQXBwbHlGdW5jdGlvbjtGJ0Y5RjtGPkZARkJGREZGRkhGSkZdb0Zfb0ZSRlUtRmFvNiMtRiM2JS1GW3M2JEZURjlGaG9GYXAtRjY2MVEjdG9GJ0ZnbkZpbkY7Rj5GQEZCRkRGRkZIRltvRmpzRmdxRlJGVS1GIzYlRl10RmB0LUZhbzYjLUYjNiUtRltzNiRRIjJGJ0Y5RmhvRmFwLUY2NjFRI2RvRidGZ25GaW5GO0Y+RkBGQkZERkZGSEZbb0Zqc0ZncUZSRlUtRmVwNiZGZ3BGanBGXXEvRmBxUTZpbmNyZWFzZWluZGVudG5ld2xpbmVGJy1GIzYlRl5yRjUtRiM2JUZeci1GNjYwUSIrRidGOUY7Rj5GQEZCRkRGRkZIRkpGanNGZ3FGUkZVLUYjNiUtRiM2JkZlby1GNjYwUSJbRidGOS9GPEYxRj4vRkFGMUZCRkRGRkZIL0ZLUSdwcmVmaXhGJy9GTlEudGhpbm1hdGhzcGFjZUYnL0ZRRl93RlJGVS1GIzYjRltyLUY2NjBRIl1GJ0Y5Rmp2Rj5GW3dGQkZERkZGSC9GS1EocG9zdGZpeEYnRl53L0ZRUTJ2ZXJ5dGhpbm1hdGhzcGFjZUYnRlJGVS1GNjYwUSIqRidGOUY7Rj5GQEZCRkRGRkZIRkpGXndGYHdGUkZVLUYjNiVGYnUtRjY2MFEiXkYnRjlGO0Y+RkBGQkZERkZGSEZKL0ZORml3Rmh3RlJGVS1GYW82Iy1GIzYpRl5wLUY2NjBRKn4mbWludXM7fkYnRjlGO0Y+RkBGQkZERkZGSEZbb0Zdb0Zfb0ZSRlVGZ3RGZ3hGW3JGYHZGW3QtRmVwNiZGZ3AvRltxUSYwLjBlbUYnRl1xL0ZgcVE2ZGVjcmVhc2VpbmRlbnRuZXdsaW5lRictRjY2MVEnZW5kfmRvRidGZ25GaW5GO0Y+RkBGQkZERkZGSEZbby9GTkZdcEZfb0ZSRlVGYXJGZHBGXnJGangtRjY2MVEpZW5kfnByb2NGJ0ZnbkZpbkY7Rj5GQEZCRkRGRkZIRltvRmN5Rl9vRlJGVQ==">Zio2JUkiYkc2IkkibUdGJUkjSUlHRiU2JEkiaUdGJUkjbHdHRiVGJUYlQyU+RioiIiE/KEYpLUkjb3BHJSpwcm90ZWN0ZWRHNiQiIiJGJ0YzLUYwNiQiIiNGJ0kldHJ1ZUdGMT5GKiwmRipGMyomJkYkNiNGKUYzKUY2LCpGJkYzRjMhIiJGKUY/Ri9GM0YzRjNGKkYlRiVGJQ==</Equation></Text-field>
</Output>
</Group>
<Group labelreference="L581" drawlabel="true">
<Input>
<Text-field prompt="&gt; " style="Maple Input" layout="Normal">#
# This procedure do a Fermat FFT round modulo 2^(2^m)+1 on
# array A having 2^n elements. The siccor size is 2^k and
# the weights are get from the conversion of bits in interval II
# from a counter starting with zero and incremented after
# each butterfly sequence.
#

ffftround:=proc(A,n,m,k,II) local i,j,x,y,w,b;
j:=2^k; b:=[0$i=1..m+1];
while j&lt;2^n do
  w:=2^convertreverse(b,m,II); b:=incrementreverse(b,m+1);
  for i from j-2^k while i&lt;j do
    x:=A[i]; y:=A[i+2^k];
    A[i]:=x+w*y mod (2^(2^m)+1); A[i+2^k]:=x-w*y mod (2^(2^m)+1);
  od; j:=j+2^(k+1);
od; end;</Text-field>
</Input>
<Output>
<Text-field style="2D Output" layout="Maple Output"><Equation executable="false" style="2D Output" display="LUklbXJvd0c2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGJzYlLUkjbWlHRiQ2JVEqZmZmdHJvdW5kRicvJSdpdGFsaWNHUSV0cnVlRicvJSxtYXRodmFyaWFudEdRJ2l0YWxpY0YnLUkjbW9HRiQ2MFEjOj1GJy9GM1Enbm9ybWFsRicvJSZmZW5jZUdRJmZhbHNlRicvJSpzZXBhcmF0b3JHRj0vJSlzdHJldGNoeUdGPS8lKnN5bW1ldHJpY0dGPS8lKGxhcmdlb3BHRj0vJS5tb3ZhYmxlbGltaXRzR0Y9LyUnYWNjZW50R0Y9LyUlZm9ybUdRJmluZml4RicvJSdsc3BhY2VHUS90aGlja21hdGhzcGFjZUYnLyUncnNwYWNlR0ZPLyUobWluc2l6ZUdRIjFGJy8lKG1heHNpemVHUSlpbmZpbml0eUYnLUYjNiktRjY2MVElcHJvY0YnLyUlYm9sZEdGMS9GM1ElYm9sZEYnRjtGPkZARkJGREZGRkgvRktRIUYnL0ZOUSQwZW1GJy9GUUZeb0ZSRlUtSShtZmVuY2VkR0YkNiMtRiM2Ky1GLDYlUSJBRidGL0YyLUY2NjBRIixGJ0Y5RjsvRj9GMUZARkJGREZGRkhGSkZdby9GUVEzdmVyeXRoaWNrbWF0aHNwYWNlRidGUkZVLUYsNiVRIm5GJ0YvRjJGaG8tRiw2JVEibUYnRi9GMkZoby1GLDYlUSJrRidGL0YyRmhvLUYsNiVRI0lJRidGL0YyLUknbXNwYWNlR0YkNiYvJSdoZWlnaHRHUSYwLjBleEYnLyUmd2lkdGhHUSYwLjNlbUYnLyUmZGVwdGhHRl9xLyUqbGluZWJyZWFrR1ExZmlyc3Rwcm9jbmV3bGluZUYnLUYjNiYtRjY2MVEmbG9jYWxGJ0ZnbkZpbkY7Rj5GQEZCRkRGRkZIRltvRl1vL0ZRUTBtZWRpdW1tYXRoc3BhY2VGJ0ZSRlUtRiM2LS1GLDYlUSJpRidGL0YyRmhvLUYsNiVRImpGJ0YvRjJGaG8tRiw2JVEieEYnRi9GMkZoby1GLDYlUSJ5RidGL0YyRmhvLUYsNiVRIndGJ0YvRjJGaG8tRiw2JVEiYkYnRi9GMi1GNjYwUSI7RidGOUY7RltwRkBGQkZERkZGSEZKRl1vRlBGUkZVRmpwLUYjNiUtRiM2JS1GIzYlRmRyRjUtRiM2JS1JI21uR0YkNiRRIjJGJ0Y5LUY2NjBRIl5GJ0Y5RjtGPkZARkJGREZGRkhGSi9GTlEydmVyeXRoaW5tYXRoc3BhY2VGJy9GUUZmdEZSRlVGZHBGY3NGanAtRiM2JS1GIzYlRmBzRjUtRmFvNiUtRiM2Iy1GIzYlLUYsNiVRJGAkYEYnRi9GMi1GNjYwUTAmQXBwbHlGdW5jdGlvbjtGJ0Y5RjtGPkZARkJGREZGRkhGSkZdb0Zfb0ZSRlUtRmFvNiMtRiM2JS1GX3Q2JFEiMEYnRjlGaG8tRiM2JUZhci1GNjYwUSI9RidGOUY7Rj5GQEZCRkRGRkZIRkpGTUZQRlJGVS1GIzYlLUZfdDYkRlRGOS1GNjYwUSMuLkYnRjlGO0Y+RkBGQkZERkZGSC9GS1EocG9zdGZpeEYnL0ZORl5yRl9vRlJGVS1GIzYlRmFwLUY2NjBRIitGJ0Y5RjtGPkZARkJGREZGRkhGSkZdd0ZdckZSRlVGZnYvJSVvcGVuR1EiW0YnLyUmY2xvc2VHUSJdRidGY3NGanAtRiM2Jy1GIzYlLUY2NjFRJndoaWxlRidGZ25GaW5GO0Y+RkBGQkZERkZGSEZbb0Zdd0ZdckZSRlUtRiM2JUZkci1GNjYwUSI8RidGOUY7Rj5GQEZCRkRGRkZIRkpGTUZQRlJGVS1GIzYlRl50RmJ0Rl5wLUY2NjFRI2RvRidGZ25GaW5GO0Y+RkBGQkZERkZGSEZbb0Zdd0ZdckZSRlUtRltxNiZGXXFGYHFGY3EvRmZxUTZpbmNyZWFzZWluZGVudG5ld2xpbmVGJy1GIzYmLUYjNiUtRiM2JUZdc0Y1LUYjNiVGXnRGYnQtRiM2JS1GLDYlUS9jb252ZXJ0cmV2ZXJzZUYnRi9GMkZldS1GYW82Iy1GIzYnRmBzRmhvRmFwRmhvRmdwRmNzRmpwLUYjNiUtRiM2JUZgc0Y1LUYjNiUtRiw2JVExaW5jcmVtZW50cmV2ZXJzZUYnRi9GMkZldS1GYW82Iy1GIzYlRmBzRmhvRl53RmNzRmpwLUYjNiUtRiM2Jy1GIzYpLUY2NjFRJGZvckYnRmduRmluRjtGPkZARkJGREZGRkhGW29GXW9GXXJGUkZVRmFyLUY2NjFRJWZyb21GJ0ZnbkZpbkY7Rj5GQEZCRkRGRkZIRltvRl13Rl1yRlJGVS1GIzYlRmRyLUY2NjBRKn4mbWludXM7fkYnRjlGO0Y+RkBGQkZERkZGSEZbb0Zdb0Zfb0ZSRlVGXHRGXXgtRiM2JUZhckZieEZkckZneEZqeC1GIzYmLUYjNiUtRiM2JUZnckY1LUYjNiZGZW8tRjY2MEZld0Y5L0Y8RjFGPi9GQUYxRkJGREZGRkgvRktRJ3ByZWZpeEYnL0ZOUS50aGlubWF0aHNwYWNlRicvRlFGXl1sRlJGVS1GIzYjRmFyLUY2NjBGaHdGOUZpXGxGPkZqXGxGQkZERkZGSEZbd0ZdXWxGZ3RGUkZVRmNzRmpwLUYjNiUtRiM2JUZqckY1LUYjNiZGZW9GZ1xsLUYjNiMtRiM2JUZhckZgd0ZcdEZiXWxGY3NGanAtRiM2JS1GIzYlRmVcbEY1LUYjNiUtRiw2JVEkbW9kRidGL0YyRmV1LUZhbzYjLUYjNiUtRiM2JUZnckZgdy1GIzYlRl1zLUY2NjBRIipGJ0Y5RjtGPkZARkJGREZGRkhGSkZdXWxGX11sRlJGVUZqckZoby1GIzYlLUYjNiVGXnRGYnQtRmFvNiMtRiM2JUZedEZidEZhcEZgd0ZmdkZjc0ZqcC1GIzYlRmhdbEY1LUYjNiVGZF5sRmV1LUZhbzYjLUYjNiUtRiM2JUZnckZqW2xGXV9sRmhvRmJfbC1GW3E2JkZdcS9GYXFRJjAuMGVtRidGY3EvRmZxUTZkZWNyZWFzZWluZGVudG5ld2xpbmVGJy1GNjYxUSdlbmR+ZG9GJ0ZnbkZpbkY7Rj5GQEZCRkRGRkZIRltvL0ZORl1wRl9vRlJGVUZjc0ZqcC1GIzYlRmRyRjUtRiM2JUZkckZgdy1GIzYlRl50RmJ0LUZhbzYjLUYjNiVGZHBGYHdGZnZGZGBsRmpgbEZkYGwtRjY2MVEpZW5kfnByb2NGJ0ZnbkZpbkY7Rj5GQEZCRkRGRkZIRltvRl1hbEZfb0ZSRlU=">Zio2J0kiQUc2IkkibkdGJUkibUdGJUkia0dGJUkjSUlHRiU2KEkiaUdGJUkiakdGJUkieEdGJUkieUdGJUkid0dGJUkiYkdGJUYlRiVDJT5GLCkiIiNGKD5GMDcjLUkiJEclKnByb3RlY3RlZEc2JCIiIS9GKzsiIiIsJkYnRj5GPkY+PyhGJUY+Rj5GJTJGLClGNEYmQyY+Ri8pRjQtSS9jb252ZXJ0cmV2ZXJzZUdGJTYlRjBGJ0YpPkYwLUkxaW5jcmVtZW50cmV2ZXJzZUdGJTYkRjBGPz8oRissJkYsRj5GMyEiIkY+RiUyRitGLEMmPkYtJkYkNiNGKz5GLiZGJDYjLCZGK0Y+RjNGPj5GUy1JJG1vZEdGJTYkLCZGLUY+KiZGL0Y+Ri5GPkY+LCYpRjQpRjRGJ0Y+Rj5GPj5GVi1GZW42JCwmRi1GPkZobkZPRmluPkYsLCZGLEY+KUY0LCZGKEY+Rj5GPkY+RiVGJUYl</Equation></Text-field>
</Output>
</Group>
<Group labelreference="L582" drawlabel="true">
<Input>
<Text-field prompt="&gt; " style="Maple Input" layout="Normal">#
# This procedure do a Fermat IFFT round modulo 2^(2^m)+1 on
# array A having 2^n elements. The siccor size is 2^k and
# the weights are get from the conversion of bits in interval II
# from a counter starting with zero and incremented after
# each butterfly sequence.
#

iffftround:=proc(A,n,m,k,II) local i,j,x,y,w,b;
j:=2^k; b:=[0$i=1..m+1];
while j&lt;2^n do
  w:=2^convertreverse(b,m,II); b:=incrementreverse(b,m+1);
  for i from j-2^k while i&lt;j do
    x:=A[i]; y:=A[i+2^k];
    A[i]:=x+y mod (2^(2^m)+1); A[i+2^k]:=(x-y)/w mod (2^(2^m)+1);
  od; j:=j+2^(k+1);
od; end;</Text-field>
</Input>
<Output>
<Text-field style="2D Output" layout="Maple Output"><Equation executable="false" style="2D Output" display="LUklbXJvd0c2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGJzYlLUkjbWlHRiQ2JVEraWZmZnRyb3VuZEYnLyUnaXRhbGljR1EldHJ1ZUYnLyUsbWF0aHZhcmlhbnRHUSdpdGFsaWNGJy1JI21vR0YkNjBRIzo9RicvRjNRJ25vcm1hbEYnLyUmZmVuY2VHUSZmYWxzZUYnLyUqc2VwYXJhdG9yR0Y9LyUpc3RyZXRjaHlHRj0vJSpzeW1tZXRyaWNHRj0vJShsYXJnZW9wR0Y9LyUubW92YWJsZWxpbWl0c0dGPS8lJ2FjY2VudEdGPS8lJWZvcm1HUSZpbmZpeEYnLyUnbHNwYWNlR1EvdGhpY2ttYXRoc3BhY2VGJy8lJ3JzcGFjZUdGTy8lKG1pbnNpemVHUSIxRicvJShtYXhzaXplR1EpaW5maW5pdHlGJy1GIzYpLUY2NjFRJXByb2NGJy8lJWJvbGRHRjEvRjNRJWJvbGRGJ0Y7Rj5GQEZCRkRGRkZIL0ZLUSFGJy9GTlEkMGVtRicvRlFGXm9GUkZVLUkobWZlbmNlZEdGJDYjLUYjNistRiw2JVEiQUYnRi9GMi1GNjYwUSIsRidGOUY7L0Y/RjFGQEZCRkRGRkZIRkpGXW8vRlFRM3Zlcnl0aGlja21hdGhzcGFjZUYnRlJGVS1GLDYlUSJuRidGL0YyRmhvLUYsNiVRIm1GJ0YvRjJGaG8tRiw2JVEia0YnRi9GMkZoby1GLDYlUSNJSUYnRi9GMi1JJ21zcGFjZUdGJDYmLyUnaGVpZ2h0R1EmMC4wZXhGJy8lJndpZHRoR1EmMC4zZW1GJy8lJmRlcHRoR0ZfcS8lKmxpbmVicmVha0dRMWZpcnN0cHJvY25ld2xpbmVGJy1GIzYmLUY2NjFRJmxvY2FsRidGZ25GaW5GO0Y+RkBGQkZERkZGSEZbb0Zdby9GUVEwbWVkaXVtbWF0aHNwYWNlRidGUkZVLUYjNi0tRiw2JVEiaUYnRi9GMkZoby1GLDYlUSJqRidGL0YyRmhvLUYsNiVRInhGJ0YvRjJGaG8tRiw2JVEieUYnRi9GMkZoby1GLDYlUSJ3RidGL0YyRmhvLUYsNiVRImJGJ0YvRjItRjY2MFEiO0YnRjlGO0ZbcEZARkJGREZGRkhGSkZdb0ZQRlJGVUZqcC1GIzYlLUYjNiUtRiM2JUZkckY1LUYjNiUtSSNtbkdGJDYkUSIyRidGOS1GNjYwUSJeRidGOUY7Rj5GQEZCRkRGRkZIRkovRk5RMnZlcnl0aGlubWF0aHNwYWNlRicvRlFGZnRGUkZVRmRwRmNzRmpwLUYjNiUtRiM2JUZgc0Y1LUZhbzYlLUYjNiMtRiM2JS1GLDYlUSRgJGBGJ0YvRjItRjY2MFEwJkFwcGx5RnVuY3Rpb247RidGOUY7Rj5GQEZCRkRGRkZIRkpGXW9GX29GUkZVLUZhbzYjLUYjNiUtRl90NiRRIjBGJ0Y5RmhvLUYjNiVGYXItRjY2MFEiPUYnRjlGO0Y+RkBGQkZERkZGSEZKRk1GUEZSRlUtRiM2JS1GX3Q2JEZURjktRjY2MFEjLi5GJ0Y5RjtGPkZARkJGREZGRkgvRktRKHBvc3RmaXhGJy9GTkZeckZfb0ZSRlUtRiM2JUZhcC1GNjYwUSIrRidGOUY7Rj5GQEZCRkRGRkZIRkpGXXdGXXJGUkZVRmZ2LyUlb3BlbkdRIltGJy8lJmNsb3NlR1EiXUYnRmNzRmpwLUYjNictRiM2JS1GNjYxUSZ3aGlsZUYnRmduRmluRjtGPkZARkJGREZGRkhGW29GXXdGXXJGUkZVLUYjNiVGZHItRjY2MFEiPEYnRjlGO0Y+RkBGQkZERkZGSEZKRk1GUEZSRlUtRiM2JUZedEZidEZecC1GNjYxUSNkb0YnRmduRmluRjtGPkZARkJGREZGRkhGW29GXXdGXXJGUkZVLUZbcTYmRl1xRmBxRmNxL0ZmcVE2aW5jcmVhc2VpbmRlbnRuZXdsaW5lRictRiM2Ji1GIzYlLUYjNiVGXXNGNS1GIzYlRl50RmJ0LUYjNiUtRiw2JVEvY29udmVydHJldmVyc2VGJ0YvRjJGZXUtRmFvNiMtRiM2J0Zgc0Zob0ZhcEZob0ZncEZjc0ZqcC1GIzYlLUYjNiVGYHNGNS1GIzYlLUYsNiVRMWluY3JlbWVudHJldmVyc2VGJ0YvRjJGZXUtRmFvNiMtRiM2JUZgc0Zob0Zed0Zjc0ZqcC1GIzYlLUYjNictRiM2KS1GNjYxUSRmb3JGJ0ZnbkZpbkY7Rj5GQEZCRkRGRkZIRltvRl1vRl1yRlJGVUZhci1GNjYxUSVmcm9tRidGZ25GaW5GO0Y+RkBGQkZERkZGSEZbb0Zdd0ZdckZSRlUtRiM2JUZkci1GNjYwUSp+Jm1pbnVzO35GJ0Y5RjtGPkZARkJGREZGRkhGW29GXW9GX29GUkZVRlx0Rl14LUYjNiVGYXJGYnhGZHJGZ3hGangtRiM2Ji1GIzYlLUYjNiVGZ3JGNS1GIzYmRmVvLUY2NjBGZXdGOS9GPEYxRj4vRkFGMUZCRkRGRkZIL0ZLUSdwcmVmaXhGJy9GTlEudGhpbm1hdGhzcGFjZUYnL0ZRRl5dbEZSRlUtRiM2I0Zhci1GNjYwRmh3RjlGaVxsRj5GalxsRkJGREZGRkhGW3dGXV1sRmd0RlJGVUZjc0ZqcC1GIzYlLUYjNiVGanJGNS1GIzYmRmVvRmdcbC1GIzYjLUYjNiVGYXJGYHdGXHRGYl1sRmNzRmpwLUYjNiUtRiM2JUZlXGxGNS1GIzYlLUYsNiVRJG1vZEYnRi9GMkZldS1GYW82Iy1GIzYlLUYjNiVGZ3JGYHdGanJGaG8tRiM2JS1GIzYlRl50RmJ0LUZhbzYjLUYjNiVGXnRGYnRGYXBGYHdGZnZGY3NGanAtRiM2JUZoXWxGNS1GIzYlRmRebEZldS1GYW82Iy1GIzYlLUYjNiUtRmFvNiMtRiM2Iy1GIzYlRmdyRmpbbEZqci1GNjYwUSIvRidGOUY7Rj5GalxsRkJGREZGRkhGSkZdXWxGX11sRlJGVS1GIzYjRl1zRmhvRl1fbC1GW3E2JkZdcS9GYXFRJjAuMGVtRidGY3EvRmZxUTZkZWNyZWFzZWluZGVudG5ld2xpbmVGJy1GNjYxUSdlbmR+ZG9GJ0ZnbkZpbkY7Rj5GQEZCRkRGRkZIRltvL0ZORl1wRl9vRlJGVUZjc0ZqcC1GIzYlRmRyRjUtRiM2JUZkckZgdy1GIzYlRl50RmJ0LUZhbzYjLUYjNiVGZHBGYHdGZnZGamBsRmBhbEZqYGwtRjY2MVEpZW5kfnByb2NGJ0ZnbkZpbkY7Rj5GQEZCRkRGRkZIRltvRmNhbEZfb0ZSRlU=">Zio2J0kiQUc2IkkibkdGJUkibUdGJUkia0dGJUkjSUlHRiU2KEkiaUdGJUkiakdGJUkieEdGJUkieUdGJUkid0dGJUkiYkdGJUYlRiVDJT5GLCkiIiNGKD5GMDcjLUkiJEclKnByb3RlY3RlZEc2JCIiIS9GKzsiIiIsJkYnRj5GPkY+PyhGJUY+Rj5GJTJGLClGNEYmQyY+Ri8pRjQtSS9jb252ZXJ0cmV2ZXJzZUdGJTYlRjBGJ0YpPkYwLUkxaW5jcmVtZW50cmV2ZXJzZUdGJTYkRjBGPz8oRissJkYsRj5GMyEiIkY+RiUyRitGLEMmPkYtJkYkNiNGKz5GLiZGJDYjLCZGK0Y+RjNGPj5GUy1JJG1vZEdGJTYkLCZGLUY+Ri5GPiwmKUY0KUY0RidGPkY+Rj4+RlYtRmVuNiQqJiwmRi1GPkYuRk9GPkYvRk9GaG4+RiwsJkYsRj4pRjQsJkYoRj5GPkY+Rj5GJUYlRiU=</Equation></Text-field>
</Output>
</Group>
<Group labelreference="L584" drawlabel="true">
<Input>
<Text-field prompt="&gt; " style="Maple Input" layout="Normal">#
# This is the digit-by-digit multiplication modulo 2^(2^m)+1
# of arrays A and B having 2^n elements.
#

fdigmul:=proc(A,B,n,m) local i;
for i from 0 to 2^n-1 do A[i]:=A[i]*B[i] mod (2^(2^m)+1) od;
end;</Text-field>
</Input>
<Output>
<Text-field style="2D Output" layout="Maple Output"><Equation executable="false" style="2D Output" display="LUklbXJvd0c2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGJzYlLUkjbWlHRiQ2JVEoZmRpZ211bEYnLyUnaXRhbGljR1EldHJ1ZUYnLyUsbWF0aHZhcmlhbnRHUSdpdGFsaWNGJy1JI21vR0YkNjBRIzo9RicvRjNRJ25vcm1hbEYnLyUmZmVuY2VHUSZmYWxzZUYnLyUqc2VwYXJhdG9yR0Y9LyUpc3RyZXRjaHlHRj0vJSpzeW1tZXRyaWNHRj0vJShsYXJnZW9wR0Y9LyUubW92YWJsZWxpbWl0c0dGPS8lJ2FjY2VudEdGPS8lJWZvcm1HUSZpbmZpeEYnLyUnbHNwYWNlR1EvdGhpY2ttYXRoc3BhY2VGJy8lJ3JzcGFjZUdGTy8lKG1pbnNpemVHUSIxRicvJShtYXhzaXplR1EpaW5maW5pdHlGJy1GIzYpLUY2NjFRJXByb2NGJy8lJWJvbGRHRjEvRjNRJWJvbGRGJ0Y7Rj5GQEZCRkRGRkZIL0ZLUSFGJy9GTlEkMGVtRicvRlFGXm9GUkZVLUkobWZlbmNlZEdGJDYjLUYjNiktRiw2JVEiQUYnRi9GMi1GNjYwUSIsRidGOUY7L0Y/RjFGQEZCRkRGRkZIRkpGXW8vRlFRM3Zlcnl0aGlja21hdGhzcGFjZUYnRlJGVS1GLDYlUSJCRidGL0YyRmhvLUYsNiVRIm5GJ0YvRjJGaG8tRiw2JVEibUYnRi9GMi1JJ21zcGFjZUdGJDYmLyUnaGVpZ2h0R1EmMC4wZXhGJy8lJndpZHRoR1EmMC4zZW1GJy8lJmRlcHRoR0ZccS8lKmxpbmVicmVha0dRMWZpcnN0cHJvY25ld2xpbmVGJy1GIzYmLUY2NjFRJmxvY2FsRidGZ25GaW5GO0Y+RkBGQkZERkZGSEZbb0Zdby9GUVEwbWVkaXVtbWF0aHNwYWNlRidGUkZVLUYjNiMtRiw2JVEiaUYnRi9GMi1GNjYwUSI7RidGOUY7RltwRkBGQkZERkZGSEZKRl1vRlBGUkZVRmdwLUYjNictRiM2KS1GNjYxUSRmb3JGJ0ZnbkZpbkY7Rj5GQEZCRkRGRkZIRltvRl1vRmpxRlJGVUZeci1GNjYxUSVmcm9tRidGZ25GaW5GO0Y+RkBGQkZERkZGSEZbby9GTkZbckZqcUZSRlUtSSNtbkdGJDYkUSIwRidGOS1GNjYxUSN0b0YnRmduRmluRjtGPkZARkJGREZGRkhGW29GXnNGanFGUkZVLUYjNiUtRiM2JS1GYHM2JFEiMkYnRjktRjY2MFEiXkYnRjlGO0Y+RkBGQkZERkZGSEZKL0ZOUTJ2ZXJ5dGhpbm1hdGhzcGFjZUYnL0ZRRmF0RlJGVUZhcC1GNjYwUSp+Jm1pbnVzO35GJ0Y5RjtGPkZARkJGREZGRkhGW29GXW9GX29GUkZVLUZgczYkRlRGOS1GNjYxUSNkb0YnRmduRmluRjtGPkZARkJGREZGRkhGW29GXnNGanFGUkZVLUZocDYmRmpwRl1xRmBxL0ZjcVE2aW5jcmVhc2VpbmRlbnRuZXdsaW5lRictRiM2JS1GIzYmRmVvLUY2NjBRIltGJ0Y5L0Y8RjFGPi9GQUYxRkJGREZGRkgvRktRJ3ByZWZpeEYnL0ZOUS50aGlubWF0aHNwYWNlRicvRlFGW3ZGUkZVRlxyLUY2NjBRIl1GJ0Y5RmZ1Rj5GZ3VGQkZERkZGSC9GS1EocG9zdGZpeEYnRmp1RmJ0RlJGVUY1LUYjNiUtRiw2JVEkbW9kRidGL0YyLUY2NjBRMCZBcHBseUZ1bmN0aW9uO0YnRjlGO0Y+RkBGQkZERkZGSEZKRl1vRl9vRlJGVS1GYW82Iy1GIzYlLUYjNiVGYXUtRjY2MFEiKkYnRjlGO0Y+RkBGQkZERkZGSEZKRmp1Rlx2RlJGVS1GIzYmRl5wRmN1RlxyRl12RmhvLUYjNiUtRiM2JUZqc0ZddC1GYW82Iy1GIzYlRmpzRl10RmRwLUY2NjBRIitGJ0Y5RjtGPkZARkJGREZGRkhGSkZec0ZqcUZSRlVGZnQtRmhwNiZGanAvRl5xUSYwLjBlbUYnRmBxL0ZjcVE2ZGVjcmVhc2VpbmRlbnRuZXdsaW5lRictRjY2MVEnZW5kfmRvRidGZ25GaW5GO0Y+RkBGQkZERkZGSEZbby9GTkZdcEZfb0ZSRlVGYHgtRjY2MVEpZW5kfnByb2NGJ0ZnbkZpbkY7Rj5GQEZCRkRGRkZIRltvRml4Rl9vRlJGVQ==">Zio2JkkiQUc2IkkiQkdGJUkibkdGJUkibUdGJTYjSSJpR0YlRiVGJT8oRioiIiEiIiIsJikiIiNGJ0YtRi0hIiJJJXRydWVHJSpwcm90ZWN0ZWRHPiZGJEYpLUkkbW9kR0YlNiQqJkY1Ri0mRiZGKUYtLCYpRjApRjBGKEYtRi1GLUYlRiVGJQ==</Equation></Text-field>
</Output>
</Group>
<Group labelreference="L586" drawlabel="true">
<Input>
<Text-field prompt="&gt; " style="Maple Input" layout="Normal">#
# This procedure divides by 2^k modulo 2^(2^m)+1
# all elements of array A having 2^n elements.
#

fshift:=proc(A,n,m,k) local i,r;
r:=1/2^k mod (2^(2^m)+1);
for i from 0 to 2^n-1 do A[i]:=A[i]*r mod (2^(2^m)+1) od;
end;</Text-field>
</Input>
<Output>
<Text-field style="2D Output" layout="Maple Output"><Equation executable="false" style="2D Output" display="LUklbXJvd0c2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGJzYlLUkjbWlHRiQ2JVEnZnNoaWZ0RicvJSdpdGFsaWNHUSV0cnVlRicvJSxtYXRodmFyaWFudEdRJ2l0YWxpY0YnLUkjbW9HRiQ2MFEjOj1GJy9GM1Enbm9ybWFsRicvJSZmZW5jZUdRJmZhbHNlRicvJSpzZXBhcmF0b3JHRj0vJSlzdHJldGNoeUdGPS8lKnN5bW1ldHJpY0dGPS8lKGxhcmdlb3BHRj0vJS5tb3ZhYmxlbGltaXRzR0Y9LyUnYWNjZW50R0Y9LyUlZm9ybUdRJmluZml4RicvJSdsc3BhY2VHUS90aGlja21hdGhzcGFjZUYnLyUncnNwYWNlR0ZPLyUobWluc2l6ZUdRIjFGJy8lKG1heHNpemVHUSlpbmZpbml0eUYnLUYjNiktRjY2MVElcHJvY0YnLyUlYm9sZEdGMS9GM1ElYm9sZEYnRjtGPkZARkJGREZGRkgvRktRIUYnL0ZOUSQwZW1GJy9GUUZeb0ZSRlUtSShtZmVuY2VkR0YkNiMtRiM2KS1GLDYlUSJBRidGL0YyLUY2NjBRIixGJ0Y5RjsvRj9GMUZARkJGREZGRkhGSkZdby9GUVEzdmVyeXRoaWNrbWF0aHNwYWNlRidGUkZVLUYsNiVRIm5GJ0YvRjJGaG8tRiw2JVEibUYnRi9GMkZoby1GLDYlUSJrRidGL0YyLUknbXNwYWNlR0YkNiYvJSdoZWlnaHRHUSYwLjBleEYnLyUmd2lkdGhHUSYwLjNlbUYnLyUmZGVwdGhHRlxxLyUqbGluZWJyZWFrR1ExZmlyc3Rwcm9jbmV3bGluZUYnLUYjNiYtRjY2MVEmbG9jYWxGJ0ZnbkZpbkY7Rj5GQEZCRkRGRkZIRltvRl1vL0ZRUTBtZWRpdW1tYXRoc3BhY2VGJ0ZSRlUtRiM2JS1GLDYlUSJpRidGL0YyRmhvLUYsNiVRInJGJ0YvRjItRjY2MFEiO0YnRjlGO0ZbcEZARkJGREZGRkhGSkZdb0ZQRlJGVUZncC1GIzYkLUYjNiUtRiM2JUZhckY1LUYjNiUtRiw2JVEkbW9kRidGL0YyLUY2NjBRMCZBcHBseUZ1bmN0aW9uO0YnRjlGO0Y+RkBGQkZERkZGSEZKRl1vRl9vRlJGVS1GYW82Iy1GIzYlLUYjNiUtSSNtbkdGJDYkRlRGOS1GNjYwUSIvRidGOUY7Rj4vRkFGMUZCRkRGRkZIRkovRk5RLnRoaW5tYXRoc3BhY2VGJy9GUUZjdEZSRlUtRiM2Iy1GIzYlLUZcdDYkUSIyRidGOS1GNjYwUSJeRidGOUY7Rj5GQEZCRkRGRkZIRkovRk5RMnZlcnl0aGlubWF0aHNwYWNlRicvRlFGYHVGUkZVRmRwRmhvLUYjNiUtRiM2JUZpdEZcdS1GYW82Iy1GIzYlRml0Rlx1RmFwLUY2NjBRIitGJ0Y5RjtGPkZARkJGREZGRkhGSi9GTkZbckZqcUZSRlVGW3RGZHJGZ3AtRiM2Jy1GIzYpLUY2NjFRJGZvckYnRmduRmluRjtGPkZARkJGREZGRkhGW29GXW9GanFGUkZVRl5yLUY2NjFRJWZyb21GJ0ZnbkZpbkY7Rj5GQEZCRkRGRkZIRltvRl12RmpxRlJGVS1GXHQ2JFEiMEYnRjktRjY2MVEjdG9GJ0ZnbkZpbkY7Rj5GQEZCRkRGRkZIRltvRl12RmpxRlJGVS1GIzYlLUYjNiVGaXRGXHVGXnAtRjY2MFEqfiZtaW51czt+RidGOUY7Rj5GQEZCRkRGRkZIRltvRl1vRl9vRlJGVUZbdC1GNjYxUSNkb0YnRmduRmluRjtGPkZARkJGREZGRkhGW29GXXZGanFGUkZVLUZocDYmRmpwRl1xRmBxL0ZjcVE2aW5jcmVhc2VpbmRlbnRuZXdsaW5lRictRiM2JS1GIzYmRmVvLUY2NjBRIltGJ0Y5L0Y8RjFGPkZhdEZCRkRGRkZIL0ZLUSdwcmVmaXhGJ0ZidEZkdEZSRlUtRiM2I0Zeci1GNjYwUSJdRidGOUZjeEY+RmF0RkJGREZGRkgvRktRKHBvc3RmaXhGJ0ZidEZhdUZSRlVGNS1GIzYlRl9zRmJzLUZhbzYjLUYjNiUtRiM2JUZeeC1GNjYwUSIqRidGOUY7Rj5GQEZCRkRGRkZIRkpGYnRGZHRGUkZVRmFyRmhvRmJ1LUZocDYmRmpwL0ZecVEmMC4wZW1GJ0ZgcS9GY3FRNmRlY3JlYXNlaW5kZW50bmV3bGluZUYnLUY2NjFRJ2VuZH5kb0YnRmduRmluRjtGPkZARkJGREZGRkhGW28vRk5GXXBGX29GUkZVRmh5LUY2NjFRKWVuZH5wcm9jRidGZ25GaW5GO0Y+RkBGQkZERkZGSEZbb0ZhekZfb0ZSRlU=">Zio2JkkiQUc2IkkibkdGJUkibUdGJUkia0dGJTYkSSJpR0YlSSJyR0YlRiVGJUMkPkYrLUkkbW9kR0YlNiQqJCkiIiNGKCEiIiwmKUYzKUYzRiciIiJGOEY4PyhGKiIiIUY4LCYpRjNGJkY4RjhGNEkldHJ1ZUclKnByb3RlY3RlZEc+JkYkNiNGKi1GLzYkKiZGQEY4RitGOEY1RiVGJUYl</Equation></Text-field>
</Output>
</Group>
<Group labelreference="L587" drawlabel="true">
<Input>
<Text-field prompt="&gt; " style="Maple Input" layout="Normal">#
# This procedure multiplies by sqrt(2) modulo 2^(2^m)+1
# all odd-indexed elements in the upper half of
# array A having 2^n elements.
#

mulsqrt:=proc(A,n,m) local i,sqrttwo;
sqrttwo:=2^(3*2^(m-2))-2^(2^(m-2));
for i from 2^(n-1)+1 to 2^n-1 by 2 do
  A[i]:=A[i]*sqrttwo mod (2^(2^m)+1)
od; end;</Text-field>
</Input>
<Output>
<Text-field style="2D Output" layout="Maple Output"><Equation executable="false" style="2D Output" display="LUklbXJvd0c2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGJzYlLUkjbWlHRiQ2JVEobXVsc3FydEYnLyUnaXRhbGljR1EldHJ1ZUYnLyUsbWF0aHZhcmlhbnRHUSdpdGFsaWNGJy1JI21vR0YkNjBRIzo9RicvRjNRJ25vcm1hbEYnLyUmZmVuY2VHUSZmYWxzZUYnLyUqc2VwYXJhdG9yR0Y9LyUpc3RyZXRjaHlHRj0vJSpzeW1tZXRyaWNHRj0vJShsYXJnZW9wR0Y9LyUubW92YWJsZWxpbWl0c0dGPS8lJ2FjY2VudEdGPS8lJWZvcm1HUSZpbmZpeEYnLyUnbHNwYWNlR1EvdGhpY2ttYXRoc3BhY2VGJy8lJ3JzcGFjZUdGTy8lKG1pbnNpemVHUSIxRicvJShtYXhzaXplR1EpaW5maW5pdHlGJy1GIzYpLUY2NjFRJXByb2NGJy8lJWJvbGRHRjEvRjNRJWJvbGRGJ0Y7Rj5GQEZCRkRGRkZIL0ZLUSFGJy9GTlEkMGVtRicvRlFGXm9GUkZVLUkobWZlbmNlZEdGJDYjLUYjNictRiw2JVEiQUYnRi9GMi1GNjYwUSIsRidGOUY7L0Y/RjFGQEZCRkRGRkZIRkpGXW8vRlFRM3Zlcnl0aGlja21hdGhzcGFjZUYnRlJGVS1GLDYlUSJuRidGL0YyRmhvLUYsNiVRIm1GJ0YvRjItSSdtc3BhY2VHRiQ2Ji8lJ2hlaWdodEdRJjAuMGV4RicvJSZ3aWR0aEdRJjAuM2VtRicvJSZkZXB0aEdGaXAvJSpsaW5lYnJlYWtHUTFmaXJzdHByb2NuZXdsaW5lRictRiM2Ji1GNjYxUSZsb2NhbEYnRmduRmluRjtGPkZARkJGREZGRkhGW29GXW8vRlFRMG1lZGl1bW1hdGhzcGFjZUYnRlJGVS1GIzYlLUYsNiVRImlGJ0YvRjJGaG8tRiw2JVEoc3FydHR3b0YnRi9GMi1GNjYwUSI7RidGOUY7RltwRkBGQkZERkZGSEZKRl1vRlBGUkZVRmRwLUYjNiQtRiM2JS1GIzYlRl5yRjUtRiM2JS1GIzYlLUkjbW5HRiQ2JFEiMkYnRjktRjY2MFEiXkYnRjlGO0Y+RkBGQkZERkZGSEZKL0ZOUTJ2ZXJ5dGhpbm1hdGhzcGFjZUYnL0ZRRmZzRlJGVS1GYW82Iy1GIzYlLUZfczYkUSIzRidGOS1GNjYwUSIqRidGOUY7Rj5GQEZCRkRGRkZIRkovRk5RLnRoaW5tYXRoc3BhY2VGJy9GUUZjdEZSRlUtRiM2JUZec0Zicy1GYW82Iy1GIzYlRmFwLUY2NjBRKn4mbWludXM7fkYnRjlGO0Y+RkBGQkZERkZGSEZbb0Zdb0Zfb0ZSRlVGXnNGW3UtRiM2JUZec0Zicy1GYW82I0ZldEZhckZkcC1GIzYnLUYjNistRjY2MVEkZm9yRidGZ25GaW5GO0Y+RkBGQkZERkZGSEZbb0Zdb0ZncUZSRlVGW3ItRjY2MVElZnJvbUYnRmduRmluRjtGPkZARkJGREZGRkhGW28vRk5GaHFGZ3FGUkZVLUYjNiUtRiM2JUZec0Zicy1GYW82Iy1GIzYlRl5wRlt1LUZfczYkRlRGOS1GNjYwUSIrRidGOUY7Rj5GQEZCRkRGRkZIRkpGXHZGZ3FGUkZVRmV2LUY2NjFRI2J5RidGZ25GaW5GO0Y+RkBGQkZERkZGSEZbb0ZcdkZncUZSRlVGXnMtRjY2MVEjdG9GJ0ZnbkZpbkY7Rj5GQEZCRkRGRkZIRltvRlx2RmdxRlJGVS1GIzYlLUYjNiVGXnNGYnNGXnBGW3VGZXYtRjY2MVEjZG9GJ0ZnbkZpbkY7Rj5GQEZCRkRGRkZIRltvRlx2RmdxRlJGVS1GZXA2JkZncEZqcEZdcS9GYHFRNmluY3JlYXNlaW5kZW50bmV3bGluZUYnLUYjNiUtRiM2JkZlby1GNjYwUSJbRidGOS9GPEYxRj4vRkFGMUZCRkRGRkZIL0ZLUSdwcmVmaXhGJ0ZidEZkdEZSRlUtRiM2I0Zbci1GNjYwUSJdRidGOUZieEY+RmN4RkJGREZGRkgvRktRKHBvc3RmaXhGJ0ZidEZnc0ZSRlVGNS1GIzYlLUYsNiVRJG1vZEYnRi9GMi1GNjYwUTAmQXBwbHlGdW5jdGlvbjtGJ0Y5RjtGPkZARkJGREZGRkhGSkZdb0Zfb0ZSRlUtRmFvNiMtRiM2JS1GIzYlRl14Rl90Rl5yRmhvLUYjNiUtRiM2JUZec0Zicy1GYW82Iy1GIzYlRl5zRmJzRmFwRmd2RmV2LUZlcDYmRmdwL0ZbcVEmMC4wZW1GJ0ZdcS9GYHFRNmRlY3JlYXNlaW5kZW50bmV3bGluZUYnLUY2NjFRJ2VuZH5kb0YnRmduRmluRjtGPkZARkJGREZGRkhGW28vRk5GXXBGX29GUkZVRmN6LUY2NjFRKWVuZH5wcm9jRidGZ25GaW5GO0Y+RkBGQkZERkZGSEZbb0ZcW2xGX29GUkZV">Zio2JUkiQUc2IkkibkdGJUkibUdGJTYkSSJpR0YlSShzcXJ0dHdvR0YlRiVGJUMkPkYqLCYpIiIjLCQqJiIiJCIiIilGLywmRidGM0YvISIiRjNGM0YzKUYvRjRGNj8oRiksJilGLywmRiZGM0YzRjZGM0YzRjNGLywmKUYvRiZGM0YzRjZJJXRydWVHJSpwcm90ZWN0ZWRHPiZGJDYjRiktSSRtb2RHRiU2JComRkFGM0YqRjMsJilGLylGL0YnRjNGM0YzRiVGJUYl</Equation></Text-field>
</Output>
</Group>
<Group labelreference="L595" drawlabel="true">
<Input>
<Text-field prompt="&gt; " style="Maple Input" layout="Normal">#
# This procedure divides by sqrt(2) modulo 2^(2^m)+1
# all odd-indexed elements in the upper half of
# array A having 2^n elements.
#

divsqrt:=proc(A,n,m) local i,sqrthalf;
sqrthalf:=1/(2^(3*2^(m-2))-2^(2^(m-2))) mod (2^(2^m)+1);
for i from 2^(n-1)+1 to 2^n-1 by 2 do
  A[i]:=A[i]*sqrthalf mod (2^(2^m)+1)
od; end;</Text-field>
</Input>
<Output>
<Text-field style="2D Output" layout="Maple Output"><Equation executable="false" style="2D Output" display="LUklbXJvd0c2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGJzYlLUkjbWlHRiQ2JVEoZGl2c3FydEYnLyUnaXRhbGljR1EldHJ1ZUYnLyUsbWF0aHZhcmlhbnRHUSdpdGFsaWNGJy1JI21vR0YkNjBRIzo9RicvRjNRJ25vcm1hbEYnLyUmZmVuY2VHUSZmYWxzZUYnLyUqc2VwYXJhdG9yR0Y9LyUpc3RyZXRjaHlHRj0vJSpzeW1tZXRyaWNHRj0vJShsYXJnZW9wR0Y9LyUubW92YWJsZWxpbWl0c0dGPS8lJ2FjY2VudEdGPS8lJWZvcm1HUSZpbmZpeEYnLyUnbHNwYWNlR1EvdGhpY2ttYXRoc3BhY2VGJy8lJ3JzcGFjZUdGTy8lKG1pbnNpemVHUSIxRicvJShtYXhzaXplR1EpaW5maW5pdHlGJy1GIzYpLUY2NjFRJXByb2NGJy8lJWJvbGRHRjEvRjNRJWJvbGRGJ0Y7Rj5GQEZCRkRGRkZIL0ZLUSFGJy9GTlEkMGVtRicvRlFGXm9GUkZVLUkobWZlbmNlZEdGJDYjLUYjNictRiw2JVEiQUYnRi9GMi1GNjYwUSIsRidGOUY7L0Y/RjFGQEZCRkRGRkZIRkpGXW8vRlFRM3Zlcnl0aGlja21hdGhzcGFjZUYnRlJGVS1GLDYlUSJuRidGL0YyRmhvLUYsNiVRIm1GJ0YvRjItSSdtc3BhY2VHRiQ2Ji8lJ2hlaWdodEdRJjAuMGV4RicvJSZ3aWR0aEdRJjAuM2VtRicvJSZkZXB0aEdGaXAvJSpsaW5lYnJlYWtHUTFmaXJzdHByb2NuZXdsaW5lRictRiM2Ji1GNjYxUSZsb2NhbEYnRmduRmluRjtGPkZARkJGREZGRkhGW29GXW8vRlFRMG1lZGl1bW1hdGhzcGFjZUYnRlJGVS1GIzYlLUYsNiVRImlGJ0YvRjJGaG8tRiw2JVEpc3FydGhhbGZGJ0YvRjItRjY2MFEiO0YnRjlGO0ZbcEZARkJGREZGRkhGSkZdb0ZQRlJGVUZkcC1GIzYkLUYjNiUtRiM2JUZeckY1LUYjNiUtRiw2JVEkbW9kRidGL0YyLUY2NjBRMCZBcHBseUZ1bmN0aW9uO0YnRjlGO0Y+RkBGQkZERkZGSEZKRl1vRl9vRlJGVS1GYW82Iy1GIzYlLUYjNiUtSSNtbkdGJDYkRlRGOS1GNjYwUSIvRidGOUY7Rj4vRkFGMUZCRkRGRkZIRkovRk5RLnRoaW5tYXRoc3BhY2VGJy9GUUZgdEZSRlUtRmFvNiMtRiM2Iy1GIzYlLUYjNiUtRmlzNiRRIjJGJ0Y5LUY2NjBRIl5GJ0Y5RjtGPkZARkJGREZGRkhGSi9GTlEydmVyeXRoaW5tYXRoc3BhY2VGJy9GUUZhdUZSRlUtRmFvNiMtRiM2JS1GaXM2JFEiM0YnRjktRjY2MFEiKkYnRjlGO0Y+RkBGQkZERkZGSEZKRl90RmF0RlJGVS1GIzYlRmp0Rl11LUZhbzYjLUYjNiVGYXAtRjY2MFEqfiZtaW51czt+RidGOUY7Rj5GQEZCRkRGRkZIRltvRl1vRl9vRlJGVUZqdEZjdi1GIzYlRmp0Rl11LUZhbzYjRl12RmhvLUYjNiUtRiM2JUZqdEZddS1GYW82Iy1GIzYlRmp0Rl11RmFwLUY2NjBRIitGJ0Y5RjtGPkZARkJGREZGRkhGSi9GTkZocUZncUZSRlVGaHNGYXJGZHAtRiM2Jy1GIzYrLUY2NjFRJGZvckYnRmduRmluRjtGPkZARkJGREZGRkhGW29GXW9GZ3FGUkZVRltyLUY2NjFRJWZyb21GJ0ZnbkZpbkY7Rj5GQEZCRkRGRkZIRltvRmV3RmdxRlJGVS1GIzYlLUYjNiVGanRGXXUtRmFvNiMtRiM2JUZecEZjdkZoc0Zid0Zocy1GNjYxUSNieUYnRmduRmluRjtGPkZARkJGREZGRkhGW29GZXdGZ3FGUkZVRmp0LUY2NjFRI3RvRidGZ25GaW5GO0Y+RkBGQkZERkZGSEZbb0Zld0ZncUZSRlUtRiM2JS1GIzYlRmp0Rl11Rl5wRmN2RmhzLUY2NjFRI2RvRidGZ25GaW5GO0Y+RkBGQkZERkZGSEZbb0Zld0ZncUZSRlUtRmVwNiZGZ3BGanBGXXEvRmBxUTZpbmNyZWFzZWluZGVudG5ld2xpbmVGJy1GIzYlLUYjNiZGZW8tRjY2MFEiW0YnRjkvRjxGMUY+Rl50RkJGREZGRkgvRktRJ3ByZWZpeEYnRl90RmF0RlJGVS1GIzYjRltyLUY2NjBRIl1GJ0Y5RmB6Rj5GXnRGQkZERkZGSC9GS1EocG9zdGZpeEYnRl90RmJ1RlJGVUY1LUYjNiVGXHNGX3MtRmFvNiMtRiM2JS1GIzYlRlt6Rmp1Rl5yRmhvRmp2LUZlcDYmRmdwL0ZbcVEmMC4wZW1GJ0ZdcS9GYHFRNmRlY3JlYXNlaW5kZW50bmV3bGluZUYnLUY2NjFRJ2VuZH5kb0YnRmduRmluRjtGPkZARkJGREZGRkhGW28vRk5GXXBGX29GUkZVRmJbbC1GNjYxUSllbmR+cHJvY0YnRmduRmluRjtGPkZARkJGREZGRkhGW29GW1xsRl9vRlJGVQ==">Zio2JUkiQUc2IkkibkdGJUkibUdGJTYkSSJpR0YlSSlzcXJ0aGFsZkdGJUYlRiVDJD5GKi1JJG1vZEdGJTYkKiQsJikiIiMsJComIiIkIiIiKUYzLCZGJ0Y3RjMhIiJGN0Y3RjcpRjNGOEY6RjosJilGMylGM0YnRjdGN0Y3PyhGKSwmKUYzLCZGJkY3RjdGOkY3RjdGN0YzLCYpRjNGJkY3RjdGOkkldHJ1ZUclKnByb3RlY3RlZEc+JkYkNiNGKS1GLjYkKiZGSEY3RipGN0Y8RiVGJUYl</Equation></Text-field>
</Output>
</Group>
<Group labelreference="L589" drawlabel="true">
<Input>
<Text-field prompt="&gt; " style="Maple Input" layout="Normal">#
# This procedure do Fermat FFT modulo 2^(2^m)+1
# for array A having 2^n elements.
#

ffft:=proc(A,n,m) local i;
for i from 0 to n-2 do ffftround(A,n,m,n-1-i,1..i) od;
if m&gt;=n-1 then
  ffftround(A,n,m,0,1..n-1)
else
  mulsqrt(A,n,m); ffftround(A,n,m,0,1..n-2)
fi; end;</Text-field>
</Input>
<Output>
<Text-field style="2D Output" layout="Maple Output"><Equation executable="false" style="2D Output" display="LUklbXJvd0c2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGJzYlLUkjbWlHRiQ2JVElZmZmdEYnLyUnaXRhbGljR1EldHJ1ZUYnLyUsbWF0aHZhcmlhbnRHUSdpdGFsaWNGJy1JI21vR0YkNjBRIzo9RicvRjNRJ25vcm1hbEYnLyUmZmVuY2VHUSZmYWxzZUYnLyUqc2VwYXJhdG9yR0Y9LyUpc3RyZXRjaHlHRj0vJSpzeW1tZXRyaWNHRj0vJShsYXJnZW9wR0Y9LyUubW92YWJsZWxpbWl0c0dGPS8lJ2FjY2VudEdGPS8lJWZvcm1HUSZpbmZpeEYnLyUnbHNwYWNlR1EvdGhpY2ttYXRoc3BhY2VGJy8lJ3JzcGFjZUdGTy8lKG1pbnNpemVHUSIxRicvJShtYXhzaXplR1EpaW5maW5pdHlGJy1GIzYpLUY2NjFRJXByb2NGJy8lJWJvbGRHRjEvRjNRJWJvbGRGJ0Y7Rj5GQEZCRkRGRkZIL0ZLUSFGJy9GTlEkMGVtRicvRlFGXm9GUkZVLUkobWZlbmNlZEdGJDYjLUYjNictRiw2JVEiQUYnRi9GMi1GNjYwUSIsRidGOUY7L0Y/RjFGQEZCRkRGRkZIRkpGXW8vRlFRM3Zlcnl0aGlja21hdGhzcGFjZUYnRlJGVS1GLDYlUSJuRidGL0YyRmhvLUYsNiVRIm1GJ0YvRjItSSdtc3BhY2VHRiQ2Ji8lJ2hlaWdodEdRJjAuMGV4RicvJSZ3aWR0aEdRJjAuM2VtRicvJSZkZXB0aEdGaXAvJSpsaW5lYnJlYWtHUTFmaXJzdHByb2NuZXdsaW5lRictRiM2Ji1GNjYxUSZsb2NhbEYnRmduRmluRjtGPkZARkJGREZGRkhGW29GXW8vRlFRMG1lZGl1bW1hdGhzcGFjZUYnRlJGVS1GIzYjLUYsNiVRImlGJ0YvRjItRjY2MFEiO0YnRjlGO0ZbcEZARkJGREZGRkhGSkZdb0ZQRlJGVUZkcC1GIzYkLUYjNiUtRiM2Jy1GIzYpLUY2NjFRJGZvckYnRmduRmluRjtGPkZARkJGREZGRkhGW29GXW9GZ3FGUkZVRltyLUY2NjFRJWZyb21GJ0ZnbkZpbkY7Rj5GQEZCRkRGRkZIRltvL0ZORmhxRmdxRlJGVS1JI21uR0YkNiRRIjBGJ0Y5LUY2NjFRI3RvRidGZ25GaW5GO0Y+RkBGQkZERkZGSEZbb0Zfc0ZncUZSRlUtRiM2JUZecC1GNjYwUSp+Jm1pbnVzO35GJ0Y5RjtGPkZARkJGREZGRkhGW29GXW9GX29GUkZVLUZhczYkUSIyRidGOS1GNjYxUSNkb0YnRmduRmluRjtGPkZARkJGREZGRkhGW29GX3NGZ3FGUkZVLUZlcDYmRmdwRmpwRl1xL0ZgcVE2aW5jcmVhc2VpbmRlbnRuZXdsaW5lRictRiM2JS1GLDYlUSpmZmZ0cm91bmRGJ0YvRjItRjY2MFEwJkFwcGx5RnVuY3Rpb247RidGOUY7Rj5GQEZCRkRGRkZIRkpGXW9GX29GUkZVLUZhbzYjLUYjNitGZW9GaG9GXnBGaG9GYXBGaG8tRiM2J0ZecEZpcy1GYXM2JEZURjlGaXNGW3JGaG8tRiM2JUZkdS1GNjYwUSMuLkYnRjlGO0Y+RkBGQkZERkZGSC9GS1EocG9zdGZpeEYnRl9zRl9vRlJGVUZbci1GZXA2JkZncC9GW3FRJjAuMGVtRidGXXEvRmBxUTZkZWNyZWFzZWluZGVudG5ld2xpbmVGJy1GNjYxUSdlbmR+ZG9GJ0ZnbkZpbkY7Rj5GQEZCRkRGRkZIRltvL0ZORl1wRl9vRlJGVUZeckZkcC1GIzYlLUYjNigtRjY2MVEjaWZGJ0ZnbkZpbkY7Rj5GQEZCRkRGRkZIRltvRl1vRmdxRlJGVS1GIzYlLUYjNiVGXnBGaXNGZHUtRjY2MFEjPD1GJ0Y5RjtGPkZARkJGREZGRkhGSkZNRlBGUkZVRmFwLUY2NjFRJXRoZW5GJ0ZnbkZpbkY7Rj5GQEZCRkRGRkZIRltvRmZ2Rl9vRlJGVUZidC1GIzYlRmh0Rlt1LUZhbzYjLUYjNitGZW9GaG9GXnBGaG9GYXBGaG9GYHNGaG8tRiM2JUZkdUZodUZgd0Zddi1GIzYmLUY2NjFRJWVsc2VGJ0ZnbkZpbkY7Rj5GQEZCRkRGRkZIRltvRmZ2Rl9vRlJGVUZidC1GIzYkLUYjNiUtRiM2JS1GLDYlUShtdWxzcXJ0RidGL0YyRlt1RmBvRl5yRmRwLUYjNiVGaHRGW3UtRmFvNiMtRiM2K0Zlb0Zob0ZecEZob0ZhcEZob0Zgc0Zoby1GIzYlRmR1Rmh1RmdzRl12LUY2NjFRJ2VuZH5pZkYnRmduRmluRjtGPkZARkJGREZGRkhGW29GZnZGX29GUkZVRl12LUY2NjFRKWVuZH5wcm9jRidGZ25GaW5GO0Y+RkBGQkZERkZGSEZbb0ZmdkZfb0ZSRlU=">Zio2JUkiQUc2IkkibkdGJUkibUdGJTYjSSJpR0YlRiVGJUMkPyhGKSIiISIiIiwmRiZGLSIiIyEiIkkldHJ1ZUclKnByb3RlY3RlZEctSSpmZmZ0cm91bmRHRiU2J0YkRiZGJywoRiZGLUYtRjBGKUYwO0YtRilAJTEsJkYmRi1GLUYwRictRjQ2J0YkRiZGJ0YsO0YtRjpDJC1JKG11bHNxcnRHRiVGIy1GNDYnRiRGJkYnRiw7Ri1GLkYlRiVGJQ==</Equation></Text-field>
</Output>
</Group>
<Group labelreference="L591" drawlabel="true">
<Input>
<Text-field prompt="&gt; " style="Maple Input" layout="Normal">#
# This procedure do Fermat IFFT modulo 2^(2^m)+1
# for array A having 2^n elements.
#

iffft:=proc(A,n,m) local i;
if m&gt;=n-1 then
  iffftround(A,n,m,0,1..n-1)
else
  iffftround(A,n,m,0,1..n-2); divsqrt(A,n,m)
fi;
for i from n-2 to 0 by -1 do iffftround(A,n,m,n-1-i,1..i) od;
end;</Text-field>
</Input>
<Output>
<Text-field style="2D Output" layout="Maple Output"><Equation executable="false" style="2D Output" display="LUklbXJvd0c2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGJzYlLUkjbWlHRiQ2JVEmaWZmZnRGJy8lJ2l0YWxpY0dRJXRydWVGJy8lLG1hdGh2YXJpYW50R1EnaXRhbGljRictSSNtb0dGJDYwUSM6PUYnL0YzUSdub3JtYWxGJy8lJmZlbmNlR1EmZmFsc2VGJy8lKnNlcGFyYXRvckdGPS8lKXN0cmV0Y2h5R0Y9LyUqc3ltbWV0cmljR0Y9LyUobGFyZ2VvcEdGPS8lLm1vdmFibGVsaW1pdHNHRj0vJSdhY2NlbnRHRj0vJSVmb3JtR1EmaW5maXhGJy8lJ2xzcGFjZUdRL3RoaWNrbWF0aHNwYWNlRicvJSdyc3BhY2VHRk8vJShtaW5zaXplR1EiMUYnLyUobWF4c2l6ZUdRKWluZmluaXR5RictRiM2KS1GNjYxUSVwcm9jRicvJSVib2xkR0YxL0YzUSVib2xkRidGO0Y+RkBGQkZERkZGSC9GS1EhRicvRk5RJDBlbUYnL0ZRRl5vRlJGVS1JKG1mZW5jZWRHRiQ2Iy1GIzYnLUYsNiVRIkFGJ0YvRjItRjY2MFEiLEYnRjlGOy9GP0YxRkBGQkZERkZGSEZKRl1vL0ZRUTN2ZXJ5dGhpY2ttYXRoc3BhY2VGJ0ZSRlUtRiw2JVEibkYnRi9GMkZoby1GLDYlUSJtRidGL0YyLUknbXNwYWNlR0YkNiYvJSdoZWlnaHRHUSYwLjBleEYnLyUmd2lkdGhHUSYwLjNlbUYnLyUmZGVwdGhHRmlwLyUqbGluZWJyZWFrR1ExZmlyc3Rwcm9jbmV3bGluZUYnLUYjNiYtRjY2MVEmbG9jYWxGJ0ZnbkZpbkY7Rj5GQEZCRkRGRkZIRltvRl1vL0ZRUTBtZWRpdW1tYXRoc3BhY2VGJ0ZSRlUtRiM2Iy1GLDYlUSJpRidGL0YyLUY2NjBRIjtGJ0Y5RjtGW3BGQEZCRkRGRkZIRkpGXW9GUEZSRlVGZHAtRiM2JC1GIzYlLUYjNiUtRiM2KC1GNjYxUSNpZkYnRmduRmluRjtGPkZARkJGREZGRkhGW29GXW9GZ3FGUkZVLUYjNiUtRiM2JUZecC1GNjYwUSp+Jm1pbnVzO35GJ0Y5RjtGPkZARkJGREZGRkhGW29GXW9GX29GUkZVLUkjbW5HRiQ2JEZURjktRjY2MFEjPD1GJ0Y5RjtGPkZARkJGREZGRkhGSkZNRlBGUkZVRmFwLUY2NjFRJXRoZW5GJ0ZnbkZpbkY7Rj5GQEZCRkRGRkZIRltvL0ZORl1wRl9vRlJGVS1GZXA2JkZncEZqcEZdcS9GYHFRNmluY3JlYXNlaW5kZW50bmV3bGluZUYnLUYjNiUtRiw2JVEraWZmZnRyb3VuZEYnRi9GMi1GNjYwUTAmQXBwbHlGdW5jdGlvbjtGJ0Y5RjtGPkZARkJGREZGRkhGSkZdb0Zfb0ZSRlUtRmFvNiMtRiM2K0Zlb0Zob0ZecEZob0ZhcEZoby1GZHM2JFEiMEYnRjlGaG8tRiM2JUZjcy1GNjYwUSMuLkYnRjlGO0Y+RkBGQkZERkZGSC9GS1EocG9zdGZpeEYnL0ZORmhxRl9vRlJGVUZecy1GZXA2JkZncC9GW3FRJjAuMGVtRidGXXEvRmBxUTZkZWNyZWFzZWluZGVudG5ld2xpbmVGJy1GIzYmLUY2NjFRJWVsc2VGJ0ZnbkZpbkY7Rj5GQEZCRkRGRkZIRltvRlx0Rl9vRlJGVUZddC1GIzYkLUYjNiUtRiM2JUZjdEZmdC1GYW82Iy1GIzYrRmVvRmhvRl5wRmhvRmFwRmhvRl11RmhvLUYjNiVGY3NGYnUtRiM2JUZecEZgcy1GZHM2JFEiMkYnRjlGXnJGZHAtRiM2JS1GLDYlUShkaXZzcXJ0RidGL0YyRmZ0RmBvRmh1LUY2NjFRJ2VuZH5pZkYnRmduRmluRjtGPkZARkJGREZGRkhGW29GXHRGX29GUkZVRl5yRmRwLUYjNictRiM2Ky1GNjYxUSRmb3JGJ0ZnbkZpbkY7Rj5GQEZCRkRGRkZIRltvRl1vRmdxRlJGVUZbci1GNjYxUSVmcm9tRidGZ25GaW5GO0Y+RkBGQkZERkZGSEZbb0ZndUZncUZSRlVGX3ctRjY2MVEjYnlGJ0ZnbkZpbkY7Rj5GQEZCRkRGRkZIRltvRmd1RmdxRlJGVS1GIzYkLUY2NjBRKCZtaW51cztGJ0Y5RjtGPkZARkJGREZGRkhGW29GXW9GX29GUkZVRmNzLUY2NjFRI3RvRidGZ25GaW5GO0Y+RkBGQkZERkZGSEZbb0ZndUZncUZSRlVGXXUtRjY2MVEjZG9GJ0ZnbkZpbkY7Rj5GQEZCRkRGRkZIRltvRmd1RmdxRlJGVUZddC1GIzYlRmN0RmZ0LUZhbzYjLUYjNitGZW9GaG9GXnBGaG9GYXBGaG8tRiM2J0ZecEZgc0Zjc0Zgc0ZbckZoby1GIzYlRmNzRmJ1RltyRmh1LUY2NjFRJ2VuZH5kb0YnRmduRmluRjtGPkZARkJGREZGRkhGW29GXHRGX29GUkZVRmh1LUY2NjFRKWVuZH5wcm9jRidGZ25GaW5GO0Y+RkBGQkZERkZGSEZbb0ZcdEZfb0ZSRlU=">Zio2JUkiQUc2IkkibkdGJUkibUdGJTYjSSJpR0YlRiVGJUMkQCUxLCZGJiIiIkYuISIiRictSStpZmZmdHJvdW5kR0YlNidGJEYmRiciIiE7Ri5GLUMkLUYxNidGJEYmRidGMztGLiwmRiZGLiIiI0YvLUkoZGl2c3FydEdGJUYjPyhGKUY5Ri9GM0kldHJ1ZUclKnByb3RlY3RlZEctRjE2J0YkRiZGJywoRiZGLkYuRi9GKUYvO0YuRilGJUYlRiU=</Equation></Text-field>
</Output>
</Group>
<Group labelreference="L600" drawlabel="true">
<Input>
<Text-field prompt="&gt; " style="Maple Input" layout="Normal">#
# This procedure do multiplication or squaring using Fermat FFT
# and IFFT modulo 2^(2^m)+1 for array having 2^n elements.
# 2^(m-1)-k bits is in one array element.
#

ffftmul:=proc(a,b,n,m) local i,c,A,B;
if a=b then
  A:=Array(0..2^n-1,convert(a,base,2^(2^(m-1)-k)));
  ffft(A,n,m);
  fdigmul(A,A,n,m);
  iffft(A,n,m);
  fshift(A,n,m,n);
  c:=0; for i from 0 to 2^n-1 do c:=c+(2^(2^(m-1)-k))^i*A[i] od;
else
  A:=Array(0..2^n-1,convert(a,base,2^(2^(m-1)-k)));
  ffft(A,n,m);
  B:=Array(0..2^n-1,convert(b,base,2^(2^(m-1)-k)));
  ffft(B,n,m);
  fdigmul(A,B,n,m);
  iffft(A,n,m);
  fshift(A,n,m,n);
  c:=0; for i from 0 to 2^n-1 do c:=c+(2^(2^(m-1)-k))^i*A[i] od;
fi; c; end;</Text-field>
</Input>
<Output>
<Text-field style="2D Output" layout="Maple Output"><Equation executable="false" style="2D Output" display="LUklbXJvd0c2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGJzYlLUkjbWlHRiQ2JVEoZmZmdG11bEYnLyUnaXRhbGljR1EldHJ1ZUYnLyUsbWF0aHZhcmlhbnRHUSdpdGFsaWNGJy1JI21vR0YkNjBRIzo9RicvRjNRJ25vcm1hbEYnLyUmZmVuY2VHUSZmYWxzZUYnLyUqc2VwYXJhdG9yR0Y9LyUpc3RyZXRjaHlHRj0vJSpzeW1tZXRyaWNHRj0vJShsYXJnZW9wR0Y9LyUubW92YWJsZWxpbWl0c0dGPS8lJ2FjY2VudEdGPS8lJWZvcm1HUSZpbmZpeEYnLyUnbHNwYWNlR1EvdGhpY2ttYXRoc3BhY2VGJy8lJ3JzcGFjZUdGTy8lKG1pbnNpemVHUSIxRicvJShtYXhzaXplR1EpaW5maW5pdHlGJy1GIzYpLUY2NjFRJXByb2NGJy8lJWJvbGRHRjEvRjNRJWJvbGRGJ0Y7Rj5GQEZCRkRGRkZIL0ZLUSFGJy9GTlEkMGVtRicvRlFGXm9GUkZVLUkobWZlbmNlZEdGJDYjLUYjNiktRiw2JVEiYUYnRi9GMi1GNjYwUSIsRidGOUY7L0Y/RjFGQEZCRkRGRkZIRkpGXW8vRlFRM3Zlcnl0aGlja21hdGhzcGFjZUYnRlJGVS1GLDYlUSJiRidGL0YyRmhvLUYsNiVRIm5GJ0YvRjJGaG8tRiw2JVEibUYnRi9GMi1JJ21zcGFjZUdGJDYmLyUnaGVpZ2h0R1EmMC4wZXhGJy8lJndpZHRoR1EmMC4zZW1GJy8lJmRlcHRoR0ZccS8lKmxpbmVicmVha0dRMWZpcnN0cHJvY25ld2xpbmVGJy1GIzYmLUY2NjFRJmxvY2FsRidGZ25GaW5GO0Y+RkBGQkZERkZGSEZbb0Zdby9GUVEwbWVkaXVtbWF0aHNwYWNlRidGUkZVLUYjNiktRiw2JVEiaUYnRi9GMkZoby1GLDYlUSJjRidGL0YyRmhvLUYsNiVRIkFGJ0YvRjJGaG8tRiw2JVEiQkYnRi9GMi1GNjYwUSI7RidGOUY7RltwRkBGQkZERkZGSEZKRl1vRlBGUkZVRmdwLUYjNiQtRiM2JS1GIzYlLUYjNigtRjY2MVEjaWZGJ0ZnbkZpbkY7Rj5GQEZCRkRGRkZIRltvRl1vRmpxRlJGVS1GIzYlRmVvLUY2NjBRIj1GJ0Y5RjtGPkZARkJGREZGRkhGSkZNRlBGUkZVRl5wLUY2NjFRJXRoZW5GJ0ZnbkZpbkY7Rj5GQEZCRkRGRkZIRltvL0ZORl1wRl9vRlJGVS1GaHA2JkZqcEZdcUZgcS9GY3FRNmluY3JlYXNlaW5kZW50bmV3bGluZUYnLUYjNiktRiM2JS1GIzYlRmRyRjUtRiM2JS1GLDYlUSZBcnJheUYnRi9GMi1GNjYwUTAmQXBwbHlGdW5jdGlvbjtGJ0Y5RjtGPkZARkJGREZGRkhGSkZdb0Zfb0ZSRlUtRmFvNiMtRiM2JS1GIzYlLUkjbW5HRiQ2JFEiMEYnRjktRjY2MFEjLi5GJ0Y5RjtGPkZARkJGREZGRkgvRktRKHBvc3RmaXhGJy9GTkZbckZfb0ZSRlUtRiM2JS1GIzYlLUZqdTYkUSIyRidGOS1GNjYwUSJeRidGOUY7Rj5GQEZCRkRGRkZIRkovRk5RMnZlcnl0aGlubWF0aHNwYWNlRicvRlFGXndGUkZVRmFwLUY2NjBRKn4mbWludXM7fkYnRjlGO0Y+RkBGQkZERkZGSEZbb0Zdb0Zfb0ZSRlUtRmp1NiRGVEY5RmhvLUYjNiUtRiw2JVEoY29udmVydEYnRi9GMkZgdS1GYW82Iy1GIzYnRmVvRmhvLUYsNiVRJWJhc2VGJ0YvRjJGaG8tRiM2JUZndkZqdi1GYW82Iy1GIzYlLUYjNiVGZ3ZGanYtRmFvNiMtRiM2JUZkcEZgd0Zjd0Zgdy1GLDYlUSJrRidGL0YyRmpyRmdwLUYjNiUtRiM2JS1GLDYlUSVmZmZ0RidGL0YyRmB1LUZhbzYjLUYjNidGZHJGaG9GYXBGaG9GZHBGanJGZ3AtRiM2JS1GIzYlLUYsNiVRKGZkaWdtdWxGJ0YvRjJGYHUtRmFvNiMtRiM2KUZkckZob0ZkckZob0ZhcEZob0ZkcEZqckZncC1GIzYlLUYjNiUtRiw2JVEmaWZmZnRGJ0YvRjJGYHVGZ3lGanJGZ3AtRiM2JS1GIzYlLUYsNiVRJ2ZzaGlmdEYnRi9GMkZgdS1GYW82Iy1GIzYpRmRyRmhvRmFwRmhvRmRwRmhvRmFwRmpyRmdwLUYjNiUtRiM2JUZhckY1Rml1RmpyRmdwLUYjNictRiM2KS1GNjYxUSRmb3JGJ0ZnbkZpbkY7Rj5GQEZCRkRGRkZIRltvRl1vRmpxRlJGVUZeci1GNjYxUSVmcm9tRidGZ25GaW5GO0Y+RkBGQkZERkZGSEZbb0ZidkZqcUZSRlVGaXUtRjY2MVEjdG9GJ0ZnbkZpbkY7Rj5GQEZCRkRGRkZIRltvRmJ2RmpxRlJGVUZjdi1GNjYxUSNkb0YnRmduRmluRjtGPkZARkJGREZGRkhGW29GYnZGanFGUkZVRmF0LUYjNiVGYXJGNS1GIzYlRmFyLUY2NjBRIitGJ0Y5RjtGPkZARkJGREZGRkhGSkZidkZqcUZSRlUtRiM2JS1GIzYlLUZhbzYjRmF4Rmp2Rl5yLUY2NjBRIipGJ0Y5RjtGPkZARkJGREZGRkhGSi9GTlEudGhpbm1hdGhzcGFjZUYnL0ZRRl1ebEZSRlUtRiM2JkZkci1GNjYwUSJbRidGOS9GPEYxRj4vRkFGMUZCRkRGRkZIL0ZLUSdwcmVmaXhGJ0ZcXmxGXl5sRlJGVS1GIzYjRl5yLUY2NjBRIl1GJ0Y5RmRebEY+RmVebEZCRkRGRkZIRmB2RlxebEZfd0ZSRlUtRmhwNiZGanAvRl5xUSYwLjBlbUYnRmBxL0ZjcVE2ZGVjcmVhc2VpbmRlbnRuZXdsaW5lRictRjY2MVEnZW5kfmRvRidGZ25GaW5GO0Y+RkBGQkZERkZGSEZbb0ZgdEZfb0ZSRlVGXV9sLUYjNiYtRjY2MVElZWxzZUYnRmduRmluRjtGPkZARkJGREZGRkhGW29GYHRGX29GUkZVRmF0LUYjNitGZ3RGYHktRiM2JS1GIzYlRmdyRjUtRiM2JUZddUZgdS1GYW82Iy1GIzYlRmd1RmhvLUYjNiVGZ3dGYHUtRmFvNiMtRiM2J0ZecEZob0ZeeEZob0ZheEZqckZncC1GIzYlLUYjNiVGZHlGYHUtRmFvNiMtRiM2J0ZnckZob0ZhcEZob0ZkcEZqckZncC1GIzYlLUYjNiVGX3pGYHUtRmFvNiMtRiM2KUZkckZob0ZnckZob0ZhcEZob0ZkcEZqckZncEZmekZdW2xGaFtsRlxcbEZdX2wtRjY2MVEnZW5kfmlmRidGZ25GaW5GO0Y+RkBGQkZERkZGSEZbb0ZgdEZfb0ZSRlVGanJGZ3BGYXJGXV9sLUY2NjFRKWVuZH5wcm9jRidGZ25GaW5GO0Y+RkBGQkZERkZGSEZbb0ZgdEZfb0ZSRlU=">Zio2JkkiYUc2IkkiYkdGJUkibkdGJUkibUdGJTYmSSJpR0YlSSJjR0YlSSJBR0YlSSJCR0YlRiVGJUMkQCUvRiRGJkMpPkYsLUkmQXJyYXlHJSpwcm90ZWN0ZWRHNiQ7IiIhLCYpIiIjRiciIiJGPCEiIi1JKGNvbnZlcnRHRjU2JUYkSSViYXNlR0YlKUY7LCYpRjssJkYoRjxGPEY9RjxJImtHRiVGPS1JJWZmZnRHRiU2JUYsRidGKC1JKGZkaWdtdWxHRiU2JkYsRixGJ0YoLUkmaWZmZnRHRiVGSS1JJ2ZzaGlmdEdGJTYmRixGJ0YoRic+RitGOD8oRipGOEY8RjlJJXRydWVHRjU+RissJkYrRjwqJilGQkYqRjwmRiw2I0YqRjxGPEMrRjJGRz5GLS1GNDYkRjctRj82JUYmRkFGQi1GSDYlRi1GJ0YoLUZLNiZGLEYtRidGKEZNRk9GUkZTRitGJUYlRiU=</Equation></Text-field>
</Output>
</Group>
<Group labelreference="L592" drawlabel="true">
<Input>
<Text-field prompt="&gt; " style="Maple Input" layout="Normal">n:=6; m:=4; k:=4; ffftmul(123456789,987654321,n,m,k);</Text-field>
</Input>
<Output>
<Text-field style="2D Output" layout="Maple Output"><Equation executable="false" style="2D Output" display="LUklbXJvd0c2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGJzYlLUkjbWlHRiQ2JVEibkYnLyUnaXRhbGljR1EldHJ1ZUYnLyUsbWF0aHZhcmlhbnRHUSdpdGFsaWNGJy1JI21vR0YkNjBRIzo9RicvRjNRJ25vcm1hbEYnLyUmZmVuY2VHUSZmYWxzZUYnLyUqc2VwYXJhdG9yR0Y9LyUpc3RyZXRjaHlHRj0vJSpzeW1tZXRyaWNHRj0vJShsYXJnZW9wR0Y9LyUubW92YWJsZWxpbWl0c0dGPS8lJ2FjY2VudEdGPS8lJWZvcm1HUSZpbmZpeEYnLyUnbHNwYWNlR1EvdGhpY2ttYXRoc3BhY2VGJy8lJ3JzcGFjZUdGTy8lKG1pbnNpemVHUSIxRicvJShtYXhzaXplR1EpaW5maW5pdHlGJy1JI21uR0YkNiRRIjZGJ0Y5">IiIn</Equation></Text-field>
</Output>
<Output>
<Text-field style="2D Output" layout="Maple Output"><Equation executable="false" style="2D Output" display="LUklbXJvd0c2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGJzYlLUkjbWlHRiQ2JVEibUYnLyUnaXRhbGljR1EldHJ1ZUYnLyUsbWF0aHZhcmlhbnRHUSdpdGFsaWNGJy1JI21vR0YkNjBRIzo9RicvRjNRJ25vcm1hbEYnLyUmZmVuY2VHUSZmYWxzZUYnLyUqc2VwYXJhdG9yR0Y9LyUpc3RyZXRjaHlHRj0vJSpzeW1tZXRyaWNHRj0vJShsYXJnZW9wR0Y9LyUubW92YWJsZWxpbWl0c0dGPS8lJ2FjY2VudEdGPS8lJWZvcm1HUSZpbmZpeEYnLyUnbHNwYWNlR1EvdGhpY2ttYXRoc3BhY2VGJy8lJ3JzcGFjZUdGTy8lKG1pbnNpemVHUSIxRicvJShtYXhzaXplR1EpaW5maW5pdHlGJy1JI21uR0YkNiRRIjRGJ0Y5">IiIl</Equation></Text-field>
</Output>
<Output>
<Text-field style="2D Output" layout="Maple Output"><Equation executable="false" style="2D Output" display="LUklbXJvd0c2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGJzYlLUkjbWlHRiQ2JVEia0YnLyUnaXRhbGljR1EldHJ1ZUYnLyUsbWF0aHZhcmlhbnRHUSdpdGFsaWNGJy1JI21vR0YkNjBRIzo9RicvRjNRJ25vcm1hbEYnLyUmZmVuY2VHUSZmYWxzZUYnLyUqc2VwYXJhdG9yR0Y9LyUpc3RyZXRjaHlHRj0vJSpzeW1tZXRyaWNHRj0vJShsYXJnZW9wR0Y9LyUubW92YWJsZWxpbWl0c0dGPS8lJ2FjY2VudEdGPS8lJWZvcm1HUSZpbmZpeEYnLyUnbHNwYWNlR1EvdGhpY2ttYXRoc3BhY2VGJy8lJ3JzcGFjZUdGTy8lKG1pbnNpemVHUSIxRicvJShtYXhzaXplR1EpaW5maW5pdHlGJy1JI21uR0YkNiRRIjRGJ0Y5">IiIl</Equation></Text-field>
</Output>
<Output>
<Text-field style="2D Output" layout="Maple Output"><Equation executable="false" style="2D Output">IjNwX2o3NmpLPjc=</Equation></Text-field>
</Output>
</Group>
<Group labelreference="L596" drawlabel="true">
<Input>
<Text-field prompt="&gt; " style="Maple Input" layout="Normal">123456789*987654321;</Text-field>
</Input>
<Output>
<Text-field style="2D Output" layout="Maple Output"><Equation executable="false" style="2D Output">IjNwX2o3NmpLPjc=</Equation></Text-field>
</Output>
</Group>
</Section>
<Section collapsed="false" MultipleChoiceAnswerIndex="-1" MultipleChoiceRandomizeChoices="false" TrueFalseAnswerIndex="-1" EssayAnswerRows="5" EssayAnswerColumns="60"><Title>
<Text-field style="Heading 2" layout="Heading 2">7.10. Sch<Font encoding="UTF-8">\303\266</Font>nhage-Strassen-f<Font encoding="UTF-8">\303\251</Font>le gyorsszorz<Font encoding="UTF-8">\303\263</Font> algoritmus.</Text-field></Title>
<Text-field style="Text" layout="Normal"></Text-field>
<Group labelreference="L519" drawlabel="true">
<Input>
<Text-field prompt="&gt; " style="Maple Input" layout="Normal"></Text-field>
</Input>
</Group>
</Section>
<Section collapsed="false" MultipleChoiceAnswerIndex="-1" MultipleChoiceRandomizeChoices="false" TrueFalseAnswerIndex="-1" EssayAnswerRows="5" EssayAnswerColumns="60"><Title>
<Text-field style="Heading 2" layout="Heading 2">7.11. P<Font encoding="UTF-8">\303\251</Font>lda.</Text-field></Title>
<Text-field style="Text" layout="Normal"></Text-field>
<Group labelreference="L520" drawlabel="true">
<Input>
<Text-field prompt="&gt; " style="Maple Input" layout="Normal"></Text-field>
</Input>
</Group>
</Section>
<Section collapsed="true" MultipleChoiceAnswerIndex="-1" MultipleChoiceRandomizeChoices="false" TrueFalseAnswerIndex="-1" EssayAnswerRows="5" EssayAnswerColumns="60"><Title>
<Text-field style="Heading 2" layout="Heading 2">7.12. Ritka polinomok es ritka sz<Font encoding="UTF-8">\303\241</Font>mok.</Text-field></Title>
<Text-field style="Text" layout="Normal"></Text-field>
<Group labelreference="L521" drawlabel="true">
<Input>
<Text-field prompt="&gt; " style="Maple Input" layout="Normal"></Text-field>
</Input>
</Group>
</Section>
<Section collapsed="true" MultipleChoiceAnswerIndex="-1" MultipleChoiceRandomizeChoices="false" TrueFalseAnswerIndex="-1" EssayAnswerRows="5" EssayAnswerColumns="60"><Title>
<Text-field style="Heading 2" layout="Heading 2">7.13. Feladat.</Text-field></Title>
<Text-field style="Text" layout="Normal"></Text-field>
<Group labelreference="L522" drawlabel="true">
<Input>
<Text-field prompt="&gt; " style="Maple Input" layout="Normal"></Text-field>
</Input>
</Group>
</Section>
<Section collapsed="true" MultipleChoiceAnswerIndex="-1" MultipleChoiceRandomizeChoices="false" TrueFalseAnswerIndex="-1" EssayAnswerRows="5" EssayAnswerColumns="60"><Title>
<Text-field style="Heading 2" layout="Heading 2">7.14. Oszt<Font encoding="UTF-8">\303\241</Font>s, polinomoszt<Font encoding="UTF-8">\303\241</Font>s.</Text-field></Title>
<Text-field style="Text" layout="Normal"></Text-field>
<Group labelreference="L523" drawlabel="true">
<Input>
<Text-field prompt="&gt; " style="Maple Input" layout="Normal"></Text-field>
</Input>
</Group>
</Section>
<Section collapsed="true" MultipleChoiceAnswerIndex="-1" MultipleChoiceRandomizeChoices="false" TrueFalseAnswerIndex="-1" EssayAnswerRows="5" EssayAnswerColumns="60"><Title>
<Text-field style="Heading 2" layout="Heading 2">7.15. Polinom ki<Font encoding="UTF-8">\303\251</Font>rt<Font encoding="UTF-8">\303\251</Font>kel<Font encoding="UTF-8">\303\251</Font>se tetsz<Font encoding="UTF-8">\305\221</Font>leges helyeken.</Text-field></Title>
<Text-field style="Text" layout="Normal"></Text-field>
<Group labelreference="L524" drawlabel="true">
<Input>
<Text-field prompt="&gt; " style="Maple Input" layout="Normal"></Text-field>
</Input>
</Group>
</Section>
<Section collapsed="true" MultipleChoiceAnswerIndex="-1" MultipleChoiceRandomizeChoices="false" TrueFalseAnswerIndex="-1" EssayAnswerRows="5" EssayAnswerColumns="60"><Title>
<Text-field style="Heading 2" layout="Heading 2">7.16. Interpol<Font encoding="UTF-8">\303\241</Font>ci<Font encoding="UTF-8">\303\263</Font>.</Text-field></Title>
<Text-field style="Text" layout="Normal"></Text-field>
<Group labelreference="L525" drawlabel="true">
<Input>
<Text-field prompt="&gt; " style="Maple Input" layout="Normal"></Text-field>
</Input>
</Group>
</Section>
<Section collapsed="true" MultipleChoiceAnswerIndex="-1" MultipleChoiceRandomizeChoices="false" TrueFalseAnswerIndex="-1" EssayAnswerRows="5" EssayAnswerColumns="60"><Title>
<Text-field style="Heading 2" layout="Heading 2">7.17. Feladat.</Text-field></Title>
<Text-field style="Text" layout="Normal"></Text-field>
<Group labelreference="L526" drawlabel="true">
<Input>
<Text-field prompt="&gt; " style="Maple Input" layout="Normal"></Text-field>
</Input>
</Group>
</Section>
<Section collapsed="true" MultipleChoiceAnswerIndex="-1" MultipleChoiceRandomizeChoices="false" TrueFalseAnswerIndex="-1" EssayAnswerRows="5" EssayAnswerColumns="60"><Title>
<Text-field style="Heading 2" layout="Heading 2">7.18. Feladat.</Text-field></Title>
<Text-field style="Text" layout="Normal"></Text-field>
<Group labelreference="L527" drawlabel="true">
<Input>
<Text-field prompt="&gt; " style="Maple Input" layout="Normal"></Text-field>
</Input>
</Group>
</Section>
<Section collapsed="true" MultipleChoiceAnswerIndex="-1" MultipleChoiceRandomizeChoices="false" TrueFalseAnswerIndex="-1" EssayAnswerRows="5" EssayAnswerColumns="60"><Title>
<Text-field style="Heading 2" layout="Heading 2">7.19. Feladat.</Text-field></Title>
</Section>
<Text-field style="Text" layout="Normal"></Text-field>
</Section>
<Section collapsed="true" MultipleChoiceAnswerIndex="-1" MultipleChoiceRandomizeChoices="false" TrueFalseAnswerIndex="-1" EssayAnswerRows="5" EssayAnswerColumns="60"><Title>
<Text-field style="Heading 1" layout="Heading 1"><Font encoding="UTF-8">8. Elliptikus f\303\274ggv\303\251nyek</Font></Text-field></Title>
<Text-field style="Text" layout="Normal"></Text-field>
</Section>
<Section collapsed="true" MultipleChoiceAnswerIndex="-1" MultipleChoiceRandomizeChoices="false" TrueFalseAnswerIndex="-1" EssayAnswerRows="5" EssayAnswerColumns="60"><Title>
<Text-field style="Heading 1" layout="Heading 1"><Font encoding="UTF-8">9. Sz\303\241mol\303\241s elliptikus g\303\266rb\303\251ken</Font></Text-field></Title>
<Text-field style="Text" layout="Normal"></Text-field>
</Section>
<Section collapsed="true" MultipleChoiceAnswerIndex="-1" MultipleChoiceRandomizeChoices="false" TrueFalseAnswerIndex="-1" EssayAnswerRows="5" EssayAnswerColumns="60"><Title>
<Text-field style="Heading 1" layout="Heading 1"><Font encoding="UTF-8">10. Faktoriz\303\241l\303\241s elliptikus g\303\266rb\303\251kkel</Font></Text-field></Title>
<Text-field style="Text" layout="Normal"></Text-field>
</Section>
<Section collapsed="true" MultipleChoiceAnswerIndex="-1" MultipleChoiceRandomizeChoices="false" TrueFalseAnswerIndex="-1" EssayAnswerRows="5" EssayAnswerColumns="60"><Title>
<Text-field style="Heading 1" layout="Heading 1"><Font encoding="UTF-8">11. Pr\303\255mteszt elliptikus g\303\266rb\303\251kkel</Font></Text-field></Title>
<Text-field style="Text" layout="Normal"></Text-field>
</Section>
<Section collapsed="true" MultipleChoiceAnswerIndex="-1" MultipleChoiceRandomizeChoices="false" TrueFalseAnswerIndex="-1" EssayAnswerRows="5" EssayAnswerColumns="60"><Title>
<Text-field style="Heading 1" layout="Heading 1"><Font encoding="UTF-8">12. Polinomfaktoriz\303\241l\303\241s</Font></Text-field></Title>
<Text-field style="Text" layout="Normal"></Text-field>
</Section>
<Section collapsed="true" MultipleChoiceAnswerIndex="-1" MultipleChoiceRandomizeChoices="false" TrueFalseAnswerIndex="-1" EssayAnswerRows="5" EssayAnswerColumns="60"><Title>
<Text-field style="Heading 1" layout="Heading 1">13. Az AKS-teszt</Text-field></Title>
</Section>
<Section collapsed="true" MultipleChoiceAnswerIndex="-1" MultipleChoiceRandomizeChoices="false" TrueFalseAnswerIndex="-1" EssayAnswerRows="5" EssayAnswerColumns="60"><Title>
<Text-field style="Heading 1" layout="Heading 1"><Font encoding="UTF-8">14. A szita m\303\263dszerek alapjai</Font></Text-field></Title>
<Text-field style="Text" layout="Normal"></Text-field>
</Section><Presentation-Block>
<Group view="presentation" hide-input="false" hide-output="true" inline-output="false" labelreference="L1" drawlabel="true">
<Input>
<Text-field prompt="&gt; " style="Maple Input" family="Lucida Bright" layout="Normal"></Text-field>
</Input>
</Group>
<Group view="presentation" hide-input="false" hide-output="true" inline-output="false" labelreference="L183" drawlabel="true">
<Input>
<Text-field style="Text" layout="Normal"></Text-field>
</Input>
</Group></Presentation-Block><Presentation-Block>
<Group view="presentation" hide-input="false" hide-output="true" inline-output="false" labelreference="L35" drawlabel="true">
<Input>
<Text-field prompt="&gt; " style="Maple Input" layout="Normal"><Equation executable="true" style="2D Input" input-equation="" display="LUklbXJvd0c2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGJzYjLUkjbWlHRiQ2JVEhRicvJSdpdGFsaWNHUSV0cnVlRicvJSxtYXRodmFyaWFudEdRJ2l0YWxpY0Yn">LUklbXJvd0c2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGJzYjLUkjbWlHRiQ2JVEhRicvJSdpdGFsaWNHUSV0cnVlRicvJSxtYXRodmFyaWFudEdRJ2l0YWxpY0Yn</Equation></Text-field>
</Input>
</Group></Presentation-Block>
</Worksheet>