Warning, /frameworks/syntax-highlighting/autotests/reference/highlight.mac.ref is written in an unsupported language. File is not indexed.

0001 <Comment>/*</Comment><br/>
0002 <Comment>------------------------------------------------------------------------</Comment><br/>
0003 <Comment>Efficient Galois Fields in Maxima</Comment><br/>
0004 <Comment></Comment><br/>
0005 <Comment>by Alasdair McAndrew</Comment><br/>
0006 <Comment>and later extended by Fabrizio Caruso and Jacopo Daurizio</Comment><br/>
0007 <Comment></Comment><br/>
0008 <Comment>it is distribuited together with gf_roots by Jacopo Daurizio</Comment><br/>
0009 <Comment></Comment><br/>
0010 <Comment>Authors:</Comment><br/>
0011 <Comment></Comment><br/>
0012 <Comment>Fabrizio Caruso   (optimizations, testing)</Comment><br/>
0013 <Comment>Jacopo D'Aurizio   (optimizations, modular roots)</Comment><br/>
0014 <Comment>Alasdair McAndrew (original version of the package, pohlig-helman log, etc... )</Comment><br/>
0015 <Comment>------------------------------------------------------------------------*/</Comment><br/>
0016 <Normal Text></Normal Text><br/>
0017 <Comment>/* Released under terms of the GNU General Public License, version 2,</Comment><br/>
0018 <Comment> * by permission of the authors to Robert Dodier circa 2007-12-02.</Comment><br/>
0019 <Comment> */</Comment><br/>
0020 <Normal Text></Normal Text><br/>
0021 <Comment>/* Defines a flag for dealing with large fields.  If it is set to "false",</Comment><br/>
0022 <Comment>then lookup tables are used for exponentiation and logarithms.  Otherwise</Comment><br/>
0023 <Comment>other algorithms are used */</Comment><br/>
0024 <Normal Text></Normal Text><br/>
0025 <Function>define_variable</Function><Normal Text>(</Normal Text><Label>largefield</Label><Normal Text>,</Normal Text><Keyword>true</Keyword><Normal Text>,</Normal Text><Label>bool</Label><Normal Text>)$</Normal Text><br/>
0026 <Function>define_variable</Function><Normal Text>(</Normal Text><Label>gf_char</Label><Normal Text>,</Normal Text><Integer>0</Integer><Normal Text>,</Normal Text><Label>integer</Label><Normal Text>)$</Normal Text><br/>
0027 <Function>define_variable</Function><Normal Text>(</Normal Text><Label>gf_exp</Label><Normal Text>,</Normal Text><Integer>0</Integer><Normal Text>,</Normal Text><Label>integer</Label><Normal Text>)$</Normal Text><br/>
0028 <Function>define_variable</Function><Normal Text>(</Normal Text><Label>gf_order</Label><Normal Text>,</Normal Text><Integer>0</Integer><Normal Text>,</Normal Text><Label>integer</Label><Normal Text>)$</Normal Text><br/>
0029 <Function>define_variable</Function><Normal Text> (</Normal Text><Label>gf_one</Label><Normal Text>, </Normal Text><Quote>'</Quote><Label>gf_one</Label><Normal Text>, </Normal Text><Label>any_check</Label><Normal Text>)$</Normal Text><br/>
0030 <Function>define_variable</Function><Normal Text> (</Normal Text><Label>gf_prim</Label><Normal Text>, </Normal Text><Quote>'</Quote><Label>gf_prim</Label><Normal Text>, </Normal Text><Label>any_check</Label><Normal Text>)$</Normal Text><br/>
0031 <Function>define_variable</Function><Normal Text> (</Normal Text><Label>gf_irr</Label><Normal Text>, </Normal Text><Quote>'</Quote><Label>gf_irr</Label><Normal Text>, </Normal Text><Label>any_check</Label><Normal Text>)$</Normal Text><br/>
0032 <Function>define_variable</Function><Normal Text> (</Normal Text><Label>gf_list</Label><Normal Text>, </Normal Text><Quote>'</Quote><Label>gf_list</Label><Normal Text>, </Normal Text><Label>any_check</Label><Normal Text>)$</Normal Text><br/>
0033 <Function>define_variable</Function><Normal Text> (</Normal Text><Label>gen_powers</Label><Normal Text>, </Normal Text><Quote>'</Quote><Label>gf_list</Label><Normal Text>, </Normal Text><Label>any_check</Label><Normal Text>)$</Normal Text><br/>
0034 <Function>remvalue</Function><Normal Text>(</Normal Text><Label>x</Label><Normal Text>,</Normal Text><Label>z</Label><Normal Text>,</Normal Text><Label>gf_char</Label><Normal Text>,</Normal Text><Label>gf_exp</Label><Normal Text>,</Normal Text><Label>gf_irr</Label><Normal Text>,</Normal Text><Label>pg</Label><Normal Text>,</Normal Text><Label>gp</Label><Normal Text>,</Normal Text><Label>lg</Label><Normal Text>,</Normal Text><Label>gf_prim</Label><Normal Text>,</Normal Text><Label>gf_one</Label><Normal Text>,</Normal Text><Label>gf_order</Label><Normal Text>,</Normal Text><Label>gf_list</Label><Normal Text>,</Normal Text><Label>gen_powers</Label><Normal Text>)$</Normal Text><br/>
0035 <Normal Text></Normal Text><br/>
0036 <Normal Text></Normal Text><br/>
0037 <Comment>/* --------------------------------------------------------------------------------------------- */</Comment><br/>
0038 <Comment>/* Settings */</Comment><br/>
0039 <Normal Text></Normal Text><br/>
0040 <Label>GF_VERBOSE</Label><Normal Text>:</Normal Text><Keyword>false</Keyword><Normal Text>; </Normal Text><Comment>/* Verbosity */</Comment><br/>
0041 <Label>GF_WARNING</Label><Normal Text>: </Normal Text><Keyword>true</Keyword><Normal Text>; </Normal Text><Comment>/* Warnings */</Comment><br/>
0042 <Label>GF_IRREDUCIBILITY_CHECK</Label><Normal Text>:</Normal Text><Keyword>false</Keyword><Normal Text>;   </Normal Text><Comment>/* Irreducibility test for the minimal polynomial of the extension */</Comment><br/>
0043 <Normal Text></Normal Text><br/>
0044 <Comment>/*</Comment><br/>
0045 <Comment>------------------------------------------------------------------------------------------------ */</Comment><br/>
0046 <Normal Text></Normal Text><br/>
0047 <Normal Text></Normal Text><br/>
0048 <Comment>/* It defines a new current field with gf_char=b, min. pol.= p of deg= e*/</Comment><br/>
0049 <Label>gf_set</Label><Normal Text>([</Normal Text><Label>ars</Label><Normal Text>]):=</Normal Text><Function>block</Function><Normal Text>([</Normal Text><Label>gj</Label><Normal Text>,</Normal Text><Label>m</Label><Normal Text>,</Normal Text><Label>i</Label><Normal Text>,</Normal Text><Label>j</Label><Normal Text>,</Normal Text><Label>dg</Label><Normal Text>],</Normal Text><br/>
0050 <Normal Text>  </Normal Text><Keyword>if</Keyword><Normal Text> </Normal Text><Function>length</Function><Normal Text>(</Normal Text><Label>ars</Label><Normal Text>)=</Normal Text><Integer>1</Integer><Normal Text> </Normal Text><Keyword>then</Keyword><br/>
0051 <Normal Text>    (</Normal Text><br/>
0052 <Normal Text>    </Normal Text><Label>gf_setp</Label><Normal Text>(</Normal Text><Label>ars</Label><Normal Text>[</Normal Text><Integer>1</Integer><Normal Text>]),</Normal Text><br/>
0053 <Normal Text>    </Normal Text><Function>return</Function><Normal Text>(</Normal Text><Keyword>true</Keyword><Normal Text>)</Normal Text><br/>
0054 <Normal Text>    )</Normal Text><br/>
0055 <Normal Text>  </Normal Text><Keyword>else</Keyword><br/>
0056 <Normal Text>    (</Normal Text><br/>
0057 <Normal Text>    </Normal Text><Keyword>if</Keyword><Normal Text> </Normal Text><Function>length</Function><Normal Text>(</Normal Text><Label>ars</Label><Normal Text>)=</Normal Text><Integer>2</Integer><Normal Text> </Normal Text><Keyword>then</Keyword><br/>
0058 <Normal Text>       (</Normal Text><br/>
0059 <Normal Text>       </Normal Text><Keyword>if</Keyword><Normal Text> </Normal Text><Function>numberp</Function><Normal Text>(</Normal Text><Label>ars</Label><Normal Text>[</Normal Text><Integer>2</Integer><Normal Text>]) </Normal Text><Keyword>then</Keyword><br/>
0060 <Normal Text>         (</Normal Text><br/>
0061 <Normal Text>         </Normal Text><Keyword>if</Keyword><Normal Text> </Normal Text><Label>ars</Label><Normal Text>[</Normal Text><Integer>2</Integer><Normal Text>]=</Normal Text><Integer>0</Integer><Normal Text> </Normal Text><Keyword>and</Keyword><Normal Text> </Normal Text><Label>GF_WARNING</Label><Normal Text> </Normal Text><Keyword>then</Keyword><br/>
0062 <Normal Text>           (</Normal Text><br/>
0063 <Normal Text>           </Normal Text><Function>print</Function><Normal Text>(</Normal Text><String>"WARNING: the irreducible is zero! We assume GF("</String><Normal Text>,</Normal Text><Label>ars</Label><Normal Text>[</Normal Text><Integer>1</Integer><Normal Text>],</Normal Text><String>")"</String><Normal Text>),</Normal Text><br/>
0064 <Normal Text>           </Normal Text><Label>gf_setp</Label><Normal Text>(</Normal Text><Label>ars</Label><Normal Text>[</Normal Text><Integer>1</Integer><Normal Text>]),</Normal Text><br/>
0065 <Normal Text>           </Normal Text><Function>return</Function><Normal Text>(</Normal Text><Keyword>true</Keyword><Normal Text>)</Normal Text><br/>
0066 <Normal Text>           )</Normal Text><br/>
0067 <Normal Text>         </Normal Text><Keyword>else</Keyword><br/>
0068 <Normal Text>           (</Normal Text><br/>
0069 <Normal Text>           </Normal Text><Function>error</Function><Normal Text>(</Normal Text><String>"ERROR: you tried to extend with a non-zero constant!"</String><Normal Text>),</Normal Text><br/>
0070 <Normal Text>           </Normal Text><Function>return</Function><Normal Text>(</Normal Text><Keyword>false</Keyword><Normal Text>)</Normal Text><br/>
0071 <Normal Text>           )</Normal Text><br/>
0072 <Normal Text>         )</Normal Text><br/>
0073 <Normal Text>       </Normal Text><Keyword>else</Keyword><br/>
0074 <Normal Text>         (</Normal Text><br/>
0075 <Normal Text>         </Normal Text><Label>dg</Label><Normal Text>:</Normal Text><Function>hipow</Function><Normal Text>(</Normal Text><Label>ars</Label><Normal Text>[</Normal Text><Integer>2</Integer><Normal Text>],</Normal Text><Label>x</Label><Normal Text>),</Normal Text><br/>
0076 <Normal Text></Normal Text><br/>
0077 <Normal Text>         </Normal Text><Keyword>if</Keyword><Normal Text> </Normal Text><Label>dg</Label><Normal Text>=</Normal Text><Integer>1</Integer><Normal Text> </Normal Text><Keyword>then</Keyword><br/>
0078 <Normal Text>           </Normal Text><Label>gf_setp</Label><Normal Text>(</Normal Text><Label>ars</Label><Normal Text>[</Normal Text><Integer>1</Integer><Normal Text>]),</Normal Text><br/>
0079 <Normal Text>         </Normal Text><Label>gf_irr</Label><Normal Text>:</Normal Text><Label>ars</Label><Normal Text>[</Normal Text><Integer>2</Integer><Normal Text>],</Normal Text><br/>
0080 <Normal Text>         </Normal Text><Label>gf_exp</Label><Normal Text>:</Normal Text><Label>dg</Label><Normal Text>,</Normal Text><br/>
0081 <Normal Text>         </Normal Text><Function>return</Function><Normal Text>(</Normal Text><Keyword>true</Keyword><Normal Text>)</Normal Text><br/>
0082 <Normal Text>         )</Normal Text><br/>
0083 <Normal Text>       )</Normal Text><br/>
0084 <Normal Text>    </Normal Text><Keyword>else</Keyword><br/>
0085 <Normal Text>       (</Normal Text><br/>
0086 <Normal Text>       </Normal Text><Label>gf_exp</Label><Normal Text>:</Normal Text><Label>ars</Label><Normal Text>[</Normal Text><Integer>2</Integer><Normal Text>],</Normal Text><br/>
0087 <Normal Text>       </Normal Text><Keyword>if</Keyword><Normal Text> </Normal Text><Label>gf_exp</Label><Normal Text>=</Normal Text><Integer>1</Integer><Normal Text> </Normal Text><Keyword>then</Keyword><br/>
0088 <Normal Text>          (</Normal Text><br/>
0089 <Normal Text>          </Normal Text><Label>gf_setp</Label><Normal Text>(</Normal Text><Label>ars</Label><Normal Text>[</Normal Text><Integer>1</Integer><Normal Text>]),</Normal Text><br/>
0090 <Normal Text>          </Normal Text><Label>gf_irr</Label><Normal Text>:</Normal Text><Function>rat</Function><Normal Text>(</Normal Text><Label>ars</Label><Normal Text>[</Normal Text><Integer>3</Integer><Normal Text>]),</Normal Text><br/>
0091 <Normal Text>          </Normal Text><Function>return</Function><Normal Text>(</Normal Text><Keyword>true</Keyword><Normal Text>)</Normal Text><br/>
0092 <Normal Text>          ),</Normal Text><br/>
0093 <Normal Text>       </Normal Text><Label>gf_irr</Label><Normal Text>:</Normal Text><Function>rat</Function><Normal Text>(</Normal Text><Label>ars</Label><Normal Text>[</Normal Text><Integer>3</Integer><Normal Text>])</Normal Text><br/>
0094 <Normal Text>       )</Normal Text><br/>
0095 <Normal Text>    ),</Normal Text><br/>
0096 <Normal Text></Normal Text><br/>
0097 <Normal Text>  </Normal Text><Label>gf_char</Label><Normal Text>:</Normal Text><Label>ars</Label><Normal Text>[</Normal Text><Integer>1</Integer><Normal Text>],</Normal Text><br/>
0098 <Normal Text>  </Normal Text><Label>gf_one</Label><Normal Text>:</Normal Text><Function>rat</Function><Normal Text>(</Normal Text><Integer>1</Integer><Normal Text>,</Normal Text><Label>x</Label><Normal Text>),</Normal Text><br/>
0099 <Normal Text>  </Normal Text><Label>gf_order</Label><Normal Text>:</Normal Text><Label>gf_char</Label><Normal Text>^</Normal Text><Label>gf_exp</Label><Integer>-1</Integer><Normal Text>,</Normal Text><br/>
0100 <Normal Text></Normal Text><br/>
0101 <Normal Text>  </Normal Text><Label>m</Label><Normal Text>:</Normal Text><Function>makelist</Function><Normal Text>(</Normal Text><Function>coeff</Function><Normal Text>(</Normal Text><Label>gf_irr</Label><Normal Text>,</Normal Text><Label>x</Label><Normal Text>,</Normal Text><Label>i</Label><Normal Text>),</Normal Text><Label>i</Label><Normal Text>,</Normal Text><Integer>0</Integer><Normal Text>,</Normal Text><Label>gf_exp</Label><Normal Text>),</Normal Text><br/>
0102 <Normal Text>  </Normal Text><Label>gf_list</Label><Normal Text>:[[</Normal Text><Function>first</Function><Normal Text>(</Normal Text><Label>m</Label><Normal Text>),</Normal Text><Integer>0</Integer><Normal Text>]],</Normal Text><Label>j</Label><Normal Text>:</Normal Text><Integer>1</Integer><Normal Text>,</Normal Text><br/>
0103 <Normal Text>  </Normal Text><Keyword>for</Keyword><Normal Text> </Normal Text><Label>i</Label><Normal Text>:</Normal Text><Integer>2</Integer><Normal Text> </Normal Text><Keyword>thru</Keyword><Normal Text> </Normal Text><Label>gf_exp</Label><Integer>+1</Integer><Normal Text> </Normal Text><Keyword>do</Keyword><Normal Text> </Normal Text><Keyword>if</Keyword><Normal Text> </Normal Text><Label>m</Label><Normal Text>[</Normal Text><Label>i</Label><Normal Text>]=</Normal Text><Integer>0</Integer><Normal Text> </Normal Text><Keyword>then</Keyword><Normal Text> </Normal Text><Label>j</Label><Normal Text>:</Normal Text><Label>j</Label><Integer>+1</Integer><Normal Text> </Normal Text><Keyword>else</Keyword><Normal Text> ( </Normal Text><Label>gf_list</Label><Normal Text>:</Normal Text><Function>endcons</Function><Normal Text>([</Normal Text><Label>m</Label><Normal Text>[</Normal Text><Label>i</Label><Normal Text>],</Normal Text><Label>j</Label><Normal Text>],</Normal Text><Label>gf_list</Label><Normal Text>), </Normal Text><Label>j</Label><Normal Text>:</Normal Text><Integer>1</Integer><Normal Text> ),</Normal Text><br/>
0104 <Normal Text></Normal Text><br/>
0105 <Normal Text>  </Normal Text><Keyword>if</Keyword><Normal Text> </Normal Text><Keyword>not</Keyword><Normal Text>(</Normal Text><Function>primep</Function><Normal Text>(</Normal Text><Label>gf_char</Label><Normal Text>)) </Normal Text><Keyword>then</Keyword><Normal Text> </Normal Text><Function>error</Function><Normal Text>(</Normal Text><String>"ERROR: Gf_Char must be a prime number."</String><Normal Text>)</Normal Text><br/>
0106 <Normal Text>    </Normal Text><Keyword>else</Keyword><br/>
0107 <Normal Text>      </Normal Text><Variable>modulus</Variable><Normal Text>:</Normal Text><Label>gf_char</Label><Normal Text>,</Normal Text><br/>
0108 <Normal Text>  </Normal Text><Keyword>if</Keyword><Normal Text> </Normal Text><Label>GF_IRREDUCIBILITY_CHECK</Label><Normal Text> </Normal Text><Keyword>and</Keyword><br/>
0109 <Normal Text>       </Normal Text><Function>hipow</Function><Normal Text>(</Normal Text><Function>args</Function><Normal Text>(</Normal Text><Function>factor</Function><Normal Text>(</Normal Text><Label>ars</Label><Normal Text>[</Normal Text><Integer>3</Integer><Normal Text>]))[</Normal Text><Integer>1</Integer><Normal Text>],</Normal Text><Label>x</Label><Normal Text>)#</Normal Text><Function>hipow</Function><Normal Text>(</Normal Text><Function>rat</Function><Normal Text>(</Normal Text><Label>ars</Label><Normal Text>[</Normal Text><Integer>3</Integer><Normal Text>]),</Normal Text><Label>x</Label><Normal Text>) </Normal Text><Keyword>then</Keyword><br/>
0110 <Normal Text>      </Normal Text><Function>error</Function><Normal Text>(</Normal Text><String>"ERROR: Polynomial is not irreducible"</String><Normal Text>),</Normal Text><br/>
0111 <Normal Text></Normal Text><br/>
0112 <Normal Text>  </Normal Text><Keyword>if</Keyword><Normal Text> </Normal Text><Keyword>not</Keyword><Normal Text>(</Normal Text><Label>largefield</Label><Normal Text>) </Normal Text><Keyword>then</Keyword><br/>
0113 <Normal Text>     (</Normal Text><br/>
0114 <Normal Text>     </Normal Text><Label>pg</Label><Normal Text>:</Normal Text><Label>mkpowers</Label><Normal Text>(),</Normal Text><br/>
0115 <Normal Text>     </Normal Text><Label>lg</Label><Normal Text>:</Normal Text><Label>mklogs</Label><Normal Text>()</Normal Text><br/>
0116 <Normal Text>     )</Normal Text><br/>
0117 <Normal Text>  </Normal Text><Keyword>else</Keyword><br/>
0118 <Normal Text>     (</Normal Text><br/>
0119 <Normal Text>     </Normal Text><Keyword>if</Keyword><Normal Text> </Normal Text><Label>GF_VERBOSE</Label><Normal Text> </Normal Text><Keyword>then</Keyword><br/>
0120 <Normal Text>       </Normal Text><Function>print</Function><Normal Text>(</Normal Text><String>"finding a primitive element..."</String><Normal Text>),</Normal Text><br/>
0121 <Normal Text></Normal Text><br/>
0122 <Normal Text>     </Normal Text><Label>gf_prim</Label><Normal Text>:</Normal Text><Function>rat</Function><Normal Text>(</Normal Text><Label>gf_findprim</Label><Normal Text>(),</Normal Text><Label>x</Label><Normal Text>),</Normal Text><br/>
0123 <Normal Text>     </Normal Text><Keyword>if</Keyword><Normal Text> </Normal Text><Label>GF_VERBOSE</Label><Normal Text> </Normal Text><Keyword>then</Keyword><br/>
0124 <Normal Text>     </Normal Text><Function>print</Function><Normal Text>(</Normal Text><String>"...primitive element found."</String><Normal Text>)</Normal Text><br/>
0125 <Normal Text></Normal Text><br/>
0126 <Normal Text>     ),</Normal Text><br/>
0127 <Normal Text>  </Normal Text><Variable>modulus</Variable><Normal Text>:</Normal Text><Keyword>false</Keyword><Normal Text>, </Normal Text><Comment>/* it resets the modulus */</Comment><br/>
0128 <Normal Text>  </Normal Text><Function>return</Function><Normal Text>(</Normal Text><Keyword>true</Keyword><Normal Text>)</Normal Text><br/>
0129 <Normal Text></Normal Text><br/>
0130 <Normal Text>  )$</Normal Text><br/>
0131 <Normal Text></Normal Text><br/>
0132 <Normal Text></Normal Text><br/>
0133 <Comment>/* Prints out information about the field */</Comment><br/>
0134 <Label>gf_info</Label><Normal Text>():=</Normal Text><Function>block</Function><Normal Text>(</Normal Text><br/>
0135 <Normal Text>  </Normal Text><Function>print</Function><Normal Text>(</Normal Text><String>"Prime gf_char value: "</String><Normal Text>,</Normal Text><Label>gf_char</Label><Normal Text>),</Normal Text><br/>
0136 <Normal Text>  </Normal Text><Function>print</Function><Normal Text>(</Normal Text><String>"Exponent: "</String><Normal Text>, </Normal Text><Label>gf_exp</Label><Normal Text>),</Normal Text><br/>
0137 <Normal Text>  </Normal Text><Function>print</Function><Normal Text>(</Normal Text><String>"Multiplicative order: "</String><Normal Text>,</Normal Text><Label>gf_order</Label><Normal Text>),</Normal Text><br/>
0138 <Normal Text>  </Normal Text><Function>print</Function><Normal Text>(</Normal Text><String>"Irreducible polynomial: "</String><Normal Text>,</Normal Text><Label>gf_irr</Label><Normal Text>),</Normal Text><br/>
0139 <Normal Text>  </Normal Text><Function>print</Function><Normal Text>(</Normal Text><String>"Primitive element: "</String><Normal Text>,</Normal Text><Label>gf_prim</Label><Normal Text>),</Normal Text><br/>
0140 <Normal Text>  </Normal Text><Keyword>if</Keyword><Normal Text> (</Normal Text><Label>largefield</Label><Normal Text>) </Normal Text><Keyword>then</Keyword><br/>
0141 <Normal Text>    </Normal Text><Function>print</Function><Normal Text>(</Normal Text><String>"Largefield flag is true; powers and logarithms not computed."</String><Normal Text>)</Normal Text><br/>
0142 <Normal Text>    </Normal Text><Keyword>else</Keyword><br/>
0143 <Normal Text>    </Normal Text><Function>print</Function><Normal Text>(</Normal Text><String>"Largefield flag is false; powers and logarithms computed."</String><Normal Text>),</Normal Text><br/>
0144 <Normal Text>  </Normal Text><Function>disp</Function><Normal Text>()</Normal Text><br/>
0145 <Normal Text>)$</Normal Text><br/>