(***********************************************************************

                    Mathematica-Compatible Notebook

This notebook can be used on any computer system with Mathematica 4.0,
MathReader 4.0, or any compatible application. The data for the notebook 
starts with the line containing stars above.

To get the notebook into a Mathematica-compatible application, do one of 
the following:

* Save the data starting with the line of stars above into a file
  with a name ending in .nb, then open the file inside the application;

* Copy the data starting with the line of stars above to the
  clipboard, then use the Paste menu command inside the application.

Data for notebooks contains only printable 7-bit ASCII and can be
sent directly in email or through ftp in text mode.  Newlines can be
CR, LF or CRLF (Unix, Macintosh or MS-DOS style).

NOTE: If you modify the data for this notebook not in a Mathematica-
compatible application, you must delete the line below containing the 
word CacheID, otherwise Mathematica-compatible applications may try to 
use invalid cache data.

For more information on notebooks and Mathematica-compatible 
applications, contact Wolfram Research:
  web: http://www.wolfram.com
  email: info@wolfram.com
  phone: +1-217-398-0700 (U.S.)

Notebook reader applications are available free of charge from 
Wolfram Research.
***********************************************************************)

(*CacheID: 232*)


(*NotebookFileLineBreakTest
NotebookFileLineBreakTest*)
(*NotebookOptionsPosition[     56656,       1783]*)
(*NotebookOutlinePosition[     74469,       2307]*)
(*  CellTagsIndexPosition[     73005,       2245]*)
(*WindowFrame->Normal*)



