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

                    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[     49132,       1669]*)
(*NotebookOutlinePosition[     67523,       2209]*)
(*  CellTagsIndexPosition[     65933,       2142]*)
(*WindowFrame->Normal*)



Notebook[{
Cell[TextData[{
  "NumberTheory",
  StyleBox["`", "MB"],
  "NumberTheoryFunctions",
  StyleBox["`", "MB"]
}], "Subsection",
  CellTags->{"S5.68.1", "1.1"}],

Cell[TextData[{
  "This package contains a variety of functions that are useful for number \
theory applications. For more information on the mathematics related to these \
functions, see G.\[NonBreakingSpace]H.\[NonBreakingSpace]Hardy and E.\
\[NonBreakingSpace]M.\[NonBreakingSpace]Wright, ",
  StyleBox["An Introduction to the Theory of Numbers", "TI"],
  ", Oxford University Press, 1988, \
D.\[NonBreakingSpace]E.\[NonBreakingSpace]Knuth, ",
  StyleBox["Seminumerical Algorithms", "TI"],
  ", Addison\[Hyphen]Wesley, 1981, and E.\[NonBreakingSpace]Grosswald, ",
  StyleBox["Representations of Integers as Sums of Squares", "TI"],
  ", Springer, 1985. "
}], "Text",
  CellTags->{"S5.68.1", "1.2"}],

Cell[BoxData[
    FormBox[
      StyleBox[
        FrameBox[
          StyleBox[GridBox[{
                {"\<\"\\!\\(\\*StyleBox[\\\"\\\\\\\"SquareFreeQ[\\\\\\\"\\\", \
\\\"MR\\\"]\\)\\!\\(\\*StyleBox[\\\"\\\\\\\"n\\\\\\\"\\\", \
\\\"TI\\\"]\\)\\!\\(\\*StyleBox[\\\"\\\\\\\"]\\\\\\\"\\\", \\\"MR\\\"]\\) \
\"\>", "\<\"give \\!\\(\\*StyleBox[\\\"\\\\\\\"True\\\\\\\"\\\", \
\\\"MR\\\"]\\) if \\!\\(\\*StyleBox[\\\"\\\\\\\"n\\\\\\\"\\\", \\\"TI\\\"]\\) \
contains a squared factor, \\!\\(\\*StyleBox[\\\"\\\\\\\"False\\\\\\\"\\\", \
\\\"MR\\\"]\\) otherwise\"\>"}
                },
              ColumnAlignments->{Right, Left}],
            GridBoxOptions->{RowLines->False}]],
        "2ColumnBox"], TraditionalForm]], "Text",
  CellTags->{"S5.68.1", "1.3"}],

Cell["Testing for a squared factor. ", "Caption",
  CellTags->"S5.68.1"],

Cell[TextData[{
  StyleBox["SquareFreeQ[", "MR"],
  StyleBox["n", "TI"],
  StyleBox["]", "MR"],
  " checks to see if ",
  StyleBox["n", "MR"],
  " has a square prime factor. It is believed that this problem is, in \
general, as hard as the problem of finding the prime factorization of ",
  Cell[BoxData[
      \(TraditionalForm\`n\)], "InlineFormula"],
  ". However, in many cases one can do much better than simply factoring ",
  Cell[BoxData[
      \(TraditionalForm\`n\)], "InlineFormula"],
  " and seeing if a prime factor occurs with a power equal to two or higher. \
\nTo show that ",
  Cell[BoxData[
      \(TraditionalForm\`n\)], "InlineFormula"],
  " is not square\[Hyphen]free, one only needs to find a ",
  StyleBox["single", "TI"],
  " prime factor of ",
  Cell[BoxData[
      \(TraditionalForm\`n\)], "InlineFormula"],
  " whose square divides ",
  Cell[BoxData[
      \(TraditionalForm\`n\)], "InlineFormula"],
  ". In principle then, one could perform the factorization of ",
  Cell[BoxData[
      \(TraditionalForm\`n\)], "InlineFormula"],
  " one prime at a time to see if the square of the prime divides ",
  Cell[BoxData[
      \(TraditionalForm\`n\)], "InlineFormula"],
  ". This method, while simple to describe, is rather inefficient. The actual \
procedure used by ",
  StyleBox["SquareFreeQ[", "MR"],
  StyleBox["n", "TI"],
  StyleBox["]", "MR"],
  " is somewhat more complicated to describe, but it is much more efficient \
computationally. \nFirst, the greatest common divisor of ",
  Cell[BoxData[
      \(TraditionalForm\`n\)], "InlineFormula"],
  " and the product of the primes less than ",
  Cell[BoxData[
      \(TraditionalForm\`10, 000\)], "InlineFormula"],
  " is computed. (Call this product of primes ",
  Cell[BoxData[
      \(TraditionalForm\`P\)], "InlineFormula"],
  ".) The next step is to compute the ",
  StyleBox["GCD", "MR"],
  " of this result and ",
  Cell[BoxData[
      \(TraditionalForm\`P\)], "InlineFormula"],
  ". If this ",
  StyleBox["GCD", "MR"],
  " is not equal to one, then ",
  Cell[BoxData[
      \(TraditionalForm\`n\)], "InlineFormula"],
  " has a square factor. If this ",
  StyleBox["GCD", "MR"],
  " is equal to one, then a new quantity ",
  Cell[BoxData[
      \(TraditionalForm\`q\)], "InlineFormula"],
  " is defined to be ",
  StyleBox["n", "TI"],
  StyleBox["/GCD[", "MR"],
  StyleBox["n", "TI"],
  StyleBox[",", "MR"],
  " ",
  StyleBox["P", "TI"],
  StyleBox["]", "MR"],
  ". If ",
  Cell[BoxData[
      \(TraditionalForm\`q\)], "InlineFormula"],
  " is prime (an easy thing to check), then ",
  Cell[BoxData[
      \(TraditionalForm\`n\)], "InlineFormula"],
  " is square\[Hyphen]free. If ",
  Cell[BoxData[
      \(TraditionalForm\`q\)], "InlineFormula"],
  " is not prime, then the process continues with the factorization of ",
  Cell[BoxData[
      \(TraditionalForm\`q\)], "InlineFormula"],
  " (the small factors found with the ",
  StyleBox["GCD", "MR"],
  " no longer matter since they occur to power one in the factorization of ",
  Cell[BoxData[
      \(TraditionalForm\`n\)], "InlineFormula"],
  "). \nThe first thing to check about ",
  Cell[BoxData[
      \(TraditionalForm\`q\)], "InlineFormula"],
  " is whether it is a perfect power of an integer (this can be done easily). \
If it is not, then the elliptic curve method of factorization is used as \
implemented in the package ",
  StyleBox["NumberTheory`FactorIntegerECM`", "MR"],
  ". ",
  StyleBox["FactorIntegerECM", "MR"],
  " is used to find a single factor ",
  Cell[BoxData[
      \(TraditionalForm\`p\)], "InlineFormula"],
  " of ",
  Cell[BoxData[
      \(TraditionalForm\`q\)], "InlineFormula"],
  ". The next step is to check whether ",
  Cell[BoxData[
      \(TraditionalForm\`p\)], "InlineFormula"],
  " and ",
  Cell[BoxData[
      \(TraditionalForm\`q/p\)], "InlineFormula"],
  " have no common factor. If they do, then ",
  Cell[BoxData[
      \(TraditionalForm\`q\)], "InlineFormula"],
  " has a square factor. If they don't, then the prime factorizations of ",
  Cell[BoxData[
      \(TraditionalForm\`p\)], "InlineFormula"],
  " and ",
  Cell[BoxData[
      \(TraditionalForm\`q/p\)], "InlineFormula"],
  " do not intersect, and the answer can be obtained recursively by applying \
",
  StyleBox["SquareFreeQ", "MR"],
  " to both ",
  Cell[BoxData[
      \(TraditionalForm\`p\)], "InlineFormula"],
  " and ",
  Cell[BoxData[
      \(TraditionalForm\`q/p\)], "InlineFormula"],
  ". "
}], "Text",
  CellTags->{"S5.68.1", "1.4"}],

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

Cell["<<NumberTheory`NumberTheoryFunctions`", "Input",
  CellLabel->"In[1]:= ",
  CellTags->"S5.68.1"],

Cell["This product of primes contains no squared factors. ", "MathCaption",
  CellTags->{"S5.68.1", "1.6"}],

Cell[CellGroupData[{

Cell["SquareFreeQ[2*3*5*7]", "Input",
  CellLabel->"In[2]:= ",
  CellTags->"S5.68.1"],

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

Cell[TextData[{
  "The square number ",
  Cell[BoxData[
      \(TraditionalForm\`4\)], "InlineFormula"],
  " divides ",
  Cell[BoxData[
      \(TraditionalForm\`60\)], "InlineFormula"],
  ". "
}], "MathCaption",
  CellTags->{"S5.68.1", "1.7"}],

Cell[CellGroupData[{

Cell["SquareFreeQ[60]", "Input",
  CellLabel->"In[3]:= ",
  CellTags->"S5.68.1"],

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

Cell[TextData[{
  StyleBox["SquareFreeQ", "MR"],
  " can handle large integers. "
}], "MathCaption",
  CellTags->{"S5.68.1", "1.8"}],

Cell[CellGroupData[{

Cell["SquareFreeQ[2^101 - 1]", "Input",
  CellLabel->"In[4]:= ",
  CellTags->"S5.68.1"],

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

Cell[TextData[{
  StyleBox["SquareFreeQ", "MR"],
  " uses ",
  StyleBox["FactorIntegerECM", "MR"],
  " as a subroutine, so it should return a value for numbers less than 40 \
digits. "
}], "Text",
  CellTags->{"S5.68.1", "1.9"}],

Cell[BoxData[
    FormBox[
      StyleBox[
        FrameBox[
          StyleBox[GridBox[{
                {"\<\"\\!\\(\\*StyleBox[\\\"\\\\\\\"NextPrime[\\\\\\\"\\\", \
\\\"MR\\\"]\\)\\!\\(\\*StyleBox[\\\"\\\\\\\"n\\\\\\\"\\\", \
\\\"TI\\\"]\\)\\!\\(\\*StyleBox[\\\"\\\\\\\"]\\\\\\\"\\\", \\\"MR\\\"]\\) \
\"\>", "\<\"give the smallest prime larger than \
\\!\\(\\*StyleBox[\\\"\\\\\\\"n\\\\\\\"\\\", \\\"TI\\\"]\\)\"\>"}
                },
              ColumnAlignments->{Right, Left}],
            GridBoxOptions->{RowLines->False}]],
        "2ColumnBox"], TraditionalForm]], "Text",
  CellTags->{"S5.68.1", "1.10"}],

Cell["Finding the next prime. ", "Caption",
  CellTags->"S5.68.1"],

Cell[TextData[{
  StyleBox["NextPrime[", "MR"],
  StyleBox["n", "TI"],
  StyleBox["]", "MR"],
  " finds the smallest prime ",
  Cell[BoxData[
      \(TraditionalForm\`p\)], "InlineFormula"],
  " such that ",
  Cell[BoxData[
      \(TraditionalForm\`p > n\)], "InlineFormula"],
  ". For ",
  Cell[BoxData[
      \(TraditionalForm\`n\)], "InlineFormula"],
  " less than 20 digits, the algorithm does a direct search using ",
  StyleBox["PrimeQ", "MR"],
  " on the odd numbers greater than ",
  Cell[BoxData[
      \(TraditionalForm\`n\)], "InlineFormula"],
  ". For ",
  Cell[BoxData[
      \(TraditionalForm\`n\)], "InlineFormula"],
  " with more than 20 digits, the algorithm builds a small sieve and first \
checks to see whether the candidate prime is divisible by a small prime \
before using ",
  StyleBox["PrimeQ", "MR"],
  ". This seems to be slightly faster than a direct search. "
}], "Text",
  CellTags->{"S5.68.1", "1.11"}],

Cell[TextData[{
  "This gives the next prime after ",
  Cell[BoxData[
      \(TraditionalForm\`10\)], "InlineFormula"],
  ". "
}], "MathCaption",
  CellTags->{"S5.68.1", "1.12"}],

Cell[CellGroupData[{

Cell["NextPrime[10]", "Input",
  CellLabel->"In[5]:= ",
  CellTags->"S5.68.1"],

Cell[BoxData[
    \(11\)], "Output",
  CellLabel->"Out[5]= ",
  CellTags->"S5.68.1"]
}, Open  ]],

Cell["\<\
Even for large numbers, the next prime can be computed rather \
quickly. \
\>", "MathCaption",
  CellTags->{"S5.68.1", "1.13"}],

Cell[CellGroupData[{

Cell["NextPrime[10^64]", "Input",
  CellLabel->"In[6]:= ",
  CellTags->"S5.68.1"],

Cell[BoxData[
    \(10000000000000000000000000000000000000000000000000000000000000057\)], \
"Output",
  CellLabel->"Out[6]= ",
  CellTags->"S5.68.1"]
}, Open  ]],

Cell[BoxData[
    FormBox[
      StyleBox[
        FrameBox[
          StyleBox[GridBox[{
                {
                  
                  RowBox[{"\<\"\\!\\(\\*StyleBox[\\\"\\\\\\\"ChineseRemainder[\
\\\\\\\"\\\", \\\"MR\\\"]\\)\"\>", 
                    StyleBox[
                      
                      SubscriptBox["\<\"\\!\\(\\*StyleBox[\\\"\\\\\\\"list\\\\\
\\\"\\\", \\\"TI\\\"]\\)\"\>", "1"],
                      
                      "InlineFormula"], \
"\<\"\\!\\(\\*StyleBox[\\\"\\\\\\\",\\\\\\\"\\\", \\\"MR\\\"]\\) \"\>", 
                    StyleBox[
                      
                      SubscriptBox["\<\"\\!\\(\\*StyleBox[\\\"\\\\\\\"list\\\\\
\\\"\\\", \\\"TI\\\"]\\)\"\>", "2"],
                      "InlineFormula"], "\<\"] \"\>"}], 
                  
                  RowBox[{"\<\"give the smallest non\[Hyphen]negative integer \
\\!\\(\\*StyleBox[\\\"\\\\\\\"r\\\\\\\"\\\", \\\"TI\\\"]\\) with \
\\!\\(\\*StyleBox[\\\"\\\\\\\"Mod[\\\\\\\"\\\", \
\\\"MR\\\"]\\)\\!\\(\\*StyleBox[\\\"\\\\\\\"r\\\\\\\"\\\", \
\\\"TI\\\"]\\)\\!\\(\\*StyleBox[\\\"\\\\\\\",\\\\\\\"\\\", \\\"MR\\\"]\\) \
\"\>", 
                    StyleBox[
                      
                      SubscriptBox["\<\"\\!\\(\\*StyleBox[\\\"\\\\\\\"list\\\\\
\\\"\\\", \\\"TI\\\"]\\)\"\>", "2"],
                      
                      "InlineFormula"], \
"\<\"\\!\\(\\*StyleBox[\\\"\\\\\\\"]\\\\\\\"\\\", \\\"MR\\\"]\\) \
\\!\\(\\*StyleBox[\\\"\\\\\\\"==\\\\\\\"\\\", \\\"MR\\\"]\\) \"\>", 
                    StyleBox[
                      
                      SubscriptBox["\<\"\\!\\(\\*StyleBox[\\\"\\\\\\\"list\\\\\
\\\"\\\", \\\"TI\\\"]\\)\"\>", "1"],
                      "InlineFormula"]}]}
                },
              ColumnAlignments->{Right, Left}],
            GridBoxOptions->{RowLines->False}]],
        "2ColumnBox"], TraditionalForm]], "Text",
  CellTags->{"S5.68.1", "1.14"}],

Cell["Solving simultaneous congruences. ", "Caption",
  CellTags->"S5.68.1"],

Cell[TextData[{
  "The ",
  StyleBox["Chinese Remainder Theorem", "TI"],
  " states that a certain class of simultaneous congruences always has a \
solution. ",
  StyleBox["ChineseRemainder[", "MR"],
  Cell[BoxData[
      FormBox[
        SubscriptBox["\<\"\\!\\(\\*StyleBox[\\\"\\\\\\\"list\\\\\\\"\\\", \
\\\"TI\\\"]\\)\"\>", "1"], TraditionalForm]], "InlineFormula"],
  StyleBox[",", "MR"],
  " ",
  Cell[BoxData[
      FormBox[
        SubscriptBox["\<\"\\!\\(\\*StyleBox[\\\"\\\\\\\"list\\\\\\\"\\\", \
\\\"TI\\\"]\\)\"\>", "2"], TraditionalForm]], "InlineFormula"],
  StyleBox["]", "MR"],
  " finds the smallest non\[Hyphen]negative integer ",
  Cell[BoxData[
      \(TraditionalForm\`r\)], "InlineFormula"],
  " such that ",
  StyleBox["Mod[", "MR"],
  StyleBox["r", "TI"],
  StyleBox[",", "MR"],
  " ",
  Cell[BoxData[
      FormBox[
        SubscriptBox["\<\"\\!\\(\\*StyleBox[\\\"\\\\\\\"list\\\\\\\"\\\", \
\\\"TI\\\"]\\)\"\>", "2"], TraditionalForm]], "InlineFormula"],
  StyleBox["]", "MR"],
  " is ",
  Cell[BoxData[
      FormBox[
        SubscriptBox["\<\"\\!\\(\\*StyleBox[\\\"\\\\\\\"list\\\\\\\"\\\", \
\\\"TI\\\"]\\)\"\>", "1"], TraditionalForm]], "InlineFormula"],
  ". The solution is unique modulo the least common multiple of the elements \
of ",
  Cell[BoxData[
      FormBox[
        SubscriptBox["\<\"\\!\\(\\*StyleBox[\\\"\\\\\\\"list\\\\\\\"\\\", \
\\\"TI\\\"]\\)\"\>", "2"], TraditionalForm]], "InlineFormula"],
  ". The code for ",
  StyleBox["ChineseRemainder", "MR"],
  " was contributed by Stan Wagon of Macalaster College. "
}], "Text",
  CellTags->{"S5.68.1", "1.15"}],

Cell[TextData[{
  "This means that ",
  Cell[BoxData[
      \(TraditionalForm\`244 \[Congruent] \(\(0\)\(\ \)\) mod\ 4\)], 
    "InlineFormula"],
  ", ",
  Cell[BoxData[
      \(TraditionalForm\`244 \[Congruent] \(\(1\)\(\ \)\) mod\ 9\)], 
    "InlineFormula"],
  ", and ",
  Cell[BoxData[
      \(TraditionalForm\`244 \[Congruent] \(\(2\)\(\ \)\) mod\ 121\)], 
    "InlineFormula"],
  ". "
}], "MathCaption",
  CellTags->{"S5.68.1", "1.16"}],

Cell[CellGroupData[{

Cell["ChineseRemainder[{0, 1, 2}, {4, 9, 121}]", "Input",
  CellLabel->"In[7]:= ",
  CellTags->"S5.68.1"],

Cell[BoxData[
    \(244\)], "Output",
  CellLabel->"Out[7]= ",
  CellTags->"S5.68.1"]
}, Open  ]],

Cell["This confirms the result. ", "MathCaption",
  CellTags->{"S5.68.1", "1.17"}],

Cell[CellGroupData[{

Cell["Mod[244, {4, 9, 121}]", "Input",
  CellLabel->"In[8]:= ",
  CellTags->"S5.68.1"],

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

Cell["For longer lists the routine is still quite fast. ", "MathCaption",
  CellTags->{"S5.68.1", "1.18"}],

Cell[CellGroupData[{

Cell["ChineseRemainder[Range[20], Prime[Range[20]]]", "Input",
  CellLabel->"In[9]:= ",
  CellTags->"S5.68.1"],

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

Cell[BoxData[
    FormBox[
      StyleBox[
        FrameBox[
          StyleBox[GridBox[{
                {"\<\"\\!\\(\\*StyleBox[\\\"\\\\\\\"SqrtMod[\\\\\\\"\\\", \
\\\"MR\\\"]\\)\\!\\(\\*StyleBox[\\\"\\\\\\\"d\\\\\\\"\\\", \
\\\"TI\\\"]\\)\\!\\(\\*StyleBox[\\\"\\\\\\\",\\\\\\\"\\\", \\\"MR\\\"]\\) \\!\
\\(\\*StyleBox[\\\"\\\\\\\"n\\\\\\\"\\\", \
\\\"TI\\\"]\\)\\!\\(\\*StyleBox[\\\"\\\\\\\"]\\\\\\\"\\\", \\\"MR\\\"]\\) \
\"\>", 
                  RowBox[{"\<\"give the square root of \"\>", 
                    StyleBox[\(d  mod  n\),
                      "InlineFormula"], "\<\", for odd \"\>", 
                    StyleBox["n",
                      "InlineFormula"]}]}
                },
              ColumnAlignments->{Right, Left}],
            GridBoxOptions->{RowLines->False}]],
        "2ColumnBox"], TraditionalForm]], "Text",
  CellTags->{"S5.68.1", "1.19"}],

Cell[TextData[{
  "Finding square roots modulo ",
  StyleBox["n", "MR"],
  ". "
}], "Caption",
  CellTags->"S5.68.1"],

Cell[TextData[{
  StyleBox["SqrtMod[", "MR"],
  StyleBox["d", "TI"],
  StyleBox[",", "MR"],
  " ",
  StyleBox["n", "TI"],
  StyleBox["]", "MR"],
  " computes the square root of ",
  Cell[BoxData[
      \(TraditionalForm\`\(\(d\)\(\ \)\) mod\ n\)], "InlineFormula"],
  ". In other words, it returns ",
  Cell[BoxData[
      \(TraditionalForm\`x\)], "InlineFormula"],
  ", where ",
  Cell[BoxData[
      \(TraditionalForm\`x\^2 \[Congruent] \(\(d\)\(\ \)\) mod\ n\)], 
    "InlineFormula"],
  ". The algorithm used by ",
  StyleBox["SqrtMod", "MR"],
  " is discussed in ",
  StyleBox["Mathematica in Action", "TI"],
  ", Section 9.6. It is interesting to note that this method does fewer \
divisions than Newton's method for extracting square roots, and so is faster \
by a constant factor. \nFor given ",
  Cell[BoxData[
      \(TraditionalForm\`d\)], "InlineFormula"],
  " and ",
  Cell[BoxData[
      \(TraditionalForm\`n\)], "InlineFormula"],
  ", there may not exist an integer ",
  Cell[BoxData[
      \(TraditionalForm\`x\)], "InlineFormula"],
  " with ",
  Cell[BoxData[
      \(TraditionalForm\`x\^2 \[Congruent] \(\(d\)\(\ \)\) mod\ n\)], 
    "InlineFormula"],
  ". Clearly ",
  Cell[BoxData[
      \(TraditionalForm\`d\)], "InlineFormula"],
  " must be a perfect square ",
  Cell[BoxData[
      \(TraditionalForm\`mod\ n\)], "InlineFormula"],
  ", so to have a solution one must have that ",
  StyleBox["JacobiSymbol[", "MR"],
  StyleBox["d", "TI"],
  StyleBox[",", "MR"],
  " ",
  StyleBox["n", "TI"],
  StyleBox["]", "MR"],
  " be equal to 1. This condition is also sufficient if ",
  Cell[BoxData[
      \(TraditionalForm\`n\)], "InlineFormula"],
  " is a prime. The algorithm used for the case when ",
  Cell[BoxData[
      \(TraditionalForm\`n\)], "InlineFormula"],
  " is prime was discovered by Shanks. \nIf ",
  Cell[BoxData[
      \(TraditionalForm\`n\)], "InlineFormula"],
  " is not prime, the algorithm that is used requires that ",
  Cell[BoxData[
      \(TraditionalForm\`n\)], "InlineFormula"],
  " be factored completely. In this case, for ",
  Cell[BoxData[
      \(TraditionalForm\`d\)], "InlineFormula"],
  " to be a perfect square, every prime factor ",
  Cell[BoxData[
      \(TraditionalForm\`p\)], "InlineFormula"],
  " of ",
  Cell[BoxData[
      \(TraditionalForm\`n\)], "InlineFormula"],
  " for which ",
  StyleBox["JacobiSymbol[", "MR"],
  StyleBox["d", "TI"],
  StyleBox[",", "MR"],
  " ",
  StyleBox["p", "TI"],
  StyleBox["]", "MR"],
  " is ",
  Cell[BoxData[
      \(TraditionalForm\`\(-1\)\)], "InlineFormula"],
  " must divide ",
  Cell[BoxData[
      \(TraditionalForm\`n\)], "InlineFormula"],
  " to an even power. \nIn the special case when ",
  Cell[BoxData[
      \(TraditionalForm\`n\)], "InlineFormula"],
  " is a prime power ",
  Cell[BoxData[
      \(TraditionalForm\`n = p\^k\)], "InlineFormula"],
  ", ",
  StyleBox["SqrtMod[", "MR"],
  StyleBox["d", "TI"],
  StyleBox[",", "MR"],
  " ",
  StyleBox["n", "TI"],
  StyleBox["]", "MR"],
  " is computed using a variant of the classical Newton iteration "
}], "Text",
  CellTags->{"S5.68.1", "1.20"}],

Cell[BoxData[
    \(TraditionalForm\`\(\(x\)\(\[RightTeeArrow]\)\(1\/2\)\(\ \)\((x + 
          d\/x)\)\(\ \)\)\)], "DisplayFormula",
  CellTags->{"S5.68.1", "1.21"}],

Cell[TextData[{
  "The Newton iteration sends a ",
  Cell[BoxData[
      \(TraditionalForm\`mod\ p\^k\)], "InlineFormula"],
  " square root to a ",
  Cell[BoxData[
      \(TraditionalForm\`mod\ p\^\(2  k\)\)], "InlineFormula"],
  " solution, but does a modular division at each step. \nOne can compute the \
square root by doing modular divisions only at the first step by first \
computing ",
  Cell[BoxData[
      \(TraditionalForm\`x \[Congruent] 1/\@d\ \((mod\ p)\)\)], 
    "InlineFormula"],
  " and then iterating "
}], "Text",
  CellTags->{"S5.68.1", "1.22"}],

Cell[BoxData[
    \(TraditionalForm\`\(\(x\)\(\[RightTeeArrow]\)\(\(3  x - d 
             x\^3\)\/2\)\(\ \)\)\)], "DisplayFormula",
  CellTags->{"S5.68.1", "1.23"}],

Cell[TextData[{
  "as in Newton's iteration. The answer is recovered by multiplying back by \
",
  Cell[BoxData[
      \(TraditionalForm\`d\)], "InlineFormula"],
  " on the final step. \nThe method is based on the ",
  Cell[BoxData[
      \(TraditionalForm\`p\)], "InlineFormula"],
  "\[Dash]adic identity "
}], "Text",
  CellTags->{"S5.68.1", "1.24"}],

Cell[BoxData[
    FormBox[
      RowBox[{\(\@d\), 
        "=", \(\(d\)\(\ \)\), \(x\/\@\(1 - \((1 - d  x\^2)\)\)\), 
        "=", \(\(d\)\(\ \)\), \(\(x\)\(\ \)\), 
        UnderoverscriptBox["\[Sum]", \(k = 0\), "\[Infinity]",
          LimitsPositioning->False], 
        FractionBox[
          RowBox[{"(", 
            FractionBox[\(2  k\), "k",
              FractionLine->None], ")"}], \(4\^k\)], 
        " ", \(\((1 - \(\(d\)\(\ \)\) x\^2)\)\^k\)}], 
      TraditionalForm]], "DisplayFormula",
  CellTags->{"S5.68.1", "1.25"}],

Cell[TextData[{
  "where ",
  Cell[BoxData[
      \(TraditionalForm\`x\^2 \[Congruent] 
        1/\(\(d\)\(\ \)\) \((mod  p\^k)\)\)], "InlineFormula"],
  ", ",
  Cell[BoxData[
      \(TraditionalForm\`k > 0\)], "InlineFormula"],
  ". \nFor a general composite ",
  Cell[BoxData[
      \(TraditionalForm\`n\)], "InlineFormula"],
  ", ",
  Cell[BoxData[
      \(TraditionalForm\`n\)], "InlineFormula"],
  " is first factored into primes. The square root modulo primes and prime \
powers is then computed using the techniques described above. These solutions \
are then used with the Chinese Remainder Theorem to get the final solution. "
}], "Text",
  CellTags->{"S5.68.1", "1.26"}],

Cell[TextData[{
  "This finds an ",
  Cell[BoxData[
      \(TraditionalForm\`x\)], "InlineFormula"],
  " so that ",
  Cell[BoxData[
      \(TraditionalForm\`x\^2\)], "InlineFormula"],
  " is equal to ",
  Cell[BoxData[
      \(TraditionalForm\`3  mod  11\)], "InlineFormula"],
  ". "
}], "MathCaption",
  CellTags->{"S5.68.1", "1.27"}],

Cell[CellGroupData[{

Cell["SqrtMod[3, 11]", "Input",
  CellLabel->"In[10]:= ",
  CellTags->"S5.68.1"],

Cell[BoxData[
    \(5\)], "Output",
  CellLabel->"Out[10]= ",
  CellTags->"S5.68.1"]
}, Open  ]],

Cell["This verifies the result. ", "MathCaption",
  CellTags->{"S5.68.1", "1.28"}],

Cell[CellGroupData[{

Cell["Mod[5^2, 11]", "Input",
  CellLabel->"In[11]:= ",
  CellTags->"S5.68.1"],

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

Cell[TextData[{
  "If ",
  Cell[BoxData[
      \(TraditionalForm\`d\)], "InlineFormula"],
  " does not have a square root modulo ",
  Cell[BoxData[
      \(TraditionalForm\`n\)], "InlineFormula"],
  ", ",
  StyleBox["Sqrt[", "MR"],
  StyleBox["d", "TI"],
  StyleBox[",", "MR"],
  " ",
  StyleBox["n", "TI"],
  StyleBox["]", "MR"],
  " will remain unevaluated. "
}], "MathCaption",
  CellTags->{"S5.68.1", "1.29"}],

Cell[CellGroupData[{

Cell["SqrtMod[3, 5]", "Input",
  CellLabel->"In[12]:= ",
  CellTags->"S5.68.1"],

Cell[BoxData[
    \(SqrtMod[3, 5]\)], "Output",
  CellLabel->"Out[12]= ",
  CellTags->"S5.68.1"]
}, Open  ]],

Cell["This checks that 3 is not a square modulo 5. ", "MathCaption",
  CellTags->{"S5.68.1", "1.30"}],

Cell[CellGroupData[{

Cell["Mod[{0, 1, 2, 3, 4}^2, 5]", "Input",
  CellLabel->"In[13]:= ",
  CellTags->"S5.68.1"],

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

Cell["\<\
Even for large modulus, the square root can be computed fairly \
quickly. \
\>", "MathCaption",
  CellTags->{"S5.68.1", "1.31"}],

Cell[CellGroupData[{

Cell["SqrtMod[2, 10^64 + 57]", "Input",
  CellLabel->"In[14]:= ",
  CellTags->"S5.68.1"],

Cell[BoxData[
    \(876504467496681643735926111996546100401033611976777074909122865\)], \
"Output",
  CellLabel->"Out[14]= ",
  CellTags->"S5.68.1"]
}, Open  ]],

Cell[TextData[{
  StyleBox["SqrtMod[", "MR"],
  StyleBox["d", "TI"],
  StyleBox[",", "MR"],
  " ",
  StyleBox["n", "TI"],
  StyleBox["]", "MR"],
  " also works for composite ",
  Cell[BoxData[
      \(TraditionalForm\`n\)], "InlineFormula"],
  ". "
}], "MathCaption",
  CellTags->{"S5.68.1", "1.32"}],

Cell[CellGroupData[{

Cell["SqrtMod[3, 11^3]", "Input",
  CellLabel->"In[15]:= ",
  CellTags->"S5.68.1"],

Cell[BoxData[
    \(578\)], "Output",
  CellLabel->"Out[15]= ",
  CellTags->"S5.68.1"]
}, Open  ]],

Cell[TextData[{
  "Since the algorithm factors ",
  Cell[BoxData[
      \(TraditionalForm\`n\)], "InlineFormula"],
  ", ",
  StyleBox["SqrtMod[", "MR"],
  StyleBox["d", "TI"],
  StyleBox[",", "MR"],
  " ",
  StyleBox["n", "TI"],
  StyleBox["]", "MR"],
  " may not return a result for very large composite values of ",
  Cell[BoxData[
      \(TraditionalForm\`n\)], "InlineFormula"],
  ". "
}], "Text",
  CellTags->{"S5.68.1", "1.33"}],

Cell[BoxData[
    FormBox[
      StyleBox[
        FrameBox[
          StyleBox[GridBox[{
                {"\<\"\\!\\(\\*StyleBox[\\\"\\\\\\\"PrimitiveRoot[\\\\\\\"\\\"\
, \\\"MR\\\"]\\)\\!\\(\\*StyleBox[\\\"\\\\\\\"n\\\\\\\"\\\", \
\\\"TI\\\"]\\)\\!\\(\\*StyleBox[\\\"\\\\\\\"]\\\\\\\"\\\", \\\"MR\\\"]\\) \
\"\>", 
                  RowBox[{"\<\"give the primitive root of \"\>", 
                    StyleBox["n",
                      "InlineFormula"], "\<\", where \"\>", 
                    StyleBox["n",
                      
                      "InlineFormula"], "\<\" is a prime power or twice a \
prime power\"\>"}]}
                },
              ColumnAlignments->{Right, Left}],
            GridBoxOptions->{RowLines->False}]],
        "2ColumnBox"], TraditionalForm]], "Text",
  CellTags->{"S5.68.1", "1.34"}],

Cell["Computing primitive roots. ", "Caption",
  CellTags->"S5.68.1"],

Cell[TextData[{
  StyleBox["PrimitiveRoot[", "MR"],
  StyleBox["n", "TI"],
  StyleBox["]", "MR"],
  " returns a generator for the group of numbers relatively prime to ",
  Cell[BoxData[
      \(TraditionalForm\`n\)], "InlineFormula"],
  " under multiplication ",
  Cell[BoxData[
      \(TraditionalForm\`mod\ n\)], "InlineFormula"],
  ". This has a single generator if and only if ",
  Cell[BoxData[
      \(TraditionalForm\`n\)], "InlineFormula"],
  " is a power of a prime or twice a power of a prime. The algorithm is \
probabilistic but runs very fast in practice (it does not require one to \
factor ",
  Cell[BoxData[
      \(TraditionalForm\`n\)], "InlineFormula"],
  "). This implementation was improved by some suggestions of Ferrell S.\
\[NonBreakingSpace]Wheeler. A variation of this implementation can be used to \
generate the Pratt primality certificates used in the package ",
  StyleBox["NumberTheory`PrimeQ`", "MR"],
  ". A discussion of Pratt certificates can be found in ",
  StyleBox["Mathematica in Action", "TI"],
  ", Section\[NonBreakingSpace]8.7. "
}], "Text",
  CellTags->{"S5.68.1", "1.35"}],

Cell[TextData[{
  "Here is the primitive root of ",
  Cell[BoxData[
      \(TraditionalForm\`5\)], "InlineFormula"],
  ". "
}], "MathCaption",
  CellTags->{"S5.68.1", "1.36"}],

Cell[CellGroupData[{

Cell["PrimitiveRoot[5]", "Input",
  CellLabel->"In[16]:= ",
  CellTags->"S5.68.1"],

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

Cell["This confirms that it does generate the group. ", "MathCaption",
  CellTags->{"S5.68.1", "1.37"}],

Cell[CellGroupData[{

Cell["Sort[Mod[2^Range[4], 5]]", "Input",
  CellLabel->"In[17]:= ",
  CellTags->"S5.68.1"],

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

Cell["Here is the primitive root of a prime power. ", "MathCaption",
  CellTags->{"S5.68.1", "1.38"}],

Cell[CellGroupData[{

Cell["PrimitiveRoot[1093^3]", "Input",
  CellLabel->"In[18]:= ",
  CellTags->"S5.68.1"],

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

Cell["Here is the primitive root of twice a prime power. ", "MathCaption",
  CellTags->{"S5.68.1", "1.39"}],

Cell[CellGroupData[{

Cell["PrimitiveRoot[2*5^5]", "Input",
  CellLabel->"In[19]:= ",
  CellTags->"S5.68.1"],

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

Cell["\<\
If the argument is composite and not a prime power or twice a prime \
power, the function does not evaluate. \
\>", "MathCaption",
  CellTags->{"S5.68.1", "1.40"}],

Cell[CellGroupData[{

Cell["PrimitiveRoot[11*13]", "Input",
  CellLabel->"In[20]:= ",
  CellTags->"S5.68.1"],

Cell[BoxData[
    \(PrimitiveRoot[143]\)], "Output",
  CellLabel->"Out[20]= ",
  CellTags->"S5.68.1"]
}, Open  ]],

Cell[TextData[{
  StyleBox["PrimitiveRoot", "MR"],
  " uses ",
  StyleBox["FactorInteger", "MR"],
  " as a subroutine, so it may not return a result for very large arguments. \
"
}], "Text",
  CellTags->{"S5.68.1", "1.41"}],

Cell[BoxData[
    FormBox[
      StyleBox[
        FrameBox[
          StyleBox[GridBox[{
                {"\<\"\\!\\(\\*StyleBox[\\\"\\\\\\\"QuadraticRepresentation[\\\
\\\\\"\\\", \\\"MR\\\"]\\)\\!\\(\\*StyleBox[\\\"\\\\\\\"d\\\\\\\"\\\", \\\"TI\
\\\"]\\)\\!\\(\\*StyleBox[\\\"\\\\\\\",\\\\\\\"\\\", \\\"MR\\\"]\\) \
\\!\\(\\*StyleBox[\\\"\\\\\\\"n\\\\\\\"\\\", \\\"TI\\\"]\\)\\!\\(\\*StyleBox[\
\\\"\\\\\\\"]\\\\\\\"\\\", \\\"MR\\\"]\\) \"\>", 
                  RowBox[{"\<\"give \"\>", 
                    StyleBox["{",
                      
                      "InlineFormula"], \
"\<\"\\!\\(\\*StyleBox[\\\"\\\\\\\"x\\\\\\\"\\\", \
\\\"TI\\\"]\\)\\!\\(\\*StyleBox[\\\"\\\\\\\",\\\\\\\"\\\", \\\"MR\\\"]\\) \\!\
\\(\\*StyleBox[\\\"\\\\\\\"y\\\\\\\"\\\", \\\"TI\\\"]\\)\"\>", 
                    StyleBox["}",
                      "InlineFormula"], "\<\" solving \"\>", 
                    StyleBox[\(x\^2 + d  y\^2 = n\),
                      
                      "InlineFormula"], "\<\" (when a solution exists), for \
odd \"\>", 
                    StyleBox["n",
                      "InlineFormula"], "\<\" and positive \"\>", 
                    StyleBox["d",
                      "InlineFormula"]}]}
                },
              ColumnAlignments->{Right, Left}],
            GridBoxOptions->{RowLines->False}]],
        "2ColumnBox"], TraditionalForm]], "Text",
  CellTags->{"S5.68.1", "1.42"}],

Cell["Finding quadratic representations. ", "Caption",
  CellTags->"S5.68.1"],

Cell[TextData[{
  StyleBox["QuadraticRepresentation[", "MR"],
  StyleBox["d", "TI"],
  StyleBox[",", "MR"],
  " ",
  StyleBox["n", "TI"],
  StyleBox["]", "MR"],
  " returns ",
  Cell[BoxData[
      \(TraditionalForm\`{\)], "InlineFormula"],
  StyleBox["x", "TI"],
  StyleBox[",", "MR"],
  " ",
  StyleBox["y", "TI"],
  Cell[BoxData[
      \(TraditionalForm\`}\)], "InlineFormula"],
  " where ",
  Cell[BoxData[
      \(TraditionalForm\`x\^2 + \(\(d\)\(\ \)\) y\^2 = n\)], 
    "InlineFormula"],
  ", if such a representation exists. Here ",
  Cell[BoxData[
      \(TraditionalForm\`d\)], "InlineFormula"],
  " must be a positive integer and ",
  Cell[BoxData[
      \(TraditionalForm\`n\)], "InlineFormula"],
  " is odd. The algorithm resembles the Euclidean algorithm, and for the case \
of prime ",
  Cell[BoxData[
      \(TraditionalForm\`n\)], "InlineFormula"],
  " was discovered by Cornacchia, see S.\[NonBreakingSpace]Wagon, \
\[OpenCurlyDoubleQuote]The Euclidean Algorithm Strikes Again,\
\[CloseCurlyDoubleQuote] ",
  StyleBox["American Mathematical Monthly", "TI"],
  " 97 (1990), pages 124\[Dash]125. The generalization to all ",
  Cell[BoxData[
      \(TraditionalForm\`n\)], "InlineFormula"],
  " is given in the paper by K.\[NonBreakingSpace]Hardy, \
J.\[NonBreakingSpace]B.\[NonBreakingSpace]Muskat, and K.\[NonBreakingSpace]S.\
\[NonBreakingSpace]Williams, \[OpenCurlyDoubleQuote]A Deterministic Algorithm \
for Solving ",
  Cell[BoxData[
      \(TraditionalForm\`n = f  u\^2 + g  v\^2\)], "InlineFormula"],
  " in Coprime Integers ",
  Cell[BoxData[
      \(TraditionalForm\`u\)], "InlineFormula"],
  " and ",
  Cell[BoxData[
      \(TraditionalForm\`v\)], "InlineFormula"],
  ",\[CloseCurlyDoubleQuote] ",
  StyleBox["Mathematics of Computation", "TI"],
  " 55 (1990), pages 327\[Dash]343. This algorithm uses ",
  StyleBox["SqrtMod[-", "MR"],
  Cell[BoxData[
      \(TraditionalForm\`{\)], "InlineFormula"],
  StyleBox["d", "TI"],
  Cell[BoxData[
      \(TraditionalForm\`}\)], "InlineFormula"],
  StyleBox[",", "MR"],
  " ",
  Cell[BoxData[
      \(TraditionalForm\`{\)], "InlineFormula"],
  StyleBox["n", "TI"],
  Cell[BoxData[
      \(TraditionalForm\`}\)], "InlineFormula"],
  StyleBox["]", "MR"],
  " as a subroutine and therefore requires the factorization of ",
  Cell[BoxData[
      \(TraditionalForm\`n\)], "InlineFormula"],
  ". \n",
  StyleBox["QuadraticRepresentation[", "MR"],
  StyleBox["d", "TI"],
  StyleBox[",", "MR"],
  " ",
  StyleBox["n", "TI"],
  StyleBox["]", "MR"],
  " may not return an answer for two reasons: \n(1)\[NonBreakingSpace]",
  Cell[BoxData[
      \(TraditionalForm\`\(-d\)\)], "InlineFormula"],
  " is not a perfect square ",
  Cell[BoxData[
      \(TraditionalForm\`mod\ n\)], "InlineFormula"],
  ", that is, ",
  StyleBox["JacobiSymbol[-", "MR"],
  StyleBox["d", "TI"],
  StyleBox[",", "MR"],
  " ",
  StyleBox["n", "TI"],
  StyleBox["]", "MR"],
  " is ",
  Cell[BoxData[
      \(TraditionalForm\`\(-1\)\)], "InlineFormula"],
  ". \n(2)\[NonBreakingSpace]The class number of the extension field ",
  Cell[BoxData[
      FormBox[
        RowBox[{
          StyleBox["\<\"Q\"\>",
            "TB"], \((\@\(-d\))\)}], TraditionalForm]], "InlineFormula"],
  " is greater than one, and a prime divisor ",
  Cell[BoxData[
      \(TraditionalForm\`p\)], "InlineFormula"],
  " of ",
  Cell[BoxData[
      \(TraditionalForm\`n\)], "InlineFormula"],
  " splits into prime ideals not in the principal class. \nThe reason that \
condition\[NonBreakingSpace](1) can imply the nonexistence of a \
representation is that the equation ",
  Cell[BoxData[
      \(TraditionalForm\`x\^2 + \(\(d\)\(\ \)\) y\^2 = \(\(n\)\(\ \)\) 
        mod\ n\)], "InlineFormula"],
  " implies that ",
  Cell[BoxData[
      \(TraditionalForm\`x\^2 + \(\(d\)\(\ \)\) y\^2 = \(\(0\)\(\ \)\) 
        mod\ n\)], "InlineFormula"],
  ", so that ",
  Cell[BoxData[
      \(TraditionalForm\`\(-d = \((x/y)\)\^2\ mod\ n\)\)], "InlineFormula"],
  " is a perfect square ",
  Cell[BoxData[
      \(TraditionalForm\`mod\ n\)], "InlineFormula"],
  " (here division is ",
  Cell[BoxData[
      \(TraditionalForm\`mod\ n\)], "InlineFormula"],
  "). It follows from this that for such a representation to exist, each \
prime ",
  Cell[BoxData[
      \(TraditionalForm\`p\)], "InlineFormula"],
  " that divides ",
  Cell[BoxData[
      \(TraditionalForm\`n\)], "InlineFormula"],
  " and for which ",
  Cell[BoxData[
      \(TraditionalForm\`\(-d\)\)], "InlineFormula"],
  " is not a perfect square must divide ",
  Cell[BoxData[
      \(TraditionalForm\`n\)], "InlineFormula"],
  " to an even power. \nA complete analysis of \
condition\[NonBreakingSpace](2) is given in the book D.\[NonBreakingSpace]A.\
\[NonBreakingSpace]Cox, ",
  StyleBox["Primes of the Form", "TI"],
  " ",
  Cell[BoxData[
      \(TraditionalForm\`x\^2 + n  y\^2\)], "InlineFormula"],
  ", Wiley, 1989. "
}], "Text",
  CellTags->{"S5.68.1", "1.43"}],

Cell[TextData[{
  "This gives a quadratic representation of\[NonBreakingSpace]",
  Cell[BoxData[
      \(TraditionalForm\`13\)], "InlineFormula"],
  ". "
}], "MathCaption",
  CellTags->{"S5.68.1", "1.44"}],

Cell[CellGroupData[{

Cell["QuadraticRepresentation[1, 13]", "Input",
  CellLabel->"In[21]:= ",
  CellTags->"S5.68.1"],

Cell[BoxData[
    \({3, 2}\)], "Output",
  CellLabel->"Out[21]= ",
  CellTags->"S5.68.1"]
}, Open  ]],

Cell["This verifies the result. ", "MathCaption",
  CellTags->{"S5.68.1", "1.45"}],

Cell[CellGroupData[{

Cell["(%^2) . {1, 1}", "Input",
  CellLabel->"In[22]:= ",
  CellTags->"S5.68.1"],

Cell[BoxData[
    \(13\)], "Output",
  CellLabel->"Out[22]= ",
  CellTags->"S5.68.1"]
}, Open  ]],

Cell[TextData[{
  "The case ",
  Cell[BoxData[
      \(TraditionalForm\`d = 1\)], "InlineFormula"],
  " is essentially the same as ",
  StyleBox["FactorInteger[", "MR"],
  StyleBox["n", "TI"],
  StyleBox[",", "MR"],
  " ",
  StyleBox["GaussianIntegers", "MR"],
  " ",
  StyleBox["->", "MR"],
  " ",
  StyleBox["True]", "MR"],
  " "
}], "MathCaption",
  CellTags->{"S5.68.1", "1.46"}],

Cell[CellGroupData[{

Cell["FactorInteger[13, GaussianIntegers -> True]", "Input",
  CellLabel->"In[23]:= ",
  CellTags->"S5.68.1"],

Cell[BoxData[
    \({{\(-\[ImaginaryI]\), 1}, {2 + 3\ \[ImaginaryI], 
        1}, {3 + 2\ \[ImaginaryI], 1}}\)], "Output",
  CellLabel->"Out[23]= ",
  CellTags->"S5.68.1"]
}, Open  ]],

Cell["Here is a fairly large composite number. ", "MathCaption",
  CellTags->{"S5.68.1", "1.47"}],

Cell[CellGroupData[{

Cell["13*31*61*Prime[10^7]", "Input",
  CellLabel->"In[24]:= ",
  CellTags->"S5.68.1"],

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

Cell[TextData[{
  "This computes its quadratic representation using ",
  Cell[BoxData[
      \(TraditionalForm\`d = 3\)], "InlineFormula"],
  ". "
}], "MathCaption",
  CellTags->{"S5.68.1", "1.48"}],

Cell[CellGroupData[{

Cell["QuadraticRepresentation[3, %]", "Input",
  CellLabel->"In[25]:= ",
  CellTags->"S5.68.1"],

Cell[BoxData[
    \({1864234, 558399}\)], "Output",
  CellLabel->"Out[25]= ",
  CellTags->"S5.68.1"]
}, Open  ]],

Cell["This verifies the result. ", "MathCaption",
  CellTags->{"S5.68.1", "1.49"}],

Cell[CellGroupData[{

Cell["(%^2) . {1, 3}", "Input",
  CellLabel->"In[26]:= ",
  CellTags->"S5.68.1"],

Cell[BoxData[
    \(4410796736359\)], "Output",
  CellLabel->"Out[26]= ",
  CellTags->"S5.68.1"]
}, Open  ]],

Cell["\<\
Even for large numbers, you can get a quadratic representation \
fairly quickly. \
\>", "MathCaption",
  CellTags->{"S5.68.1", "1.50"}],

Cell[CellGroupData[{

Cell["QuadraticRepresentation[1, 10^64+57]", "Input",
  CellLabel->"In[27]:= ",
  CellTags->"S5.68.1"],

Cell[BoxData[
    \({84124543127432900917005691375104, 
      54065342351645956058977745119829}\)], "Output",
  CellLabel->"Out[27]= ",
  CellTags->"S5.68.1"]
}, Open  ]],

Cell[BoxData[
    FormBox[
      StyleBox[
        FrameBox[
          StyleBox[GridBox[{
                {"\<\"\\!\\(\\*StyleBox[\\\"\\\\\\\"ClassList[\\\\\\\"\\\", \
\\\"MR\\\"]\\)\\!\\(\\*StyleBox[\\\"\\\\\\\"d\\\\\\\"\\\", \
\\\"TI\\\"]\\)\\!\\(\\*StyleBox[\\\"\\\\\\\"]\\\\\\\"\\\", \\\"MR\\\"]\\) \
\"\>", 
                  
                  RowBox[{"\<\"give a list of inequivalent quadratic forms of \
discriminant \"\>", 
                    StyleBox["d",
                      
                      "InlineFormula"], "\<\" for negative, \
square\[Hyphen]free integers \"\>", 
                    StyleBox["d",
                      "InlineFormula"], "\<\" of the form \"\>", 
                    StyleBox[\(4  n + 1\),
                      "InlineFormula"]}]},
                {"\<\"\\!\\(\\*StyleBox[\\\"\\\\\\\"ClassNumber[\\\\\\\"\\\", \
\\\"MR\\\"]\\)\\!\\(\\*StyleBox[\\\"\\\\\\\"d\\\\\\\"\\\", \
\\\"TI\\\"]\\)\\!\\(\\*StyleBox[\\\"\\\\\\\"]\\\\\\\"\\\", \\\"MR\\\"]\\) \
\"\>", 
                  
                  RowBox[{"\<\"give the number of inequivalent quadratic \
forms of discriminant \"\>", 
                    StyleBox["d",
                      "InlineFormula"]}]}
                },
              ColumnAlignments->{Right, Left}],
            GridBoxOptions->{RowLines->False}]],
        "2ColumnBox"], TraditionalForm]], "Text",
  CellTags->{"S5.68.1", "1.51"}],

Cell[TextData[{
  "Using ",
  StyleBox["ClassList", "MR"],
  ". "
}], "Caption",
  CellTags->"S5.68.1"],

Cell[TextData[{
  StyleBox["ClassList[", "MR"],
  StyleBox["d", "TI"],
  StyleBox["]", "MR"],
  " gives a set of representatives of the equivalence classes under \
composition of binary quadratic forms ",
  Cell[BoxData[
      \(TraditionalForm\`a  x\^2 + b  x  y + c  y\^2\)], "InlineFormula"],
  " of discriminant ",
  Cell[BoxData[
      \(TraditionalForm\`d\)], "InlineFormula"],
  ". It is assumed that ",
  Cell[BoxData[
      \(TraditionalForm\`d\)], "InlineFormula"],
  " is a negative square\[Hyphen]free integer of the form ",
  Cell[BoxData[
      \(TraditionalForm\`d = 4  k + 1\)], "InlineFormula"],
  ". A quadratic form is represented by the list ",
  Cell[BoxData[
      \(TraditionalForm\`{\)], "InlineFormula"],
  StyleBox["a", "TI"],
  StyleBox[",", "MR"],
  " ",
  StyleBox["b", "TI"],
  StyleBox[",", "MR"],
  " ",
  StyleBox["c", "TI"],
  Cell[BoxData[
      \(TraditionalForm\`}\)], "InlineFormula"],
  ". The algorithm is the most straightforward one and is slow for inputs \
much larger in magnitude than ",
  Cell[BoxData[
      \(TraditionalForm\`10\^4\)], "InlineFormula"],
  ". "
}], "Text",
  CellTags->{"S5.68.1", "1.52"}],

Cell[TextData[{
  "Here are representatives of the three quadratic forms with discriminant ",
  Cell[BoxData[
      \(TraditionalForm\`\(-23\)\)], "InlineFormula"],
  ". "
}], "MathCaption",
  CellTags->{"S5.68.1", "1.53"}],

Cell[CellGroupData[{

Cell["ClassList[-23]", "Input",
  CellLabel->"In[28]:= ",
  CellTags->"S5.68.1"],

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

Cell["\<\
The class number is just the number of inequivalent quadratic forms \
with the given discriminant. \
\>", "MathCaption",
  CellTags->{"S5.68.1", "1.54"}],

Cell[CellGroupData[{

Cell["ClassNumber[-10099]", "Input",
  CellLabel->"In[29]:= ",
  CellTags->"S5.68.1"],

Cell[BoxData[
    \(25\)], "Output",
  CellLabel->"Out[29]= ",
  CellTags->"S5.68.1"]
}, Open  ]],

Cell["\<\
Gauss conjectured and H.\[NonBreakingSpace]Stark proved in 1968 \
that this is the last negative discriminant of class number one. \
\>", \
"MathCaption",
  CellTags->{"S5.68.1", "1.55"}],

Cell[CellGroupData[{

Cell["ClassNumber[-163]", "Input",
  CellLabel->"In[30]:= ",
  CellTags->"S5.68.1"],

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

Cell[BoxData[
    FormBox[
      StyleBox[
        FrameBox[
          StyleBox[GridBox[{
                {"\<\"\\!\\(\\*StyleBox[\\\"\\\\\\\"SumOfSquaresR[\\\\\\\"\\\"\
, \\\"MR\\\"]\\)\\!\\(\\*StyleBox[\\\"\\\\\\\"d\\\\\\\"\\\", \
\\\"TI\\\"]\\)\\!\\(\\*StyleBox[\\\"\\\\\\\",\\\\\\\"\\\", \\\"MR\\\"]\\) \\!\
\\(\\*StyleBox[\\\"\\\\\\\"n\\\\\\\"\\\", \
\\\"TI\\\"]\\)\\!\\(\\*StyleBox[\\\"\\\\\\\"]\\\\\\\"\\\", \\\"MR\\\"]\\) \
\"\>", 
                  
                  RowBox[{"\<\"give the number of representations of an \
integer \"\>", 
                    StyleBox["n",
                      "InlineFormula"], "\<\" as a sum of \"\>", 
                    StyleBox["d",
                      "InlineFormula"], "\<\" squares\"\>"}]},
                {"\<\"\\!\\(\\*StyleBox[\\\"\\\\\\\"\
SumOfSquaresRepresentations[\\\\\\\"\\\", \
\\\"MR\\\"]\\)\\!\\(\\*StyleBox[\\\"\\\\\\\"d\\\\\\\"\\\", \
\\\"TI\\\"]\\)\\!\\(\\*StyleBox[\\\"\\\\\\\",\\\\\\\"\\\", \\\"MR\\\"]\\) \\!\
\\(\\*StyleBox[\\\"\\\\\\\"n\\\\\\\"\\\", \
\\\"TI\\\"]\\)\\!\\(\\*StyleBox[\\\"\\\\\\\"]\\\\\\\"\\\", \\\"MR\\\"]\\) \
\"\>", 
                  
                  RowBox[{"\<\"give a list of all representations of an \
integer \"\>", 
                    StyleBox["n",
                      "InlineFormula"], "\<\" as a sum of \"\>", 
                    StyleBox["d",
                      
                      "InlineFormula"], "\<\" squares, ignoring order and \
signs\"\>"}]}
                },
              ColumnAlignments->{Right, Left}],
            GridBoxOptions->{RowLines->False}]],
        "2ColumnBox"], TraditionalForm]], "Text",
  CellTags->{"S5.68.1", "1.56"}],

Cell["Representing an integer as a sum of squares. ", "Caption",
  CellTags->"S5.68.1"],

Cell[TextData[{
  StyleBox["SumOfSquaresRepresentations[", "MR"],
  StyleBox["d", "TI"],
  StyleBox[",", "MR"],
  " ",
  StyleBox["n", "TI"],
  StyleBox["]", "MR"],
  " gives a set of representations of the integer ",
  Cell[BoxData[
      \(TraditionalForm\`n\)], "InlineFormula"],
  " as a sum of ",
  Cell[BoxData[
      \(TraditionalForm\`d\)], "InlineFormula"],
  " squares. ",
  StyleBox["SumOfSquaresR[", "MR"],
  StyleBox["d", "TI"],
  StyleBox[",", "MR"],
  " ",
  StyleBox["n", "TI"],
  StyleBox["]", "MR"],
  " gives ",
  Cell[BoxData[
      \(TraditionalForm\`\(r\_d\) \((n)\)\)], "InlineFormula"],
  ", the number of representations of the integer ",
  Cell[BoxData[
      \(TraditionalForm\`n\)], "InlineFormula"],
  " as a sum of ",
  Cell[BoxData[
      \(TraditionalForm\`d\)], "InlineFormula"],
  " squares. For ",
  Cell[BoxData[
      \(TraditionalForm\`d = 2, 4, 6, 8\)], "InlineFormula"],
  ", ",
  StyleBox["SumOfSquaresR[", "MR"],
  StyleBox["d", "TI"],
  StyleBox[",", "MR"],
  " ",
  StyleBox["n", "TI"],
  StyleBox["]", "MR"],
  " can handle large integer values of ",
  Cell[BoxData[
      \(TraditionalForm\`n\)], "InlineFormula"],
  ", as long as ",
  Cell[BoxData[
      \(TraditionalForm\`n\)], "InlineFormula"],
  " can be factored. For other values of ",
  Cell[BoxData[
      \(TraditionalForm\`d\)], "InlineFormula"],
  ", ",
  StyleBox["SumOfSquaresR[", "MR"],
  StyleBox["d", "TI"],
  StyleBox[",", "MR"],
  " ",
  StyleBox["n", "TI"],
  StyleBox["]", "MR"],
  " uses recursion, thus only modestly sized values of ",
  Cell[BoxData[
      \(TraditionalForm\`m\)], "InlineFormula"],
  " and ",
  Cell[BoxData[
      \(TraditionalForm\`d\)], "InlineFormula"],
  " can be used. "
}], "Text",
  CellTags->{"S5.68.1", "1.57"}],

Cell[TextData[{
  "Here are the representations of ",
  Cell[BoxData[
      \(TraditionalForm\`100\)], "InlineFormula"],
  " as a sum of ",
  Cell[BoxData[
      \(TraditionalForm\`3\)], "InlineFormula"],
  " squares. "
}], "MathCaption",
  CellTags->{"S5.68.1", "1.58"}],

Cell[CellGroupData[{

Cell["SumOfSquaresRepresentations[3, 100]", "Input",
  CellLabel->"In[31]:= ",
  CellTags->"S5.68.1"],

Cell[BoxData[
    \({{0, 0, 10}, {0, 6, 8}}\)], "Output",
  CellLabel->"Out[31]= ",
  CellTags->"S5.68.1"]
}, Open  ]],

Cell["This checks that the representations are valid. ", "MathCaption",
  CellTags->{"S5.68.1", "1.59"}],

Cell[CellGroupData[{

Cell["Apply[Plus, (%^2), 2]", "Input",
  CellLabel->"In[32]:= ",
  CellTags->"S5.68.1"],

Cell[BoxData[
    \({100, 100}\)], "Output",
  CellLabel->"Out[32]= ",
  CellTags->"S5.68.1"]
}, Open  ]],

Cell[TextData[{
  "The asymptotic average value of ",
  Cell[BoxData[
      \(TraditionalForm\`r\_2\)], "InlineFormula"],
  " is ",
  Cell[BoxData[
      \(TraditionalForm\`\[Pi]\)], "InlineFormula"],
  ". "
}], "MathCaption",
  CellTags->{"S5.68.1", "1.60"}],

Cell[CellGroupData[{

Cell["Sum[N[SumOfSquaresR[2, k]], {k, 200}] / 200", "Input",
  CellLabel->"In[33]:= ",
  CellTags->"S5.68.1"],

Cell[BoxData[
    \(3.16`\)], "Output",
  CellLabel->"Out[33]= ",
  CellTags->"S5.68.1"]
}, Open  ]],

Cell[TextData[{
  StyleBox["SumOfSquaresRepresentations", "MR"],
  " and ",
  StyleBox["SumOfSquaresR", "MR"],
  " were contributed by Stan Wagon. For more information see \
\[OpenCurlyDoubleQuote]The Magic of Imaginary Factoring,\
\[CloseCurlyDoubleQuote] ",
  StyleBox["Mathematica in Education and Research", "TI"],
  " 5:1 (1996), pages 43\[Dash]47. "
}], "Text",
  CellTags->{"S5.68.1", "1.61"}]
},
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.68.1"->{
    Cell[1717, 49, 155, 6, 70, "Subsection",
      CellTags->{"S5.68.1", "1.1"}],
    Cell[1875, 57, 701, 13, 70, "Text",
      CellTags->{"S5.68.1", "1.2"}],
    Cell[2579, 72, 760, 16, 70, "Text",
      CellTags->{"S5.68.1", "1.3"}],
    Cell[3342, 90, 72, 1, 70, "Caption",
      CellTags->"S5.68.1"],
    Cell[3417, 93, 4489, 127, 70, "Text",
      CellTags->{"S5.68.1", "1.4"}],
    Cell[7909, 222, 79, 1, 70, "MathCaption",
      CellTags->{"S5.68.1", "1.5"}],
    Cell[7991, 225, 102, 2, 70, "Input",
      CellTags->"S5.68.1"],
    Cell[8096, 229, 107, 1, 70, "MathCaption",
      CellTags->{"S5.68.1", "1.6"}],
    Cell[8228, 234, 85, 2, 70, "Input",
      CellTags->"S5.68.1"],
    Cell[8316, 238, 86, 3, 70, "Output",
      CellTags->"S5.68.1"],
    Cell[8417, 244, 243, 9, 70, "MathCaption",
      CellTags->{"S5.68.1", "1.7"}],
    Cell[8685, 257, 80, 2, 70, "Input",
      CellTags->"S5.68.1"],
    Cell[8768, 261, 87, 3, 70, "Output",
      CellTags->"S5.68.1"],
    Cell[8870, 267, 132, 4, 70, "MathCaption",
      CellTags->{"S5.68.1", "1.8"}],
    Cell[9027, 275, 87, 2, 70, "Input",
      CellTags->"S5.68.1"],
    Cell[9117, 279, 86, 3, 70, "Output",
      CellTags->"S5.68.1"],
    Cell[9218, 285, 228, 7, 70, "Text",
      CellTags->{"S5.68.1", "1.9"}],
    Cell[9449, 294, 619, 14, 70, "Text",
      CellTags->{"S5.68.1", "1.10"}],
    Cell[10071, 310, 66, 1, 70, "Caption",
      CellTags->"S5.68.1"],
    Cell[10140, 313, 933, 27, 70, "Text",
      CellTags->{"S5.68.1", "1.11"}],
    Cell[11076, 342, 178, 6, 70, "MathCaption",
      CellTags->{"S5.68.1", "1.12"}],
    Cell[11279, 352, 78, 2, 70, "Input",
      CellTags->"S5.68.1"],
    Cell[11360, 356, 84, 3, 70, "Output",
      CellTags->"S5.68.1"],
    Cell[11459, 362, 137, 4, 70, "MathCaption",
      CellTags->{"S5.68.1", "1.13"}],
    Cell[11621, 370, 81, 2, 70, "Input",
      CellTags->"S5.68.1"],
    Cell[11705, 374, 149, 4, 70, "Output",
      CellTags->"S5.68.1"],
    Cell[11869, 381, 1920, 45, 70, "Text",
      CellTags->{"S5.68.1", "1.14"}],
    Cell[13792, 428, 76, 1, 70, "Caption",
      CellTags->"S5.68.1"],
    Cell[13871, 431, 1604, 45, 70, "Text",
      CellTags->{"S5.68.1", "1.15"}],
    Cell[15478, 478, 442, 15, 70, "MathCaption",
      CellTags->{"S5.68.1", "1.16"}],
    Cell[15945, 497, 105, 2, 70, "Input",
      CellTags->"S5.68.1"],
    Cell[16053, 501, 85, 3, 70, "Output",
      CellTags->"S5.68.1"],
    Cell[16153, 507, 82, 1, 70, "MathCaption",
      CellTags->{"S5.68.1", "1.17"}],
    Cell[16260, 512, 86, 2, 70, "Input",
      CellTags->"S5.68.1"],
    Cell[16349, 516, 91, 3, 70, "Output",
      CellTags->"S5.68.1"],
    Cell[16455, 522, 106, 1, 70, "MathCaption",
      CellTags->{"S5.68.1", "1.18"}],
    Cell[16586, 527, 110, 2, 70, "Input",
      CellTags->"S5.68.1"],
    Cell[16699, 531, 109, 3, 70, "Output",
      CellTags->"S5.68.1"],
    Cell[16823, 537, 878, 20, 70, "Text",
      CellTags->{"S5.68.1", "1.19"}],
    Cell[17704, 559, 117, 5, 70, "Caption",
      CellTags->"S5.68.1"],
    Cell[17824, 566, 3101, 98, 70, "Text",
      CellTags->{"S5.68.1", "1.20"}],
    Cell[20928, 666, 166, 3, 70, "DisplayFormula",
      CellTags->{"S5.68.1", "1.21"}],
    Cell[21097, 671, 566, 15, 70, "Text",
      CellTags->{"S5.68.1", "1.22"}],
    Cell[21666, 688, 165, 3, 70, "DisplayFormula",
      CellTags->{"S5.68.1", "1.23"}],
    Cell[21834, 693, 352, 10, 70, "Text",
      CellTags->{"S5.68.1", "1.24"}],
    Cell[22189, 705, 535, 13, 70, "DisplayFormula",
      CellTags->{"S5.68.1", "1.25"}],
    Cell[22727, 720, 680, 18, 70, "Text",
      CellTags->{"S5.68.1", "1.26"}],
    Cell[23410, 740, 335, 12, 70, "MathCaption",
      CellTags->{"S5.68.1", "1.27"}],
    Cell[23770, 756, 80, 2, 70, "Input",
      CellTags->"S5.68.1"],
    Cell[23853, 760, 84, 3, 70, "Output",
      CellTags->"S5.68.1"],
    Cell[23952, 766, 82, 1, 70, "MathCaption",
      CellTags->{"S5.68.1", "1.28"}],
    Cell[24059, 771, 78, 2, 70, "Input",
      CellTags->"S5.68.1"],
    Cell[24140, 775, 84, 3, 70, "Output",
      CellTags->"S5.68.1"],
    Cell[24239, 781, 413, 16, 70, "MathCaption",
      CellTags->{"S5.68.1", "1.29"}],
    Cell[24677, 801, 79, 2, 70, "Input",
      CellTags->"S5.68.1"],
    Cell[24759, 805, 96, 3, 70, "Output",
      CellTags->"S5.68.1"],
    Cell[24870, 811, 101, 1, 70, "MathCaption",
      CellTags->{"S5.68.1", "1.30"}],
    Cell[24996, 816, 91, 2, 70, "Input",
      CellTags->"S5.68.1"],
    Cell[25090, 820, 98, 3, 70, "Output",
      CellTags->"S5.68.1"],
    Cell[25203, 826, 138, 4, 70, "MathCaption",
      CellTags->{"S5.68.1", "1.31"}],
    Cell[25366, 834, 88, 2, 70, "Input",
      CellTags->"S5.68.1"],
    Cell[25457, 838, 148, 4, 70, "Output",
      CellTags->"S5.68.1"],
    Cell[25620, 845, 300, 12, 70, "MathCaption",
      CellTags->{"S5.68.1", "1.32"}],
    Cell[25945, 861, 82, 2, 70, "Input",
      CellTags->"S5.68.1"],
    Cell[26030, 865, 86, 3, 70, "Output",
      CellTags->"S5.68.1"],
    Cell[26131, 871, 434, 16, 70, "Text",
      CellTags->{"S5.68.1", "1.33"}],
    Cell[26568, 889, 829, 20, 70, "Text",
      CellTags->{"S5.68.1", "1.34"}],
    Cell[27400, 911, 69, 1, 70, "Caption",
      CellTags->"S5.68.1"],
    Cell[27472, 914, 1118, 26, 70, "Text",
      CellTags->{"S5.68.1", "1.35"}],
    Cell[28593, 942, 175, 6, 70, "MathCaption",
      CellTags->{"S5.68.1", "1.36"}],
    Cell[28793, 952, 82, 2, 70, "Input",
      CellTags->"S5.68.1"],
    Cell[28878, 956, 84, 3, 70, "Output",
      CellTags->"S5.68.1"],
    Cell[28977, 962, 103, 1, 70, "MathCaption",
      CellTags->{"S5.68.1", "1.37"}],
    Cell[29105, 967, 90, 2, 70, "Input",
      CellTags->"S5.68.1"],
    Cell[29198, 971, 95, 3, 70, "Output",
      CellTags->"S5.68.1"],
    Cell[29308, 977, 101, 1, 70, "MathCaption",
      CellTags->{"S5.68.1", "1.38"}],
    Cell[29434, 982, 87, 2, 70, "Input",
      CellTags->"S5.68.1"],
    Cell[29524, 986, 84, 3, 70, "Output",
      CellTags->"S5.68.1"],
    Cell[29623, 992, 107, 1, 70, "MathCaption",
      CellTags->{"S5.68.1", "1.39"}],
    Cell[29755, 997, 86, 2, 70, "Input",
      CellTags->"S5.68.1"],
    Cell[29844, 1001, 87, 3, 70, "Output",
      CellTags->"S5.68.1"],
    Cell[29946, 1007, 173, 4, 70, "MathCaption",
      CellTags->{"S5.68.1", "1.40"}],
    Cell[30144, 1015, 86, 2, 70, "Input",
      CellTags->"S5.68.1"],
    Cell[30233, 1019, 101, 3, 70, "Output",
      CellTags->"S5.68.1"],
    Cell[30349, 1025, 223, 7, 70, "Text",
      CellTags->{"S5.68.1", "1.41"}],
    Cell[30575, 1034, 1423, 31, 70, "Text",
      CellTags->{"S5.68.1", "1.42"}],
    Cell[32001, 1067, 77, 1, 70, "Caption",
      CellTags->"S5.68.1"],
    Cell[32081, 1070, 4927, 145, 70, "Text",
      CellTags->{"S5.68.1", "1.43"}],
    Cell[37011, 1217, 205, 6, 70, "MathCaption",
      CellTags->{"S5.68.1", "1.44"}],
    Cell[37241, 1227, 96, 2, 70, "Input",
      CellTags->"S5.68.1"],
    Cell[37340, 1231, 89, 3, 70, "Output",
      CellTags->"S5.68.1"],
    Cell[37444, 1237, 82, 1, 70, "MathCaption",
      CellTags->{"S5.68.1", "1.45"}],
    Cell[37551, 1242, 80, 2, 70, "Input",
      CellTags->"S5.68.1"],
    Cell[37634, 1246, 85, 3, 70, "Output",
      CellTags->"S5.68.1"],
    Cell[37734, 1252, 383, 16, 70, "MathCaption",
      CellTags->{"S5.68.1", "1.46"}],
    Cell[38142, 1272, 109, 2, 70, "Input",
      CellTags->"S5.68.1"],
    Cell[38254, 1276, 171, 4, 70, "Output",
      CellTags->"S5.68.1"],
    Cell[38440, 1283, 97, 1, 70, "MathCaption",
      CellTags->{"S5.68.1", "1.47"}],
    Cell[38562, 1288, 86, 2, 70, "Input",
      CellTags->"S5.68.1"],
    Cell[38651, 1292, 96, 3, 70, "Output",
      CellTags->"S5.68.1"],
    Cell[38762, 1298, 198, 6, 70, "MathCaption",
      CellTags->{"S5.68.1", "1.48"}],
    Cell[38985, 1308, 95, 2, 70, "Input",
      CellTags->"S5.68.1"],
    Cell[39083, 1312, 100, 3, 70, "Output",
      CellTags->"S5.68.1"],
    Cell[39198, 1318, 82, 1, 70, "MathCaption",
      CellTags->{"S5.68.1", "1.49"}],
    Cell[39305, 1323, 80, 2, 70, "Input",
      CellTags->"S5.68.1"],
    Cell[39388, 1327, 96, 3, 70, "Output",
      CellTags->"S5.68.1"],
    Cell[39499, 1333, 145, 4, 70, "MathCaption",
      CellTags->{"S5.68.1", "1.50"}],
    Cell[39669, 1341, 102, 2, 70, "Input",
      CellTags->"S5.68.1"],
    Cell[39774, 1345, 158, 4, 70, "Output",
      CellTags->"S5.68.1"],
    Cell[39947, 1352, 1398, 33, 70, "Text",
      CellTags->{"S5.68.1", "1.51"}],
    Cell[41348, 1387, 103, 5, 70, "Caption",
      CellTags->"S5.68.1"],
    Cell[41454, 1394, 1153, 35, 70, "Text",
      CellTags->{"S5.68.1", "1.52"}],
    Cell[42610, 1431, 223, 6, 70, "MathCaption",
      CellTags->{"S5.68.1", "1.53"}],
    Cell[42858, 1441, 80, 2, 70, "Input",
      CellTags->"S5.68.1"],
    Cell[42941, 1445, 121, 3, 70, "Output",
      CellTags->"S5.68.1"],
    Cell[43077, 1451, 163, 4, 70, "MathCaption",
      CellTags->{"S5.68.1", "1.54"}],
    Cell[43265, 1459, 85, 2, 70, "Input",
      CellTags->"S5.68.1"],
    Cell[43353, 1463, 85, 3, 70, "Output",
      CellTags->"S5.68.1"],
    Cell[43453, 1469, 197, 5, 70, "MathCaption",
      CellTags->{"S5.68.1", "1.55"}],
    Cell[43675, 1478, 83, 2, 70, "Input",
      CellTags->"S5.68.1"],
    Cell[43761, 1482, 84, 3, 70, "Output",
      CellTags->"S5.68.1"],
    Cell[43860, 1488, 1666, 38, 70, "Text",
      CellTags->{"S5.68.1", "1.56"}],
    Cell[45529, 1528, 87, 1, 70, "Caption",
      CellTags->"S5.68.1"],
    Cell[45619, 1531, 1759, 63, 70, "Text",
      CellTags->{"S5.68.1", "1.57"}],
    Cell[47381, 1596, 271, 9, 70, "MathCaption",
      CellTags->{"S5.68.1", "1.58"}],
    Cell[47677, 1609, 101, 2, 70, "Input",
      CellTags->"S5.68.1"],
    Cell[47781, 1613, 106, 3, 70, "Output",
      CellTags->"S5.68.1"],
    Cell[47902, 1619, 104, 1, 70, "MathCaption",
      CellTags->{"S5.68.1", "1.59"}],
    Cell[48031, 1624, 87, 2, 70, "Input",
      CellTags->"S5.68.1"],
    Cell[48121, 1628, 93, 3, 70, "Output",
      CellTags->"S5.68.1"],
    Cell[48229, 1634, 259, 9, 70, "MathCaption",
      CellTags->{"S5.68.1", "1.60"}],
    Cell[48513, 1647, 109, 2, 70, "Input",
      CellTags->"S5.68.1"],
    Cell[48625, 1651, 88, 3, 70, "Output",
      CellTags->"S5.68.1"],
    Cell[48728, 1657, 400, 10, 70, "Text",
      CellTags->{"S5.68.1", "1.61"}]},
  "1.1"->{
    Cell[1717, 49, 155, 6, 70, "Subsection",
      CellTags->{"S5.68.1", "1.1"}]},
  "1.2"->{
    Cell[1875, 57, 701, 13, 70, "Text",
      CellTags->{"S5.68.1", "1.2"}]},
  "1.3"->{
    Cell[2579, 72, 760, 16, 70, "Text",
      CellTags->{"S5.68.1", "1.3"}]},
  "1.4"->{
    Cell[3417, 93, 4489, 127, 70, "Text",
      CellTags->{"S5.68.1", "1.4"}]},
  "1.5"->{
    Cell[7909, 222, 79, 1, 70, "MathCaption",
      CellTags->{"S5.68.1", "1.5"}]},
  "1.6"->{
    Cell[8096, 229, 107, 1, 70, "MathCaption",
      CellTags->{"S5.68.1", "1.6"}]},
  "1.7"->{
    Cell[8417, 244, 243, 9, 70, "MathCaption",
      CellTags->{"S5.68.1", "1.7"}]},
  "1.8"->{
    Cell[8870, 267, 132, 4, 70, "MathCaption",
      CellTags->{"S5.68.1", "1.8"}]},
  "1.9"->{
    Cell[9218, 285, 228, 7, 70, "Text",
      CellTags->{"S5.68.1", "1.9"}]},
  "1.10"->{
    Cell[9449, 294, 619, 14, 70, "Text",
      CellTags->{"S5.68.1", "1.10"}]},
  "1.11"->{
    Cell[10140, 313, 933, 27, 70, "Text",
      CellTags->{"S5.68.1", "1.11"}]},
  "1.12"->{
    Cell[11076, 342, 178, 6, 70, "MathCaption",
      CellTags->{"S5.68.1", "1.12"}]},
  "1.13"->{
    Cell[11459, 362, 137, 4, 70, "MathCaption",
      CellTags->{"S5.68.1", "1.13"}]},
  "1.14"->{
    Cell[11869, 381, 1920, 45, 70, "Text",
      CellTags->{"S5.68.1", "1.14"}]},
  "1.15"->{
    Cell[13871, 431, 1604, 45, 70, "Text",
      CellTags->{"S5.68.1", "1.15"}]},
  "1.16"->{
    Cell[15478, 478, 442, 15, 70, "MathCaption",
      CellTags->{"S5.68.1", "1.16"}]},
  "1.17"->{
    Cell[16153, 507, 82, 1, 70, "MathCaption",
      CellTags->{"S5.68.1", "1.17"}]},
  "1.18"->{
    Cell[16455, 522, 106, 1, 70, "MathCaption",
      CellTags->{"S5.68.1", "1.18"}]},
  "1.19"->{
    Cell[16823, 537, 878, 20, 70, "Text",
      CellTags->{"S5.68.1", "1.19"}]},
  "1.20"->{
    Cell[17824, 566, 3101, 98, 70, "Text",
      CellTags->{"S5.68.1", "1.20"}]},
  "1.21"->{
    Cell[20928, 666, 166, 3, 70, "DisplayFormula",
      CellTags->{"S5.68.1", "1.21"}]},
  "1.22"->{
    Cell[21097, 671, 566, 15, 70, "Text",
      CellTags->{"S5.68.1", "1.22"}]},
  "1.23"->{
    Cell[21666, 688, 165, 3, 70, "DisplayFormula",
      CellTags->{"S5.68.1", "1.23"}]},
  "1.24"->{
    Cell[21834, 693, 352, 10, 70, "Text",
      CellTags->{"S5.68.1", "1.24"}]},
  "1.25"->{
    Cell[22189, 705, 535, 13, 70, "DisplayFormula",
      CellTags->{"S5.68.1", "1.25"}]},
  "1.26"->{
    Cell[22727, 720, 680, 18, 70, "Text",
      CellTags->{"S5.68.1", "1.26"}]},
  "1.27"->{
    Cell[23410, 740, 335, 12, 70, "MathCaption",
      CellTags->{"S5.68.1", "1.27"}]},
  "1.28"->{
    Cell[23952, 766, 82, 1, 70, "MathCaption",
      CellTags->{"S5.68.1", "1.28"}]},
  "1.29"->{
    Cell[24239, 781, 413, 16, 70, "MathCaption",
      CellTags->{"S5.68.1", "1.29"}]},
  "1.30"->{
    Cell[24870, 811, 101, 1, 70, "MathCaption",
      CellTags->{"S5.68.1", "1.30"}]},
  "1.31"->{
    Cell[25203, 826, 138, 4, 70, "MathCaption",
      CellTags->{"S5.68.1", "1.31"}]},
  "1.32"->{
    Cell[25620, 845, 300, 12, 70, "MathCaption",
      CellTags->{"S5.68.1", "1.32"}]},
  "1.33"->{
    Cell[26131, 871, 434, 16, 70, "Text",
      CellTags->{"S5.68.1", "1.33"}]},
  "1.34"->{
    Cell[26568, 889, 829, 20, 70, "Text",
      CellTags->{"S5.68.1", "1.34"}]},
  "1.35"->{
    Cell[27472, 914, 1118, 26, 70, "Text",
      CellTags->{"S5.68.1", "1.35"}]},
  "1.36"->{
    Cell[28593, 942, 175, 6, 70, "MathCaption",
      CellTags->{"S5.68.1", "1.36"}]},
  "1.37"->{
    Cell[28977, 962, 103, 1, 70, "MathCaption",
      CellTags->{"S5.68.1", "1.37"}]},
  "1.38"->{
    Cell[29308, 977, 101, 1, 70, "MathCaption",
      CellTags->{"S5.68.1", "1.38"}]},
  "1.39"->{
    Cell[29623, 992, 107, 1, 70, "MathCaption",
      CellTags->{"S5.68.1", "1.39"}]},
  "1.40"->{
    Cell[29946, 1007, 173, 4, 70, "MathCaption",
      CellTags->{"S5.68.1", "1.40"}]},
  "1.41"->{
    Cell[30349, 1025, 223, 7, 70, "Text",
      CellTags->{"S5.68.1", "1.41"}]},
  "1.42"->{
    Cell[30575, 1034, 1423, 31, 70, "Text",
      CellTags->{"S5.68.1", "1.42"}]},
  "1.43"->{
    Cell[32081, 1070, 4927, 145, 70, "Text",
      CellTags->{"S5.68.1", "1.43"}]},
  "1.44"->{
    Cell[37011, 1217, 205, 6, 70, "MathCaption",
      CellTags->{"S5.68.1", "1.44"}]},
  "1.45"->{
    Cell[37444, 1237, 82, 1, 70, "MathCaption",
      CellTags->{"S5.68.1", "1.45"}]},
  "1.46"->{
    Cell[37734, 1252, 383, 16, 70, "MathCaption",
      CellTags->{"S5.68.1", "1.46"}]},
  "1.47"->{
    Cell[38440, 1283, 97, 1, 70, "MathCaption",
      CellTags->{"S5.68.1", "1.47"}]},
  "1.48"->{
    Cell[38762, 1298, 198, 6, 70, "MathCaption",
      CellTags->{"S5.68.1", "1.48"}]},
  "1.49"->{
    Cell[39198, 1318, 82, 1, 70, "MathCaption",
      CellTags->{"S5.68.1", "1.49"}]},
  "1.50"->{
    Cell[39499, 1333, 145, 4, 70, "MathCaption",
      CellTags->{"S5.68.1", "1.50"}]},
  "1.51"->{
    Cell[39947, 1352, 1398, 33, 70, "Text",
      CellTags->{"S5.68.1", "1.51"}]},
  "1.52"->{
    Cell[41454, 1394, 1153, 35, 70, "Text",
      CellTags->{"S5.68.1", "1.52"}]},
  "1.53"->{
    Cell[42610, 1431, 223, 6, 70, "MathCaption",
      CellTags->{"S5.68.1", "1.53"}]},
  "1.54"->{
    Cell[43077, 1451, 163, 4, 70, "MathCaption",
      CellTags->{"S5.68.1", "1.54"}]},
  "1.55"->{
    Cell[43453, 1469, 197, 5, 70, "MathCaption",
      CellTags->{"S5.68.1", "1.55"}]},
  "1.56"->{
    Cell[43860, 1488, 1666, 38, 70, "Text",
      CellTags->{"S5.68.1", "1.56"}]},
  "1.57"->{
    Cell[45619, 1531, 1759, 63, 70, "Text",
      CellTags->{"S5.68.1", "1.57"}]},
  "1.58"->{
    Cell[47381, 1596, 271, 9, 70, "MathCaption",
      CellTags->{"S5.68.1", "1.58"}]},
  "1.59"->{
    Cell[47902, 1619, 104, 1, 70, "MathCaption",
      CellTags->{"S5.68.1", "1.59"}]},
  "1.60"->{
    Cell[48229, 1634, 259, 9, 70, "MathCaption",
      CellTags->{"S5.68.1", "1.60"}]},
  "1.61"->{
    Cell[48728, 1657, 400, 10, 70, "Text",
      CellTags->{"S5.68.1", "1.61"}]}
  }
