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

                    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[     18414,        497]*)
(*NotebookOutlinePosition[     22615,        629]*)
(*  CellTagsIndexPosition[     22239,        610]*)
(*WindowFrame->Normal*)



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

Cell[TextData[{
  "This package implements Lenstra's Elliptic Curve method of factorization. \
The package is designed to find prime factors of up to about 18 digits in \
reasonable time (up to three hours on a workstation). This extends ",
  StyleBox["Mathematica", "TI"],
  "'s integer factoring to all numbers of 40 digits or less. The program in \
the package is a fairly direct implementation of the algorithm described in \
P.\[NonBreakingSpace]L.\[NonBreakingSpace]Montgomery's, \
\[OpenCurlyDoubleQuote]Speeding up the Pollard and Elliptic Curve Methods of \
Factorization,\[CloseCurlyDoubleQuote] ",
  StyleBox["Mathematics of Computation", "TI"],
  " 48 (1987), pages 243\[Dash]264. "
}], "Text",
  CellTags->{"S5.67.1", "1.2"}],

Cell[BoxData[
    FormBox[
      StyleBox[
        FrameBox[
          StyleBox[GridBox[{
                {"\<\"\\!\\(\\*StyleBox[\\\"\\\\\\\"FactorIntegerECM[\\\\\\\"\
\\\", \\\"MR\\\"]\\)\\!\\(\\*StyleBox[\\\"\\\\\\\"n\\\\\\\"\\\", \
\\\"TI\\\"]\\)\\!\\(\\*StyleBox[\\\"\\\\\\\"]\\\\\\\"\\\", \\\"MR\\\"]\\) \
\"\>", "\<\"give a single factor of the composite number \\!\\(\\*StyleBox[\\\
\"\\\\\\\"n\\\\\\\"\\\", \\\"TI\\\"]\\) using Lenstra's elliptic curve method \
\"\>"}
                },
              ColumnAlignments->{Right, Left}],
            GridBoxOptions->{RowLines->False}]],
        "2ColumnBox"], TraditionalForm]], "Text",
  CellTags->{"S5.67.1", "1.3"}],

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