Notebook[{
Cell[TextData[{
  "Algebra",
  StyleBox["`", "MB"],
  "FiniteFields",
  StyleBox["`", "MB"]
}], "Subsection",
  CellTags->{"S5.2.1", "1.1"}],

Cell[TextData[{
  "A field is an algebraic structure obeying the rules of ordinary \
arithmetic. In particular, a field has binary operations of addition and \
multiplication, both of which are commutative and associative. A field has \
two special elements, the additive identity ",
  Cell[BoxData[
      \(TraditionalForm\`0\)], "InlineFormula"],
  ", and multiplicative identity ",
  Cell[BoxData[
      \(TraditionalForm\`1\)], "InlineFormula"],
  ". This package adds rules to ",
  StyleBox["Plus", "MR"],
  ", ",
  StyleBox["Times", "MR"],
  ", and ",
  StyleBox["Power", "MR"],
  " so that arithmetic on field elements will be defined properly. It also \
provides low\[Hyphen]level utilities for working with finite fields and for \
formatting finite field elements. \nFor any finite field there is a fixed \
prime number ",
  Cell[BoxData[
      \(TraditionalForm\`p\)], "InlineFormula"],
  ", called the characteristic of the field, such that the sum of ",
  Cell[BoxData[
      \(TraditionalForm\`p\)], "InlineFormula"],
  " of the ",
  Cell[BoxData[
      \(TraditionalForm\`1\)], "InlineFormula"],
  " field elements gives the ",
  Cell[BoxData[
      \(TraditionalForm\`0\)], "InlineFormula"],
  " field element. A finite field of characteristic ",
  Cell[BoxData[
      \(TraditionalForm\`p\)], "InlineFormula"],
  " has ",
  Cell[BoxData[
      \(TraditionalForm\`p\^d\)], "InlineFormula"],
  " elements for some positive integer ",
  Cell[BoxData[
      \(TraditionalForm\`d\)], "InlineFormula"],
  ", which we will loosely call the extension degree. This package represents \
field elements as polynomials in a single variable. The polynomials have \
degree at most ",
  Cell[BoxData[
      \(TraditionalForm\`d - 1\)], "InlineFormula"],
  " and their coefficients are integers reduced mod ",
  Cell[BoxData[
      \(TraditionalForm\`p\)], "InlineFormula"],
  ". \nThe internal form of a finite field element is ",
  StyleBox["GF[", "MR"],
  StyleBox["p", "TI"],
  StyleBox[",", "MR"],
  " ",
  StyleBox["ilist", "TI"],
  StyleBox["][", "MR"],
  StyleBox["elist", "TI"],
  StyleBox["]", "MR"],
  " where ",
  StyleBox["GF", "MR"],
  " stands for ",
  StyleBox["Galois field", "TI"],
  ", ",
  Cell[BoxData[
      \(TraditionalForm\`p\)], "InlineFormula"],
  " is the prime characteristic of the field, ",
  Cell[BoxData[
      \(TraditionalForm\`i  l  i  s  t\)], "InlineFormula"],
  " is the coefficient list of the irreducible polynomial which defines \
multiplication in the field, and ",
  Cell[BoxData[
      \(TraditionalForm\`e  l  i  s  t\)], "InlineFormula"],
  " is the coefficient list of the polynomial representing the particular \
element. Because this form can be a bit clumsy, the package provides several \
shortcuts for entering finite field elements. "
}], "Text",
  CellTags->{"S5.2.1", "1.2"}],

Cell[BoxData[
    FormBox[
      StyleBox[
        FrameBox[
          StyleBox[GridBox[{
                {
                  
                  RowBox[{"\<\"\\!\\(\\*StyleBox[\\\"\\\\\\\"GF[\\\\\\\"\\\", \
\\\"MR\\\"]\\)\\!\\(\\*StyleBox[\\\"\\\\\\\"p\\\\\\\"\\\", \
\\\"TI\\\"]\\)\\!\\(\\*StyleBox[\\\"\\\\\\\"][\\\\\\\"\\\", \
\\\"MR\\\"]\\)\"\>", 
                    StyleBox["{",
                      
                      "InlineFormula"], \
"\<\"\\!\\(\\*StyleBox[\\\"\\\\\\\"k\\\\\\\"\\\", \\\"TI\\\"]\\)\"\>", 
                    StyleBox["}",
                      
                      "InlineFormula"], \
"\<\"\\!\\(\\*StyleBox[\\\"\\\\\\\"]\\\\\\\"\\\", \\\"MR\\\"]\\) \"\>"}], 
                  RowBox[{"\<\"the integer \"\>", 
                    StyleBox["k",
                      
                      "InlineFormula"], "\<\" in the field of integers mod \"\
\>", 
                    StyleBox["p",
                      "InlineFormula"]}]},
                {
                  
                  RowBox[{"\<\"\\!\\(\\*StyleBox[\\\"\\\\\\\"GF[\\\\\\\"\\\", \
\\\"MR\\\"]\\)\\!\\(\\*StyleBox[\\\"\\\\\\\"p\\\\\\\"\\\", \
\\\"TI\\\"]\\)\\!\\(\\*StyleBox[\\\"\\\\\\\",\\\\\\\"\\\", \\\"MR\\\"]\\) \\!\
\\(\\*StyleBox[\\\"\\\\\\\"1][\\\\\\\"\\\", \\\"MR\\\"]\\)\"\>", 
                    StyleBox["{",
                      
                      "InlineFormula"], \
"\<\"\\!\\(\\*StyleBox[\\\"\\\\\\\"k\\\\\\\"\\\", \\\"TI\\\"]\\)\"\>", 
                    StyleBox["}",
                      
                      "InlineFormula"], \
"\<\"\\!\\(\\*StyleBox[\\\"\\\\\\\"]\\\\\\\"\\\", \\\"MR\\\"]\\) \"\>"}], 
                  RowBox[{"\<\"another way of expressing the integer \"\>", 
                    StyleBox["k",
                      
                      "InlineFormula"], "\<\" in the field of integers mod \"\
\>", 
                    StyleBox["p",
                      "InlineFormula"]}]},
                {
                  
                  RowBox[{"\<\"\\!\\(\\*StyleBox[\\\"\\\\\\\"GF[\\\\\\\"\\\", \
\\\"MR\\\"]\\)\\!\\(\\*StyleBox[\\\"\\\\\\\"p\\\\\\\"\\\", \
\\\"TI\\\"]\\)\\!\\(\\*StyleBox[\\\"\\\\\\\",\\\\\\\"\\\", \\\"MR\\\"]\\) \
\"\>", 
                    StyleBox["{",
                      
                      "InlineFormula"], \
"\<\"\\!\\(\\*StyleBox[\\\"\\\\\\\"0,1\\\\\\\"\\\", \\\"MR\\\"]\\)\"\>", 
                    StyleBox["}",
                      
                      "InlineFormula"], "\<\"\\!\\(\\*StyleBox[\\\"\\\\\\\"][\
\\\\\\\"\\\", \\\"MR\\\"]\\)\"\>", 
                    StyleBox["{",
                      
                      "InlineFormula"], \
"\<\"\\!\\(\\*StyleBox[\\\"\\\\\\\"k\\\\\\\"\\\", \\\"TI\\\"]\\)\"\>", 
                    StyleBox["}",
                      
                      "InlineFormula"], \
"\<\"\\!\\(\\*StyleBox[\\\"\\\\\\\"]\\\\\\\"\\\", \\\"MR\\\"]\\) \"\>"}], 
                  RowBox[{"\<\"the full form of the integer \"\>", 
                    StyleBox["k",
                      
                      "InlineFormula"], "\<\" in the field of integers mod \"\
\>", 
                    StyleBox["p",
                      "InlineFormula"]}]},
                {"\<\"\\!\\(\\*StyleBox[\\\"\\\\\\\"GF[\\\\\\\"\\\", \\\"MR\\\
\"]\\)\\!\\(\\*StyleBox[\\\"\\\\\\\"p\\\\\\\"\\\", \
\\\"TI\\\"]\\)\\!\\(\\*StyleBox[\\\"\\\\\\\",\\\\\\\"\\\", \\\"MR\\\"]\\) \\!\
\\(\\*StyleBox[\\\"\\\\\\\"d\\\\\\\"\\\", \
\\\"TI\\\"]\\)\\!\\(\\*StyleBox[\\\"\\\\\\\"]\\\\\\\"\\\", \\\"MR\\\"]\\) \
\"\>", 
                  RowBox[{"\<\"a field that is a degree \"\>", 
                    StyleBox["d",
                      
                      "InlineFormula"], "\<\" extension of a prime field \
isomorphic to \"\>", 
                    StyleBox[\(Z\_p\),
                      "InlineFormula"], "\<\" (the integers mod \"\>", 
                    StyleBox["p",
                      
                      "InlineFormula"], "\<\"); an irreducible polynomial is \
selected automatically\"\>"}]},
                {"\<\"\\!\\(\\*StyleBox[\\\"\\\\\\\"GF[\\\\\\\"\\\", \\\"MR\\\
\"]\\)\\!\\(\\*StyleBox[\\\"\\\\\\\"p\\\\\\\"\\\", \
\\\"TI\\\"]\\)\\!\\(\\*StyleBox[\\\"\\\\\\\",\\\\\\\"\\\", \\\"MR\\\"]\\) \\!\
\\(\\*StyleBox[\\\"\\\\\\\"ilist\\\\\\\"\\\", \
\\\"TI\\\"]\\)\\!\\(\\*StyleBox[\\\"\\\\\\\"][\\\\\\\"\\\", \\\"MR\\\"]\\)\\!\
\\(\\*StyleBox[\\\"\\\\\\\"elist\\\\\\\"\\\", \
\\\"TI\\\"]\\)\\!\\(\\*StyleBox[\\\"\\\\\\\"]\\\\\\\"\\\", \\\"MR\\\"]\\) \
\"\>", 
                  
                  RowBox[{"\<\"the full form of a finite field element, where \
\"\>", 
                    StyleBox[\(i  l  i  s  t\),
                      
                      "InlineFormula"], "\<\" is a list of integers of length \
\"\>", 
                    StyleBox[\(d + 1\),
                      
                      "InlineFormula"], "\<\" representing the coefficients \
of an irreducible polynomial, and \"\>", 
                    StyleBox[\(e  l  i  s  t\),
                      
                      "InlineFormula"], "\<\" is a list of integers of length \
\"\>", 
                    StyleBox["d",
                      
                      "InlineFormula"], "\<\" giving the coefficients of the \
polynomial representation of the element\"\>"}]}
                },
              ColumnAlignments->{Right, Left}],
            GridBoxOptions->{RowLines->False}]],
        "2ColumnBox"], TraditionalForm]], "Text",
  CellTags->{"S5.2.1", "1.3"}],

Cell["Ways to enter finite field elements. ", "Caption",
  CellTags->"S5.2.1"],

Cell["This loads the package. ", "MathCaption",
  CellTags->{"S5.2.1", "1.4"}],

Cell["<<Algebra`FiniteFields`", "Input",
  CellLabel->"In[1]:= ",
  CellTags->"S5.2.1"],

Cell["Add 4 and 5 mod 7. The default output form is subscripted. ", \
"MathCaption",
  CellTags->{"S5.2.1", "1.5"}],

Cell[CellGroupData[{

Cell["GF[7][{4}] + GF[7][{5}]", "Input",
  CellLabel->"In[2]:= ",
  CellTags->"S5.2.1"],

Cell[BoxData[
    InterpretationBox[\({2}\_7\),
      Subscripted[ 
        {2}[ 7]],
      Editable->False]], "Output",
  CellLabel->"Out[2]= ",
  CellTags->"S5.2.1"]
}, Open  ]],

Cell[TextData[{
  "Here is the ",
  StyleBox["FullForm", "MR"],
  " of the expression. Note the automatic choice of irreducible polynomial. "
}], "MathCaption",
  CellTags->{"S5.2.1", "1.6"}],

Cell[CellGroupData[{

Cell["FullForm[%]", "Input",
  CellLabel->"In[3]:= ",
  CellTags->"S5.2.1"],

Cell[BoxData[
    TagBox[
      StyleBox[\(\(GF[7, List[0, 1]]\)[List[2]]\),
        ShowSpecialCharacters->False,
        ShowStringCharacters->True,
        NumberMarks->True],
      FullForm]], "Output",
  CellLabel->"Out[3]//FullForm= ",
  CellTags->"S5.2.1"]
}, Open  ]],

Cell[TextData[{
  "Here is multiplication in the field of ",
  StyleBox["3^4", "MR"],
  " ",
  StyleBox["==", "MR"],
  " ",
  StyleBox["81", "MR"],
  " elements. "
}], "MathCaption",
  CellTags->{"S5.2.1", "1.7"}],

Cell[CellGroupData[{

Cell["GF[3,4][{1,2,1}] GF[3,4][{2,2,2,0}]", "Input",
  CellLabel->"In[4]:= ",
  CellTags->"S5.2.1"],

Cell[BoxData[
    InterpretationBox[\({1, 1, 2, 0}\_3\),
      Subscripted[ 
        {1, 1, 2, 0}[ 3]],
      Editable->False]], "Output",
  CellLabel->"Out[4]= ",
  CellTags->"S5.2.1"]
}, Open  ]],

Cell["\<\
Field objects are automatically reduced to a canonical form. \
\>", \
"MathCaption",
  CellTags->{"S5.2.1", "1.8"}],

Cell[CellGroupData[{

Cell["GF[3,4][{1,2,3,4,5}]", "Input",
  CellLabel->"In[5]:= ",
  CellTags->"S5.2.1"],

Cell[BoxData[
    InterpretationBox[\({0, 0, 0, 1}\_3\),
      Subscripted[ 
        {0, 0, 0, 1}[ 3]],
      Editable->False]], "Output",
  CellLabel->"Out[5]= ",
  CellTags->"S5.2.1"]
}, Open  ]],

Cell[TextData[{
  "Since ",
  StyleBox["Mathematica", "TI"],
  " lists polynomials with the constant term first, the same is done for \
finite field elements. In this example, the left\[Hyphen]hand zero is \
essential to give the constant term, but the right\[Hyphen]hand zero in the \
input is unnecessary. "
}], "MathCaption",
  CellTags->{"S5.2.1", "1.9"}],

Cell[CellGroupData[{

Cell["GF[3,4][{0,1,0}]", "Input",
  CellLabel->"In[6]:= ",
  CellTags->"S5.2.1"],

Cell[BoxData[
    InterpretationBox[\({0, 1, 0, 0}\_3\),
      Subscripted[ 
        {0, 1, 0, 0}[ 3]],
      Editable->False]], "Output",
  CellLabel->"Out[6]= ",
  CellTags->"S5.2.1"]
}, Open  ]],

Cell["\<\
It is nonsense to add elements of different finite fields, so this \
expression does not evaluate. \
\>", "MathCaption",
  CellTags->{"S5.2.1", "1.10"}],

Cell[CellGroupData[{

Cell["GF[5,1][{1}] + GF[3,4][{1,1,1}]", "Input",
  CellLabel->"In[7]:= ",
  CellTags->"S5.2.1"],

Cell[BoxData[
    RowBox[{
      InterpretationBox[\({1, 1, 1, 0}\_3\),
        Subscripted[ 
          {1, 1, 1, 0}[ 3]],
        Editable->False], "+", 
      InterpretationBox[\({1}\_5\),
        Subscripted[ 
          {1}[ 5]],
        Editable->False]}]], "Output",
  CellLabel->"Out[7]= ",
  CellTags->"S5.2.1"]
}, Open  ]],

Cell["Integers are imported into finite fields. ", "MathCaption",
  CellTags->{"S5.2.1", "1.11"}],

Cell[CellGroupData[{

Cell["1 + GF[3,4][{1,1}]", "Input",
  CellLabel->"In[8]:= ",
  CellTags->"S5.2.1"],

Cell[BoxData[
    InterpretationBox[\({2, 1, 0, 0}\_3\),
      Subscripted[ 
        {2, 1, 0, 0}[ 3]],
      Editable->False]], "Output",
  CellLabel->"Out[8]= ",
  CellTags->"S5.2.1"]
}, Open  ]],

Cell[TextData[{
  "Zero is special. This package makes the assumption that zero is zero, \
regardless of the field it is in. The main consequence of this is that a \
field zero is simplified to the integer ",
  Cell[BoxData[
      \(TraditionalForm\`0\)], "InlineFormula"],
  " automatically. Many functions in ",
  StyleBox["Mathematica", "TI"],
  " work better with this assumption. The assumption is not rigorously \
correct, but will not produce nonsensical output unless nonsensical input is \
given. "
}], "Text",
  CellTags->{"S5.2.1", "1.12"}],

Cell[TextData[{
  "Field zeros are simplified to the integer ",
  Cell[BoxData[
      \(TraditionalForm\`0\)], "InlineFormula"],
  " after arithmetic. "
}], "MathCaption",
  CellTags->{"S5.2.1", "1.13"}],

Cell[CellGroupData[{

Cell["{GF[7][{1}] + GF[7][{6}], GF[3,4][{0,0,0}]}", "Input",
  CellLabel->"In[9]:= ",
  CellTags->"S5.2.1"],

Cell[BoxData[
    \({0, 0}\)], "Output",
  CellLabel->"Out[9]= ",
  CellTags->"S5.2.1"]
}, Open  ]],

Cell[TextData[{
  "The sum of the field zeros from different fields also simplifies to ",
  Cell[BoxData[
      \(TraditionalForm\`0\)], "InlineFormula"],
  ". "
}], "MathCaption",
  CellTags->{"S5.2.1", "1.14"}],

Cell[CellGroupData[{

Cell["GF[7][{0}] + GF[3,4][{0,0,0}]", "Input",
  CellLabel->"In[10]:= ",
  CellTags->"S5.2.1"],

Cell[BoxData[
    InterpretationBox[\({0}\_7\),
      Subscripted[ 
        {0}[ 7]],
      Editable->False]], "Output",
  CellLabel->"Out[10]= ",
  CellTags->"S5.2.1"]
}, Open  ]],

Cell[BoxData[
    FormBox[
      StyleBox[
        FrameBox[
          StyleBox[GridBox[{
                {"\<\"\\!\\(\\*StyleBox[\\\"\\\\\\\"SetFieldFormat[\\\\\\\"\\\
\", \\\"MR\\\"]\\)\\!\\(\\*StyleBox[\\\"\\\\\\\"f\\\\\\\"\\\", \\\"TI\\\"]\\)\
\\!\\(\\*StyleBox[\\\"\\\\\\\",\\\\\\\"\\\", \\\"MR\\\"]\\) \
\\!\\(\\*StyleBox[\\\"\\\\\\\"FormatType\\\\\\\"\\\", \\\"MR\\\"]\\) \
\\!\\(\\*StyleBox[\\\"\\\\\\\"->\\\\\\\"\\\", \\\"MR\\\"]\\) \
\\!\\(\\*StyleBox[\\\"\\\\\\\"Subscripted]\\\\\\\"\\\", \\\"MR\\\"]\\) \"\>", 
                  
                  RowBox[{"\<\"set the field \"\>", 
                    StyleBox["f",
                      
                      "InlineFormula"], "\<\" to have a \
\\!\\(\\*StyleBox[\\\"\\\\\\\"Subscripted\\\\\\\"\\\", \\\"MR\\\"]\\) output \
(default)\"\>"}]},
                {"\<\"\\!\\(\\*StyleBox[\\\"\\\\\\\"SetFieldFormat[\\\\\\\"\\\
\", \\\"MR\\\"]\\)\\!\\(\\*StyleBox[\\\"\\\\\\\"f\\\\\\\"\\\", \\\"TI\\\"]\\)\
\\!\\(\\*StyleBox[\\\"\\\\\\\",\\\\\\\"\\\", \\\"MR\\\"]\\) \
\\!\\(\\*StyleBox[\\\"\\\\\\\"FormatType\\\\\\\"\\\", \\\"MR\\\"]\\) \
\\!\\(\\*StyleBox[\\\"\\\\\\\"->\\\\\\\"\\\", \\\"MR\\\"]\\) \
\\!\\(\\*StyleBox[\\\"\\\\\\\"FullForm]\\\\\\\"\\\", \\\"MR\\\"]\\) \"\>", 
                  RowBox[{"\<\"set the field \"\>", 
                    StyleBox["f",
                      
                      "InlineFormula"], "\<\" to have a \
\\!\\(\\*StyleBox[\\\"\\\\\\\"FullForm\\\\\\\"\\\", \\\"MR\\\"]\\) \
output\"\>"}]},
                {"\<\"\\!\\(\\*StyleBox[\\\"\\\\\\\"SetFieldFormat[\\\\\\\"\\\
\", \\\"MR\\\"]\\)\\!\\(\\*StyleBox[\\\"\\\\\\\"f\\\\\\\"\\\", \\\"TI\\\"]\\)\
\\!\\(\\*StyleBox[\\\"\\\\\\\",\\\\\\\"\\\", \\\"MR\\\"]\\) \
\\!\\(\\*StyleBox[\\\"\\\\\\\"FormatType\\\\\\\"\\\", \\\"MR\\\"]\\) \
\\!\\(\\*StyleBox[\\\"\\\\\\\"->\\\\\\\"\\\", \\\"MR\\\"]\\) \
\\!\\(\\*StyleBox[\\\"\\\\\\\"FunctionOfCoefficients[\\\\\\\"\\\", \
\\\"MR\\\"]\\)\\!\\(\\*StyleBox[\\\"\\\\\\\"g\\\\\\\"\\\", \
\\\"TI\\\"]\\)\\!\\(\\*StyleBox[\\\"\\\\\\\"]]\\\\\\\"\\\", \\\"MR\\\"]\\) \"\
\>", 
                  RowBox[{"\<\"set the field \"\>", 
                    StyleBox["f",
                      
                      "InlineFormula"], "\<\" to input and output a field \
element using \"\>", 
                    StyleBox["g",
                      
                      "InlineFormula"], "\<\" as the function name, with the \
arguments given by the coefficients of the polynomial representation of the \
field element\"\>"}]},
                {"\<\"\\!\\(\\*StyleBox[\\\"\\\\\\\"SetFieldFormat[\\\\\\\"\\\
\", \\\"MR\\\"]\\)\\!\\(\\*StyleBox[\\\"\\\\\\\"f\\\\\\\"\\\", \\\"TI\\\"]\\)\
\\!\\(\\*StyleBox[\\\"\\\\\\\",\\\\\\\"\\\", \\\"MR\\\"]\\) \
\\!\\(\\*StyleBox[\\\"\\\\\\\"FormatType\\\\\\\"\\\", \\\"MR\\\"]\\) \
\\!\\(\\*StyleBox[\\\"\\\\\\\"->\\\\\\\"\\\", \\\"MR\\\"]\\) \
\\!\\(\\*StyleBox[\\\"\\\\\\\"FunctionOfCode[\\\\\\\"\\\", \
\\\"MR\\\"]\\)\\!\\(\\*StyleBox[\\\"\\\\\\\"g\\\\\\\"\\\", \
\\\"TI\\\"]\\)\\!\\(\\*StyleBox[\\\"\\\\\\\"]]\\\\\\\"\\\", \\\"MR\\\"]\\) \"\
\>", 
                  RowBox[{"\<\"set the field \"\>", 
                    StyleBox["f",
                      
                      "InlineFormula"], "\<\" to input and output a field \
element using \"\>", 
                    StyleBox["g",
                      
                      "InlineFormula"], "\<\" as the function name, with the \
argument given by the integer code specifying the field element\"\>"}]}
                },
              ColumnAlignments->{Right, Left}],
            GridBoxOptions->{RowLines->False}]],
        "2ColumnBox"], TraditionalForm]], "Text",
  CellTags->{"S5.2.1", "1.15"}],

Cell["Field element formatting. ", "Caption",
  CellTags->"S5.2.1"],

Cell[TextData[{
  "One may always input or output the ",
  StyleBox["FullForm", "MR"],
  " of a finite field element, however the package provides some shortcuts. \
The elements of a prime field may be written ",
  StyleBox["GF[", "MR"],
  StyleBox["p", "TI"],
  StyleBox["][", "MR"],
  Cell[BoxData[
      \(TraditionalForm\`{\)], "InlineFormula"],
  StyleBox["k", "TI"],
  Cell[BoxData[
      \(TraditionalForm\`}\)], "InlineFormula"],
  StyleBox["]", "MR"],
  " or ",
  StyleBox["GF[", "MR"],
  StyleBox["p", "TI"],
  StyleBox[",", "MR"],
  " ",
  StyleBox["1][", "MR"],
  Cell[BoxData[
      \(TraditionalForm\`{\)], "InlineFormula"],
  StyleBox["k", "TI"],
  Cell[BoxData[
      \(TraditionalForm\`}\)], "InlineFormula"],
  StyleBox["]", "MR"],
  ", both of which are interpreted as ",
  StyleBox["GF[", "MR"],
  StyleBox["p", "TI"],
  StyleBox[",", "MR"],
  " ",
  Cell[BoxData[
      \(TraditionalForm\`{\)], "InlineFormula"],
  StyleBox["0,1", "MR"],
  Cell[BoxData[
      \(TraditionalForm\`}\)], "InlineFormula"],
  StyleBox["][", "MR"],
  Cell[BoxData[
      \(TraditionalForm\`{\)], "InlineFormula"],
  StyleBox["k", "TI"],
  Cell[BoxData[
      \(TraditionalForm\`}\)], "InlineFormula"],
  StyleBox["]", "MR"],
  ". In general if ",
  Cell[BoxData[
      \(TraditionalForm\`s =  = p\^d\)], "InlineFormula"],
  " with ",
  Cell[BoxData[
      \(TraditionalForm\`p\)], "InlineFormula"],
  " prime and ",
  Cell[BoxData[
      \(TraditionalForm\`d\)], "InlineFormula"],
  " a positive integer, then ",
  StyleBox["GF[", "MR"],
  StyleBox["s", "TI"],
  StyleBox["]", "MR"],
  " is interpreted as ",
  StyleBox["GF[", "MR"],
  StyleBox["p", "TI"],
  StyleBox[",", "MR"],
  " ",
  StyleBox["d", "TI"],
  StyleBox["]", "MR"],
  ". The expression ",
  StyleBox["GF[3,", "MR"],
  " ",
  StyleBox["4]", "MR"],
  " stands for a degree 4 extension of the integers mod 3, that is, a field \
with 81 elements. When this form is used, the package automatically selects \
an irreducible polynomial, with coefficients given by ",
  Cell[BoxData[
      \(TraditionalForm\`i  l  i  s  t\)], "InlineFormula"],
  " and with the property that ",
  StyleBox["GF[", "MR"],
  StyleBox["p", "TI"],
  StyleBox[",", "MR"],
  " ",
  StyleBox["ilist", "TI"],
  StyleBox["][", "MR"],
  Cell[BoxData[
      \(TraditionalForm\`{\)], "InlineFormula"],
  StyleBox["0,1", "MR"],
  Cell[BoxData[
      \(TraditionalForm\`}\)], "InlineFormula"],
  StyleBox["]", "MR"],
  " is a ",
  StyleBox["primitive element", "TI"],
  " of the field. It is possible to provide your own irreducible polynomial \
by giving it explicitly, as in ",
  StyleBox["GF[3,", "MR"],
  " ",
  StyleBox["{1,", "MR"],
  " ",
  StyleBox["1,", "MR"],
  " ",
  StyleBox["1,", "MR"],
  " ",
  StyleBox["1,", "MR"],
  " ",
  StyleBox["2,", "MR"],
  " ",
  StyleBox["1}]", "MR"],
  ". \nThe default ",
  StyleBox["OutputForm", "MR"],
  " of a finite field element is a list of integers subscripted by the \
characteristic of the field. The length of the list is the degree of the \
field extension over the prime field. If you are working with only one \
representation of any field, then this will be sufficient to distinguish \
which field contains a given element. \nSince it is possible to have fields \
of the same size using different irreducible polynomials, it is useful to be \
able distinguish elements from these fields. It is also convenient to have a \
more compact way to type finite field elements. The function ",
  StyleBox["SetFieldFormat", "MR"],
  " establishes the input and output formats of field elements. You may \
always input field elements in the ways already described, or ask explicitly \
for the ",
  StyleBox["FullForm", "MR"],
  " of the output. \nNote that a field head, such as ",
  StyleBox["GF[2,", "MR"],
  " ",
  StyleBox["3]", "MR"],
  " may be assigned to a symbol. The assignment ",
  StyleBox["f8", "MR"],
  " ",
  StyleBox["=", "MR"],
  " ",
  StyleBox["GF[2,", "MR"],
  " ",
  StyleBox["3]", "MR"],
  " allows you to refer to a specific field element using ",
  StyleBox["f8[{1,0,1}]", "MR"],
  ". "
}], "Text",
  CellTags->{"S5.2.1", "1.16"}],

Cell["Give a field with 9 elements a functional format. ", "MathCaption",
  CellTags->{"S5.2.1", "1.17"}],

Cell["\<\
SetFieldFormat[GF[9],
               FormatType -> FunctionOfCoefficients[f9]]\
\>", "Input",
  CellLabel->"In[11]:= ",
  CellTags->"S5.2.1"],

Cell["Here is some arithmetic with elements from this field. ", "MathCaption",
  CellTags->{"S5.2.1", "1.18"}],

Cell[CellGroupData[{

Cell["\<\
example = {f9[1,2] + f9[2], f9[1,2]^3, 2 f9[2],
      f9[2]/f9[2,2]}\
\>", "Input",
  CellLabel->"In[12]:= ",
  CellTags->"S5.2.1"],

Cell[BoxData[
    RowBox[{"{", 
      RowBox[{
        TagBox[\(f9[0, 2]\),
          HoldForm], ",", 
        TagBox[\(f9[2, 1]\),
          HoldForm], ",", 
        TagBox[\(f9[1]\),
          HoldForm], ",", 
        TagBox[\(f9[0, 1]\),
          HoldForm]}], "}"}]], "Output",
  CellLabel->"Out[12]= ",
  CellTags->"S5.2.1"]
}, Open  ]],

Cell["\<\
Represent each element as an integer in the range 0 to 8, rather \
than as a sequence of polynomial coefficients. \
\>", "MathCaption",
  CellTags->{"S5.2.1", "1.19"}],

Cell["SetFieldFormat[GF[9], FormatType -> FunctionOfCode[f9]]", "Input",
  CellLabel->"In[13]:= ",
  CellTags->"S5.2.1"],

Cell["Here the arithmetic results are encoded. ", "MathCaption",
  CellTags->{"S5.2.1", "1.20"}],

Cell[CellGroupData[{

Cell["example", "Input",
  CellLabel->"In[14]:= ",
  CellTags->"S5.2.1"],

Cell[BoxData[
    RowBox[{"{", 
      RowBox[{
        TagBox[\(f9[6]\),
          HoldForm], ",", 
        TagBox[\(f9[5]\),
          HoldForm], ",", 
        TagBox[\(f9[1]\),
          HoldForm], ",", 
        TagBox[\(f9[3]\),
          HoldForm]}], "}"}]], "Output",
  CellLabel->"Out[14]= ",
  CellTags->"S5.2.1"]
}, Open  ]],

Cell["This restores the default formatting for this field. ", "MathCaption",
  CellTags->{"S5.2.1", "1.21"}],

Cell["SetFieldFormat[GF[9]]", "Input",
  CellLabel->"In[15]:= ",
  CellTags->"S5.2.1"],

Cell[BoxData[
    FormBox[
      StyleBox[
        FrameBox[
          StyleBox[GridBox[{
                {"\<\"\\!\\(\\*StyleBox[\\\"\\\\\\\"Characteristic[\\\\\\\"\\\
\", \\\"MR\\\"]\\)\\!\\(\\*StyleBox[\\\"\\\\\\\"f\\\\\\\"\\\", \\\"TI\\\"]\\)\
\\!\\(\\*StyleBox[\\\"\\\\\\\"]\\\\\\\"\\\", \\\"MR\\\"]\\) \"\>", 
                  RowBox[{"\<\"give the characteristic of field \"\>", 
                    StyleBox["f",
                      "InlineFormula"]}]},
                {"\<\"\\!\\(\\*StyleBox[\\\"\\\\\\\"ExtensionDegree[\\\\\\\"\\\
\", \\\"MR\\\"]\\)\\!\\(\\*StyleBox[\\\"\\\\\\\"f\\\\\\\"\\\", \\\"TI\\\"]\\)\
\\!\\(\\*StyleBox[\\\"\\\\\\\"]\\\\\\\"\\\", \\\"MR\\\"]\\) \"\>", 
                  
                  RowBox[{"\<\"give the degree of the extension of field \
\"\>", 
                    StyleBox["f",
                      "InlineFormula"], "\<\" over its base field\"\>"}]},
                {"\<\"\\!\\(\\*StyleBox[\\\"\\\\\\\"FieldSize[\\\\\\\"\\\", \
\\\"MR\\\"]\\)\\!\\(\\*StyleBox[\\\"\\\\\\\"f\\\\\\\"\\\", \
\\\"TI\\\"]\\)\\!\\(\\*StyleBox[\\\"\\\\\\\"]\\\\\\\"\\\", \\\"MR\\\"]\\) \
\"\>", 
                  RowBox[{"\<\"give the number of elements in field \"\>", 
                    StyleBox["f",
                      "InlineFormula"]}]},
                {"\<\"\\!\\(\\*StyleBox[\\\"\\\\\\\"FieldIrreducible[\\\\\\\"\
\\\", \\\"MR\\\"]\\)\\!\\(\\*StyleBox[\\\"\\\\\\\"f\\\\\\\"\\\", \
\\\"TI\\\"]\\)\\!\\(\\*StyleBox[\\\"\\\\\\\",\\\\\\\"\\\", \\\"MR\\\"]\\) \\!\
\\(\\*StyleBox[\\\"\\\\\\\"s\\\\\\\"\\\", \
\\\"TI\\\"]\\)\\!\\(\\*StyleBox[\\\"\\\\\\\"]\\\\\\\"\\\", \\\"MR\\\"]\\) \
\"\>", 
                  
                  RowBox[{"\<\"give the irreducible polynomial which defines \
multiplication in the field \"\>", 
                    StyleBox["f",
                      
                      "InlineFormula"], "\<\", expressed in terms of the \
symbol \"\>", 
                    StyleBox["s",
                      "InlineFormula"]}]},
                {"\<\"\\!\\(\\*StyleBox[\\\"\\\\\\\"IrreduciblePolynomial[\\\\\
\\\"\\\", \\\"MR\\\"]\\)\\!\\(\\*StyleBox[\\\"\\\\\\\"s\\\\\\\"\\\", \\\"TI\\\
\"]\\)\\!\\(\\*StyleBox[\\\"\\\\\\\",\\\\\\\"\\\", \\\"MR\\\"]\\) \
\\!\\(\\*StyleBox[\\\"\\\\\\\"p\\\\\\\"\\\", \\\"TI\\\"]\\)\\!\\(\\*StyleBox[\
\\\"\\\\\\\",\\\\\\\"\\\", \\\"MR\\\"]\\) \\!\\(\\*StyleBox[\\\"\\\\\\\"d\\\\\
\\\"\\\", \\\"TI\\\"]\\)\\!\\(\\*StyleBox[\\\"\\\\\\\"]\\\\\\\"\\\", \\\"MR\\\
\"]\\) \"\>", 
                  
                  RowBox[{"\<\"find an irreducible polynomial of degree \"\>",
                     
                    StyleBox["d",
                      
                      "InlineFormula"], "\<\" over the integers mod prime \
\"\>", 
                    StyleBox["p",
                      
                      "InlineFormula"], "\<\", expressed in terms of the \
symbol \"\>", 
                    StyleBox["s",
                      "InlineFormula"]}]}
                },
              ColumnAlignments->{Right, Left}],
            GridBoxOptions->{RowLines->False}]],
        "2ColumnBox"], TraditionalForm]], "Text",
  CellTags->{"S5.2.1", "1.22"}],

Cell["Field parameter functions. ", "Caption",
  CellTags->"S5.2.1"],

Cell[TextData[{
  "The functions ",
  StyleBox["Characteristic", "MR"],
  ", ",
  StyleBox["ExtensionDegree", "MR"],
  ", ",
  StyleBox["FieldSize", "MR"],
  ", ",
  StyleBox["FieldIrreducible", "MR"],
  ", and ",
  StyleBox["IrreduciblePolynomial", "MR"],
  " give important parameters about a finite field. "
}], "Text",
  CellTags->{"S5.2.1", "1.23"}],

Cell[TextData[{
  StyleBox["Characteristic", "MR"],
  " gives the prime characteristic of the field. "
}], "MathCaption",
  CellTags->{"S5.2.1", "1.24"}],

Cell[CellGroupData[{

Cell["(fld = GF[81]; Characteristic[fld])", "Input",
  CellLabel->"In[16]:= ",
  CellTags->"S5.2.1"],

Cell[BoxData[
    \(3\)], "Output",
  CellLabel->"Out[16]= ",
  CellTags->"S5.2.1"]
}, Open  ]],

Cell[TextData[{
  "A field extension is a vector space over the base field. ",
  StyleBox["ExtensionDegree", "MR"],
  " gives the dimension of this vector space. "
}], "MathCaption",
  CellTags->{"S5.2.1", "1.25"}],

Cell[CellGroupData[{

Cell["ExtensionDegree[fld]", "Input",
  CellLabel->"In[17]:= ",
  CellTags->"S5.2.1"],

Cell[BoxData[
    \(4\)], "Output",
  CellLabel->"Out[17]= ",
  CellTags->"S5.2.1"]
}, Open  ]],

Cell[TextData[{
  StyleBox["FieldSize", "MR"],
  " gives the number of elements in the field. "
}], "MathCaption",
  CellTags->{"S5.2.1", "1.26"}],

Cell[CellGroupData[{

Cell["FieldSize[fld]", "Input",
  CellLabel->"In[18]:= ",
  CellTags->"S5.2.1"],

Cell[BoxData[
    \(81\)], "Output",
  CellLabel->"Out[18]= ",
  CellTags->"S5.2.1"]
}, Open  ]],

Cell["Here is an identity. ", "MathCaption",
  CellTags->{"S5.2.1", "1.27"}],

Cell[CellGroupData[{

Cell["FieldSize[fld] == Characteristic[fld]^ExtensionDegree[fld]", "Input",
  CellLabel->"In[19]:= ",
  CellTags->"S5.2.1"],

Cell[BoxData[
    \(True\)], "Output",
  CellLabel->"Out[19]= ",
  CellTags->"S5.2.1"]
}, Open  ]],

Cell["\<\
This gives the irreducible polynomial associated with a field. \
\
\>", "MathCaption",
  CellTags->{"S5.2.1", "1.28"}],

Cell[CellGroupData[{

Cell["FieldIrreducible[fld, x]", "Input",
  CellLabel->"In[20]:= ",
  CellTags->"S5.2.1"],

Cell[BoxData[
    \(2 + x + x\^4\)], "Output",
  CellLabel->"Out[20]= ",
  CellTags->"S5.2.1"]
}, Open  ]],

Cell[BoxData[
    FormBox[
      StyleBox[
        FrameBox[
          StyleBox[GridBox[{
                {"\<\"\\!\\(\\*StyleBox[\\\"\\\\\\\"Successor[\\\\\\\"\\\", \
\\\"MR\\\"]\\)\\!\\(\\*StyleBox[\\\"\\\\\\\"elem\\\\\\\"\\\", \
\\\"TI\\\"]\\)\\!\\(\\*StyleBox[\\\"\\\\\\\"]\\\\\\\"\\\", \\\"MR\\\"]\\) \
\"\>", \("give the next element in a canonical ordering of the field elements \
(this function does not wrap, so the largest element has no successor)"\)},
                {"\<\"\\!\\(\\*StyleBox[\\\"\\\\\\\"ReduceElement[\\\\\\\"\\\"\
, \\\"MR\\\"]\\)\\!\\(\\*StyleBox[\\\"\\\\\\\"elem\\\\\\\"\\\", \
\\\"TI\\\"]\\)\\!\\(\\*StyleBox[\\\"\\\\\\\"]\\\\\\\"\\\", \\\"MR\\\"]\\) \
\"\>", "\<\"give a field element in reduced form\"\>"},
                {"\<\"\\!\\(\\*StyleBox[\\\"\\\\\\\"ToElementCode[\\\\\\\"\\\"\
, \\\"MR\\\"]\\)\\!\\(\\*StyleBox[\\\"\\\\\\\"elem\\\\\\\"\\\", \
\\\"TI\\\"]\\)\\!\\(\\*StyleBox[\\\"\\\\\\\"]\\\\\\\"\\\", \\\"MR\\\"]\\) \
\"\>", \("give a nonnegative integer less than the field size that encodes \
the field element"\)},
                {"\<\"\\!\\(\\*StyleBox[\\\"\\\\\\\"FromElementCode[\\\\\\\"\\\
\", \\\"MR\\\"]\\)\\!\\(\\*StyleBox[\\\"\\\\\\\"f\\\\\\\"\\\", \\\"TI\\\"]\\)\
\\!\\(\\*StyleBox[\\\"\\\\\\\",\\\\\\\"\\\", \\\"MR\\\"]\\) \
\\!\\(\\*StyleBox[\\\"\\\\\\\"code\\\\\\\"\\\", \
\\\"TI\\\"]\\)\\!\\(\\*StyleBox[\\\"\\\\\\\"]\\\\\\\"\\\", \\\"MR\\\"]\\) \
\"\>", 
                  RowBox[{"\<\"give the field element of \"\>", 
                    StyleBox["f",
                      "InlineFormula"], "\<\" corresponding to \"\>", 
                    StyleBox[\(c  o  d  e\),
                      
                      "InlineFormula"], "\<\", a nonnegative integer less \
than the field size\"\>"}]},
                {"\<\"\\!\\(\\*StyleBox[\\\"\\\\\\\"PolynomialToElement[\\\\\\\
\"\\\", \\\"MR\\\"]\\)\\!\\(\\*StyleBox[\\\"\\\\\\\"f\\\\\\\"\\\", \
\\\"TI\\\"]\\)\\!\\(\\*StyleBox[\\\"\\\\\\\",\\\\\\\"\\\", \\\"MR\\\"]\\) \\!\
\\(\\*StyleBox[\\\"\\\\\\\"poly\\\\\\\"\\\", \\\"TI\\\"]\\)\\!\\(\\*StyleBox[\
\\\"\\\\\\\"]\\\\\\\"\\\", \\\"MR\\\"]\\) \"\>", 
                  RowBox[{"\<\"give the field element of \"\>", 
                    StyleBox["f",
                      "InlineFormula"], "\<\" corresponding to \"\>", 
                    StyleBox[\(p  o  l  y\),
                      
                      "InlineFormula"], "\<\", a polynomial in one variable \
with integer\[Hyphen]valued coefficients\"\>"}]},
                {"\<\"\\!\\(\\*StyleBox[\\\"\\\\\\\"ElementToPolynomial[\\\\\\\
\"\\\", \\\"MR\\\"]\\)\\!\\(\\*StyleBox[\\\"\\\\\\\"elem\\\\\\\"\\\", \
\\\"TI\\\"]\\)\\!\\(\\*StyleBox[\\\"\\\\\\\",\\\\\\\"\\\", \\\"MR\\\"]\\) \\!\
\\(\\*StyleBox[\\\"\\\\\\\"s\\\\\\\"\\\", \
\\\"TI\\\"]\\)\\!\\(\\*StyleBox[\\\"\\\\\\\"]\\\\\\\"\\\", \\\"MR\\\"]\\) \
\"\>", 
                  RowBox[{"\<\"give a polynomial in the symbol \"\>", 
                    StyleBox["s",
                      
                      "InlineFormula"], "\<\" corresponding to the field \
element \"\>", 
                    StyleBox[\(e  l  e  m\),
                      "InlineFormula"]}]}
                },
              ColumnAlignments->{Right, Left}],
            GridBoxOptions->{RowLines->False}]],
        "2ColumnBox"], TraditionalForm]], "Text",
  CellTags->{"S5.2.1", "1.29"}],

Cell["Field element manipulation functions. ", "Caption",
  CellTags->"S5.2.1"],

Cell[TextData[{
  "The functions ",
  StyleBox["Successor", "MR"],
  ", ",
  StyleBox["ReduceElement", "MR"],
  ", ",
  StyleBox["ToElementCode", "MR"],
  ", ",
  StyleBox["FromElementCode", "MR"],
  ", ",
  StyleBox["PolynomialToElement", "MR"],
  ", and ",
  StyleBox["ElementToPolynomial", "MR"],
  " are for working with finite field elements. "
}], "Text",
  CellTags->{"S5.2.1", "1.30"}],

Cell["This gives the element as a polynomial. ", "MathCaption",
  CellTags->{"S5.2.1", "1.31"}],

Cell[CellGroupData[{

Cell["ElementToPolynomial[fld[{1,2,1,2}], x]", "Input",
  CellLabel->"In[21]:= ",
  CellTags->"S5.2.1"],

Cell[BoxData[
    \(1 + 2\ x + x\^2 + 2\ x\^3\)], "Output",
  CellLabel->"Out[21]= ",
  CellTags->"S5.2.1"]
}, Open  ]],

Cell[BoxData[
    FormBox[
      StyleBox[
        FrameBox[
          StyleBox[GridBox[{
                {"\<\"\\!\\(\\*StyleBox[\\\"\\\\\\\"PowerListQ[\\\\\\\"\\\", \
\\\"MR\\\"]\\)\\!\\(\\*StyleBox[\\\"\\\\\\\"f\\\\\\\"\\\", \
\\\"TI\\\"]\\)\\!\\(\\*StyleBox[\\\"\\\\\\\"]\\\\\\\"\\\", \\\"MR\\\"]\\) \
\"\>", "\<\"give \\!\\(\\*StyleBox[\\\"\\\\\\\"True\\\\\\\"\\\", \
\\\"MR\\\"]\\) if a list representing the powers of a primitive element of \
the field is used to do field arithmetic, \\!\\(\\*StyleBox[\\\"\\\\\\\"False\
\\\\\\\"\\\", \\\"MR\\\"]\\) otherwise\"\>"},
                {"\<\"\\!\\(\\*StyleBox[\\\"\\\\\\\"FieldExp[\\\\\\\"\\\", \\\
\"MR\\\"]\\)\\!\\(\\*StyleBox[\\\"\\\\\\\"f\\\\\\\"\\\", \\\"TI\\\"]\\)\\!\\(\
\\*StyleBox[\\\"\\\\\\\",\\\\\\\"\\\", \\\"MR\\\"]\\) \
\\!\\(\\*StyleBox[\\\"\\\\\\\"n\\\\\\\"\\\", \\\"TI\\\"]\\)\\!\\(\\*StyleBox[\
\\\"\\\\\\\"]\\\\\\\"\\\", \\\"MR\\\"]\\) \"\>", 
                  
                  RowBox[{"\<\"give the value of the discrete exponential \
function associated with the field \"\>", 
                    StyleBox["f",
                      "InlineFormula"], "\<\" for integer \"\>", 
                    StyleBox["n",
                      "InlineFormula"]}]},
                {"\<\"\\!\\(\\*StyleBox[\\\"\\\\\\\"FieldInd[\\\\\\\"\\\", \\\
\"MR\\\"]\\)\\!\\(\\*StyleBox[\\\"\\\\\\\"elem\\\\\\\"\\\", \\\"TI\\\"]\\)\\!\
\\(\\*StyleBox[\\\"\\\\\\\"]\\\\\\\"\\\", \\\"MR\\\"]\\) \"\>", 
                  
                  RowBox[{"\<\"give the value of the discrete logarithm \
function associated with the field for element \"\>", 
                    StyleBox[\(e  l  e  m\),
                      "InlineFormula"]}]},
                {"\<\"\\!\\(\\*StyleBox[\\\"\\\\\\\"PowerList[\\\\\\\"\\\", \
\\\"MR\\\"]\\)\\!\\(\\*StyleBox[\\\"\\\\\\\"f\\\\\\\"\\\", \
\\\"TI\\\"]\\)\\!\\(\\*StyleBox[\\\"\\\\\\\"]\\\\\\\"\\\", \\\"MR\\\"]\\) \
\"\>", 
                  
                  RowBox[{"\<\"give a list of the data parts of the nonzero \
elements of the field \"\>", 
                    StyleBox["f",
                      
                      "InlineFormula"], "\<\", generated by raising a \
primitive element of the field to integer powers 0, 1, 2, \"\>", 
                    StyleBox[\(\(\[Ellipsis]\)\(\ \)\),
                      
                      "InlineFormula"], "\<\", \
\\!\\(\\*StyleBox[\\\"\\\\\\\"FieldSize[\\\\\\\"\\\", \
\\\"MR\\\"]\\)\\!\\(\\*StyleBox[\\\"\\\\\\\"f\\\\\\\"\\\", \
\\\"TI\\\"]\\)\\!\\(\\*StyleBox[\\\"\\\\\\\"]-1\\\\\\\"\\\", \\\"MR\\\"]\\)\"\
\>"}]},
                {"\<\"\\!\\(\\*StyleBox[\\\"\\\\\\\"PowerListToField[\\\\\\\"\
\\\", \\\"MR\\\"]\\)\\!\\(\\*StyleBox[\\\"\\\\\\\"list\\\\\\\"\\\", \
\\\"TI\\\"]\\)\\!\\(\\*StyleBox[\\\"\\\\\\\"]\\\\\\\"\\\", \\\"MR\\\"]\\) \
\"\>", \("give the field associated with the specified list of element data \
parts, where the elements are generated by successive powers of a primitive \
element"\)}
                },
              ColumnAlignments->{Right, Left}],
            GridBoxOptions->{RowLines->False}]],
        "2ColumnBox"], TraditionalForm]], "Text",
  CellTags->{"S5.2.1", "1.32"}],

Cell["Functions to support fast multiplication and division. ", "Caption",
  CellTags->"S5.2.1"],

Cell[TextData[{
  "A finite field must have a prime power number of elements. If it has ",
  Cell[BoxData[
      \(TraditionalForm\`p\)], "InlineFormula"],
  " elements, where ",
  Cell[BoxData[
      \(TraditionalForm\`p\)], "InlineFormula"],
  " is a prime, then it is isomorphic to the integers mod ",
  Cell[BoxData[
      \(TraditionalForm\`p\)], "InlineFormula"],
  ". In this case the package does addition, subtraction, multiplication, and \
positive powers as usual over the integers and reduces the results using ",
  StyleBox["Mod", "MR"],
  ". For negative powers the package uses ",
  StyleBox["PowerMod", "MR"],
  ". \nIf the field has ",
  Cell[BoxData[
      \(TraditionalForm\`p\^d\)], "InlineFormula"],
  " elements, where ",
  Cell[BoxData[
      \(TraditionalForm\`d > 1\)], "InlineFormula"],
  ", then it is isomorphic to the set of polynomials in some variable having \
degree less than ",
  Cell[BoxData[
      \(TraditionalForm\`d\)], "InlineFormula"],
  " and with coefficients in the integers mod ",
  Cell[BoxData[
      \(TraditionalForm\`p\)], "InlineFormula"],
  ". Addition is polynomial addition except that the coefficients are reduced \
modulo ",
  Cell[BoxData[
      \(TraditionalForm\`p\)], "InlineFormula"],
  ". For multiplication the product is also reduced modulo an irreducible \
(nonfactorable) polynomial over the integers modulo ",
  Cell[BoxData[
      \(TraditionalForm\`p\)], "InlineFormula"],
  ". \nTaking multiplicative inverses is equivalent to finding the extended \
greatest common divisor modulo ",
  Cell[BoxData[
      \(TraditionalForm\`p\)], "InlineFormula"],
  " with the irreducible polynomial. In other words, given the field element \
",
  Cell[BoxData[
      \(TraditionalForm\`e  l  e  m\)], "InlineFormula"],
  " and the field's irreducible polynomial ",
  Cell[BoxData[
      \(TraditionalForm\`i  r  r  e  d\)], "InlineFormula"],
  ", find polynomials ",
  Cell[BoxData[
      \(TraditionalForm\`a\)], "InlineFormula"],
  " and ",
  Cell[BoxData[
      \(TraditionalForm\`b\)], "InlineFormula"],
  " such that ",
  StyleBox["PolynomialGCD[", "MR"],
  StyleBox["elem", "TI"],
  StyleBox[",", "MR"],
  " ",
  StyleBox["irred", "TI"],
  StyleBox[",", "MR"],
  " ",
  StyleBox["Modulus", "MR"],
  " ",
  StyleBox["->", "MR"],
  " ",
  StyleBox["p", "TI"],
  StyleBox["]", "MR"],
  " equals ",
  StyleBox["PolynomialMod[", "MR"],
  StyleBox["a", "TI"],
  " ",
  StyleBox["elem", "TI"],
  " ",
  StyleBox["+", "MR"],
  " ",
  StyleBox["b", "TI"],
  " ",
  StyleBox["irred", "TI"],
  StyleBox[",", "MR"],
  " ",
  StyleBox["p", "TI"],
  StyleBox["]", "MR"],
  ". If the result of ",
  StyleBox["PolynomialGCD", "MR"],
  " is unity, then ",
  Cell[BoxData[
      \(TraditionalForm\`a\)], "InlineFormula"],
  " is the inverse of ",
  Cell[BoxData[
      \(TraditionalForm\`e  l  e  m\)], "InlineFormula"],
  ". \nThere is a faster way to do multiplication and compute inverses, based \
on the fact that the multiplicative group of any finite field is cyclic. If \
you have a generator of the group along with a list of the positive powers of \
the generator in sequence, then multiplication and division can be reduced to \
adding and subtracting indices of the elements in the list. \nThe package \
supports this method of arithmetic by allowing you to either generate a field \
object from a list representing the powers of a primitive element (",
  StyleBox["PowerListToField", "MR"],
  "), or generate a list representing the powers of a primitive element from \
a field object (",
  StyleBox["PowerList", "MR"],
  "). Setting ",
  StyleBox["PowerListQ", "MR"],
  " to ",
  StyleBox["True", "MR"],
  " causes field arithmetic to use a list of primitive element powers, by \
defining the discrete exponential function ",
  StyleBox["FieldExp", "MR"],
  " and the discrete logarithm function ",
  StyleBox["FieldInd", "MR"],
  ". The ",
  StyleBox["FieldInd", "MR"],
  " function is often called the index function for the field. The list of \
powers will depend on the choice of primitive element and on which \
irreducible polynomial is used for the field representation. Any element of \
the field for which ",
  StyleBox["FieldInd[", "MR"],
  StyleBox["elem", "TI"],
  StyleBox["]", "MR"],
  " is relatively prime to ",
  StyleBox["FieldSize[", "MR"],
  StyleBox["f", "TI"],
  StyleBox["]-1", "MR"],
  " is also a primitive element of the field. \nField arithmetic using a list \
of primitive element powers has two disadvantages. It takes time to enter or \
compute the list, and the list can take considerable memory. In general, if \
you are doing only a few arithmetic operations, or if you are working in a \
large field, it is better not to create the list. Note that setting ",
  StyleBox["PowerListQ", "MR"],
  " to ",
  StyleBox["False", "MR"],
  " disables this method of doing arithmetic in a particular field, but it \
does not destroy the computed values of ",
  StyleBox["FieldExp", "MR"],
  " and ",
  StyleBox["FieldInd", "MR"],
  ". "
}], "Text",
  CellTags->{"S5.2.1", "1.33"}],

Cell[TextData[{
  "This shows that 3 is a primitive element of the integers mod 7. The other \
primitive element is 5. Since ",
  StyleBox["GF[7,1]", "MR"],
  " is a prime field, it is inefficient to use a list of primitive element \
powers for multiplication. "
}], "MathCaption",
  CellTags->{"S5.2.1", "1.34"}],

Cell[CellGroupData[{

Cell["PowerList[GF[7,1]]", "Input",
  CellLabel->"In[22]:= ",
  CellTags->"S5.2.1"],

Cell[BoxData[
    \({{1}, {3}, {2}, {6}, {4}, {5}}\)], "Output",
  CellLabel->"Out[22]= ",
  CellTags->"S5.2.1"]
}, Open  ]],

Cell[TextData[{
  "Although using a list of primitive element powers is an inefficient way to \
do ",
  StyleBox["GF[7,1]", "MR"],
  " arithmetic, this enables the method anyway. "
}], "MathCaption",
  CellTags->{"S5.2.1", "1.35"}],

Cell["PowerListQ[GF[7,1]] = True", "Input",
  CellLabel->"In[23]:= ",
  CellTags->"S5.2.1"],

Cell[TextData[{
  "The position of ",
  StyleBox["{6}", "MR"],
  " in ",
  StyleBox["PowerList", "MR"],
  " is one greater than the index given by ",
  StyleBox["FieldInd", "MR"],
  ". "
}], "MathCaption",
  CellTags->{"S5.2.1", "1.36"}],

Cell[CellGroupData[{

Cell["FieldInd[GF[7,1][{6}]]", "Input",
  CellLabel->"In[24]:= ",
  CellTags->"S5.2.1"],

Cell[BoxData[
    \(3\)], "Output",
  CellLabel->"Out[24]= ",
  CellTags->"S5.2.1"]
}, Open  ]],

Cell[TextData[{
  StyleBox["FieldExp", "MR"],
  " and ",
  StyleBox["FieldInd", "MR"],
  " are inverses. "
}], "MathCaption",
  CellTags->{"S5.2.1", "1.37"}],

Cell[CellGroupData[{

Cell["FieldExp[GF[7,1], 3]", "Input",
  CellLabel->"In[25]:= ",
  CellTags->"S5.2.1"],

Cell[BoxData[
    InterpretationBox[\({6}\_7\),
      Subscripted[ 
        {6}[ 7]],
      Editable->False]], "Output",
  CellLabel->"Out[25]= ",
  CellTags->"S5.2.1"]
}, Open  ]],

Cell["\<\
These definitions for field index and field exponent are not part \
of the conventional definitions, but may be useful in some applications. \
\
\>", "MathCaption",
  CellTags->{"S5.2.1", "1.38"}],

Cell[CellGroupData[{

Cell["{FieldInd[0], FieldExp[GF[7,1], -Infinity]}", "Input",
  CellLabel->"In[26]:= ",
  CellTags->"S5.2.1"],

Cell[BoxData[
    RowBox[{"{", 
      RowBox[{
        InterpretationBox[\(-\[Infinity]\),
          DirectedInfinity[ -1]], ",", "0"}], "}"}]], "Output",
  CellLabel->"Out[26]= ",
  CellTags->"S5.2.1"]
}, Open  ]],

Cell[TextData[{
  "Some books contain tables equivalent to the list given by ",
  StyleBox["PowerList", "MR"],
  ". The function ",
  StyleBox["PowerListToField", "MR"],
  " allows such a list to be used to define a field. The argument of ",
  StyleBox["PowerListToField", "MR"],
  " is a list of ",
  Cell[BoxData[
      \(TraditionalForm\`p\^d - 1\)], "InlineFormula"],
  " ",
  Cell[BoxData[
      \(TraditionalForm\`d\)], "InlineFormula"],
  "\[Hyphen]tuples of integers. The first ",
  Cell[BoxData[
      \(TraditionalForm\`d\)], "InlineFormula"],
  "\[Hyphen]tuple is assumed to give the coefficients of the polynomial \
representation of the ",
  Cell[BoxData[
      \(TraditionalForm\`1\)], "InlineFormula"],
  " element of the field. This is used to determine whether the coefficients \
are listed constant\[Hyphen]term\[Hyphen]first or constant\[Hyphen]term\
\[Hyphen]last. The second ",
  Cell[BoxData[
      \(TraditionalForm\`d\)], "InlineFormula"],
  "\[Hyphen]tuple is assumed to represent a primitive element of the field. \
The succeeding ",
  Cell[BoxData[
      \(TraditionalForm\`d\)], "InlineFormula"],
  "\[Hyphen]tuples are assumed to represent successive powers of the second \
element. ",
  StyleBox["PowerListToField", "MR"],
  " does some elementary error checking to verify that the input list is \
valid. If so, ",
  StyleBox["PowerListToField", "MR"],
  " computes parameters of the field such as the characteristic and the \
irreducible polynomial. "
}], "Text",
  CellTags->{"S5.2.1", "1.39"}],

Cell["Here is a field of order 9. ", "MathCaption",
  CellTags->{"S5.2.1", "1.40"}],

Cell[CellGroupData[{

Cell["\<\
g9 = PowerListToField[{{1, 0}, {0, 1},
 {1, 2}, {2, 2}, {2, 0}, {0, 2}, {2, 1}, {1, 1}}]\
\>", "Input",
  CellLabel->"In[27]:= ",
  CellTags->"S5.2.1"],

Cell[BoxData[
    \(GF[3, {2, 1, 1}]\)], "Output",
  CellLabel->"Out[27]= ",
  CellTags->"S5.2.1"]
}, Open  ]],

Cell[TextData[{
  "Arithmetic works on fields defined using ",
  StyleBox["PowerListToField", "MR"],
  ". "
}], "MathCaption",
  CellTags->{"S5.2.1", "1.41"}],

Cell[CellGroupData[{

Cell["\<\
{g9[{1}] + g9[{1,1}], g9[{1,2}] * g9[{2,2}], 1/g9[{0,2}], \
g9[{2,2}]^2}\
\>", "Input",
  CellLabel->"In[28]:= ",
  CellTags->"S5.2.1"],

Cell[BoxData[
    RowBox[{"{", 
      RowBox[{
        InterpretationBox[\({2, 1}\_3\),
          Subscripted[ 
            {2, 1}[ 3]],
          Editable->False], ",", 
        InterpretationBox[\({0, 2}\_3\),
          Subscripted[ 
            {0, 2}[ 3]],
          Editable->False], ",", 
        InterpretationBox[\({2, 2}\_3\),
          Subscripted[ 
            {2, 2}[ 3]],
          Editable->False], ",", 
        InterpretationBox[\({2, 1}\_3\),
          Subscripted[ 
            {2, 1}[ 3]],
          Editable->False]}], "}"}]], "Output",
  CellLabel->"Out[28]= ",
  CellTags->"S5.2.1"]
}, Open  ]],

Cell["The field parameters are computed automatically. ", "MathCaption",
  CellTags->{"S5.2.1", "1.42"}],

Cell[CellGroupData[{

Cell["\<\
{Characteristic[g9], ExtensionDegree[g9],
       FieldIrreducible[g9,z]}\
\>", "Input",
  CellLabel->"In[29]:= ",
  CellTags->"S5.2.1"],

Cell[BoxData[
    \({3, 2, 2 + z + z\^2}\)], "Output",
  CellLabel->"Out[29]= ",
  CellTags->"S5.2.1"]
}, Open  ]],

Cell[TextData[{
  StyleBox["FieldExp", "MR"],
  " may be used to generate the list of elements corresponding to the \
original list. "
}], "MathCaption",
  CellTags->{"S5.2.1", "1.43"}],

Cell[CellGroupData[{

Cell["Table[FieldExp[g9, i], {i, 0, 7}]", "Input",
  CellLabel->"In[30]:= ",
  CellTags->"S5.2.1"],

Cell[BoxData[
    RowBox[{"{", 
      RowBox[{
        InterpretationBox[\({1, 0}\_3\),
          Subscripted[ 
            {1, 0}[ 3]],
          Editable->False], ",", 
        InterpretationBox[\({0, 1}\_3\),
          Subscripted[ 
            {0, 1}[ 3]],
          Editable->False], ",", 
        InterpretationBox[\({1, 2}\_3\),
          Subscripted[ 
            {1, 2}[ 3]],
          Editable->False], ",", 
        InterpretationBox[\({2, 2}\_3\),
          Subscripted[ 
            {2, 2}[ 3]],
          Editable->False], ",", 
        InterpretationBox[\({2, 0}\_3\),
          Subscripted[ 
            {2, 0}[ 3]],
          Editable->False], ",", 
        InterpretationBox[\({0, 2}\_3\),
          Subscripted[ 
            {0, 2}[ 3]],
          Editable->False], ",", 
        InterpretationBox[\({2, 1}\_3\),
          Subscripted[ 
            {2, 1}[ 3]],
          Editable->False], ",", 
        InterpretationBox[\({1, 1}\_3\),
          Subscripted[ 
            {1, 1}[ 3]],
          Editable->False]}], "}"}]], "Output",
  CellLabel->"Out[30]= ",
  CellTags->"S5.2.1"]
}, Open  ]],

Cell["\<\
This gives the original list consisting of the data parts of the \
elements. \
\>", "MathCaption",
  CellTags->{"S5.2.1", "1.44"}],

Cell[CellGroupData[{

Cell["PowerList[g9]", "Input",
  CellLabel->"In[31]:= ",
  CellTags->"S5.2.1"],

Cell[BoxData[
    \({{1, 0}, {0, 1}, {1, 2}, {2, 2}, {2, 0}, {0, 2}, {2, 1}, {1, 
        1}}\)], "Output",
  CellLabel->"Out[31]= ",
  CellTags->"S5.2.1"]
}, Open  ]],

Cell[TextData[{
  "Compatibility with Other ",
  StyleBox["Mathematica", "SBO"],
  " Functions"
}], "Subsubsection",
  CellTags->{"S5.2.1", "1.45"}],

Cell[TextData[{
  "Most ",
  StyleBox["Mathematica", "TI"],
  " functions are not, indeed cannot be, designed to work over arbitrary \
fields. For instance, it is nonsensical to integrate an expression containing \
a finite field object. At best, such functions will not do anything when \
given such an expression. \nYou can generally expect these functions to treat \
the field object as an unknown symbol. Before using a function on an \
expression with finite field objects, it is wise to try some test cases \
first. The types of functions that might reasonably be expected to work are \
linear algebra and polynomial functions. "
}], "Text",
  CellTags->{"S5.2.1", "1.46"}],

Cell[TextData[{
  "Set the format for ",
  StyleBox["GF[9]", "MR"],
  ". "
}], "MathCaption",
  CellTags->{"S5.2.1", "1.47"}],

Cell["SetFieldFormat[GF[9], FormatType -> FunctionOfCode[f9]]", "Input",
  CellLabel->"In[32]:= ",
  CellTags->"S5.2.1"],

Cell["Fractional powers do not work. ", "MathCaption",
  CellTags->{"S5.2.1", "1.48"}],

Cell[CellGroupData[{

Cell["Power[f9[1], 1/2]", "Input",
  CellLabel->"In[33]:= ",
  CellTags->"S5.2.1"],

Cell[BoxData[
    SqrtBox[
      TagBox[\(f9[1]\),
        HoldForm]]], "Output",
  CellLabel->"Out[33]= ",
  CellTags->"S5.2.1"]
}, Open  ]],

Cell[TextData[{
  StyleBox["Factor", "MR"],
  " fails because it makes the assumption that it is working over the \
rationals. "
}], "MathCaption",
  CellTags->{"S5.2.1", "1.49"}],

Cell[CellGroupData[{

Cell["Factor[Expand[(x + f9[2])(x - f9[2])]]", "Input",
  CellLabel->"In[34]:= ",
  CellTags->"S5.2.1"],

Cell[BoxData[
    RowBox[{\(x\^2\), "+", 
      TagBox[\(f9[2]\),
        HoldForm]}]], "Output",
  CellLabel->"Out[34]= ",
  CellTags->"S5.2.1"]
}, Open  ]],

Cell[TextData[{
  StyleBox["PolynomialGCD", "MR"],
  " doesn't work either. Use ",
  StyleBox["PolynomialExtendedGCD", "MR"],
  " defined in the package instead. "
}], "MathCaption",
  CellTags->{"S5.2.1", "1.50"}],

Cell[CellGroupData[{

Cell["PolynomialGCD[x + f9[1], f9[2] x + f9[2]]", "Input",
  CellLabel->"In[35]:= ",
  CellTags->"S5.2.1"],

Cell[BoxData[
    \(1\)], "Output",
  CellLabel->"Out[35]= ",
  CellTags->"S5.2.1"]
}, Open  ]],

Cell[TextData[{
  "Set the format for ",
  StyleBox["GF[3,", "MR"],
  " ",
  StyleBox["4]", "MR"],
  ". "
}], "MathCaption",
  CellTags->{"S5.2.1", "1.51"}],

Cell["\<\
SetFieldFormat[GF[3,4],
               FormatType -> FunctionOfCoefficients[f81]]\
\>", "Input",
  CellLabel->"In[36]:= ",
  CellTags->"S5.2.1"],

Cell[TextData[{
  StyleBox["PolynomialQuotient", "MR"],
  " and ",
  StyleBox["PolynomialRemainder", "MR"],
  " accept polynomials over a field. "
}], "MathCaption",
  CellTags->{"S5.2.1", "1.52"}],

Cell[CellGroupData[{

Cell["\<\
{PolynomialQuotient[f81[2,2] x^4 + f81[1] x^2 +
 f81[1,1,1], f81[2] x^2 + f81[1,1,1,1], x],
 PolynomialRemainder[f81[2,2] x^4 + f81[1] x^2 +
 f81[1,1,1], f81[2] x^2 + f81[1,1,1,1], x]}\
\>", "Input",
  CellLabel->"In[37]:= ",
  CellTags->"S5.2.1"],

Cell[BoxData[
    RowBox[{"{", 
      RowBox[{
        RowBox[{
          RowBox[{\(x\^2\), " ", 
            TagBox[\(f81[1, 1]\),
              HoldForm]}], "+", 
          TagBox[\(f81[1, 1, 2, 2]\),
            HoldForm]}], ",", 
        TagBox[\(f81[1, 0, 2, 2]\),
          HoldForm]}], "}"}]], "Output",
  CellLabel->"Out[37]= ",
  CellTags->"S5.2.1"]
}, Open  ]],

Cell[TextData[{
  StyleBox["PolynomialMod", "MR"],
  " works on polynomials over the integers, not polynomials over a field. \
Also note that a polynomial over a field is not automatically sorted from \
lower power to higher power, because ",
  StyleBox["Mathematica", "TI"],
  " does not treat ",
  StyleBox["GF", "MR"],
  " objects as numbers. "
}], "MathCaption",
  CellTags->{"S5.2.1", "1.53"}],

Cell[CellGroupData[{

Cell["\<\
PolynomialMod[f81[2,2] x^4 + f81[1] x^2 + f81[1,1,1],
 f81[2] x^2 + f81[1,1,1,1]]\
\>", "Input",
  CellLabel->"In[38]:= ",
  CellTags->"S5.2.1"],

Cell[BoxData[
    RowBox[{
      RowBox[{\(x\^2\), " ", 
        TagBox[\(f81[1]\),
          HoldForm]}], "+", 
      TagBox[\(f81[1, 1, 1]\),
        HoldForm], "+", 
      RowBox[{\(x\^4\), " ", 
        TagBox[\(f81[2, 2]\),
          HoldForm]}]}]], "Output",
  CellLabel->"Out[38]= ",
  CellTags->"S5.2.1"]
}, Open  ]],

Cell[TextData[{
  StyleBox["Det", "MR"],
  " works on matrices of field elements. "
}], "MathCaption",
  CellTags->{"S5.2.1", "1.54"}],

Cell[CellGroupData[{

Cell["\<\
(ffmatrix = {{f81[2,1,2], f81[1,1,1]},
 {f81[1,2,1,2], f81[2]}};
 Det[ffmatrix])\
\>", "Input",
  CellLabel->"In[39]:= ",
  CellTags->"S5.2.1"],

Cell[BoxData[
    TagBox[\(f81[0, 0, 2, 1]\),
      HoldForm]], "Output",
  CellLabel->"Out[39]= ",
  CellTags->"S5.2.1"]
}, Open  ]],

Cell[TextData[{
  StyleBox["RowReduce", "MR"],
  " works except that the 1 should be in the field. "
}], "MathCaption",
  CellTags->{"S5.2.1", "1.55"}],

Cell[CellGroupData[{

Cell["RowReduce[ffmatrix]", "Input",
  CellLabel->"In[40]:= ",
  CellTags->"S5.2.1"],

Cell[BoxData[
    \({{1, 0}, {0, 1}}\)], "Output",
  CellLabel->"Out[40]= ",
  CellTags->"S5.2.1"]
}, Open  ]],

Cell[TextData[{
  StyleBox["Inverse", "MR"],
  " and ",
  StyleBox["Dot", "MR"],
  " also work with matrices of field elements. "
}], "MathCaption",
  CellTags->{"S5.2.1", "1.56"}],

Cell[CellGroupData[{

Cell["Inverse[ffmatrix] . ffmatrix", "Input",
  CellLabel->"In[41]:= ",
  CellTags->"S5.2.1"],

Cell[BoxData[
    RowBox[{"{", 
      RowBox[{
        RowBox[{"{", 
          RowBox[{
            TagBox[\(f81[1]\),
              HoldForm], ",", "0"}], "}"}], ",", 
        RowBox[{"{", 
          RowBox[{"0", ",", 
            TagBox[\(f81[1]\),
              HoldForm]}], "}"}]}], "}"}]], "Output",
  CellLabel->"Out[41]= ",
  CellTags->"S5.2.1"]
}, Open  ]]
},
FrontEndVersion->"4.0 for X",
ScreenRectangle->{{0, 800}, {0, 600}},
WindowSize->{520, 455},
WindowMargins->{{140, Automatic}, {Automatic, 72}},
StyleDefinitions -> "HelpBrowser.nb"
]


(***********************************************************************
Cached data follows.  If you edit this Notebook file directly, not using
Mathematica, you must remove the line containing CacheID at the top of 
the file.  The cache data will then be recreated when you save this file 
from within Mathematica.
***********************************************************************)

(*CellTagsOutline
CellTagsIndex->{
  "S5.2.1"->{
    Cell[1717, 49, 140, 6, 70, "Subsection",
      CellTags->{"S5.2.1", "1.1"}],
    Cell[1860, 57, 2831, 75, 70, "Text",
      CellTags->{"S5.2.1", "1.2"}],
    Cell[4694, 134, 5465, 124, 70, "Text",
      CellTags->{"S5.2.1", "1.3"}],
    Cell[10162, 260, 78, 1, 70, "Caption",
      CellTags->"S5.2.1"],
    Cell[10243, 263, 78, 1, 70, "MathCaption",
      CellTags->{"S5.2.1", "1.4"}],
    Cell[10324, 266, 87, 2, 70, "Input",
      CellTags->"S5.2.1"],
    Cell[10414, 270, 115, 2, 70, "MathCaption",
      CellTags->{"S5.2.1", "1.5"}],
    Cell[10554, 276, 87, 2, 70, "Input",
      CellTags->"S5.2.1"],
    Cell[10644, 280, 167, 6, 70, "Output",
      CellTags->"S5.2.1"],
    Cell[10826, 289, 191, 5, 70, "MathCaption",
      CellTags->{"S5.2.1", "1.6"}],
    Cell[11042, 298, 75, 2, 70, "Input",
      CellTags->"S5.2.1"],
    Cell[11120, 302, 263, 8, 70, "Output",
      CellTags->"S5.2.1"],
    Cell[11398, 313, 213, 9, 70, "MathCaption",
      CellTags->{"S5.2.1", "1.7"}],
    Cell[11636, 326, 99, 2, 70, "Input",
      CellTags->"S5.2.1"],
    Cell[11738, 330, 185, 6, 70, "Output",
      CellTags->"S5.2.1"],
    Cell[11938, 339, 125, 4, 70, "MathCaption",
      CellTags->{"S5.2.1", "1.8"}],
    Cell[12088, 347, 84, 2, 70, "Input",
      CellTags->"S5.2.1"],
    Cell[12175, 351, 185, 6, 70, "Output",
      CellTags->"S5.2.1"],
    Cell[12375, 360, 359, 8, 70, "MathCaption",
      CellTags->{"S5.2.1", "1.9"}],
    Cell[12759, 372, 80, 2, 70, "Input",
      CellTags->"S5.2.1"],
    Cell[12842, 376, 185, 6, 70, "Output",
      CellTags->"S5.2.1"],
    Cell[13042, 385, 162, 4, 70, "MathCaption",
      CellTags->{"S5.2.1", "1.10"}],
    Cell[13229, 393, 95, 2, 70, "Input",
      CellTags->"S5.2.1"],
    Cell[13327, 397, 318, 11, 70, "Output",
      CellTags->"S5.2.1"],
    Cell[13660, 411, 97, 1, 70, "MathCaption",
      CellTags->{"S5.2.1", "1.11"}],
    Cell[13782, 416, 82, 2, 70, "Input",
      CellTags->"S5.2.1"],
    Cell[13867, 420, 185, 6, 70, "Output",
      CellTags->"S5.2.1"],
    Cell[14067, 429, 551, 12, 70, "Text",
      CellTags->{"S5.2.1", "1.12"}],
    Cell[14621, 443, 203, 6, 70, "MathCaption",
      CellTags->{"S5.2.1", "1.13"}],
    Cell[14849, 453, 107, 2, 70, "Input",
      CellTags->"S5.2.1"],
    Cell[14959, 457, 87, 3, 70, "Output",
      CellTags->"S5.2.1"],
    Cell[15061, 463, 212, 6, 70, "MathCaption",
      CellTags->{"S5.2.1", "1.14"}],
    Cell[15298, 473, 94, 2, 70, "Input",
      CellTags->"S5.2.1"],
    Cell[15395, 477, 168, 6, 70, "Output",
      CellTags->"S5.2.1"],
    Cell[15578, 486, 3679, 71, 70, "Text",
      CellTags->{"S5.2.1", "1.15"}],
    Cell[19260, 559, 67, 1, 70, "Caption",
      CellTags->"S5.2.1"],
    Cell[19330, 562, 4130, 133, 70, "Text",
      CellTags->{"S5.2.1", "1.16"}],
    Cell[23463, 697, 105, 1, 70, "MathCaption",
      CellTags->{"S5.2.1", "1.17"}],
    Cell[23571, 700, 151, 5, 70, "Input",
      CellTags->"S5.2.1"],
    Cell[23725, 707, 110, 1, 70, "MathCaption",
      CellTags->{"S5.2.1", "1.18"}],
    Cell[23860, 712, 141, 5, 70, "Input",
      CellTags->"S5.2.1"],
    Cell[24004, 719, 329, 12, 70, "Output",
      CellTags->"S5.2.1"],
    Cell[24348, 734, 177, 4, 70, "MathCaption",
      CellTags->{"S5.2.1", "1.19"}],
    Cell[24528, 740, 120, 2, 70, "Input",
      CellTags->"S5.2.1"],
    Cell[24651, 744, 96, 1, 70, "MathCaption",
      CellTags->{"S5.2.1", "1.20"}],
    Cell[24772, 749, 72, 2, 70, "Input",
      CellTags->"S5.2.1"],
    Cell[24847, 753, 320, 12, 70, "Output",
      CellTags->"S5.2.1"],
    Cell[25182, 768, 108, 1, 70, "MathCaption",
      CellTags->{"S5.2.1", "1.21"}],
    Cell[25293, 771, 86, 2, 70, "Input",
      CellTags->"S5.2.1"],
    Cell[25382, 775, 3150, 65, 70, "Text",
      CellTags->{"S5.2.1", "1.22"}],
    Cell[28535, 842, 68, 1, 70, "Caption",
      CellTags->"S5.2.1"],
    Cell[28606, 845, 354, 13, 70, "Text",
      CellTags->{"S5.2.1", "1.23"}],
    Cell[28963, 860, 153, 4, 70, "MathCaption",
      CellTags->{"S5.2.1", "1.24"}],
    Cell[29141, 868, 100, 2, 70, "Input",
      CellTags->"S5.2.1"],
    Cell[29244, 872, 83, 3, 70, "Output",
      CellTags->"S5.2.1"],
    Cell[29342, 878, 214, 5, 70, "MathCaption",
      CellTags->{"S5.2.1", "1.25"}],
    Cell[29581, 887, 85, 2, 70, "Input",
      CellTags->"S5.2.1"],
    Cell[29669, 891, 83, 3, 70, "Output",
      CellTags->"S5.2.1"],
    Cell[29767, 897, 146, 4, 70, "MathCaption",
      CellTags->{"S5.2.1", "1.26"}],
    Cell[29938, 905, 79, 2, 70, "Input",
      CellTags->"S5.2.1"],
    Cell[30020, 909, 84, 3, 70, "Output",
      CellTags->"S5.2.1"],
    Cell[30119, 915, 76, 1, 70, "MathCaption",
      CellTags->{"S5.2.1", "1.27"}],
    Cell[30220, 920, 123, 2, 70, "Input",
      CellTags->"S5.2.1"],
    Cell[30346, 924, 86, 3, 70, "Output",
      CellTags->"S5.2.1"],
    Cell[30447, 930, 128, 4, 70, "MathCaption",
      CellTags->{"S5.2.1", "1.28"}],
    Cell[30600, 938, 89, 2, 70, "Input",
      CellTags->"S5.2.1"],
    Cell[30692, 942, 94, 3, 70, "Output",
      CellTags->"S5.2.1"],
    Cell[30801, 948, 3347, 61, 70, "Text",
      CellTags->{"S5.2.1", "1.29"}],
    Cell[34151, 1011, 79, 1, 70, "Caption",
      CellTags->"S5.2.1"],
    Cell[34233, 1014, 393, 15, 70, "Text",
      CellTags->{"S5.2.1", "1.30"}],
    Cell[34629, 1031, 95, 1, 70, "MathCaption",
      CellTags->{"S5.2.1", "1.31"}],
    Cell[34749, 1036, 103, 2, 70, "Input",
      CellTags->"S5.2.1"],
    Cell[34855, 1040, 107, 3, 70, "Output",
      CellTags->"S5.2.1"],
    Cell[34977, 1046, 3159, 60, 70, "Text",
      CellTags->{"S5.2.1", "1.32"}],
    Cell[38139, 1108, 96, 1, 70, "Caption",
      CellTags->"S5.2.1"],
    Cell[38238, 1111, 5060, 138, 70, "Text",
      CellTags->{"S5.2.1", "1.33"}],
    Cell[43301, 1251, 313, 7, 70, "MathCaption",
      CellTags->{"S5.2.1", "1.34"}],
    Cell[43639, 1262, 83, 2, 70, "Input",
      CellTags->"S5.2.1"],
    Cell[43725, 1266, 112, 3, 70, "Output",
      CellTags->"S5.2.1"],
    Cell[43852, 1272, 231, 6, 70, "MathCaption",
      CellTags->{"S5.2.1", "1.35"}],
    Cell[44086, 1280, 91, 2, 70, "Input",
      CellTags->"S5.2.1"],
    Cell[44180, 1284, 237, 9, 70, "MathCaption",
      CellTags->{"S5.2.1", "1.36"}],
    Cell[44442, 1297, 87, 2, 70, "Input",
      CellTags->"S5.2.1"],
    Cell[44532, 1301, 83, 3, 70, "Output",
      CellTags->"S5.2.1"],
    Cell[44630, 1307, 157, 6, 70, "MathCaption",
      CellTags->{"S5.2.1", "1.37"}],
    Cell[44812, 1317, 85, 2, 70, "Input",
      CellTags->"S5.2.1"],
    Cell[44900, 1321, 168, 6, 70, "Output",
      CellTags->"S5.2.1"],
    Cell[45083, 1330, 206, 5, 70, "MathCaption",
      CellTags->{"S5.2.1", "1.38"}],
    Cell[45314, 1339, 108, 2, 70, "Input",
      CellTags->"S5.2.1"],
    Cell[45425, 1343, 202, 6, 70, "Output",
      CellTags->"S5.2.1"],
    Cell[45642, 1352, 1526, 38, 70, "Text",
      CellTags->{"S5.2.1", "1.39"}],
    Cell[47171, 1392, 83, 1, 70, "MathCaption",
      CellTags->{"S5.2.1", "1.40"}],
    Cell[47279, 1397, 161, 5, 70, "Input",
      CellTags->"S5.2.1"],
    Cell[47443, 1404, 98, 3, 70, "Output",
      CellTags->"S5.2.1"],
    Cell[47556, 1410, 158, 5, 70, "MathCaption",
      CellTags->{"S5.2.1", "1.41"}],
    Cell[47739, 1419, 145, 5, 70, "Input",
      CellTags->"S5.2.1"],
    Cell[47887, 1426, 604, 20, 70, "Output",
      CellTags->"S5.2.1"],
    Cell[48506, 1449, 104, 1, 70, "MathCaption",
      CellTags->{"S5.2.1", "1.42"}],
    Cell[48635, 1454, 145, 5, 70, "Input",
      CellTags->"S5.2.1"],
    Cell[48783, 1461, 102, 3, 70, "Output",
      CellTags->"S5.2.1"],
    Cell[48900, 1467, 185, 5, 70, "MathCaption",
      CellTags->{"S5.2.1", "1.43"}],
    Cell[49110, 1476, 98, 2, 70, "Input",
      CellTags->"S5.2.1"],
    Cell[49211, 1480, 1100, 36, 70, "Output",
      CellTags->"S5.2.1"],
    Cell[50326, 1519, 140, 4, 70, "MathCaption",
      CellTags->{"S5.2.1", "1.44"}],
    Cell[50491, 1527, 78, 2, 70, "Input",
      CellTags->"S5.2.1"],
    Cell[50572, 1531, 155, 4, 70, "Output",
      CellTags->"S5.2.1"],
    Cell[50742, 1538, 148, 5, 70, "Subsubsection",
      CellTags->{"S5.2.1", "1.45"}],
    Cell[50893, 1545, 679, 12, 70, "Text",
      CellTags->{"S5.2.1", "1.46"}],
    Cell[51575, 1559, 125, 5, 70, "MathCaption",
      CellTags->{"S5.2.1", "1.47"}],
    Cell[51703, 1566, 120, 2, 70, "Input",
      CellTags->"S5.2.1"],
    Cell[51826, 1570, 86, 1, 70, "MathCaption",
      CellTags->{"S5.2.1", "1.48"}],
    Cell[51937, 1575, 82, 2, 70, "Input",
      CellTags->"S5.2.1"],
    Cell[52022, 1579, 129, 5, 70, "Output",
      CellTags->"S5.2.1"],
    Cell[52166, 1587, 179, 5, 70, "MathCaption",
      CellTags->{"S5.2.1", "1.49"}],
    Cell[52370, 1596, 103, 2, 70, "Input",
      CellTags->"S5.2.1"],
    Cell[52476, 1600, 145, 5, 70, "Output",
      CellTags->"S5.2.1"],
    Cell[52636, 1608, 214, 6, 70, "MathCaption",
      CellTags->{"S5.2.1", "1.50"}],
    Cell[52875, 1618, 106, 2, 70, "Input",
      CellTags->"S5.2.1"],
    Cell[52984, 1622, 83, 3, 70, "Output",
      CellTags->"S5.2.1"],
    Cell[53082, 1628, 156, 7, 70, "MathCaption",
      CellTags->{"S5.2.1", "1.51"}],
    Cell[53241, 1637, 154, 5, 70, "Input",
      CellTags->"S5.2.1"],
    Cell[53398, 1644, 197, 6, 70, "MathCaption",
      CellTags->{"S5.2.1", "1.52"}],
    Cell[53620, 1654, 257, 7, 70, "Input",
      CellTags->"S5.2.1"],
    Cell[53880, 1663, 358, 12, 70, "Output",
      CellTags->"S5.2.1"],
    Cell[54253, 1678, 398, 10, 70, "MathCaption",
      CellTags->{"S5.2.1", "1.53"}],
    Cell[54676, 1692, 154, 5, 70, "Input",
      CellTags->"S5.2.1"],
    Cell[54833, 1699, 312, 11, 70, "Output",
      CellTags->"S5.2.1"],
    Cell[55160, 1713, 134, 4, 70, "MathCaption",
      CellTags->{"S5.2.1", "1.54"}],
    Cell[55319, 1721, 153, 6, 70, "Input",
      CellTags->"S5.2.1"],
    Cell[55475, 1729, 121, 4, 70, "Output",
      CellTags->"S5.2.1"],
    Cell[55611, 1736, 151, 4, 70, "MathCaption",
      CellTags->{"S5.2.1", "1.55"}],
    Cell[55787, 1744, 84, 2, 70, "Input",
      CellTags->"S5.2.1"],
    Cell[55874, 1748, 98, 3, 70, "Output",
      CellTags->"S5.2.1"],
    Cell[55987, 1754, 180, 6, 70, "MathCaption",
      CellTags->{"S5.2.1", "1.56"}],
    Cell[56192, 1764, 93, 2, 70, "Input",
      CellTags->"S5.2.1"],
    Cell[56288, 1768, 352, 12, 70, "Output",
      CellTags->"S5.2.1"]},
  "1.1"->{
    Cell[1717, 49, 140, 6, 70, "Subsection",
      CellTags->{"S5.2.1", "1.1"}]},
  "1.2"->{
    Cell[1860, 57, 2831, 75, 70, "Text",
      CellTags->{"S5.2.1", "1.2"}]},
  "1.3"->{
    Cell[4694, 134, 5465, 124, 70, "Text",
      CellTags->{"S5.2.1", "1.3"}]},
  "1.4"->{
    Cell[10243, 263, 78, 1, 70, "MathCaption",
      CellTags->{"S5.2.1", "1.4"}]},
  "1.5"->{
    Cell[10414, 270, 115, 2, 70, "MathCaption",
      CellTags->{"S5.2.1", "1.5"}]},
  "1.6"->{
    Cell[10826, 289, 191, 5, 70, "MathCaption",
      CellTags->{"S5.2.1", "1.6"}]},
  "1.7"->{
    Cell[11398, 313, 213, 9, 70, "MathCaption",
      CellTags->{"S5.2.1", "1.7"}]},
  "1.8"->{
    Cell[11938, 339, 125, 4, 70, "MathCaption",
      CellTags->{"S5.2.1", "1.8"}]},
  "1.9"->{
    Cell[12375, 360, 359, 8, 70, "MathCaption",
      CellTags->{"S5.2.1", "1.9"}]},
  "1.10"->{
    Cell[13042, 385, 162, 4, 70, "MathCaption",
      CellTags->{"S5.2.1", "1.10"}]},
  "1.11"->{
    Cell[13660, 411, 97, 1, 70, "MathCaption",
      CellTags->{"S5.2.1", "1.11"}]},
  "1.12"->{
    Cell[14067, 429, 551, 12, 70, "Text",
      CellTags->{"S5.2.1", "1.12"}]},
  "1.13"->{
    Cell[14621, 443, 203, 6, 70, "MathCaption",
      CellTags->{"S5.2.1", "1.13"}]},
  "1.14"->{
    Cell[15061, 463, 212, 6, 70, "MathCaption",
      CellTags->{"S5.2.1", "1.14"}]},
  "1.15"->{
    Cell[15578, 486, 3679, 71, 70, "Text",
      CellTags->{"S5.2.1", "1.15"}]},
  "1.16"->{
    Cell[19330, 562, 4130, 133, 70, "Text",
      CellTags->{"S5.2.1", "1.16"}]},
  "1.17"->{
    Cell[23463, 697, 105, 1, 70, "MathCaption",
      CellTags->{"S5.2.1", "1.17"}]},
  "1.18"->{
    Cell[23725, 707, 110, 1, 70, "MathCaption",
      CellTags->{"S5.2.1", "1.18"}]},
  "1.19"->{
    Cell[24348, 734, 177, 4, 70, "MathCaption",
      CellTags->{"S5.2.1", "1.19"}]},
  "1.20"->{
    Cell[24651, 744, 96, 1, 70, "MathCaption",
      CellTags->{"S5.2.1", "1.20"}]},
  "1.21"->{
    Cell[25182, 768, 108, 1, 70, "MathCaption",
      CellTags->{"S5.2.1", "1.21"}]},
  "1.22"->{
    Cell[25382, 775, 3150, 65, 70, "Text",
      CellTags->{"S5.2.1", "1.22"}]},
  "1.23"->{
    Cell[28606, 845, 354, 13, 70, "Text",
      CellTags->{"S5.2.1", "1.23"}]},
  "1.24"->{
    Cell[28963, 860, 153, 4, 70, "MathCaption",
      CellTags->{"S5.2.1", "1.24"}]},
  "1.25"->{
    Cell[29342, 878, 214, 5, 70, "MathCaption",
      CellTags->{"S5.2.1", "1.25"}]},
  "1.26"->{
    Cell[29767, 897, 146, 4, 70, "MathCaption",
      CellTags->{"S5.2.1", "1.26"}]},
  "1.27"->{
    Cell[30119, 915, 76, 1, 70, "MathCaption",
      CellTags->{"S5.2.1", "1.27"}]},
  "1.28"->{
    Cell[30447, 930, 128, 4, 70, "MathCaption",
      CellTags->{"S5.2.1", "1.28"}]},
  "1.29"->{
    Cell[30801, 948, 3347, 61, 70, "Text",
      CellTags->{"S5.2.1", "1.29"}]},
  "1.30"->{
    Cell[34233, 1014, 393, 15, 70, "Text",
      CellTags->{"S5.2.1", "1.30"}]},
  "1.31"->{
    Cell[34629, 1031, 95, 1, 70, "MathCaption",
      CellTags->{"S5.2.1", "1.31"}]},
  "1.32"->{
    Cell[34977, 1046, 3159, 60, 70, "Text",
      CellTags->{"S5.2.1", "1.32"}]},
  "1.33"->{
    Cell[38238, 1111, 5060, 138, 70, "Text",
      CellTags->{"S5.2.1", "1.33"}]},
  "1.34"->{
    Cell[43301, 1251, 313, 7, 70, "MathCaption",
      CellTags->{"S5.2.1", "1.34"}]},
  "1.35"->{
    Cell[43852, 1272, 231, 6, 70, "MathCaption",
      CellTags->{"S5.2.1", "1.35"}]},
  "1.36"->{
    Cell[44180, 1284, 237, 9, 70, "MathCaption",
      CellTags->{"S5.2.1", "1.36"}]},
  "1.37"->{
    Cell[44630, 1307, 157, 6, 70, "MathCaption",
      CellTags->{"S5.2.1", "1.37"}]},
  "1.38"->{
    Cell[45083, 1330, 206, 5, 70, "MathCaption",
      CellTags->{"S5.2.1", "1.38"}]},
  "1.39"->{
    Cell[45642, 1352, 1526, 38, 70, "Text",
      CellTags->{"S5.2.1", "1.39"}]},
  "1.40"->{
    Cell[47171, 1392, 83, 1, 70, "MathCaption",
      CellTags->{"S5.2.1", "1.40"}]},
  "1.41"->{
    Cell[47556, 1410, 158, 5, 70, "MathCaption",
      CellTags->{"S5.2.1", "1.41"}]},
  "1.42"->{
    Cell[48506, 1449, 104, 1, 70, "MathCaption",
      CellTags->{"S5.2.1", "1.42"}]},
  "1.43"->{
    Cell[48900, 1467, 185, 5, 70, "MathCaption",
      CellTags->{"S5.2.1", "1.43"}]},
  "1.44"->{
    Cell[50326, 1519, 140, 4, 70, "MathCaption",
      CellTags->{"S5.2.1", "1.44"}]},
  "1.45"->{
    Cell[50742, 1538, 148, 5, 70, "Subsubsection",
      CellTags->{"S5.2.1", "1.45"}]},
  "1.46"->{
    Cell[50893, 1545, 679, 12, 70, "Text",
      CellTags->{"S5.2.1", "1.46"}]},
  "1.47"->{
    Cell[51575, 1559, 125, 5, 70, "MathCaption",
      CellTags->{"S5.2.1", "1.47"}]},
  "1.48"->{
    Cell[51826, 1570, 86, 1, 70, "MathCaption",
      CellTags->{"S5.2.1", "1.48"}]},
  "1.49"->{
    Cell[52166, 1587, 179, 5, 70, "MathCaption",
      CellTags->{"S5.2.1", "1.49"}]},
  "1.50"->{
    Cell[52636, 1608, 214, 6, 70, "MathCaption",
      CellTags->{"S5.2.1", "1.50"}]},
  "1.51"->{
    Cell[53082, 1628, 156, 7, 70, "MathCaption",
      CellTags->{"S5.2.1", "1.51"}]},
  "1.52"->{
    Cell[53398, 1644, 197, 6, 70, "MathCaption",
      CellTags->{"S5.2.1", "1.52"}]},
  "1.53"->{
    Cell[54253, 1678, 398, 10, 70, "MathCaption",
      CellTags->{"S5.2.1", "1.53"}]},
  "1.54"->{
    Cell[55160, 1713, 134, 4, 70, "MathCaption",
      CellTags->{"S5.2.1", "1.54"}]},
  "1.55"->{
    Cell[55611, 1736, 151, 4, 70, "MathCaption",
      CellTags->{"S5.2.1", "1.55"}]},
  "1.56"->{
    Cell[55987, 1754, 180, 6, 70, "MathCaption",
      CellTags->{"S5.2.1", "1.56"}]}
  }
*)

(*CellTagsIndex
CellTagsIndex->{
  {"S5.2.1", 57280, 1800},
  {"1.1", 67570, 2073},
  {"1.2", 67663, 2076},
  {"1.3", 67752, 2079},
  {"1.4", 67843, 2082},
  {"1.5", 67938, 2085},
  {"1.6", 68034, 2088},
  {"1.7", 68130, 2091},
  {"1.8", 68226, 2094},
  {"1.9", 68322, 2097},
  {"1.10", 68419, 2100},
  {"1.11", 68517, 2103},
  {"1.12", 68614, 2106},
  {"1.13", 68706, 2109},
  {"1.14", 68804, 2112},
  {"1.15", 68902, 2115},
  {"1.16", 68995, 2118},
  {"1.17", 69089, 2121},
  {"1.18", 69187, 2124},
  {"1.19", 69285, 2127},
  {"1.20", 69383, 2130},
  {"1.21", 69480, 2133},
  {"1.22", 69578, 2136},
  {"1.23", 69671, 2139},
  {"1.24", 69763, 2142},
  {"1.25", 69861, 2145},
  {"1.26", 69959, 2148},
  {"1.27", 70057, 2151},
  {"1.28", 70154, 2154},
  {"1.29", 70252, 2157},
  {"1.30", 70345, 2160},
  {"1.31", 70438, 2163},
  {"1.32", 70536, 2166},
  {"1.33", 70630, 2169},
  {"1.34", 70725, 2172},
  {"1.35", 70824, 2175},
  {"1.36", 70923, 2178},
  {"1.37", 71022, 2181},
  {"1.38", 71121, 2184},
  {"1.39", 71220, 2187},
  {"1.40", 71314, 2190},
  {"1.41", 71412, 2193},
  {"1.42", 71511, 2196},
  {"1.43", 71610, 2199},
  {"1.44", 71709, 2202},
  {"1.45", 71808, 2205},
  {"1.46", 71909, 2208},
  {"1.47", 72002, 2211},
  {"1.48", 72101, 2214},
  {"1.49", 72199, 2217},
  {"1.50", 72298, 2220},
  {"1.51", 72397, 2223},
  {"1.52", 72496, 2226},
  {"1.53", 72595, 2229},
  {"1.54", 72695, 2232},
  {"1.55", 72794, 2235},
  {"1.56", 72893, 2238}
  }
*)

(*NotebookFileOutline
Notebook[{
Cell[1717, 49, 140, 6, 70, "Subsection",
  CellTags->{"S5.2.1", "1.1"}],
Cell[1860, 57, 2831, 75, 70, "Text",
  CellTags->{"S5.2.1", "1.2"}],
Cell[4694, 134, 5465, 124, 70, "Text",
  CellTags->{"S5.2.1", "1.3"}],
Cell[10162, 260, 78, 1, 70, "Caption",
  CellTags->"S5.2.1"],
Cell[10243, 263, 78, 1, 70, "MathCaption",
  CellTags->{"S5.2.1", "1.4"}],
Cell[10324, 266, 87, 2, 70, "Input",
  CellTags->"S5.2.1"],
Cell[10414, 270, 115, 2, 70, "MathCaption",
  CellTags->{"S5.2.1", "1.5"}],

Cell[CellGroupData[{
Cell[10554, 276, 87, 2, 70, "Input",
  CellTags->"S5.2.1"],
Cell[10644, 280, 167, 6, 70, "Output",
  CellTags->"S5.2.1"]
}, Open  ]],
Cell[10826, 289, 191, 5, 70, "MathCaption",
  CellTags->{"S5.2.1", "1.6"}],

Cell[CellGroupData[{
Cell[11042, 298, 75, 2, 70, "Input",
  CellTags->"S5.2.1"],
Cell[11120, 302, 263, 8, 70, "Output",
  CellTags->"S5.2.1"]
}, Open  ]],
Cell[11398, 313, 213, 9, 70, "MathCaption",
  CellTags->{"S5.2.1", "1.7"}],

Cell[CellGroupData[{
Cell[11636, 326, 99, 2, 70, "Input",
  CellTags->"S5.2.1"],
Cell[11738, 330, 185, 6, 70, "Output",
  CellTags->"S5.2.1"]
}, Open  ]],
Cell[11938, 339, 125, 4, 70, "MathCaption",
  CellTags->{"S5.2.1", "1.8"}],

Cell[CellGroupData[{
Cell[12088, 347, 84, 2, 70, "Input",
  CellTags->"S5.2.1"],
Cell[12175, 351, 185, 6, 70, "Output",
  CellTags->"S5.2.1"]
}, Open  ]],
Cell[12375, 360, 359, 8, 70, "MathCaption",
  CellTags->{"S5.2.1", "1.9"}],

Cell[CellGroupData[{
Cell[12759, 372, 80, 2, 70, "Input",
  CellTags->"S5.2.1"],
Cell[12842, 376, 185, 6, 70, "Output",
  CellTags->"S5.2.1"]
}, Open  ]],
Cell[13042, 385, 162, 4, 70, "MathCaption",
  CellTags->{"S5.2.1", "1.10"}],

Cell[CellGroupData[{
Cell[13229, 393, 95, 2, 70, "Input",
  CellTags->"S5.2.1"],
Cell[13327, 397, 318, 11, 70, "Output",
  CellTags->"S5.2.1"]
}, Open  ]],
Cell[13660, 411, 97, 1, 70, "MathCaption",
  CellTags->{"S5.2.1", "1.11"}],

Cell[CellGroupData[{
Cell[13782, 416, 82, 2, 70, "Input",
  CellTags->"S5.2.1"],
Cell[13867, 420, 185, 6, 70, "Output",
  CellTags->"S5.2.1"]
}, Open  ]],
Cell[14067, 429, 551, 12, 70, "Text",
  CellTags->{"S5.2.1", "1.12"}],
Cell[14621, 443, 203, 6, 70, "MathCaption",
  CellTags->{"S5.2.1", "1.13"}],

Cell[CellGroupData[{
Cell[14849, 453, 107, 2, 70, "Input",
  CellTags->"S5.2.1"],
Cell[14959, 457, 87, 3, 70, "Output",
  CellTags->"S5.2.1"]
}, Open  ]],
Cell[15061, 463, 212, 6, 70, "MathCaption",
  CellTags->{"S5.2.1", "1.14"}],

Cell[CellGroupData[{
Cell[15298, 473, 94, 2, 70, "Input",
  CellTags->"S5.2.1"],
Cell[15395, 477, 168, 6, 70, "Output",
  CellTags->"S5.2.1"]
}, Open  ]],
Cell[15578, 486, 3679, 71, 70, "Text",
  CellTags->{"S5.2.1", "1.15"}],
Cell[19260, 559, 67, 1, 70, "Caption",
  CellTags->"S5.2.1"],
Cell[19330, 562, 4130, 133, 70, "Text",
  CellTags->{"S5.2.1", "1.16"}],
Cell[23463, 697, 105, 1, 70, "MathCaption",
  CellTags->{"S5.2.1", "1.17"}],
Cell[23571, 700, 151, 5, 70, "Input",
  CellTags->"S5.2.1"],
Cell[23725, 707, 110, 1, 70, "MathCaption",
  CellTags->{"S5.2.1", "1.18"}],

Cell[CellGroupData[{
Cell[23860, 712, 141, 5, 70, "Input",
  CellTags->"S5.2.1"],
Cell[24004, 719, 329, 12, 70, "Output",
  CellTags->"S5.2.1"]
}, Open  ]],
Cell[24348, 734, 177, 4, 70, "MathCaption",
  CellTags->{"S5.2.1", "1.19"}],
Cell[24528, 740, 120, 2, 70, "Input",
  CellTags->"S5.2.1"],
Cell[24651, 744, 96, 1, 70, "MathCaption",
  CellTags->{"S5.2.1", "1.20"}],

Cell[CellGroupData[{
Cell[24772, 749, 72, 2, 70, "Input",
  CellTags->"S5.2.1"],
Cell[24847, 753, 320, 12, 70, "Output",
  CellTags->"S5.2.1"]
}, Open  ]],
Cell[25182, 768, 108, 1, 70, "MathCaption",
  CellTags->{"S5.2.1", "1.21"}],
Cell[25293, 771, 86, 2, 70, "Input",
  CellTags->"S5.2.1"],
Cell[25382, 775, 3150, 65, 70, "Text",
  CellTags->{"S5.2.1", "1.22"}],
Cell[28535, 842, 68, 1, 70, "Caption",
  CellTags->"S5.2.1"],
Cell[28606, 845, 354, 13, 70, "Text",
  CellTags->{"S5.2.1", "1.23"}],
Cell[28963, 860, 153, 4, 70, "MathCaption",
  CellTags->{"S5.2.1", "1.24"}],

Cell[CellGroupData[{
Cell[29141, 868, 100, 2, 70, "Input",
  CellTags->"S5.2.1"],
Cell[29244, 872, 83, 3, 70, "Output",
  CellTags->"S5.2.1"]
}, Open  ]],
Cell[29342, 878, 214, 5, 70, "MathCaption",
  CellTags->{"S5.2.1", "1.25"}],

Cell[CellGroupData[{
Cell[29581, 887, 85, 2, 70, "Input",
  CellTags->"S5.2.1"],
Cell[29669, 891, 83, 3, 70, "Output",
  CellTags->"S5.2.1"]
}, Open  ]],
Cell[29767, 897, 146, 4, 70, "MathCaption",
  CellTags->{"S5.2.1", "1.26"}],

Cell[CellGroupData[{
Cell[29938, 905, 79, 2, 70, "Input",
  CellTags->"S5.2.1"],
Cell[30020, 909, 84, 3, 70, "Output",
  CellTags->"S5.2.1"]
}, Open  ]],
Cell[30119, 915, 76, 1, 70, "MathCaption",
  CellTags->{"S5.2.1", "1.27"}],

Cell[CellGroupData[{
Cell[30220, 920, 123, 2, 70, "Input",
  CellTags->"S5.2.1"],
Cell[30346, 924, 86, 3, 70, "Output",
  CellTags->"S5.2.1"]
}, Open  ]],
Cell[30447, 930, 128, 4, 70, "MathCaption",
  CellTags->{"S5.2.1", "1.28"}],

Cell[CellGroupData[{
Cell[30600, 938, 89, 2, 70, "Input",
  CellTags->"S5.2.1"],
Cell[30692, 942, 94, 3, 70, "Output",
  CellTags->"S5.2.1"]
}, Open  ]],
Cell[30801, 948, 3347, 61, 70, "Text",
  CellTags->{"S5.2.1", "1.29"}],
Cell[34151, 1011, 79, 1, 70, "Caption",
  CellTags->"S5.2.1"],
Cell[34233, 1014, 393, 15, 70, "Text",
  CellTags->{"S5.2.1", "1.30"}],
Cell[34629, 1031, 95, 1, 70, "MathCaption",
  CellTags->{"S5.2.1", "1.31"}],

Cell[CellGroupData[{
Cell[34749, 1036, 103, 2, 70, "Input",
  CellTags->"S5.2.1"],
Cell[34855, 1040, 107, 3, 70, "Output",
  CellTags->"S5.2.1"]
}, Open  ]],
Cell[34977, 1046, 3159, 60, 70, "Text",
  CellTags->{"S5.2.1", "1.32"}],
Cell[38139, 1108, 96, 1, 70, "Caption",
  CellTags->"S5.2.1"],
Cell[38238, 1111, 5060, 138, 70, "Text",
  CellTags->{"S5.2.1", "1.33"}],
Cell[43301, 1251, 313, 7, 70, "MathCaption",
  CellTags->{"S5.2.1", "1.34"}],

Cell[CellGroupData[{
Cell[43639, 1262, 83, 2, 70, "Input",
  CellTags->"S5.2.1"],
Cell[43725, 1266, 112, 3, 70, "Output",
  CellTags->"S5.2.1"]
}, Open  ]],
Cell[43852, 1272, 231, 6, 70, "MathCaption",
  CellTags->{"S5.2.1", "1.35"}],
Cell[44086, 1280, 91, 2, 70, "Input",
  CellTags->"S5.2.1"],
Cell[44180, 1284, 237, 9, 70, "MathCaption",
  CellTags->{"S5.2.1", "1.36"}],

Cell[CellGroupData[{
Cell[44442, 1297, 87, 2, 70, "Input",
  CellTags->"S5.2.1"],
Cell[44532, 1301, 83, 3, 70, "Output",
  CellTags->"S5.2.1"]
}, Open  ]],
Cell[44630, 1307, 157, 6, 70, "MathCaption",
  CellTags->{"S5.2.1", "1.37"}],

Cell[CellGroupData[{
Cell[44812, 1317, 85, 2, 70, "Input",
  CellTags->"S5.2.1"],
Cell[44900, 1321, 168, 6, 70, "Output",
  CellTags->"S5.2.1"]
}, Open  ]],
Cell[45083, 1330, 206, 5, 70, "MathCaption",
  CellTags->{"S5.2.1", "1.38"}],

Cell[CellGroupData[{
Cell[45314, 1339, 108, 2, 70, "Input",
  CellTags->"S5.2.1"],
Cell[45425, 1343, 202, 6, 70, "Output",
  CellTags->"S5.2.1"]
}, Open  ]],
Cell[45642, 1352, 1526, 38, 70, "Text",
  CellTags->{"S5.2.1", "1.39"}],
Cell[47171, 1392, 83, 1, 70, "MathCaption",
  CellTags->{"S5.2.1", "1.40"}],

Cell[CellGroupData[{
Cell[47279, 1397, 161, 5, 70, "Input",
  CellTags->"S5.2.1"],
Cell[47443, 1404, 98, 3, 70, "Output",
  CellTags->"S5.2.1"]
}, Open  ]],
Cell[47556, 1410, 158, 5, 70, "MathCaption",
  CellTags->{"S5.2.1", "1.41"}],

Cell[CellGroupData[{
Cell[47739, 1419, 145, 5, 70, "Input",
  CellTags->"S5.2.1"],
Cell[47887, 1426, 604, 20, 70, "Output",
  CellTags->"S5.2.1"]
}, Open  ]],
Cell[48506, 1449, 104, 1, 70, "MathCaption",
  CellTags->{"S5.2.1", "1.42"}],

Cell[CellGroupData[{
Cell[48635, 1454, 145, 5, 70, "Input",
  CellTags->"S5.2.1"],
Cell[48783, 1461, 102, 3, 70, "Output",
  CellTags->"S5.2.1"]
}, Open  ]],
Cell[48900, 1467, 185, 5, 70, "MathCaption",
  CellTags->{"S5.2.1", "1.43"}],

Cell[CellGroupData[{
Cell[49110, 1476, 98, 2, 70, "Input",
  CellTags->"S5.2.1"],
Cell[49211, 1480, 1100, 36, 70, "Output",
  CellTags->"S5.2.1"]
}, Open  ]],
Cell[50326, 1519, 140, 4, 70, "MathCaption",
  CellTags->{"S5.2.1", "1.44"}],

Cell[CellGroupData[{
Cell[50491, 1527, 78, 2, 70, "Input",
  CellTags->"S5.2.1"],
Cell[50572, 1531, 155, 4, 70, "Output",
  CellTags->"S5.2.1"]
}, Open  ]],
Cell[50742, 1538, 148, 5, 70, "Subsubsection",
  CellTags->{"S5.2.1", "1.45"}],
Cell[50893, 1545, 679, 12, 70, "Text",
  CellTags->{"S5.2.1", "1.46"}],
Cell[51575, 1559, 125, 5, 70, "MathCaption",
  CellTags->{"S5.2.1", "1.47"}],
Cell[51703, 1566, 120, 2, 70, "Input",
  CellTags->"S5.2.1"],
Cell[51826, 1570, 86, 1, 70, "MathCaption",
  CellTags->{"S5.2.1", "1.48"}],

Cell[CellGroupData[{
Cell[51937, 1575, 82, 2, 70, "Input",
  CellTags->"S5.2.1"],
Cell[52022, 1579, 129, 5, 70, "Output",
  CellTags->"S5.2.1"]
}, Open  ]],
Cell[52166, 1587, 179, 5, 70, "MathCaption",
  CellTags->{"S5.2.1", "1.49"}],

Cell[CellGroupData[{
Cell[52370, 1596, 103, 2, 70, "Input",
  CellTags->"S5.2.1"],
Cell[52476, 1600, 145, 5, 70, "Output",
  CellTags->"S5.2.1"]
}, Open  ]],
Cell[52636, 1608, 214, 6, 70, "MathCaption",
  CellTags->{"S5.2.1", "1.50"}],

Cell[CellGroupData[{
Cell[52875, 1618, 106, 2, 70, "Input",
  CellTags->"S5.2.1"],
Cell[52984, 1622, 83, 3, 70, "Output",
  CellTags->"S5.2.1"]
}, Open  ]],
Cell[53082, 1628, 156, 7, 70, "MathCaption",
  CellTags->{"S5.2.1", "1.51"}],
Cell[53241, 1637, 154, 5, 70, "Input",
  CellTags->"S5.2.1"],
Cell[53398, 1644, 197, 6, 70, "MathCaption",
  CellTags->{"S5.2.1", "1.52"}],

Cell[CellGroupData[{
Cell[53620, 1654, 257, 7, 70, "Input",
  CellTags->"S5.2.1"],
Cell[53880, 1663, 358, 12, 70, "Output",
  CellTags->"S5.2.1"]
}, Open  ]],
Cell[54253, 1678, 398, 10, 70, "MathCaption",
  CellTags->{"S5.2.1", "1.53"}],

Cell[CellGroupData[{
Cell[54676, 1692, 154, 5, 70, "Input",
  CellTags->"S5.2.1"],
Cell[54833, 1699, 312, 11, 70, "Output",
  CellTags->"S5.2.1"]
}, Open  ]],
Cell[55160, 1713, 134, 4, 70, "MathCaption",
  CellTags->{"S5.2.1", "1.54"}],

Cell[CellGroupData[{
Cell[55319, 1721, 153, 6, 70, "Input",
  CellTags->"S5.2.1"],
Cell[55475, 1729, 121, 4, 70, "Output",
  CellTags->"S5.2.1"]
}, Open  ]],
Cell[55611, 1736, 151, 4, 70, "MathCaption",
  CellTags->{"S5.2.1", "1.55"}],

Cell[CellGroupData[{
Cell[55787, 1744, 84, 2, 70, "Input",
  CellTags->"S5.2.1"],
Cell[55874, 1748, 98, 3, 70, "Output",
  CellTags->"S5.2.1"]
}, Open  ]],
Cell[55987, 1754, 180, 6, 70, "MathCaption",
  CellTags->{"S5.2.1", "1.56"}],

Cell[CellGroupData[{
Cell[56192, 1764, 93, 2, 70, "Input",
  CellTags->"S5.2.1"],
Cell[56288, 1768, 352, 12, 70, "Output",
  CellTags->"S5.2.1"]
}, Open  ]]
}
]
*)




(***********************************************************************
End of Mathematica Notebook file.
***********************************************************************)