*)

(*CellTagsIndex
CellTagsIndex->{
  {"S5.68.1", 49757, 1686},
  {"1.1", 60015, 1955},
  {"1.2", 60109, 1958},
  {"1.3", 60198, 1961},
  {"1.4", 60287, 1964},
  {"1.5", 60378, 1967},
  {"1.6", 60473, 1970},
  {"1.7", 60569, 1973},
  {"1.8", 60665, 1976},
  {"1.9", 60761, 1979},
  {"1.10", 60851, 1982},
  {"1.11", 60943, 1985},
  {"1.12", 61036, 1988},
  {"1.13", 61135, 1991},
  {"1.14", 61234, 1994},
  {"1.15", 61328, 1997},
  {"1.16", 61422, 2000},
  {"1.17", 61522, 2003},
  {"1.18", 61620, 2006},
  {"1.19", 61719, 2009},
  {"1.20", 61812, 2012},
  {"1.21", 61906, 2015},
  {"1.22", 62008, 2018},
  {"1.23", 62101, 2021},
  {"1.24", 62203, 2024},
  {"1.25", 62296, 2027},
  {"1.26", 62399, 2030},
  {"1.27", 62492, 2033},
  {"1.28", 62592, 2036},
  {"1.29", 62690, 2039},
  {"1.30", 62790, 2042},
  {"1.31", 62889, 2045},
  {"1.32", 62988, 2048},
  {"1.33", 63088, 2051},
  {"1.34", 63181, 2054},
  {"1.35", 63274, 2057},
  {"1.36", 63368, 2060},
  {"1.37", 63467, 2063},
  {"1.38", 63566, 2066},
  {"1.39", 63665, 2069},
  {"1.40", 63764, 2072},
  {"1.41", 63864, 2075},
  {"1.42", 63957, 2078},
  {"1.43", 64052, 2081},
  {"1.44", 64148, 2084},
  {"1.45", 64248, 2087},
  {"1.46", 64347, 2090},
  {"1.47", 64448, 2093},
  {"1.48", 64547, 2096},
  {"1.49", 64647, 2099},
  {"1.50", 64746, 2102},
  {"1.51", 64846, 2105},
  {"1.52", 64941, 2108},
  {"1.53", 65036, 2111},
  {"1.54", 65136, 2114},
  {"1.55", 65236, 2117},
  {"1.56", 65336, 2120},
  {"1.57", 65431, 2123},
  {"1.58", 65526, 2126},
  {"1.59", 65626, 2129},
  {"1.60", 65726, 2132},
  {"1.61", 65826, 2135}
  }
*)