Cell[TextData[{
  "The algorithm returns a single factor (not necessarily a prime). To obtain \
a complete factorization, you should use ",
  StyleBox["FactorIntegerECM", "MR"],
  " or the built\[Hyphen]in ",
  StyleBox["FactorInteger", "MR"],
  " on the factor and cofactor. The algorithm is probabilistic, so there \
could be a large variance in running times, even for similar inputs. ",
  StyleBox["SeedRandom[101]", "MR"],
  " is used to generate pseudorandom numbers for the algorithm, so the \
program will always run exactly the same on the same input. \n",
  StyleBox["FactorIntegerECM", "MR"],
  " should be used as an enhancement to the built\[Hyphen]in functions ",
  StyleBox["PrimeQ", "MR"],
  " and ",
  StyleBox["FactorInteger", "MR"],
  ". The algorithm will always fail if the input is a prime. A prime number \
should never be given as input to ",
  StyleBox["FactorIntegerECM", "MR"],
  ". Before using ",
  StyleBox["FactorIntegerECM", "MR"],
  ", you should always use ",
  StyleBox["PrimeQ", "MR"],
  " to make sure that your number is not prime. \nThe algorithm is designed \
with the assumption that the number given was not factored by ",
  StyleBox["FactorInteger", "MR"],
  ", and so its smallest prime factor is at least ",
  Cell[BoxData[
      \(TraditionalForm\`10\^12\)], "InlineFormula"],
  ". The algorithm is optimized to find factors of ",
  Cell[BoxData[
      \(TraditionalForm\`17\)], "InlineFormula"],
  " digits or less, so it should factor most numbers of ",
  Cell[BoxData[
      \(TraditionalForm\`40\)], "InlineFormula"],
  " digits or less (and such numbers will probably only have two prime \
factors if they are hard to factor). "
}], "Text",
  CellTags->{"S5.67.1", "1.4"}],

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

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

Cell[TextData[{
  StyleBox["FactorIntegerECM", "MR"],
  " returns only one factor. "
}], "MathCaption",
  CellTags->{"S5.67.1", "1.6"}],

Cell[CellGroupData[{

Cell["FactorIntegerECM[91]", "Input",
  CellLabel->"In[2]:= ",
  CellTags->"S5.67.1"],

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

Cell[TextData[{
  "In general, the hardest numbers to factor in a given range are those with \
two unequal prime factors of about the same size. These numbers can be \
generated using the built\[Hyphen]in function ",
  StyleBox["Prime", "MR"],
  ". "
}], "MathCaption",
  CellTags->{"S5.67.1", "1.7"}],

Cell[CellGroupData[{

Cell["Prime[10^7] Prime[10^7+1]", "Input",
  CellLabel->"In[3]:= ",
  CellTags->"S5.67.1"],

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

Cell["This gives a factor of the previous number. ", "MathCaption",
  CellTags->{"S5.67.1", "1.8"}],

Cell[CellGroupData[{

Cell["FactorIntegerECM[%]", "Input",
  CellLabel->"In[4]:= ",
  CellTags->"S5.67.1"],

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

Cell["Here is a fairly large integer. ", "MathCaption",
  CellTags->{"S5.67.1", "1.9"}],

Cell[CellGroupData[{

Cell["2^128 + 1", "Input",
  CellLabel->"In[5]:= ",
  CellTags->"S5.67.1"],

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

Cell["This took about three and a half hours on a workstation. ", \
"MathCaption",
  CellTags->{"S5.67.1", "1.10"}],

Cell[CellGroupData[{

Cell["FactorIntegerECM[%]", "Input",
  CellLabel->"In[6]:= ",
  CellTags->"S5.67.1"],

Cell["59649589127497217", "Output",
  CellLabel->"Out[6]= ",
  CellTags->"S5.67.1"]
}, Open  ]],

Cell[TextData[{
  "The ECM method was discovered and analyzed by H.\[NonBreakingSpace]W.\
\[NonBreakingSpace]Lenstra. It first appeared as an announcement, \
\[OpenCurlyDoubleQuote]Elliptic Curve Factorization,\[CloseCurlyDoubleQuote] \
dated February\[NonBreakingSpace]14, 1985, and published in H.\
\[NonBreakingSpace]W.\[NonBreakingSpace]Lenstra, \
\[OpenCurlyDoubleQuote]Factoring Integers with Elliptic Curves,\
\[CloseCurlyDoubleQuote] ",
  StyleBox["Annals of Mathematics", "TI"],
  " 126 (1987). \nThis method is a generalization of the ",
  Cell[BoxData[
      \(TraditionalForm\`p - 1\)], "InlineFormula"],
  " factoring algorithm of J.\[NonBreakingSpace]Pollard. The idea is to \
factor the composite number ",
  Cell[BoxData[
      \(TraditionalForm\`n\)], "InlineFormula"],
  " by generating a random point ",
  Cell[BoxData[
      \(TraditionalForm\`P\)], "InlineFormula"],
  " on a random elliptic curve ",
  Cell[BoxData[
      \(TraditionalForm\`\(\(E\)\(\ \)\) mod\ n\)], "InlineFormula"],
  ", and then use the fact that ",
  Cell[BoxData[
      \(TraditionalForm\`E\)], "InlineFormula"],
  " has an algebraic group structure to compute ",
  Cell[BoxData[
      \(TraditionalForm\`k \(\(!\)\(\ \)\) P\)], "InlineFormula"],
  ", where ",
  Cell[BoxData[
      \(TraditionalForm\`k\)], "InlineFormula"],
  " is a relatively small integer chosen during the algorithm. If ",
  Cell[BoxData[
      \(TraditionalForm\`k \(\(!\)\(\ \)\) P\)], "InlineFormula"],
  " is the identity on the group ",
  Cell[BoxData[
      \(TraditionalForm\`\(\(E\)\(\ \)\) mod\ p\)], "InlineFormula"],
  ", where ",
  Cell[BoxData[
      \(TraditionalForm\`p\)], "InlineFormula"],
  " is a prime factor of ",
  Cell[BoxData[
      \(TraditionalForm\`n\)], "InlineFormula"],
  ", then a factorization of ",
  Cell[BoxData[
      \(TraditionalForm\`n\)], "InlineFormula"],
  " is achieved (one has to think of ",
  Cell[BoxData[
      \(TraditionalForm\`k \(\(!\)\(\ \)\) P\)], "InlineFormula"],
  " as being reduced ",
  Cell[BoxData[
      \(TraditionalForm\`mod\ p\)], "InlineFormula"],
  "). This can be detected algorithmically, since an illegal inversion ",
  Cell[BoxData[
      \(TraditionalForm\`mod\ n\)], "InlineFormula"],
  " must occur (",
  StyleBox["i.e.", "TI"],
  ", an illegal use of ",
  StyleBox["PowerMod[", "MR"],
  StyleBox["a", "TI"],
  StyleBox[",", "MR"],
  " ",
  StyleBox["-1,", "MR"],
  " ",
  StyleBox["n", "TI"],
  StyleBox["]", "MR"],
  " will occur). This happens exactly when the order of the group ",
  Cell[BoxData[
      \(TraditionalForm\`\(\(E\)\(\ \)\) mod\ p\)], "InlineFormula"],
  ", where ",
  Cell[BoxData[
      \(TraditionalForm\`p\)], "InlineFormula"],
  " is a prime divisor of ",
  Cell[BoxData[
      \(TraditionalForm\`n\)], "InlineFormula"],
  ", is divisible only by primes less than ",
  Cell[BoxData[
      \(TraditionalForm\`k\)], "InlineFormula"],
  ". This happens in reasonable time because one can choose many curves ",
  Cell[BoxData[
      \(TraditionalForm\`E\)], "InlineFormula"],
  " and the order of the group ",
  Cell[BoxData[
      \(TraditionalForm\`\(\(E\)\(\ \)\) mod\ p\)], "InlineFormula"],
  " as ",
  Cell[BoxData[
      \(TraditionalForm\`E\)], "InlineFormula"],
  " varies is well distributed around ",
  Cell[BoxData[
      \(TraditionalForm\`p\)], "InlineFormula"],
  ". This means that it will eventually hit a value that is divisible only by \
small primes (here ",
  Cell[BoxData[
      \(TraditionalForm\`p\)], "InlineFormula"],
  " is a fixed prime divisor of ",
  Cell[BoxData[
      \(TraditionalForm\`n\)], "InlineFormula"],
  "). \nThe original algorithm of Lenstra was mostly of theoretical interest. \
Many of the implementation ideas are given in Montgomery's paper. The most \
important point, first suggested by Pollard as an improvement to his ",
  Cell[BoxData[
      \(TraditionalForm\`p - 1\)], "InlineFormula"],
  " method, is to introduce a second stage to the algorithm. The idea is that \
instead of looking just for numbers with only small factors, one looks for \
numbers that have all small factors, except for a single large factor. The \
second stage of the algorithm, therefore, takes the point ",
  Cell[BoxData[
      \(TraditionalForm\`Q = k \(\(!\)\(\ \)\) P\)], "InlineFormula"],
  " computed in the first stage and looks to see if any of ",
  Cell[BoxData[
      \(TraditionalForm\`\(p\_1\) Q, \(p\_2\) Q, \[Ellipsis], \(p\_k\) Q\)], 
    "InlineFormula"],
  " generate a factorization of ",
  Cell[BoxData[
      \(TraditionalForm\`n\)], "InlineFormula"],
  ". Here ",
  Cell[BoxData[
      \(TraditionalForm\`k < p\_1 < p\_2 < \[Ellipsis] < p\_k\)], 
    "InlineFormula"],
  " are the primes in an interval between ",
  Cell[BoxData[
      \(TraditionalForm\`k\)], "InlineFormula"],
  " and ",
  Cell[BoxData[
      \(TraditionalForm\`B  k\)], "InlineFormula"],
  " (",
  Cell[BoxData[
      \(TraditionalForm\`B = 25  k\)], "InlineFormula"],
  " in the program). Using the second stage represents an important practical \
improvement. \nMontgomery and others discovered many ways to implement the \
above efficiently, and the program in the package reflects some of these \
ideas. An introductory text to this material is \
D.\[NonBreakingSpace]Bressoud, ",
  StyleBox["Factorization and Primality Testing", "TI"],
  ", Springer\[Hyphen]Verlag, 1989. \nSince the algorithm is quite involved, \
it is inefficient to use it on numbers that have small factors. These factors \
can be found more effectively using other techniques, for example, trial \
division. For this reason, the function ",
  StyleBox["FactorIntegerECM[", "MR"],
  StyleBox["n", "TI"],
  StyleBox["]", "MR"],
  " does not perform a complete factorization of ",
  Cell[BoxData[
      \(TraditionalForm\`n\)], "InlineFormula"],
  " but instead returns only a single factor. \nThe package should therefore \
be used as a method to find factors of numbers not factored directly by ",
  StyleBox["FactorInteger", "MR"],
  " or when only one factor at a time is required, as in the function ",
  StyleBox["SquareFreeQ", "MR"],
  " from the package ",
  StyleBox["NumberTheory`NumberTheoryFunctions`", "MR"],
  ". "
}], "Text",
  CellTags->{"S5.67.1", "1.11"}],

Cell[BoxData[
    FormBox[
      StyleBox[
        FrameBox[
          StyleBox[GridBox[{
                {"\<\"\\!\\(\\*StyleBox[\\\"\\\\\\\"FactorIntegerECM[\\\\\\\"\
\\\", \\\"MR\\\"]\\)\\!\\(\\*StyleBox[\\\"\\\\\\\"n\\\\\\\"\\\", \
\\\"TI\\\"]\\)\\!\\(\\*StyleBox[\\\"\\\\\\\",\\\\\\\"\\\", \\\"MR\\\"]\\) \\!\
\\(\\*StyleBox[\\\"\\\\\\\"FactorSize\\\\\\\"\\\", \\\"MR\\\"]\\) \
\\!\\(\\*StyleBox[\\\"\\\\\\\"->\\\\\\\"\\\", \\\"MR\\\"]\\) \
\\!\\(\\*StyleBox[\\\"\\\\\\\"q\\\\\\\"\\\", \\\"TI\\\"]\\)\\!\\(\\*StyleBox[\
\\\"\\\\\\\"]\\\\\\\"\\\", \\\"MR\\\"]\\) \"\>", "\<\"optimize the algorithm \
to find factors of size at most \\!\\(\\*StyleBox[\\\"\\\\\\\"q\\\\\\\"\\\", \
\\\"TI\\\"]\\)\"\>"},
                {"\<\"\\!\\(\\*StyleBox[\\\"\\\\\\\"FactorIntegerECM[\\\\\\\"\
\\\", \\\"MR\\\"]\\)\\!\\(\\*StyleBox[\\\"\\\\\\\"n\\\\\\\"\\\", \
\\\"TI\\\"]\\)\\!\\(\\*StyleBox[\\\"\\\\\\\",\\\\\\\"\\\", \\\"MR\\\"]\\) \\!\
\\(\\*StyleBox[\\\"\\\\\\\"CurveNumber\\\\\\\"\\\", \\\"MR\\\"]\\) \
\\!\\(\\*StyleBox[\\\"\\\\\\\"->\\\\\\\"\\\", \\\"MR\\\"]\\) \
\\!\\(\\*StyleBox[\\\"\\\\\\\"b\\\\\\\"\\\", \\\"TI\\\"]\\)\\!\\(\\*StyleBox[\
\\\"\\\\\\\"]\\\\\\\"\\\", \\\"MR\\\"]\\) \"\>", "\<\"use \
\\!\\(\\*StyleBox[\\\"\\\\\\\"b\\\\\\\"\\\", \\\"TI\\\"]\\) curves at a time \
for each iteration of the algorithm\"\>"},
                {"\<\"\\!\\(\\*StyleBox[\\\"\\\\\\\"FactorIntegerECM[\\\\\\\"\
\\\", \\\"MR\\\"]\\)\\!\\(\\*StyleBox[\\\"\\\\\\\"n\\\\\\\"\\\", \
\\\"TI\\\"]\\)\\!\\(\\*StyleBox[\\\"\\\\\\\",\\\\\\\"\\\", \\\"MR\\\"]\\) \\!\
\\(\\*StyleBox[\\\"\\\\\\\"CurveCountLimit\\\\\\\"\\\", \\\"MR\\\"]\\) \\!\\(\
\\*StyleBox[\\\"\\\\\\\"->\\\\\\\"\\\", \\\"MR\\\"]\\) \\!\\(\\*StyleBox[\\\"\
\\\\\\\"c\\\\\\\"\\\", \
\\\"TI\\\"]\\)\\!\\(\\*StyleBox[\\\"\\\\\\\"]\\\\\\\"\\\", \\\"MR\\\"]\\) \
\"\>", "\<\"use a total of \\!\\(\\*StyleBox[\\\"\\\\\\\"c\\\\\\\"\\\", \
\\\"TI\\\"]\\) curves in the algorithm \"\>"}
                },
              ColumnAlignments->{Right, Left}],
            GridBoxOptions->{RowLines->False}]],
        "2ColumnBox"], TraditionalForm]], "Text",
  CellTags->{"S5.67.1", "1.12"}],

Cell[TextData[{
  "Options for ",
  StyleBox["FactorIntegerECM", "MR"],
  ". "
}], "Caption",
  CellTags->"S5.67.1"],

Cell[TextData[{
  "The options to ",
  StyleBox["FactorIntegerECM", "MR"],
  " allow you to vary parameters in the algorithms and to limit to the number \
of total steps in the algorithm. This allows one to search large numbers for \
small factors without having to achieve a complete factorization. \nThe \
option ",
  StyleBox["FactorSize", "MR"],
  " specifies what size of factor you are looking for. When doing general \
purpose factoring, you usually only want to find any factor of the number ",
  Cell[BoxData[
      \(TraditionalForm\`n\)], "InlineFormula"],
  ". The default is therefore to let ",
  StyleBox["FactorSize", "MR"],
  " be about ",
  Cell[BoxData[
      \(TraditionalForm\`\@n\)], "InlineFormula"],
  ". \nThe algorithm uses a number of curves in parallel according to the \
size of the input ",
  Cell[BoxData[
      \(TraditionalForm\`n\)], "InlineFormula"],
  ". The option ",
  StyleBox["CurveNumber", "MR"],
  " allows the user to specify how many curves in parallel are used. A value \
for this option must be a power of 2. The default value of ",
  StyleBox["CurveNumber", "MR"],
  " depends on the size of the given number ",
  StyleBox["n", "MR"],
  ". For ",
  Cell[BoxData[
      \(TraditionalForm\`n > 10\^30\)], "InlineFormula"],
  ", it is ",
  Cell[BoxData[
      \(TraditionalForm\`8\)], "InlineFormula"],
  ". For ",
  Cell[BoxData[
      \(TraditionalForm\`10\^20 < n \[LessEqual] 10\^30\)], "InlineFormula"],
  ", it is ",
  Cell[BoxData[
      \(TraditionalForm\`4\)], "InlineFormula"],
  ". And for ",
  Cell[BoxData[
      \(TraditionalForm\`n \[LessEqual] 10\^20\)], "InlineFormula"],
  ", it is ",
  Cell[BoxData[
      \(TraditionalForm\`2\)], "InlineFormula"],
  ". \nThe advantage of using more curves in parallel is that fewer ",
  StyleBox["GCD", "MR"],
  "s are used in stage one of the algorithm and less interpretation overhead \
occurs in stage two. The disadvantage is that a nontrivial factor found on \
one curve may have to wait until the algorithm has completed all the curves. \
The number therefore depends on how many curves one expects to need in total. \
\nThe option ",
  StyleBox["CurveCountLimit", "MR"],
  " gives an upper bound to the number of curves used in the algorithm. This \
allows the user to terminate the algorithm before a factor is found. The \
default is ",
  Cell[BoxData[
      \(TraditionalForm\`10\^4\)], "InlineFormula"],
  " curves (essentially an infinite number). \nThe program has modest memory \
requirements. A table of ",
  Cell[BoxData[
      \(TraditionalForm\`10, 000\)], "InlineFormula"],
  " binary digits is set up, as well as a table of ",
  Cell[BoxData[
      \(TraditionalForm\`30, 000\)], "InlineFormula"],
  " primes. "
}], "Text",
  CellTags->{"S5.67.1", "1.13"}]
},
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.67.1"->{
    Cell[1717, 49, 150, 6, 70, "Subsection",
      CellTags->{"S5.67.1", "1.1"}],
    Cell[1870, 57, 738, 13, 70, "Text",
      CellTags->{"S5.67.1", "1.2"}],
    Cell[2611, 72, 675, 15, 70, "Text",
      CellTags->{"S5.67.1", "1.3"}],
    Cell[3289, 89, 110, 5, 70, "Caption",
      CellTags->"S5.67.1"],
    Cell[3402, 96, 1723, 38, 70, "Text",
      CellTags->{"S5.67.1", "1.4"}],
    Cell[5128, 136, 79, 1, 70, "MathCaption",
      CellTags->{"S5.67.1", "1.5"}],
    Cell[5210, 139, 97, 2, 70, "Input",
      CellTags->"S5.67.1"],
    Cell[5310, 143, 135, 4, 70, "MathCaption",
      CellTags->{"S5.67.1", "1.6"}],
    Cell[5470, 151, 85, 2, 70, "Input",
      CellTags->"S5.67.1"],
    Cell[5558, 155, 84, 3, 70, "Output",
      CellTags->"S5.67.1"],
    Cell[5657, 161, 301, 7, 70, "MathCaption",
      CellTags->{"S5.67.1", "1.7"}],
    Cell[5983, 172, 90, 2, 70, "Input",
      CellTags->"S5.67.1"],
    Cell[6076, 176, 99, 3, 70, "Output",
      CellTags->"S5.67.1"],
    Cell[6190, 182, 99, 1, 70, "MathCaption",
      CellTags->{"S5.67.1", "1.8"}],
    Cell[6314, 187, 84, 2, 70, "Input",
      CellTags->"S5.67.1"],
    Cell[6401, 191, 91, 3, 70, "Output",
      CellTags->"S5.67.1"],
    Cell[6507, 197, 87, 1, 70, "MathCaption",
      CellTags->{"S5.67.1", "1.9"}],
    Cell[6619, 202, 74, 2, 70, "Input",
      CellTags->"S5.67.1"],
    Cell[6696, 206, 121, 3, 70, "Output",
      CellTags->"S5.67.1"],
    Cell[6832, 212, 115, 2, 70, "MathCaption",
      CellTags->{"S5.67.1", "1.10"}],
    Cell[6972, 218, 84, 2, 70, "Input",
      CellTags->"S5.67.1"],
    Cell[7059, 222, 83, 2, 70, "Output",
      CellTags->"S5.67.1"],
    Cell[7157, 227, 6230, 153, 70, "Text",
      CellTags->{"S5.67.1", "1.11"}],
    Cell[13390, 382, 2125, 36, 70, "Text",
      CellTags->{"S5.67.1", "1.12"}],
    Cell[15518, 420, 116, 5, 70, "Caption",
      CellTags->"S5.67.1"],
    Cell[15637, 427, 2773, 68, 70, "Text",
      CellTags->{"S5.67.1", "1.13"}]},
  "1.1"->{
    Cell[1717, 49, 150, 6, 70, "Subsection",
      CellTags->{"S5.67.1", "1.1"}]},
  "1.2"->{
    Cell[1870, 57, 738, 13, 70, "Text",
      CellTags->{"S5.67.1", "1.2"}]},
  "1.3"->{
    Cell[2611, 72, 675, 15, 70, "Text",
      CellTags->{"S5.67.1", "1.3"}]},
  "1.4"->{
    Cell[3402, 96, 1723, 38, 70, "Text",
      CellTags->{"S5.67.1", "1.4"}]},
  "1.5"->{
    Cell[5128, 136, 79, 1, 70, "MathCaption",
      CellTags->{"S5.67.1", "1.5"}]},
  "1.6"->{
    Cell[5310, 143, 135, 4, 70, "MathCaption",
      CellTags->{"S5.67.1", "1.6"}]},
  "1.7"->{
    Cell[5657, 161, 301, 7, 70, "MathCaption",
      CellTags->{"S5.67.1", "1.7"}]},
  "1.8"->{
    Cell[6190, 182, 99, 1, 70, "MathCaption",
      CellTags->{"S5.67.1", "1.8"}]},
  "1.9"->{
    Cell[6507, 197, 87, 1, 70, "MathCaption",
      CellTags->{"S5.67.1", "1.9"}]},
  "1.10"->{
    Cell[6832, 212, 115, 2, 70, "MathCaption",
      CellTags->{"S5.67.1", "1.10"}]},
  "1.11"->{
    Cell[7157, 227, 6230, 153, 70, "Text",
      CellTags->{"S5.67.1", "1.11"}]},
  "1.12"->{
    Cell[13390, 382, 2125, 36, 70, "Text",
      CellTags->{"S5.67.1", "1.12"}]},
  "1.13"->{
    Cell[15637, 427, 2773, 68, 70, "Text",
      CellTags->{"S5.67.1", "1.13"}]}
  }
*)

(*CellTagsIndex
CellTagsIndex->{
  {"S5.67.1", 19039, 514},
  {"1.1", 21006, 567},
  {"1.2", 21100, 570},
  {"1.3", 21189, 573},
  {"1.4", 21278, 576},
  {"1.5", 21368, 579},
  {"1.6", 21463, 582},
  {"1.7", 21559, 585},
  {"1.8", 21655, 588},
  {"1.9", 21750, 591},
  {"1.10", 21846, 594},
  {"1.11", 21944, 597},
  {"1.12", 22038, 600},
  {"1.13", 22132, 603}
  }
*)

(*NotebookFileOutline
Notebook[{
Cell[1717, 49, 150, 6, 70, "Subsection",
  CellTags->{"S5.67.1", "1.1"}],
Cell[1870, 57, 738, 13, 70, "Text",
  CellTags->{"S5.67.1", "1.2"}],
Cell[2611, 72, 675, 15, 70, "Text",
  CellTags->{"S5.67.1", "1.3"}],
Cell[3289, 89, 110, 5, 70, "Caption",
  CellTags->"S5.67.1"],
Cell[3402, 96, 1723, 38, 70, "Text",
  CellTags->{"S5.67.1", "1.4"}],
Cell[5128, 136, 79, 1, 70, "MathCaption",
  CellTags->{"S5.67.1", "1.5"}],
Cell[5210, 139, 97, 2, 70, "Input",
  CellTags->"S5.67.1"],
Cell[5310, 143, 135, 4, 70, "MathCaption",
  CellTags->{"S5.67.1", "1.6"}],

Cell[CellGroupData[{
Cell[5470, 151, 85, 2, 70, "Input",
  CellTags->"S5.67.1"],
Cell[5558, 155, 84, 3, 70, "Output",
  CellTags->"S5.67.1"]
}, Open  ]],
Cell[5657, 161, 301, 7, 70, "MathCaption",
  CellTags->{"S5.67.1", "1.7"}],

Cell[CellGroupData[{
Cell[5983, 172, 90, 2, 70, "Input",
  CellTags->"S5.67.1"],
Cell[6076, 176, 99, 3, 70, "Output",
  CellTags->"S5.67.1"]
}, Open  ]],
Cell[6190, 182, 99, 1, 70, "MathCaption",
  CellTags->{"S5.67.1", "1.8"}],

Cell[CellGroupData[{
Cell[6314, 187, 84, 2, 70, "Input",
  CellTags->"S5.67.1"],
Cell[6401, 191, 91, 3, 70, "Output",
  CellTags->"S5.67.1"]
}, Open  ]],
Cell[6507, 197, 87, 1, 70, "MathCaption",
  CellTags->{"S5.67.1", "1.9"}],

Cell[CellGroupData[{
Cell[6619, 202, 74, 2, 70, "Input",
  CellTags->"S5.67.1"],
Cell[6696, 206, 121, 3, 70, "Output",
  CellTags->"S5.67.1"]
}, Open  ]],
Cell[6832, 212, 115, 2, 70, "MathCaption",
  CellTags->{"S5.67.1", "1.10"}],

Cell[CellGroupData[{
Cell[6972, 218, 84, 2, 70, "Input",
  CellTags->"S5.67.1"],
Cell[7059, 222, 83, 2, 70, "Output",
  CellTags->"S5.67.1"]
}, Open  ]],
Cell[7157, 227, 6230, 153, 70, "Text",
  CellTags->{"S5.67.1", "1.11"}],
Cell[13390, 382, 2125, 36, 70, "Text",
  CellTags->{"S5.67.1", "1.12"}],
Cell[15518, 420, 116, 5, 70, "Caption",
  CellTags->"S5.67.1"],
Cell[15637, 427, 2773, 68, 70, "Text",
  CellTags->{"S5.67.1", "1.13"}]
}
]
*)




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