(*NotebookFileOutline
Notebook[{
Cell[1717, 49, 155, 6, 70, "Subsection",
  CellTags->{"S5.68.1", "1.1"}],
Cell[1875, 57, 701, 13, 70, "Text",
  CellTags->{"S5.68.1", "1.2"}],
Cell[2579, 72, 760, 16, 70, "Text",
  CellTags->{"S5.68.1", "1.3"}],
Cell[3342, 90, 72, 1, 70, "Caption",
  CellTags->"S5.68.1"],
Cell[3417, 93, 4489, 127, 70, "Text",
  CellTags->{"S5.68.1", "1.4"}],
Cell[7909, 222, 79, 1, 70, "MathCaption",
  CellTags->{"S5.68.1", "1.5"}],
Cell[7991, 225, 102, 2, 70, "Input",
  CellTags->"S5.68.1"],
Cell[8096, 229, 107, 1, 70, "MathCaption",
  CellTags->{"S5.68.1", "1.6"}],

Cell[CellGroupData[{
Cell[8228, 234, 85, 2, 70, "Input",
  CellTags->"S5.68.1"],
Cell[8316, 238, 86, 3, 70, "Output",
  CellTags->"S5.68.1"]
}, Open  ]],
Cell[8417, 244, 243, 9, 70, "MathCaption",
  CellTags->{"S5.68.1", "1.7"}],

Cell[CellGroupData[{
Cell[8685, 257, 80, 2, 70, "Input",
  CellTags->"S5.68.1"],
Cell[8768, 261, 87, 3, 70, "Output",
  CellTags->"S5.68.1"]
}, Open  ]],
Cell[8870, 267, 132, 4, 70, "MathCaption",
  CellTags->{"S5.68.1", "1.8"}],

Cell[CellGroupData[{
Cell[9027, 275, 87, 2, 70, "Input",
  CellTags->"S5.68.1"],
Cell[9117, 279, 86, 3, 70, "Output",
  CellTags->"S5.68.1"]
}, Open  ]],
Cell[9218, 285, 228, 7, 70, "Text",
  CellTags->{"S5.68.1", "1.9"}],
Cell[9449, 294, 619, 14, 70, "Text",
  CellTags->{"S5.68.1", "1.10"}],
Cell[10071, 310, 66, 1, 70, "Caption",
  CellTags->"S5.68.1"],
Cell[10140, 313, 933, 27, 70, "Text",
  CellTags->{"S5.68.1", "1.11"}],
Cell[11076, 342, 178, 6, 70, "MathCaption",
  CellTags->{"S5.68.1", "1.12"}],

Cell[CellGroupData[{
Cell[11279, 352, 78, 2, 70, "Input",
  CellTags->"S5.68.1"],
Cell[11360, 356, 84, 3, 70, "Output",
  CellTags->"S5.68.1"]
}, Open  ]],
Cell[11459, 362, 137, 4, 70, "MathCaption",
  CellTags->{"S5.68.1", "1.13"}],

Cell[CellGroupData[{
Cell[11621, 370, 81, 2, 70, "Input",
  CellTags->"S5.68.1"],
Cell[11705, 374, 149, 4, 70, "Output",
  CellTags->"S5.68.1"]
}, Open  ]],
Cell[11869, 381, 1920, 45, 70, "Text",
  CellTags->{"S5.68.1", "1.14"}],
Cell[13792, 428, 76, 1, 70, "Caption",
  CellTags->"S5.68.1"],
Cell[13871, 431, 1604, 45, 70, "Text",
  CellTags->{"S5.68.1", "1.15"}],
Cell[15478, 478, 442, 15, 70, "MathCaption",
  CellTags->{"S5.68.1", "1.16"}],

Cell[CellGroupData[{
Cell[15945, 497, 105, 2, 70, "Input",
  CellTags->"S5.68.1"],
Cell[16053, 501, 85, 3, 70, "Output",
  CellTags->"S5.68.1"]
}, Open  ]],
Cell[16153, 507, 82, 1, 70, "MathCaption",
  CellTags->{"S5.68.1", "1.17"}],

Cell[CellGroupData[{
Cell[16260, 512, 86, 2, 70, "Input",
  CellTags->"S5.68.1"],
Cell[16349, 516, 91, 3, 70, "Output",
  CellTags->"S5.68.1"]
}, Open  ]],
Cell[16455, 522, 106, 1, 70, "MathCaption",
  CellTags->{"S5.68.1", "1.18"}],

Cell[CellGroupData[{
Cell[16586, 527, 110, 2, 70, "Input",
  CellTags->"S5.68.1"],
Cell[16699, 531, 109, 3, 70, "Output",
  CellTags->"S5.68.1"]
}, Open  ]],
Cell[16823, 537, 878, 20, 70, "Text",
  CellTags->{"S5.68.1", "1.19"}],
Cell[17704, 559, 117, 5, 70, "Caption",
  CellTags->"S5.68.1"],
Cell[17824, 566, 3101, 98, 70, "Text",
  CellTags->{"S5.68.1", "1.20"}],
Cell[20928, 666, 166, 3, 70, "DisplayFormula",
  CellTags->{"S5.68.1", "1.21"}],
Cell[21097, 671, 566, 15, 70, "Text",
  CellTags->{"S5.68.1", "1.22"}],
Cell[21666, 688, 165, 3, 70, "DisplayFormula",
  CellTags->{"S5.68.1", "1.23"}],
Cell[21834, 693, 352, 10, 70, "Text",
  CellTags->{"S5.68.1", "1.24"}],
Cell[22189, 705, 535, 13, 70, "DisplayFormula",
  CellTags->{"S5.68.1", "1.25"}],
Cell[22727, 720, 680, 18, 70, "Text",
  CellTags->{"S5.68.1", "1.26"}],
Cell[23410, 740, 335, 12, 70, "MathCaption",
  CellTags->{"S5.68.1", "1.27"}],

Cell[CellGroupData[{
Cell[23770, 756, 80, 2, 70, "Input",
  CellTags->"S5.68.1"],
Cell[23853, 760, 84, 3, 70, "Output",
  CellTags->"S5.68.1"]
}, Open  ]],
Cell[23952, 766, 82, 1, 70, "MathCaption",
  CellTags->{"S5.68.1", "1.28"}],

Cell[CellGroupData[{
Cell[24059, 771, 78, 2, 70, "Input",
  CellTags->"S5.68.1"],
Cell[24140, 775, 84, 3, 70, "Output",
  CellTags->"S5.68.1"]
}, Open  ]],
Cell[24239, 781, 413, 16, 70, "MathCaption",
  CellTags->{"S5.68.1", "1.29"}],

Cell[CellGroupData[{
Cell[24677, 801, 79, 2, 70, "Input",
  CellTags->"S5.68.1"],
Cell[24759, 805, 96, 3, 70, "Output",
  CellTags->"S5.68.1"]
}, Open  ]],
Cell[24870, 811, 101, 1, 70, "MathCaption",
  CellTags->{"S5.68.1", "1.30"}],

Cell[CellGroupData[{
Cell[24996, 816, 91, 2, 70, "Input",
  CellTags->"S5.68.1"],
Cell[25090, 820, 98, 3, 70, "Output",
  CellTags->"S5.68.1"]
}, Open  ]],
Cell[25203, 826, 138, 4, 70, "MathCaption",
  CellTags->{"S5.68.1", "1.31"}],

Cell[CellGroupData[{
Cell[25366, 834, 88, 2, 70, "Input",
  CellTags->"S5.68.1"],
Cell[25457, 838, 148, 4, 70, "Output",
  CellTags->"S5.68.1"]
}, Open  ]],
Cell[25620, 845, 300, 12, 70, "MathCaption",
  CellTags->{"S5.68.1", "1.32"}],

Cell[CellGroupData[{
Cell[25945, 861, 82, 2, 70, "Input",
  CellTags->"S5.68.1"],
Cell[26030, 865, 86, 3, 70, "Output",
  CellTags->"S5.68.1"]
}, Open  ]],
Cell[26131, 871, 434, 16, 70, "Text",
  CellTags->{"S5.68.1", "1.33"}],
Cell[26568, 889, 829, 20, 70, "Text",
  CellTags->{"S5.68.1", "1.34"}],
Cell[27400, 911, 69, 1, 70, "Caption",
  CellTags->"S5.68.1"],
Cell[27472, 914, 1118, 26, 70, "Text",
  CellTags->{"S5.68.1", "1.35"}],
Cell[28593, 942, 175, 6, 70, "MathCaption",
  CellTags->{"S5.68.1", "1.36"}],

Cell[CellGroupData[{
Cell[28793, 952, 82, 2, 70, "Input",
  CellTags->"S5.68.1"],
Cell[28878, 956, 84, 3, 70, "Output",
  CellTags->"S5.68.1"]
}, Open  ]],
Cell[28977, 962, 103, 1, 70, "MathCaption",
  CellTags->{"S5.68.1", "1.37"}],

Cell[CellGroupData[{
Cell[29105, 967, 90, 2, 70, "Input",
  CellTags->"S5.68.1"],
Cell[29198, 971, 95, 3, 70, "Output",
  CellTags->"S5.68.1"]
}, Open  ]],
Cell[29308, 977, 101, 1, 70, "MathCaption",
  CellTags->{"S5.68.1", "1.38"}],

Cell[CellGroupData[{
Cell[29434, 982, 87, 2, 70, "Input",
  CellTags->"S5.68.1"],
Cell[29524, 986, 84, 3, 70, "Output",
  CellTags->"S5.68.1"]
}, Open  ]],
Cell[29623, 992, 107, 1, 70, "MathCaption",
  CellTags->{"S5.68.1", "1.39"}],

Cell[CellGroupData[{
Cell[29755, 997, 86, 2, 70, "Input",
  CellTags->"S5.68.1"],
Cell[29844, 1001, 87, 3, 70, "Output",
  CellTags->"S5.68.1"]
}, Open  ]],
Cell[29946, 1007, 173, 4, 70, "MathCaption",
  CellTags->{"S5.68.1", "1.40"}],

Cell[CellGroupData[{
Cell[30144, 1015, 86, 2, 70, "Input",
  CellTags->"S5.68.1"],
Cell[30233, 1019, 101, 3, 70, "Output",
  CellTags->"S5.68.1"]
}, Open  ]],
Cell[30349, 1025, 223, 7, 70, "Text",
  CellTags->{"S5.68.1", "1.41"}],
Cell[30575, 1034, 1423, 31, 70, "Text",
  CellTags->{"S5.68.1", "1.42"}],
Cell[32001, 1067, 77, 1, 70, "Caption",
  CellTags->"S5.68.1"],
Cell[32081, 1070, 4927, 145, 70, "Text",
  CellTags->{"S5.68.1", "1.43"}],
Cell[37011, 1217, 205, 6, 70, "MathCaption",
  CellTags->{"S5.68.1", "1.44"}],

Cell[CellGroupData[{
Cell[37241, 1227, 96, 2, 70, "Input",
  CellTags->"S5.68.1"],
Cell[37340, 1231, 89, 3, 70, "Output",
  CellTags->"S5.68.1"]
}, Open  ]],
Cell[37444, 1237, 82, 1, 70, "MathCaption",
  CellTags->{"S5.68.1", "1.45"}],

Cell[CellGroupData[{
Cell[37551, 1242, 80, 2, 70, "Input",
  CellTags->"S5.68.1"],
Cell[37634, 1246, 85, 3, 70, "Output",
  CellTags->"S5.68.1"]
}, Open  ]],
Cell[37734, 1252, 383, 16, 70, "MathCaption",
  CellTags->{"S5.68.1", "1.46"}],

Cell[CellGroupData[{
Cell[38142, 1272, 109, 2, 70, "Input",
  CellTags->"S5.68.1"],
Cell[38254, 1276, 171, 4, 70, "Output",
  CellTags->"S5.68.1"]
}, Open  ]],
Cell[38440, 1283, 97, 1, 70, "MathCaption",
  CellTags->{"S5.68.1", "1.47"}],

Cell[CellGroupData[{
Cell[38562, 1288, 86, 2, 70, "Input",
  CellTags->"S5.68.1"],
Cell[38651, 1292, 96, 3, 70, "Output",
  CellTags->"S5.68.1"]
}, Open  ]],
Cell[38762, 1298, 198, 6, 70, "MathCaption",
  CellTags->{"S5.68.1", "1.48"}],

Cell[CellGroupData[{
Cell[38985, 1308, 95, 2, 70, "Input",
  CellTags->"S5.68.1"],
Cell[39083, 1312, 100, 3, 70, "Output",
  CellTags->"S5.68.1"]
}, Open  ]],
Cell[39198, 1318, 82, 1, 70, "MathCaption",
  CellTags->{"S5.68.1", "1.49"}],

Cell[CellGroupData[{
Cell[39305, 1323, 80, 2, 70, "Input",
  CellTags->"S5.68.1"],
Cell[39388, 1327, 96, 3, 70, "Output",
  CellTags->"S5.68.1"]
}, Open  ]],
Cell[39499, 1333, 145, 4, 70, "MathCaption",
  CellTags->{"S5.68.1", "1.50"}],

Cell[CellGroupData[{
Cell[39669, 1341, 102, 2, 70, "Input",
  CellTags->"S5.68.1"],
Cell[39774, 1345, 158, 4, 70, "Output",
  CellTags->"S5.68.1"]
}, Open  ]],
Cell[39947, 1352, 1398, 33, 70, "Text",
  CellTags->{"S5.68.1", "1.51"}],
Cell[41348, 1387, 103, 5, 70, "Caption",
  CellTags->"S5.68.1"],
Cell[41454, 1394, 1153, 35, 70, "Text",
  CellTags->{"S5.68.1", "1.52"}],
Cell[42610, 1431, 223, 6, 70, "MathCaption",
  CellTags->{"S5.68.1", "1.53"}],

Cell[CellGroupData[{
Cell[42858, 1441, 80, 2, 70, "Input",
  CellTags->"S5.68.1"],
Cell[42941, 1445, 121, 3, 70, "Output",
  CellTags->"S5.68.1"]
}, Open  ]],
Cell[43077, 1451, 163, 4, 70, "MathCaption",
  CellTags->{"S5.68.1", "1.54"}],

Cell[CellGroupData[{
Cell[43265, 1459, 85, 2, 70, "Input",
  CellTags->"S5.68.1"],
Cell[43353, 1463, 85, 3, 70, "Output",
  CellTags->"S5.68.1"]
}, Open  ]],
Cell[43453, 1469, 197, 5, 70, "MathCaption",
  CellTags->{"S5.68.1", "1.55"}],

Cell[CellGroupData[{
Cell[43675, 1478, 83, 2, 70, "Input",
  CellTags->"S5.68.1"],
Cell[43761, 1482, 84, 3, 70, "Output",
  CellTags->"S5.68.1"]
}, Open  ]],
Cell[43860, 1488, 1666, 38, 70, "Text",
  CellTags->{"S5.68.1", "1.56"}],
Cell[45529, 1528, 87, 1, 70, "Caption",
  CellTags->"S5.68.1"],
Cell[45619, 1531, 1759, 63, 70, "Text",
  CellTags->{"S5.68.1", "1.57"}],
Cell[47381, 1596, 271, 9, 70, "MathCaption",
  CellTags->{"S5.68.1", "1.58"}],

Cell[CellGroupData[{
Cell[47677, 1609, 101, 2, 70, "Input",
  CellTags->"S5.68.1"],
Cell[47781, 1613, 106, 3, 70, "Output",
  CellTags->"S5.68.1"]
}, Open  ]],
Cell[47902, 1619, 104, 1, 70, "MathCaption",
  CellTags->{"S5.68.1", "1.59"}],

Cell[CellGroupData[{
Cell[48031, 1624, 87, 2, 70, "Input",
  CellTags->"S5.68.1"],
Cell[48121, 1628, 93, 3, 70, "Output",
  CellTags->"S5.68.1"]
}, Open  ]],
Cell[48229, 1634, 259, 9, 70, "MathCaption",
  CellTags->{"S5.68.1", "1.60"}],

Cell[CellGroupData[{
Cell[48513, 1647, 109, 2, 70, "Input",
  CellTags->"S5.68.1"],
Cell[48625, 1651, 88, 3, 70, "Output",
  CellTags->"S5.68.1"]
}, Open  ]],
Cell[48728, 1657, 400, 10, 70, "Text",
  CellTags->{"S5.68.1", "1.61"}]
}
]
*)




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

