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

                    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[     40249,        957]*)
(*NotebookOutlinePosition[     67634,       1723]*)
(*  CellTagsIndexPosition[     64113,       1589]*)
(*WindowFrame->Normal*)



Notebook[{
Cell["A.9 Some Notes on Internal Implementation", "Section",
  CellTags->{"SA.9.0", "0.1"}],

Cell["A.9.1 Introduction", "Subsection",
  CellTags->{"SA.9.1", "1.1"}],

Cell[TextData[{
  "General issues about the internal implementation of ",
  StyleBox["Mathematica", "TI"],
  " are discussed in Section\[NonBreakingSpace]",
  ButtonBox["1.12",
    ButtonData:>{"1.12"},
    ButtonStyle->"MainBookLink"],
  ". Given here are brief notes on particular features. \nThese notes apply \
to Version 4. Algorithms and other aspects of implementation are subject to \
change in future versions. \nIt should be emphasized that these notes give \
only a rough indication of basic methods and algorithms used. The actual \
implementation usually involves many substantial additional elements. \nThus, \
for example, the notes simply say that ",
  StyleBox["DSolve", "MR"],
  " solves second\[Hyphen]order linear differential equations using the \
Kovacic algorithm. But the internal code which achieves this is over 60 pages \
long, includes a number of other algorithms, and involves a great many \
subtleties. "
}], "Text",
  CellTags->{"SA.9.1", "1.2"}],

Cell["A.9.2 Data Structures and Memory Management", "Subsection",
  CellTags->{"SA.9.2", "2.1"}],

Cell[TextData[{
  "A ",
  StyleBox["Mathematica", "TI"],
  " expression internally consists of a contiguous array of pointers, the \
first to the head, and the rest to its successive elements. \nEach expression \
contains a special form of hash code which is used both in pattern matching \
and evaluation. \nFor every symbol there is a central ",
  StyleBox["symbol table entry", "TI"],
  " which stores all information about the symbol. \nMost raw objects such as \
strings and numbers are allocated separately; unique copies are however \
maintained of small integers and of certain approximate numbers generated in \
computations. \nEvery piece of memory used by ",
  StyleBox["Mathematica", "TI"],
  " maintains a count of how many times it is referenced. Memory is \
automatically freed when this count reaches zero. \nThe contiguous storage of \
elements in expressions reduces memory fragmentation and swapping. However, \
it can lead to the copying of a complete array of pointers when a single \
element in a long expression is modified. Many optimizations based on \
reference counts and pre\[Hyphen]allocation are used to avoid such copying. \n\
When appropriate, large lists and nested lists of numbers are automatically \
stored as packed arrays of machine\[Hyphen]sized integers or real numbers. \
The ",
  StyleBox["Mathematica", "TI"],
  " compiler is automatically used to compile complicated functions that will \
be repeatedly applied to such packed arrays. ",
  StyleBox["MathLink", "TI"],
  ", ",
  StyleBox["DumpSave", "MR"],
  ", ",
  StyleBox["Display", "MR"],
  ", as well as various ",
  StyleBox["Import", "MR"],
  " and ",
  StyleBox["Export", "MR"],
  " formats, make external use of packed arrays.  "
}], "Text",
  CellTags->{"SA.9.2", "2.2"}],

Cell["A.9.3 Basic System Features", "Subsection",
  CellTags->{"SA.9.3", "3.1"}],

Cell[TextData[{
  StyleBox["Mathematica", "TI"],
  " is fundamentally an interpreter which scans through expressions calling \
internal code pointed to by the symbol table entries of heads that it \
encounters. \nAny transformation rule\[LongDash]whether given as ",
  StyleBox["x", "TI"],
  " ",
  StyleBox["->", "MR"],
  " ",
  StyleBox["y", "TI"],
  " or in a definition\[LongDash]is automatically compiled into a form which \
allows for rapid pattern matching. Many different types of patterns are \
distinguished and are handled by special code. \nA form of hashing that takes \
account of blanks and other features of patterns is used in pattern matching. \
\nThe internal code associated with pattern matching is approximately 250 \
pages long. \nWhen a large number of definitions are given for a particular \
symbol, a hash table is automatically built using a version of ",
  StyleBox["Dispatch", "MR"],
  " so that appropriate rules can quickly be found. "
}], "Text",
  CellTags->{"SA.9.3", "3.2", "Rule"}],

Cell["A.9.4 Numerical and Related Functions", "Subsection",
  CellTags->{"SA.9.4", "4.1"}],

Cell["Number representation and numerical evaluation", "Subsubsection",
  CellTags->{"SA.9.4", "4.2"}],

Cell[TextData[{
  "\[FilledSmallCircle] Large integers and high\[Hyphen]precision approximate \
numbers are stored as arrays of base ",
  Cell[BoxData[
      \(TraditionalForm\`2\^16\)], "InlineFormula"],
  " or ",
  Cell[BoxData[
      \(TraditionalForm\`2\^32\)], "InlineFormula"],
  " digits, depending on the lengths of machine integers. \n\
\[FilledSmallCircle] Precision is internally maintained as a \
floating\[Hyphen]point number. \n\[FilledSmallCircle] ",
  StyleBox["IntegerDigits", "MR"],
  " and related base conversion functions use a recursive divide\[Hyphen]and\
\[Hyphen]conquer algorithm. \n\[FilledSmallCircle] ",
  StyleBox["N", "MR"],
  " uses an adaptive procedure to increase its internal working precision in \
order to achieve whatever overall precision is requested. \n\
\[FilledSmallCircle] ",
  StyleBox["Floor", "MR"],
  ", ",
  StyleBox["Ceiling", "MR"],
  " and related functions use an adaptive procedure similar to ",
  StyleBox["N", "MR"],
  " to generate exact results from exact input.  "
}], "Text",
  CellTags->{"SA.9.4", "4.3", "IntegerDigits", "N", "Floor"}],

Cell["Basic arithmetic", "Subsubsection",
  CellTags->{"SA.9.4", "4.4"}],

Cell["\<\
\[FilledSmallCircle] Multiplication of large integers and high\
\[Hyphen]precision approximate numbers is done using interleaved Karatsuba \
and FFT algorithms. 
\[FilledSmallCircle] Integer powers are found by an algorithm based on \
Horner's rule. 
\[FilledSmallCircle] Reciprocals and rational powers of approximate numbers \
use Newton's method. 
\[FilledSmallCircle] Exact roots start from numerical estimates. 
\[FilledSmallCircle] Significance arithmetic is used for all arithmetic with \
approximate numbers beyond machine precision. 
\[FilledSmallCircle] Basic arithmetic uses approximately 400 pages of C \
source code.  \
\>", "Text",
  CellTags->{"SA.9.4", "4.5"}],

Cell["Pseudorandom numbers", "Subsubsection",
  CellTags->{"SA.9.4", "4.6"}],

Cell[TextData[{
  "\[FilledSmallCircle] ",
  StyleBox["Random", "MR"],
  " uses the Wolfram rule 30 cellular automaton generator for integers. \n\
\[FilledSmallCircle] It uses a Marsaglia\[Hyphen]Zaman subtract\[Hyphen]with\
\[Hyphen]borrow generator for real numbers. "
}], "Text",
  CellTags->{"SA.9.4", "4.7", "Random"}],

Cell["Number\[Hyphen]theoretical functions", "Subsubsection",
  CellTags->{"SA.9.4", "4.8"}],

Cell[TextData[{
  "\[FilledSmallCircle] ",
  StyleBox["GCD", "MR"],
  " uses the Jebelean\[Hyphen]Weber accelerated GCD algorithm, together with \
a combination of Euclid's algorithm and an algorithm based on iterative \
removal of powers of 2. \n\[FilledSmallCircle] ",
  StyleBox["PrimeQ", "MR"],
  " first tests for divisibility using small primes, then uses the Miller\
\[Hyphen]Rabin strong pseudoprime test base 2 and base 3, and then uses a \
Lucas test. \n\[FilledSmallCircle] As of 1997, this procedure is known to be \
correct only for ",
  Cell[BoxData[
      \(TraditionalForm\`n < 10\^16\)], "InlineFormula"],
  ", and it is conceivable that for larger ",
  Cell[BoxData[
      \(TraditionalForm\`n\)], "InlineFormula"],
  " it could claim a composite number to be prime. \n\[FilledSmallCircle] The \
package ",
  StyleBox["NumberTheory`PrimeQ`", "MR"],
  " contains a much slower algorithm which has been proved correct for all ",
  Cell[BoxData[
      \(TraditionalForm\`n\)], "InlineFormula"],
  ". It can return an explicit certificate of primality. \n\
\[FilledSmallCircle] ",
  StyleBox["FactorInteger", "MR"],
  " switches between removing small primes by trial division and using the \
Pollard ",
  Cell[BoxData[
      \(TraditionalForm\`p - 1\)], "InlineFormula"],
  ", Pollard rho and continued fraction algorithm. \n\[FilledSmallCircle] The \
package ",
  StyleBox["NumberTheory`FactorIntegerECM`", "MR"],
  " contains an elliptic curve algorithm suitable for factoring some very \
large integers. \n\[FilledSmallCircle] ",
  StyleBox["Prime", "MR"],
  " and ",
  StyleBox["PrimePi", "MR"],
  " use sparse caching and sieving. For large ",
  Cell[BoxData[
      \(TraditionalForm\`n\)], "InlineFormula"],
  ", the Lagarias\[Hyphen]Miller\[Hyphen]Odlyzko algorithm for ",
  StyleBox["PrimePi", "MR"],
  " is used, based on asymptotic estimates of the density of primes, and is \
inverted to give ",
  StyleBox["Prime", "MR"],
  ". \n\[FilledSmallCircle] ",
  StyleBox["LatticeReduce", "MR"],
  " uses the Lenstra\[Hyphen]Lenstra\[Hyphen]Lovasz lattice reduction \
algorithm. \n\[FilledSmallCircle] To find a requested number of terms ",
  StyleBox["ContinuedFraction", "MR"],
  " uses a modification of Lehmer's indirect method, with a \
self\[Hyphen]restarting divide\[Hyphen]and\[Hyphen]conquer algorithm to \
reduce the numerical precision required at each step. \n\[FilledSmallCircle] \
",
  StyleBox["ContinuedFraction", "MR"],
  " uses recurrence relations to find periodic continued fractions for \
quadratic irrationals. \n\[FilledSmallCircle] ",
  StyleBox["FromContinuedFraction", "MR"],
  " uses iterated matrix multiplication optimized by a divide\[Hyphen]and\
\[Hyphen]conquer method.  "
}], "Text",
  CellTags->{
  "SA.9.4", "4.9", "PrimeQ", "FactorInteger", "Prime", "PrimePi", 
    "LatticeReduce", "ContinuedFraction", "FromContinuedFraction"}],

Cell["Combinatorial functions", "Subsubsection",
  CellTags->{"SA.9.4", "4.10"}],

Cell[TextData[{
  "\[FilledSmallCircle] Most combinatorial functions use sparse caching and \
recursion. \n\[FilledSmallCircle] ",
  StyleBox["Factorial", "MR"],
  ", ",
  StyleBox["Binomial", "MR"],
  " and related functions use a divide\[Hyphen]and\[Hyphen]conquer algorithm \
to balance the number of digits in subproducts. \n\[FilledSmallCircle] ",
  StyleBox["Fibonacci[", "MR"],
  StyleBox["n", "TI"],
  StyleBox["]", "MR"],
  " uses an iterative method based on the binary digit sequence of ",
  StyleBox["n", "TI"],
  ". \n\[FilledSmallCircle] ",
  StyleBox["PartitionsP[", "MR"],
  StyleBox["n", "TI"],
  StyleBox["]", "MR"],
  " uses Euler's pentagonal formula for small ",
  StyleBox["n", "TI"],
  ", and the non\[Hyphen]recursive Hardy\[Hyphen]Ramanujan\[Hyphen]Rademacher \
method for larger ",
  StyleBox["n", "TI"],
  ". \n\[FilledSmallCircle] ",
  StyleBox["ClebschGordan", "MR"],
  " and related functions use generalized hypergeometric series. "
}], "Text",
  CellTags->{
  "SA.9.4", "4.11", "Factorial", "Fibonacci", "PartitionsP", "ClebschGordan"}],\


Cell["Elementary transcendental functions", "Subsubsection",
  CellTags->{"SA.9.4", "4.12"}],

Cell["\<\
\[FilledSmallCircle] Exponential and trigonometric functions use \
Taylor series, stable recursion by argument doubling, and functional \
relations. 
\[FilledSmallCircle] Log and inverse trigonometric functions use Taylor \
series and functional relations.  \
\>", "Text",
  CellTags->{"SA.9.4", "4.13"}],

Cell["Mathematical constants", "Subsubsection",
  CellTags->{"SA.9.4", "4.14"}],

Cell[TextData[{
  "\[FilledSmallCircle] Values of constants are cached once computed. \n\
\[FilledSmallCircle] Binary splitting is used to subdivide computations of \
constants. \n\[FilledSmallCircle] ",
  StyleBox["Pi", "MR"],
  " uses the Chudnovsky formula for computations up to ten million digits. \n\
\[FilledSmallCircle] ",
  StyleBox["E", "MR"],
  " is computed from its series expansion. \n\[FilledSmallCircle] ",
  StyleBox["EulerGamma", "MR"],
  " uses the Brent\[Hyphen]McMillan algorithm. \n\[FilledSmallCircle] ",
  StyleBox["Catalan", "MR"],
  " is computed from a linearly convergent Ramanujan sum.  "
}], "Text",
  CellTags->{"SA.9.4", "4.15", "Pi", "E", "EulerGamma", "Catalan"}],

Cell["Special functions", "Subsubsection",
  CellTags->{"SA.9.4", "4.16"}],

Cell[TextData[{
  "\[FilledSmallCircle] For machine precision most special functions use ",
  StyleBox["Mathematica", "TI"],
  "\[Hyphen]derived rational minimax approximations. The notes that follow \
apply mainly to arbitrary precision. \n\[FilledSmallCircle] Orthogonal \
polynomials use stable recursion formulas for polynomial cases and \
hypergeometric functions in general. \n\[FilledSmallCircle] ",
  StyleBox["Gamma", "MR"],
  " uses recursion, functional equations and the Binet asymptotic formula. \n\
\[FilledSmallCircle] Incomplete gamma and beta functions use hypergeometric \
series and continued fractions. \n\[FilledSmallCircle] ",
  StyleBox["PolyGamma", "MR"],
  " uses Euler\[Hyphen]Maclaurin summation, functional equations and \
recursion. \n\[FilledSmallCircle] ",
  StyleBox["PolyLog", "MR"],
  " uses Euler\[Hyphen]Maclaurin summation, expansions in terms of incomplete \
gamma functions and numerical quadrature. \n\[FilledSmallCircle] ",
  StyleBox["Zeta", "MR"],
  " and related functions use Euler\[Hyphen]Maclaurin summation and \
functional equations. Near the critical strip they also use the Riemann\
\[Hyphen]Siegel formula. \n\[FilledSmallCircle] ",
  StyleBox["StieltjesGamma", "MR"],
  " uses Keiper's algorithm based on numerical quadrature of an integral \
representation of the zeta function. \n\[FilledSmallCircle] The error \
function and functions related to exponential integrals are all evaluated \
using incomplete gamma functions. \n\[FilledSmallCircle] The inverse error \
functions use binomial search and a high\[Hyphen]order generalized Newton's \
method. \n\[FilledSmallCircle] Bessel functions use series and asymptotic \
expansions. For integer orders, some also use stable forward recursion. \n\
\[FilledSmallCircle] The hypergeometric functions use functional equations, \
stable recurrence relations, series expansions and asymptotic series. Methods \
from ",
  StyleBox["NSum", "MR"],
  " and ",
  StyleBox["NIntegrate", "MR"],
  " are also sometimes used. \n\[FilledSmallCircle] ",
  StyleBox["ProductLog", "MR"],
  " uses high\[Hyphen]order Newton's method starting from rational \
approximations and asymptotic expansions. \n\[FilledSmallCircle] Elliptic \
integrals are evaluated using the descending Gauss transformation.  \n\
\[FilledSmallCircle] Elliptic theta functions use series summation with \
recursive evaluation of series terms. \n\[FilledSmallCircle] Other elliptic \
functions mostly use arithmetic\[Hyphen]geometric mean methods. \n\
\[FilledSmallCircle] Mathieu functions use Fourier series. The Mathieu \
characteristic functions use generalizations of Blanch's Newton method.  "
}], "Text",
  CellTags->{
  "SA.9.4", "4.17", "Gamma", "PolyGamma", "PolyLog", "Zeta", "StieltjesGamma"}
    ],

Cell["Numerical integration", "Subsubsection",
  CellTags->{"SA.9.4", "4.18"}],

Cell[TextData[{
  "\[FilledSmallCircle] With ",
  StyleBox["Method->Automatic", "MR"],
  ", ",
  StyleBox["NIntegrate", "MR"],
  " uses ",
  StyleBox["GaussKronrod", "MR"],
  " in one dimension, and ",
  StyleBox["MultiDimensional", "MR"],
  " otherwise. \n\[FilledSmallCircle] If an explicit setting for ",
  StyleBox["MaxPoints", "MR"],
  " is given, ",
  StyleBox["NIntegrate", "MR"],
  " by default uses ",
  StyleBox["Method->QuasiMonteCarlo", "MR"],
  ". \n\[FilledSmallCircle] ",
  StyleBox["GaussKronrod", "MR"],
  ": adaptive Gaussian quadrature with error estimation based on evaluation \
at Kronrod points. \n\[FilledSmallCircle] ",
  StyleBox["DoubleExponential", "MR"],
  ": non\[Hyphen]adaptive double\[Hyphen]exponential quadrature. \n\
\[FilledSmallCircle] ",
  StyleBox["Trapezoidal", "MR"],
  ": elementary trapezoidal method. \n\[FilledSmallCircle] ",
  StyleBox["Oscillatory", "MR"],
  ": transformation to handle integrals containing trigonometric and Bessel \
functions. \n\[FilledSmallCircle] ",
  StyleBox["MultiDimensional", "MR"],
  ": adaptive Genz\[Hyphen]Malik algorithm. \n\[FilledSmallCircle] ",
  StyleBox["MonteCarlo", "MR"],
  ": non\[Hyphen]adaptive Monte Carlo. \n\[FilledSmallCircle] ",
  StyleBox["QuasiMonteCarlo", "MR"],
  ": non\[Hyphen]adaptive Halton\[Hyphen]Hammersley\[Hyphen]Wozniakowski \
algorithm. "
}], "Text",
  CellTags->{"SA.9.4", "4.19", "NIntegrate"}],

Cell["Numerical sums and products", "Subsubsection",
  CellTags->{"SA.9.4", "4.20"}],

Cell[TextData[{
  "\[FilledSmallCircle] If the ratio test does not give 1, the Wynn epsilon \
algorithm is applied to a sequence of partial sums or products. \n\
\[FilledSmallCircle] Otherwise Euler\[Hyphen]Maclaurin summation is used with \
",
  StyleBox["Integrate", "MR"],
  " or ",
  StyleBox["NIntegrate", "MR"],
  ".  "
}], "Text",
  CellTags->{"SA.9.4", "4.21", "NSum"}],

Cell["Numerical differential equations", "Subsubsection",
  CellTags->{"SA.9.4", "4.22"}],

Cell[TextData[{
  "\[FilledSmallCircle] With ",
  StyleBox["Method->Automatic", "MR"],
  ", ",
  StyleBox["NDSolve", "MR"],
  " switches between a non\[Hyphen]stiff Adams method and a stiff Gear \
method. Based on LSODE.  \n\[FilledSmallCircle] ",
  StyleBox["Adams", "MR"],
  ": implicit Adams method with order between 1 and 12. \n\
\[FilledSmallCircle] ",
  StyleBox["Gear", "MR"],
  ": backward difference formula method with order between 1 and 5. \n\
\[FilledSmallCircle] ",
  StyleBox["RungeKutta", "MR"],
  ": Fehlberg order 4\[Dash]5 Runge\[Hyphen]Kutta method for \
non\[Hyphen]stiff equations. \n\[FilledSmallCircle] For linear boundary value \
problems the Gel'fand\[Hyphen]Lokutsiyevskii chasing method is used. \n\
\[FilledSmallCircle] For 1+1\[Hyphen]dimensional PDEs the method of lines is \
used. \n\[FilledSmallCircle] The code for ",
  StyleBox["NDSolve", "MR"],
  " is about 500 pages long.  "
}], "Text",
  CellTags->{"SA.9.4", "4.23", "NDSolve"}],

Cell["Approximate equation solving and minimization", "Subsubsection",
  CellTags->{"SA.9.4", "4.24"}],

Cell[TextData[{
  "\[FilledSmallCircle] Polynomial root finding is done based on the Jenkins\
\[Hyphen]Traub algorithm. \n\[FilledSmallCircle] For sparse linear systems, \
",
  StyleBox["Solve", "MR"],
  " and ",
  StyleBox["NSolve", "MR"],
  " use several efficient numerical methods, mostly based on Gauss factoring \
with Markowitz products (approximately 250 pages of code). \n\
\[FilledSmallCircle] For systems of algebraic equations, ",
  StyleBox["NSolve", "MR"],
  " computes a numerical Gr\[ODoubleDot]bner basis using an efficient \
monomial ordering, then uses eigenvalue methods to extract numerical roots. \n\
\[FilledSmallCircle] ",
  StyleBox["FindRoot", "MR"],
  " uses a damped Newton's method, the secant method and Brent's method. \n\
\[FilledSmallCircle] With ",
  StyleBox["Method->Automatic", "MR"],
  ", ",
  StyleBox["FindMinimum", "MR"],
  " uses various methods due to Brent: the conjugate gradient in one \
dimension, and a modification of Powell's method in several dimensions. \n\
\[FilledSmallCircle] If the function to be minimized is a sum of squares, ",
  StyleBox["FindMinimum", "MR"],
  " uses the Levenberg\[Hyphen]Marquardt method (",
  StyleBox["Method->LevenbergMarquardt", "MR"],
  "). \n\[FilledSmallCircle] With ",
  StyleBox["Method->Newton", "MR"],
  " ",
  StyleBox["FindMinimum", "MR"],
  " uses Newton's method. With ",
  StyleBox["Method->QuasiNewton", "MR"],
  " ",
  StyleBox["FindMinimum", "MR"],
  " uses the BFGS version of the quasi\[Hyphen]Newton method. \n\
\[FilledSmallCircle] ",
  StyleBox["ConstrainedMax", "MR"],
  " and related functions use an enhanced version of the simplex algorithm.  \
"
}], "Text",
  CellTags->{
  "SA.9.4", "4.25", "NSolve", "FindRoot", "FindMinimum", "ConstrainedMax"}],

Cell["Data manipulation", "Subsubsection",
  CellTags->{"SA.9.4", "4.26"}],

Cell[TextData[{
  "\[FilledSmallCircle] ",
  StyleBox["Fourier", "MR"],
  " uses the FFT algorithm with decomposition of the length into prime \
factors. When the prime factors are large, fast convolution methods are used \
to maintain ",
  Cell[BoxData[
      \(TraditionalForm\`O \((n  log \((n)\))\)\)], "InlineFormula"],
  " asymptotic complexity. \n\[FilledSmallCircle] For real input, ",
  StyleBox["Fourier", "MR"],
  " uses a real transform method. \n\[FilledSmallCircle] ",
  StyleBox["ListConvolve", "MR"],
  " and ",
  StyleBox["ListCorrelate", "MR"],
  " use FFT algorithms when possible. For exact integer inputs, enough digits \
are computed to deduce exact integer results. \n\[FilledSmallCircle] ",
  StyleBox["InterpolatingFunction", "MR"],
  " uses divided differences to construct Lagrange or Hermite interpolating \
polynomials. \n\[FilledSmallCircle] ",
  StyleBox["Fit", "MR"],
  " works by computing the product of the response vector with the \
pseudoinverse of the design matrix.  "
}], "Text",
  CellTags->{
  "SA.9.4", "4.27", "Fourier", "ListConvolve", "ListCorrelate", 
    "InterpolatingFunction", "Fit"}],

Cell["Approximate numerical linear algebra", "Subsubsection",
  CellTags->{"SA.9.4", "4.28"}],

Cell[TextData[{
  "\[FilledSmallCircle] Machine\[Hyphen]precision matrices are typically \
converted to a special internal representation for processing. \n\
\[FilledSmallCircle] Algorithms similar to those of LINPACK, EISPACK and \
LAPACK are used when appropriate. \n\[FilledSmallCircle] ",
  StyleBox["LUDecomposition", "MR"],
  ", ",
  StyleBox["Inverse", "MR"],
  ", ",
  StyleBox["RowReduce", "MR"],
  " and ",
  StyleBox["Det", "MR"],
  " use Gaussian elimination with partial pivoting. ",
  StyleBox["LinearSolve", "MR"],
  " uses the same methods, together with iterative improvement for high\
\[Hyphen]precision numbers. \n\[FilledSmallCircle] ",
  StyleBox["SingularValues", "MR"],
  " uses the QR algorithm with Givens rotations. ",
  StyleBox["PseudoInverse", "MR"],
  " and ",
  StyleBox["NullSpace", "MR"],
  " are based on ",
  StyleBox["SingularValues", "MR"],
  ". \n\[FilledSmallCircle] ",
  StyleBox["QRDecomposition", "MR"],
  " uses Householder transformations. \n\[FilledSmallCircle] ",
  StyleBox["SchurDecomposition", "MR"],
  " uses QR iteration. \n\[FilledSmallCircle] ",
  StyleBox["MatrixExp", "MR"],
  " uses Schur decomposition.  "
}], "Text",
  CellTags->{
  "SA.9.4", "4.29", "LinearSolve", "LUDecomposition", "Inverse", "RowReduce", 
    "Det", "SingularValues", "QRDecomposition", "SchurDecomposition"}],

Cell["Exact numerical linear algebra", "Subsubsection",
  CellTags->{"SA.9.4", "4.30"}],

Cell[TextData[{
  "\[FilledSmallCircle] ",
  StyleBox["Inverse", "MR"],
  " and ",
  StyleBox["LinearSolve", "MR"],
  " use efficient row reduction based on numerical approximation. \n\
\[FilledSmallCircle] With ",
  StyleBox["Modulus->", "MR"],
  StyleBox["n", "TI"],
  ", modular Gaussian elimination is used. \n\[FilledSmallCircle] ",
  StyleBox["Det", "MR"],
  " uses modular methods and row reduction, constructing a result using the \
Chinese Remainder Theorem. \n\[FilledSmallCircle] ",
  StyleBox["Eigenvalues", "MR"],
  " works by interpolating the characteristic polynomial. \n\
\[FilledSmallCircle] ",
  StyleBox["MatrixExp", "MR"],
  " uses Putzer's method or Jordan decomposition.  "
}], "Text",
  CellTags->{"SA.9.4", "4.31", "Inverse", "LinearSolve", "Det"}],

Cell["A.9.5 Algebra and Calculus", "Subsection",
  CellTags->{"SA.9.5", "5.1"}],

Cell["Polynomial manipulation", "Subsubsection",
  CellTags->{"SA.9.5", "5.2"}],

Cell[TextData[{
  "\[FilledSmallCircle] For univariate polynomials, ",
  StyleBox["Factor", "MR"],
  " uses a variant of the Cantor\[Hyphen]Zassenhaus algorithm to factor \
modulo a prime, then uses Hensel lifting and recombination to build up \
factors over the integers. \n\[FilledSmallCircle] Factoring over algebraic \
number fields is done by finding a primitive element over the rationals and \
then using Trager's algorithm. \n\[FilledSmallCircle] For multivariate \
polynomials ",
  StyleBox["Factor", "MR"],
  " works by substituting appropriate choices of integers for all but one \
variable, then factoring the resulting univariate polynomials, and \
reconstructing multivariate factors using Wang's algorithm. \n\
\[FilledSmallCircle] The internal code for ",
  StyleBox["Factor", "MR"],
  " exclusive of general polynomial manipulation is about 250 pages long. \n\
\[FilledSmallCircle] ",
  StyleBox["FactorSquareFree", "MR"],
  " works by finding a derivative and then iteratively computing GCDs. \n\
\[FilledSmallCircle] ",
  StyleBox["Resultant", "MR"],
  " uses either explicit subresultant polynomial remainder sequences or \
modular sequences accompanied by the Chinese Remainder Theorem. \n\
\[FilledSmallCircle] ",
  StyleBox["Apart", "MR"],
  " uses either a version of the Pad\[EAcute] technique or the method of \
undetermined coefficients. \n\[FilledSmallCircle] ",
  StyleBox["PolynomialGCD", "MR"],
  " usually uses modular algorithms, including Zippel's sparse modular \
algorithm, but in some cases uses subresultant polynomial remainder \
sequences. "
}], "Text",
  CellTags->{"SA.9.5", "5.3", "Factor"}],

Cell["Symbolic linear algebra", "Subsubsection",
  CellTags->{"SA.9.5", "5.4"}],

Cell[TextData[{
  "\[FilledSmallCircle] ",
  StyleBox["RowReduce", "MR"],
  ", ",
  StyleBox["LinearSolve", "MR"],
  " and ",
  StyleBox["NullSpace", "MR"],
  " are based on Gaussian elimination. \n\[FilledSmallCircle] ",
  StyleBox["Inverse", "MR"],
  " uses cofactor expansion and row reduction. Pivots are chosen \
heuristically by looking for simple expressions. \n\[FilledSmallCircle] ",
  StyleBox["Det", "MR"],
  " uses direct cofactor expansion for small matrices, and Gaussian \
elimination for larger ones. \n\[FilledSmallCircle] ",
  StyleBox["MatrixExp", "MR"],
  " finds eigenvalues and then uses Putzer's method. \n\[FilledSmallCircle] \
Zero testing for various functions is done using symbolic transformations and \
interval\[Hyphen]based numerical approximations after random numerical values \
have been substituted for variables.  "
}], "Text",
  CellTags->{"SA.9.5", "5.5"}],

Cell["Exact equation solving", "Subsubsection",
  CellTags->{"SA.9.5", "5.6"}],

Cell[TextData[{
  "\[FilledSmallCircle] For linear equations Gaussian elimination and other \
methods of linear algebra are used. \n\[FilledSmallCircle] ",
  StyleBox["Root", "MR"],
  " objects representing algebraic numbers are usually isolated and \
manipulated using validated numerical methods. With ",
  StyleBox["ExactRootIsolation->True", "MR"],
  ", ",
  StyleBox["Root", "MR"],
  " uses for real roots a continued fraction version of an algorithm based on \
Descartes' rule of signs, and for complex roots the Collins\[Hyphen]Krandick \
algorithm. \n\[FilledSmallCircle] For single polynomial equations, ",
  StyleBox["Solve", "MR"],
  " uses explicit formulas up to degree four, attempts to reduce polynomials \
using ",
  StyleBox["Factor", "MR"],
  " and ",
  StyleBox["Decompose", "MR"],
  ", and recognizes cyclotomic and other special polynomials. \n\
\[FilledSmallCircle] For systems of polynomial equations, ",
  StyleBox["Solve", "MR"],
  " constructs a Gr\[ODoubleDot]bner basis. \n\[FilledSmallCircle] ",
  StyleBox["Solve", "MR"],
  " and ",
  StyleBox["GroebnerBasis", "MR"],
  " use an efficient version of the Buchberger algorithm. \n\
\[FilledSmallCircle] For non\[Hyphen]polynomial equations, ",
  StyleBox["Solve", "MR"],
  " attempts to change variables and add polynomial side conditions. \n\
\[FilledSmallCircle] The code for ",
  StyleBox["Solve", "MR"],
  " is about 500 pages long.  "
}], "Text",
  CellTags->{"SA.9.5", "5.7", "Solve", "GroebnerBasis"}],

Cell["Simplification", "Subsubsection",
  CellTags->{"SA.9.5", "5.8"}],

Cell[TextData[{
  "\[FilledSmallCircle] ",
  StyleBox["FullSimplify", "MR"],
  " automatically applies about 40 types of general algebraic \
transformations, as well as about 400 types of rules for specific \
mathematical functions. \n\[FilledSmallCircle] Generalized hypergeometric \
functions are simplified using about 70 pages of ",
  StyleBox["Mathematica", "TI"],
  " transformation rules. These functions are fundamental to many calculus \
operations in ",
  StyleBox["Mathematica", "TI"],
  ". \n\[FilledSmallCircle] ",
  StyleBox["FunctionExpand", "MR"],
  " uses an extension of Gauss's algorithm to expand trigonometric functions \
with arguments that are rational multiples of ",
  Cell[BoxData[
      \(TraditionalForm\`\[Pi]\)], "InlineFormula"],
  ". \n\[FilledSmallCircle] ",
  StyleBox["Simplify", "MR"],
  " and ",
  StyleBox["FullSimplify", "MR"],
  " cache results when appropriate. \n\[FilledSmallCircle] When assumptions \
specify that variables are real, methods based on cylindrical algebraic \
decomposition are used to deduce what transformations can be applied. \n\
\[FilledSmallCircle] For general polynomial inequalities, a version of the \
Collins algorithm is used with McCallum's improved projection operator. For \
strict inequalities, Strzebonski's method is used. For linear inequalities, \
methods based on either the simplex algorithm or the \
Loos\[Hyphen]Weispfenning linear quantifier elimination algorithm are used. \n\
\[FilledSmallCircle] When assumptions involve equations among polynomials, Gr\
\[ODoubleDot]bner basis methods are used. \n\[FilledSmallCircle] For non\
\[Hyphen]algebraic functions, a database of relations is used to determine \
the domains of function values from the domains of their arguments. \
Polynomial\[Hyphen]oriented algorithms are used whenever the resulting \
domains correspond to semi\[Hyphen]algebraic sets. \n\[FilledSmallCircle] For \
integer functions, several hundred theorems of number theory are used in the \
form of ",
  StyleBox["Mathematica", "TI"],
  " rules.  "
}], "Text",
  CellTags->{"SA.9.5", "5.9", "FunctionExpand", "FullSimplify"}],

Cell["Differentiation and integration", "Subsubsection",
  CellTags->{"SA.9.5", "5.10"}],

Cell[TextData[{
  "\[FilledSmallCircle] Differentiation uses caching to avoid recomputing \
partial results. \n\[FilledSmallCircle] For indefinite integrals, an extended \
version of the Risch algorithm is used whenever both the integrand and \
integral can be expressed in terms of elementary functions, exponential \
integral functions, polylogarithms and other related functions. \n\
\[FilledSmallCircle] For other indefinite integrals, heuristic simplification \
followed by pattern matching is used. \n\[FilledSmallCircle] The algorithms \
in ",
  StyleBox["Mathematica", "TI"],
  " cover all of the indefinite integrals in standard reference books such as \
Gradshteyn\[Hyphen]Ryzhik. \n\[FilledSmallCircle] Definite integrals that \
involve no singularities are mostly done by taking limits of the indefinite \
integrals. \n\[FilledSmallCircle] Many other definite integrals are done \
using Marichev\[Hyphen]Adamchik Mellin transform methods. The results are \
often initially expressed in terms of Meijer G functions, which are converted \
into hypergeometric functions using Slater's Theorem and then simplified. \n\
\[FilledSmallCircle] ",
  StyleBox["Integrate", "MR"],
  " uses about 500 pages of ",
  StyleBox["Mathematica", "TI"],
  " code and 600 pages of C code.  "
}], "Text",
  CellTags->{"SA.9.5", "5.11", "D", "Integrate"}],

Cell["Differential equations", "Subsubsection",
  CellTags->{"SA.9.5", "5.12"}],

Cell[TextData[{
  "\[FilledSmallCircle] Linear equations with constant coefficients are \
solved using matrix exponentiation. \n\[FilledSmallCircle] \
Second\[Hyphen]order linear equations with variable coefficients whose \
solutions can be expressed in terms of elementary functions and their \
integrals are solved using the Kovacic algorithm. \n\[FilledSmallCircle] \
Linear equations with polynomial coefficients are solved in terms of special \
functions by using Mellin transforms. \n\[FilledSmallCircle] When possible, \
nonlinear equations are solved by symmetry reduction techniques. For first\
\[Hyphen]order equations classical techniques are used; for \
second\[Hyphen]order equations and systems Bocharov techniques are used. \n\
\[FilledSmallCircle] For partial differential equations, separation of \
variables and symmetry reduction are used. \n\[FilledSmallCircle] ",
  StyleBox["DSolve", "MR"],
  " uses about 300 pages of ",
  StyleBox["Mathematica", "TI"],
  " code and 200 pages of C code.  "
}], "Text",
  CellTags->{"SA.9.5", "5.13", "DSolve"}],

Cell["Sums and products", "Subsubsection",
  CellTags->{"SA.9.5", "5.14"}],

Cell[TextData[{
  "\[FilledSmallCircle] Polynomial series are summed using Bernoulli and \
Euler polynomials. \n\[FilledSmallCircle] Series involving rational and \
factorial functions are summed using Adamchik techniques in terms of \
generalized hypergeometric functions, which are then simplified. \n\
\[FilledSmallCircle] Series involving polygamma functions are summed using \
integral representations. \n\[FilledSmallCircle] Dirichlet and related series \
are summed using pattern matching. \n\[FilledSmallCircle] For infinite \
series, d'Alembert and Raabe convergence tests are used. \n\
\[FilledSmallCircle] The algorithms in ",
  StyleBox["Mathematica", "TI"],
  " cover at least 90% of the sums in standard reference books such as \
Gradshteyn\[Hyphen]Ryzhik. \n\[FilledSmallCircle] Products are done primarily \
using pattern matching. \n\[FilledSmallCircle] ",
  StyleBox["Sum", "MR"],
  " and ",
  StyleBox["Product", "MR"],
  " use about 100 pages of ",
  StyleBox["Mathematica", "TI"],
  " code.  "
}], "Text",
  CellTags->{"SA.9.5", "5.15", "Sum", "Product"}],

Cell["Series and limits", "Subsubsection",
  CellTags->{"SA.9.5", "5.16"}],

Cell[TextData[{
  "\[FilledSmallCircle] ",
  StyleBox["Series", "MR"],
  " works by recursively composing series expansions of functions with series \
expansions of their arguments. \n\[FilledSmallCircle] Limits are found from \
series and using other methods.  "
}], "Text",
  CellTags->{"SA.9.5", "5.17", "Series"}],

Cell["A.9.6 Output and Interfacing", "Subsection",
  CellTags->{"SA.9.6", "6.1"}],

Cell["Graphics", "Subsubsection",
  CellTags->{"SA.9.6", "6.2"}],

Cell["\<\
\[FilledSmallCircle] Hidden\[Hyphen]surface elimination for 3D \
graphics is done so as to be independent of display resolution. 
\[FilledSmallCircle] A custom\[Hyphen]written PostScript interpreter is used \
to render graphics in the front end. 
\[FilledSmallCircle] Notebooks use a custom platform\[Hyphen]independent \
bitmap image format.  \
\>", "Text",
  CellTags->{"SA.9.6", "6.3"}],

Cell["Front end", "Subsubsection",
  CellTags->{"SA.9.6", "6.4"}],

Cell[TextData[{
  "\[FilledSmallCircle] The front end uses ",
  StyleBox["MathLink", "TI"],
  " both for communication with the kernel, and for communication between its \
different internal components. \n\[FilledSmallCircle] All menu items and \
other functions in the front end are specified using ",
  StyleBox["Mathematica", "TI"],
  " expressions. \n\[FilledSmallCircle] Configuration and preference files \
use ",
  StyleBox["Mathematica", "TI"],
  " language format. \n\[FilledSmallCircle] The Help Browser is based on ",
  StyleBox["Mathematica", "TI"],
  " notebooks generated from the same source code as this book.  "
}], "Text",
  CellTags->{"SA.9.6", "6.5"}],

Cell["Notebooks", "Subsubsection",
  CellTags->{"SA.9.6", "6.6"}],

Cell[TextData[{
  "\[FilledSmallCircle] Notebooks are represented as ",
  StyleBox["Mathematica", "TI"],
  " expressions. \n\[FilledSmallCircle] Notebook files contain additional \
cached outline information in the form of ",
  StyleBox["Mathematica", "TI"],
  " comments. This information makes possible efficient random access. \n\
\[FilledSmallCircle] Incremental saving of notebooks is done so as to \
minimize rewriting of data, moving data already written out whenever \
possible. \n\[FilledSmallCircle] Platform\[Hyphen]independent \
double\[Hyphen]buffering is used by default to minimize flicker when window \
contents are updated. \n\[FilledSmallCircle] Autoscrolling uses a control\
\[Hyphen]theoretical mechanism to optimize smoothness and controllability. \n\
\[FilledSmallCircle] All special characters are \
platform\[Hyphen]independently represented using Unicode. Mapping tables are \
set up for specific Kanji and other fonts. \n\[FilledSmallCircle] Spell \
checking and hyphenation are done using algorithms and a 100,000\[Hyphen]word \
standard English dictionary, together with a 20,000\[Hyphen]word technical \
dictionary, with 5000 ",
  StyleBox["Mathematica", "TI"],
  " and other words added. Spelling correction is done using textual and \
phonetic metrics.   "
}], "Text",
  CellTags->{"SA.9.6", "6.7"}],

Cell[TextData[StyleBox["MathLink", "SBO"]], "Subsubsection",
  CellTags->{"SA.9.6", "6.8"}],

Cell[TextData[{
  "\[FilledSmallCircle] In OSI terms, ",
  StyleBox["MathLink", "TI"],
  " is a presentation\[Hyphen]level protocol, which can be layered on top of \
any transport medium, both message\[Hyphen]based and stream\[Hyphen]based. \n\
\[FilledSmallCircle] ",
  StyleBox["MathLink", "TI"],
  " encodes data in a compressed format when it determines that both ends of \
a link are on compatible computer systems. \n\[FilledSmallCircle] ",
  StyleBox["MathLink", "TI"],
  " can transmit out\[Hyphen]of\[Hyphen]band data such as interrupts as well \
as ",
  StyleBox["Mathematica", "TI"],
  " expressions. \n\[FilledSmallCircle] When possible ",
  StyleBox["MathLink", "TI"],
  " is implemented using dynamically linked shared libraries.  "
}], "Text",
  CellTags->{"SA.9.6", "6.9"}],

Cell["Expression formatting", "Subsubsection",
  CellTags->{"SA.9.6", "6.10"}],

Cell["\<\
\[FilledSmallCircle] The front end uses a directed acyclic graph to \
represent the box structure of formatted expressions. 
\[FilledSmallCircle] Boxes are interpreted using a two\[Hyphen]dimensional \
generalization of an operator precedence parser. 
\[FilledSmallCircle] Incremental parsing is used to minimize structure and \
display updating. 
\[FilledSmallCircle] Character spacing and positioning are determined from \
font data and operator tables. 
\[FilledSmallCircle] Line breaking is globally optimized throughout \
expressions, based on a method similar to the one used for text layout in \
TeX. 
\[FilledSmallCircle] During input, line breaking is set up so that small \
changes to expressions rarely cause large\[Hyphen]scale reformatting; if the \
input needs to jump, an elliptical cursor tracker momentarily appears to \
guide the eye.  
\[FilledSmallCircle] Expression formatting uses about 2000 pages of C code.  \
\
\>", "Text",
  CellTags->{"SA.9.6", "6.11"}]
},
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->{
  "SA.9.0"->{
    Cell[1717, 49, 91, 1, 70, "Section",
      CellTags->{"SA.9.0", "0.1"}]},
  "0.1"->{
    Cell[1717, 49, 91, 1, 70, "Section",
      CellTags->{"SA.9.0", "0.1"}]},
  "SA.9.1"->{
    Cell[1811, 52, 71, 1, 70, "Subsection",
      CellTags->{"SA.9.1", "1.1"}],
    Cell[1885, 55, 978, 19, 70, "Text",
      CellTags->{"SA.9.1", "1.2"}]},
  "1.1"->{
    Cell[1811, 52, 71, 1, 70, "Subsection",
      CellTags->{"SA.9.1", "1.1"}]},
  "1.2"->{
    Cell[1885, 55, 978, 19, 70, "Text",
      CellTags->{"SA.9.1", "1.2"}]},
  "SA.9.2"->{
    Cell[2866, 76, 96, 1, 70, "Subsection",
      CellTags->{"SA.9.2", "2.1"}],
    Cell[2965, 79, 1774, 36, 70, "Text",
      CellTags->{"SA.9.2", "2.2"}]},
  "2.1"->{
    Cell[2866, 76, 96, 1, 70, "Subsection",
      CellTags->{"SA.9.2", "2.1"}]},
  "2.2"->{
    Cell[2965, 79, 1774, 36, 70, "Text",
      CellTags->{"SA.9.2", "2.2"}]},
  "SA.9.3"->{
    Cell[4742, 117, 80, 1, 70, "Subsection",
      CellTags->{"SA.9.3", "3.1"}],
    Cell[4825, 120, 1018, 20, 70, "Text",
      CellTags->{"SA.9.3", "3.2", "Rule"}]},
  "3.1"->{
    Cell[4742, 117, 80, 1, 70, "Subsection",
      CellTags->{"SA.9.3", "3.1"}]},
  "3.2"->{
    Cell[4825, 120, 1018, 20, 70, "Text",
      CellTags->{"SA.9.3", "3.2", "Rule"}]},
  "Rule"->{
    Cell[4825, 120, 1018, 20, 70, "Text",
      CellTags->{"SA.9.3", "3.2", "Rule"}]},
  "SA.9.4"->{
    Cell[5846, 142, 90, 1, 70, "Subsection",
      CellTags->{"SA.9.4", "4.1"}],
    Cell[5939, 145, 102, 1, 70, "Subsubsection",
      CellTags->{"SA.9.4", "4.2"}],
    Cell[6044, 148, 1098, 25, 70, "Text",
      CellTags->{"SA.9.4", "4.3", "IntegerDigits", "N", "Floor"}],
    Cell[7145, 175, 72, 1, 70, "Subsubsection",
      CellTags->{"SA.9.4", "4.4"}],
    Cell[7220, 178, 686, 14, 70, "Text",
      CellTags->{"SA.9.4", "4.5"}],
    Cell[7909, 194, 76, 1, 70, "Subsubsection",
      CellTags->{"SA.9.4", "4.6"}],
    Cell[7988, 197, 323, 7, 70, "Text",
      CellTags->{"SA.9.4", "4.7", "Random"}],
    Cell[8314, 206, 92, 1, 70, "Subsubsection",
      CellTags->{"SA.9.4", "4.8"}],
    Cell[8409, 209, 2884, 63, 70, "Text",
      CellTags->{
      "SA.9.4", "4.9", "PrimeQ", "FactorInteger", "Prime", "PrimePi", 
        "LatticeReduce", "ContinuedFraction", "FromContinuedFraction"}],
    Cell[11296, 274, 80, 1, 70, "Subsubsection",
      CellTags->{"SA.9.4", "4.10"}],
    Cell[11379, 277, 1068, 27, 70, "Text",
      CellTags->{
      "SA.9.4", "4.11", "Factorial", "Fibonacci", "PartitionsP", 
        "ClebschGordan"}],
    Cell[12452, 307, 92, 1, 70, "Subsubsection",
      CellTags->{"SA.9.4", "4.12"}],
    Cell[12547, 310, 314, 7, 70, "Text",
      CellTags->{"SA.9.4", "4.13"}],
    Cell[12864, 319, 79, 1, 70, "Subsubsection",
      CellTags->{"SA.9.4", "4.14"}],
    Cell[12946, 322, 697, 14, 70, "Text",
      CellTags->{"SA.9.4", "4.15", "Pi", "E", "EulerGamma", "Catalan"}],
    Cell[13646, 338, 74, 1, 70, "Subsubsection",
      CellTags->{"SA.9.4", "4.16"}],
    Cell[13723, 341, 2768, 48, 70, "Text",
      CellTags->{
      "SA.9.4", "4.17", "Gamma", "PolyGamma", "PolyLog", "Zeta", 
        "StieltjesGamma"}],
    Cell[16494, 391, 78, 1, 70, "Subsubsection",
      CellTags->{"SA.9.4", "4.18"}],
    Cell[16575, 394, 1406, 35, 70, "Text",
      CellTags->{"SA.9.4", "4.19", "NIntegrate"}],
    Cell[17984, 431, 84, 1, 70, "Subsubsection",
      CellTags->{"SA.9.4", "4.20"}],
    Cell[18071, 434, 377, 10, 70, "Text",
      CellTags->{"SA.9.4", "4.21", "NSum"}],
    Cell[18451, 446, 89, 1, 70, "Subsubsection",
      CellTags->{"SA.9.4", "4.22"}],
    Cell[18543, 449, 968, 22, 70, "Text",
      CellTags->{"SA.9.4", "4.23", "NDSolve"}],
    Cell[19514, 473, 102, 1, 70, "Subsubsection",
      CellTags->{"SA.9.4", "4.24"}],
    Cell[19619, 476, 1756, 41, 70, "Text",
      CellTags->{
      "SA.9.4", "4.25", "NSolve", "FindRoot", "FindMinimum", 
        "ConstrainedMax"}],
    Cell[21378, 519, 74, 1, 70, "Subsubsection",
      CellTags->{"SA.9.4", "4.26"}],
    Cell[21455, 522, 1135, 25, 70, "Text",
      CellTags->{
      "SA.9.4", "4.27", "Fourier", "ListConvolve", "ListCorrelate", 
        "InterpolatingFunction", "Fit"}],
    Cell[22593, 549, 93, 1, 70, "Subsubsection",
      CellTags->{"SA.9.4", "4.28"}],
    Cell[22689, 552, 1338, 33, 70, "Text",
      CellTags->{
      "SA.9.4", "4.29", "LinearSolve", "LUDecomposition", "Inverse", 
        "RowReduce", "Det", "SingularValues", "QRDecomposition", 
        "SchurDecomposition"}],
    Cell[24030, 587, 87, 1, 70, "Subsubsection",
      CellTags->{"SA.9.4", "4.30"}],
    Cell[24120, 590, 773, 19, 70, "Text",
      CellTags->{"SA.9.4", "4.31", "Inverse", "LinearSolve", "Det"}]},
  "4.1"->{
    Cell[5846, 142, 90, 1, 70, "Subsection",
      CellTags->{"SA.9.4", "4.1"}]},
  "4.2"->{
    Cell[5939, 145, 102, 1, 70, "Subsubsection",
      CellTags->{"SA.9.4", "4.2"}]},
  "4.3"->{
    Cell[6044, 148, 1098, 25, 70, "Text",
      CellTags->{"SA.9.4", "4.3", "IntegerDigits", "N", "Floor"}]},
  "IntegerDigits"->{
    Cell[6044, 148, 1098, 25, 70, "Text",
      CellTags->{"SA.9.4", "4.3", "IntegerDigits", "N", "Floor"}]},
  "N"->{
    Cell[6044, 148, 1098, 25, 70, "Text",
      CellTags->{"SA.9.4", "4.3", "IntegerDigits", "N", "Floor"}]},
  "Floor"->{
    Cell[6044, 148, 1098, 25, 70, "Text",
      CellTags->{"SA.9.4", "4.3", "IntegerDigits", "N", "Floor"}]},
  "4.4"->{
    Cell[7145, 175, 72, 1, 70, "Subsubsection",
      CellTags->{"SA.9.4", "4.4"}]},
  "4.5"->{
    Cell[7220, 178, 686, 14, 70, "Text",
      CellTags->{"SA.9.4", "4.5"}]},
  "4.6"->{
    Cell[7909, 194, 76, 1, 70, "Subsubsection",
      CellTags->{"SA.9.4", "4.6"}]},
  "4.7"->{
    Cell[7988, 197, 323, 7, 70, "Text",
      CellTags->{"SA.9.4", "4.7", "Random"}]},
  "Random"->{
    Cell[7988, 197, 323, 7, 70, "Text",
      CellTags->{"SA.9.4", "4.7", "Random"}]},
  "4.8"->{
    Cell[8314, 206, 92, 1, 70, "Subsubsection",
      CellTags->{"SA.9.4", "4.8"}]},
  "4.9"->{
    Cell[8409, 209, 2884, 63, 70, "Text",
      CellTags->{
      "SA.9.4", "4.9", "PrimeQ", "FactorInteger", "Prime", "PrimePi", 
        "LatticeReduce", "ContinuedFraction", "FromContinuedFraction"}]},
  "PrimeQ"->{
    Cell[8409, 209, 2884, 63, 70, "Text",
      CellTags->{
      "SA.9.4", "4.9", "PrimeQ", "FactorInteger", "Prime", "PrimePi", 
        "LatticeReduce", "ContinuedFraction", "FromContinuedFraction"}]},
  "FactorInteger"->{
    Cell[8409, 209, 2884, 63, 70, "Text",
      CellTags->{
      "SA.9.4", "4.9", "PrimeQ", "FactorInteger", "Prime", "PrimePi", 
        "LatticeReduce", "ContinuedFraction", "FromContinuedFraction"}]},
  "Prime"->{
    Cell[8409, 209, 2884, 63, 70, "Text",
      CellTags->{
      "SA.9.4", "4.9", "PrimeQ", "FactorInteger", "Prime", "PrimePi", 
        "LatticeReduce", "ContinuedFraction", "FromContinuedFraction"}]},
  "PrimePi"->{
    Cell[8409, 209, 2884, 63, 70, "Text",
      CellTags->{
      "SA.9.4", "4.9", "PrimeQ", "FactorInteger", "Prime", "PrimePi", 
        "LatticeReduce", "ContinuedFraction", "FromContinuedFraction"}]},
  "LatticeReduce"->{
    Cell[8409, 209, 2884, 63, 70, "Text",
      CellTags->{
      "SA.9.4", "4.9", "PrimeQ", "FactorInteger", "Prime", "PrimePi", 
        "LatticeReduce", "ContinuedFraction", "FromContinuedFraction"}]},
  "ContinuedFraction"->{
    Cell[8409, 209, 2884, 63, 70, "Text",
      CellTags->{
      "SA.9.4", "4.9", "PrimeQ", "FactorInteger", "Prime", "PrimePi", 
        "LatticeReduce", "ContinuedFraction", "FromContinuedFraction"}]},
  "FromContinuedFraction"->{
    Cell[8409, 209, 2884, 63, 70, "Text",
      CellTags->{
      "SA.9.4", "4.9", "PrimeQ", "FactorInteger", "Prime", "PrimePi", 
        "LatticeReduce", "ContinuedFraction", "FromContinuedFraction"}]},
  "4.10"->{
    Cell[11296, 274, 80, 1, 70, "Subsubsection",
      CellTags->{"SA.9.4", "4.10"}]},
  "4.11"->{
    Cell[11379, 277, 1068, 27, 70, "Text",
      CellTags->{
      "SA.9.4", "4.11", "Factorial", "Fibonacci", "PartitionsP", 
        "ClebschGordan"}]},
  "Factorial"->{
    Cell[11379, 277, 1068, 27, 70, "Text",
      CellTags->{
      "SA.9.4", "4.11", "Factorial", "Fibonacci", "PartitionsP", 
        "ClebschGordan"}]},
  "Fibonacci"->{
    Cell[11379, 277, 1068, 27, 70, "Text",
      CellTags->{
      "SA.9.4", "4.11", "Factorial", "Fibonacci", "PartitionsP", 
        "ClebschGordan"}]},
  "PartitionsP"->{
    Cell[11379, 277, 1068, 27, 70, "Text",
      CellTags->{
      "SA.9.4", "4.11", "Factorial", "Fibonacci", "PartitionsP", 
        "ClebschGordan"}]},
  "ClebschGordan"->{
    Cell[11379, 277, 1068, 27, 70, "Text",
      CellTags->{
      "SA.9.4", "4.11", "Factorial", "Fibonacci", "PartitionsP", 
        "ClebschGordan"}]},
  "4.12"->{
    Cell[12452, 307, 92, 1, 70, "Subsubsection",
      CellTags->{"SA.9.4", "4.12"}]},
  "4.13"->{
    Cell[12547, 310, 314, 7, 70, "Text",
      CellTags->{"SA.9.4", "4.13"}]},
  "4.14"->{
    Cell[12864, 319, 79, 1, 70, "Subsubsection",
      CellTags->{"SA.9.4", "4.14"}]},
  "4.15"->{
    Cell[12946, 322, 697, 14, 70, "Text",
      CellTags->{"SA.9.4", "4.15", "Pi", "E", "EulerGamma", "Catalan"}]},
  "Pi"->{
    Cell[12946, 322, 697, 14, 70, "Text",
      CellTags->{"SA.9.4", "4.15", "Pi", "E", "EulerGamma", "Catalan"}]},
  "E"->{
    Cell[12946, 322, 697, 14, 70, "Text",
      CellTags->{"SA.9.4", "4.15", "Pi", "E", "EulerGamma", "Catalan"}]},
  "EulerGamma"->{
    Cell[12946, 322, 697, 14, 70, "Text",
      CellTags->{"SA.9.4", "4.15", "Pi", "E", "EulerGamma", "Catalan"}]},
  "Catalan"->{
    Cell[12946, 322, 697, 14, 70, "Text",
      CellTags->{"SA.9.4", "4.15", "Pi", "E", "EulerGamma", "Catalan"}]},
  "4.16"->{
    Cell[13646, 338, 74, 1, 70, "Subsubsection",
      CellTags->{"SA.9.4", "4.16"}]},
  "4.17"->{
    Cell[13723, 341, 2768, 48, 70, "Text",
      CellTags->{
      "SA.9.4", "4.17", "Gamma", "PolyGamma", "PolyLog", "Zeta", 
        "StieltjesGamma"}]},
  "Gamma"->{
    Cell[13723, 341, 2768, 48, 70, "Text",
      CellTags->{
      "SA.9.4", "4.17", "Gamma", "PolyGamma", "PolyLog", "Zeta", 
        "StieltjesGamma"}]},
  "PolyGamma"->{
    Cell[13723, 341, 2768, 48, 70, "Text",
      CellTags->{
      "SA.9.4", "4.17", "Gamma", "PolyGamma", "PolyLog", "Zeta", 
        "StieltjesGamma"}]},
  "PolyLog"->{
    Cell[13723, 341, 2768, 48, 70, "Text",
      CellTags->{
      "SA.9.4", "4.17", "Gamma", "PolyGamma", "PolyLog", "Zeta", 
        "StieltjesGamma"}]},
  "Zeta"->{
    Cell[13723, 341, 2768, 48, 70, "Text",
      CellTags->{
      "SA.9.4", "4.17", "Gamma", "PolyGamma", "PolyLog", "Zeta", 
        "StieltjesGamma"}]},
  "StieltjesGamma"->{
    Cell[13723, 341, 2768, 48, 70, "Text",
      CellTags->{
      "SA.9.4", "4.17", "Gamma", "PolyGamma", "PolyLog", "Zeta", 
        "StieltjesGamma"}]},
  "4.18"->{
    Cell[16494, 391, 78, 1, 70, "Subsubsection",
      CellTags->{"SA.9.4", "4.18"}]},
  "4.19"->{
    Cell[16575, 394, 1406, 35, 70, "Text",
      CellTags->{"SA.9.4", "4.19", "NIntegrate"}]},
  "NIntegrate"->{
    Cell[16575, 394, 1406, 35, 70, "Text",
      CellTags->{"SA.9.4", "4.19", "NIntegrate"}]},
  "4.20"->{
    Cell[17984, 431, 84, 1, 70, "Subsubsection",
      CellTags->{"SA.9.4", "4.20"}]},
  "4.21"->{
    Cell[18071, 434, 377, 10, 70, "Text",
      CellTags->{"SA.9.4", "4.21", "NSum"}]},
  "NSum"->{
    Cell[18071, 434, 377, 10, 70, "Text",
      CellTags->{"SA.9.4", "4.21", "NSum"}]},
  "4.22"->{
    Cell[18451, 446, 89, 1, 70, "Subsubsection",
      CellTags->{"SA.9.4", "4.22"}]},
  "4.23"->{
    Cell[18543, 449, 968, 22, 70, "Text",
      CellTags->{"SA.9.4", "4.23", "NDSolve"}]},
  "NDSolve"->{
    Cell[18543, 449, 968, 22, 70, "Text",
      CellTags->{"SA.9.4", "4.23", "NDSolve"}]},
  "4.24"->{
    Cell[19514, 473, 102, 1, 70, "Subsubsection",
      CellTags->{"SA.9.4", "4.24"}]},
  "4.25"->{
    Cell[19619, 476, 1756, 41, 70, "Text",
      CellTags->{
      "SA.9.4", "4.25", "NSolve", "FindRoot", "FindMinimum", 
        "ConstrainedMax"}]},
  "NSolve"->{
    Cell[19619, 476, 1756, 41, 70, "Text",
      CellTags->{
      "SA.9.4", "4.25", "NSolve", "FindRoot", "FindMinimum", 
        "ConstrainedMax"}]},
  "FindRoot"->{
    Cell[19619, 476, 1756, 41, 70, "Text",
      CellTags->{
      "SA.9.4", "4.25", "NSolve", "FindRoot", "FindMinimum", 
        "ConstrainedMax"}]},
  "FindMinimum"->{
    Cell[19619, 476, 1756, 41, 70, "Text",
      CellTags->{
      "SA.9.4", "4.25", "NSolve", "FindRoot", "FindMinimum", 
        "ConstrainedMax"}]},
  "ConstrainedMax"->{
    Cell[19619, 476, 1756, 41, 70, "Text",
      CellTags->{
      "SA.9.4", "4.25", "NSolve", "FindRoot", "FindMinimum", 
        "ConstrainedMax"}]},
  "4.26"->{
    Cell[21378, 519, 74, 1, 70, "Subsubsection",
      CellTags->{"SA.9.4", "4.26"}]},
  "4.27"->{
    Cell[21455, 522, 1135, 25, 70, "Text",
      CellTags->{
      "SA.9.4", "4.27", "Fourier", "ListConvolve", "ListCorrelate", 
        "InterpolatingFunction", "Fit"}]},
  "Fourier"->{
    Cell[21455, 522, 1135, 25, 70, "Text",
      CellTags->{
      "SA.9.4", "4.27", "Fourier", "ListConvolve", "ListCorrelate", 
        "InterpolatingFunction", "Fit"}]},
  "ListConvolve"->{
    Cell[21455, 522, 1135, 25, 70, "Text",
      CellTags->{
      "SA.9.4", "4.27", "Fourier", "ListConvolve", "ListCorrelate", 
        "InterpolatingFunction", "Fit"}]},
  "ListCorrelate"->{
    Cell[21455, 522, 1135, 25, 70, "Text",
      CellTags->{
      "SA.9.4", "4.27", "Fourier", "ListConvolve", "ListCorrelate", 
        "InterpolatingFunction", "Fit"}]},
  "InterpolatingFunction"->{
    Cell[21455, 522, 1135, 25, 70, "Text",
      CellTags->{
      "SA.9.4", "4.27", "Fourier", "ListConvolve", "ListCorrelate", 
        "InterpolatingFunction", "Fit"}]},
  "Fit"->{
    Cell[21455, 522, 1135, 25, 70, "Text",
      CellTags->{
      "SA.9.4", "4.27", "Fourier", "ListConvolve", "ListCorrelate", 
        "InterpolatingFunction", "Fit"}]},
  "4.28"->{
    Cell[22593, 549, 93, 1, 70, "Subsubsection",
      CellTags->{"SA.9.4", "4.28"}]},
  "4.29"->{
    Cell[22689, 552, 1338, 33, 70, "Text",
      CellTags->{
      "SA.9.4", "4.29", "LinearSolve", "LUDecomposition", "Inverse", 
        "RowReduce", "Det", "SingularValues", "QRDecomposition", 
        "SchurDecomposition"}]},
  "LinearSolve"->{
    Cell[22689, 552, 1338, 33, 70, "Text",
      CellTags->{
      "SA.9.4", "4.29", "LinearSolve", "LUDecomposition", "Inverse", 
        "RowReduce", "Det", "SingularValues", "QRDecomposition", 
        "SchurDecomposition"}],
    Cell[24120, 590, 773, 19, 70, "Text",
      CellTags->{"SA.9.4", "4.31", "Inverse", "LinearSolve", "Det"}]},
  "LUDecomposition"->{
    Cell[22689, 552, 1338, 33, 70, "Text",
      CellTags->{
      "SA.9.4", "4.29", "LinearSolve", "LUDecomposition", "Inverse", 
        "RowReduce", "Det", "SingularValues", "QRDecomposition", 
        "SchurDecomposition"}]},
  "Inverse"->{
    Cell[22689, 552, 1338, 33, 70, "Text",
      CellTags->{
      "SA.9.4", "4.29", "LinearSolve", "LUDecomposition", "Inverse", 
        "RowReduce", "Det", "SingularValues", "QRDecomposition", 
        "SchurDecomposition"}],
    Cell[24120, 590, 773, 19, 70, "Text",
      CellTags->{"SA.9.4", "4.31", "Inverse", "LinearSolve", "Det"}]},
  "RowReduce"->{
    Cell[22689, 552, 1338, 33, 70, "Text",
      CellTags->{
      "SA.9.4", "4.29", "LinearSolve", "LUDecomposition", "Inverse", 
        "RowReduce", "Det", "SingularValues", "QRDecomposition", 
        "SchurDecomposition"}]},
  "Det"->{
    Cell[22689, 552, 1338, 33, 70, "Text",
      CellTags->{
      "SA.9.4", "4.29", "LinearSolve", "LUDecomposition", "Inverse", 
        "RowReduce", "Det", "SingularValues", "QRDecomposition", 
        "SchurDecomposition"}],
    Cell[24120, 590, 773, 19, 70, "Text",
      CellTags->{"SA.9.4", "4.31", "Inverse", "LinearSolve", "Det"}]},
  "SingularValues"->{
    Cell[22689, 552, 1338, 33, 70, "Text",
      CellTags->{
      "SA.9.4", "4.29", "LinearSolve", "LUDecomposition", "Inverse", 
        "RowReduce", "Det", "SingularValues", "QRDecomposition", 
        "SchurDecomposition"}]},
  "QRDecomposition"->{
    Cell[22689, 552, 1338, 33, 70, "Text",
      CellTags->{
      "SA.9.4", "4.29", "LinearSolve", "LUDecomposition", "Inverse", 
        "RowReduce", "Det", "SingularValues", "QRDecomposition", 
        "SchurDecomposition"}]},
  "SchurDecomposition"->{
    Cell[22689, 552, 1338, 33, 70, "Text",
      CellTags->{
      "SA.9.4", "4.29", "LinearSolve", "LUDecomposition", "Inverse", 
        "RowReduce", "Det", "SingularValues", "QRDecomposition", 
        "SchurDecomposition"}]},
  "4.30"->{
    Cell[24030, 587, 87, 1, 70, "Subsubsection",
      CellTags->{"SA.9.4", "4.30"}]},
  "4.31"->{
    Cell[24120, 590, 773, 19, 70, "Text",
      CellTags->{"SA.9.4", "4.31", "Inverse", "LinearSolve", "Det"}]},
  "SA.9.5"->{
    Cell[24896, 611, 79, 1, 70, "Subsection",
      CellTags->{"SA.9.5", "5.1"}],
    Cell[24978, 614, 79, 1, 70, "Subsubsection",
      CellTags->{"SA.9.5", "5.2"}],
    Cell[25060, 617, 1634, 32, 70, "Text",
      CellTags->{"SA.9.5", "5.3", "Factor"}],
    Cell[26697, 651, 79, 1, 70, "Subsubsection",
      CellTags->{"SA.9.5", "5.4"}],
    Cell[26779, 654, 894, 20, 70, "Text",
      CellTags->{"SA.9.5", "5.5"}],
    Cell[27676, 676, 78, 1, 70, "Subsubsection",
      CellTags->{"SA.9.5", "5.6"}],
    Cell[27757, 679, 1486, 33, 70, "Text",
      CellTags->{"SA.9.5", "5.7", "Solve", "GroebnerBasis"}],
    Cell[29246, 714, 70, 1, 70, "Subsubsection",
      CellTags->{"SA.9.5", "5.8"}],
    Cell[29319, 717, 2127, 40, 70, "Text",
      CellTags->{"SA.9.5", "5.9", "FunctionExpand", "FullSimplify"}],
    Cell[31449, 759, 88, 1, 70, "Subsubsection",
      CellTags->{"SA.9.5", "5.10"}],
    Cell[31540, 762, 1344, 23, 70, "Text",
      CellTags->{"SA.9.5", "5.11", "D", "Integrate"}],
    Cell[32887, 787, 79, 1, 70, "Subsubsection",
      CellTags->{"SA.9.5", "5.12"}],
    Cell[32969, 790, 1067, 18, 70, "Text",
      CellTags->{"SA.9.5", "5.13", "DSolve"}],
    Cell[34039, 810, 74, 1, 70, "Subsubsection",
      CellTags->{"SA.9.5", "5.14"}],
    Cell[34116, 813, 1076, 21, 70, "Text",
      CellTags->{"SA.9.5", "5.15", "Sum", "Product"}],
    Cell[35195, 836, 74, 1, 70, "Subsubsection",
      CellTags->{"SA.9.5", "5.16"}],
    Cell[35272, 839, 317, 7, 70, "Text",
      CellTags->{"SA.9.5", "5.17", "Series"}]},
  "5.1"->{
    Cell[24896, 611, 79, 1, 70, "Subsection",
      CellTags->{"SA.9.5", "5.1"}]},
  "5.2"->{
    Cell[24978, 614, 79, 1, 70, "Subsubsection",
      CellTags->{"SA.9.5", "5.2"}]},
  "5.3"->{
    Cell[25060, 617, 1634, 32, 70, "Text",
      CellTags->{"SA.9.5", "5.3", "Factor"}]},
  "Factor"->{
    Cell[25060, 617, 1634, 32, 70, "Text",
      CellTags->{"SA.9.5", "5.3", "Factor"}]},
  "5.4"->{
    Cell[26697, 651, 79, 1, 70, "Subsubsection",
      CellTags->{"SA.9.5", "5.4"}]},
  "5.5"->{
    Cell[26779, 654, 894, 20, 70, "Text",
      CellTags->{"SA.9.5", "5.5"}]},
  "5.6"->{
    Cell[27676, 676, 78, 1, 70, "Subsubsection",
      CellTags->{"SA.9.5", "5.6"}]},
  "5.7"->{
    Cell[27757, 679, 1486, 33, 70, "Text",
      CellTags->{"SA.9.5", "5.7", "Solve", "GroebnerBasis"}]},
  "Solve"->{
    Cell[27757, 679, 1486, 33, 70, "Text",
      CellTags->{"SA.9.5", "5.7", "Solve", "GroebnerBasis"}]},
  "GroebnerBasis"->{
    Cell[27757, 679, 1486, 33, 70, "Text",
      CellTags->{"SA.9.5", "5.7", "Solve", "GroebnerBasis"}]},
  "5.8"->{
    Cell[29246, 714, 70, 1, 70, "Subsubsection",
      CellTags->{"SA.9.5", "5.8"}]},
  "5.9"->{
    Cell[29319, 717, 2127, 40, 70, "Text",
      CellTags->{"SA.9.5", "5.9", "FunctionExpand", "FullSimplify"}]},
  "FunctionExpand"->{
    Cell[29319, 717, 2127, 40, 70, "Text",
      CellTags->{"SA.9.5", "5.9", "FunctionExpand", "FullSimplify"}]},
  "FullSimplify"->{
    Cell[29319, 717, 2127, 40, 70, "Text",
      CellTags->{"SA.9.5", "5.9", "FunctionExpand", "FullSimplify"}]},
  "5.10"->{
    Cell[31449, 759, 88, 1, 70, "Subsubsection",
      CellTags->{"SA.9.5", "5.10"}]},
  "5.11"->{
    Cell[31540, 762, 1344, 23, 70, "Text",
      CellTags->{"SA.9.5", "5.11", "D", "Integrate"}]},
  "D"->{
    Cell[31540, 762, 1344, 23, 70, "Text",
      CellTags->{"SA.9.5", "5.11", "D", "Integrate"}]},
  "Integrate"->{
    Cell[31540, 762, 1344, 23, 70, "Text",
      CellTags->{"SA.9.5", "5.11", "D", "Integrate"}]},
  "5.12"->{
    Cell[32887, 787, 79, 1, 70, "Subsubsection",
      CellTags->{"SA.9.5", "5.12"}]},
  "5.13"->{
    Cell[32969, 790, 1067, 18, 70, "Text",
      CellTags->{"SA.9.5", "5.13", "DSolve"}]},
  "DSolve"->{
    Cell[32969, 790, 1067, 18, 70, "Text",
      CellTags->{"SA.9.5", "5.13", "DSolve"}]},
  "5.14"->{
    Cell[34039, 810, 74, 1, 70, "Subsubsection",
      CellTags->{"SA.9.5", "5.14"}]},
  "5.15"->{
    Cell[34116, 813, 1076, 21, 70, "Text",
      CellTags->{"SA.9.5", "5.15", "Sum", "Product"}]},
  "Sum"->{
    Cell[34116, 813, 1076, 21, 70, "Text",
      CellTags->{"SA.9.5", "5.15", "Sum", "Product"}]},
  "Product"->{
    Cell[34116, 813, 1076, 21, 70, "Text",
      CellTags->{"SA.9.5", "5.15", "Sum", "Product"}]},
  "5.16"->{
    Cell[35195, 836, 74, 1, 70, "Subsubsection",
      CellTags->{"SA.9.5", "5.16"}]},
  "5.17"->{
    Cell[35272, 839, 317, 7, 70, "Text",
      CellTags->{"SA.9.5", "5.17", "Series"}]},
  "Series"->{
    Cell[35272, 839, 317, 7, 70, "Text",
      CellTags->{"SA.9.5", "5.17", "Series"}]},
  "SA.9.6"->{
    Cell[35592, 848, 81, 1, 70, "Subsection",
      CellTags->{"SA.9.6", "6.1"}],
    Cell[35676, 851, 64, 1, 70, "Subsubsection",
      CellTags->{"SA.9.6", "6.2"}],
    Cell[35743, 854, 399, 8, 70, "Text",
      CellTags->{"SA.9.6", "6.3"}],
    Cell[36145, 864, 65, 1, 70, "Subsubsection",
      CellTags->{"SA.9.6", "6.4"}],
    Cell[36213, 867, 671, 14, 70, "Text",
      CellTags->{"SA.9.6", "6.5"}],
    Cell[36887, 883, 65, 1, 70, "Subsubsection",
      CellTags->{"SA.9.6", "6.6"}],
    Cell[36955, 886, 1330, 23, 70, "Text",
      CellTags->{"SA.9.6", "6.7"}],
    Cell[38288, 911, 91, 1, 70, "Subsubsection",
      CellTags->{"SA.9.6", "6.8"}],
    Cell[38382, 914, 789, 17, 70, "Text",
      CellTags->{"SA.9.6", "6.9"}],
    Cell[39174, 933, 78, 1, 70, "Subsubsection",
      CellTags->{"SA.9.6", "6.10"}],
    Cell[39255, 936, 990, 19, 70, "Text",
      CellTags->{"SA.9.6", "6.11"}]},
  "6.1"->{
    Cell[35592, 848, 81, 1, 70, "Subsection",
      CellTags->{"SA.9.6", "6.1"}]},
  "6.2"->{
    Cell[35676, 851, 64, 1, 70, "Subsubsection",
      CellTags->{"SA.9.6", "6.2"}]},
  "6.3"->{
    Cell[35743, 854, 399, 8, 70, "Text",
      CellTags->{"SA.9.6", "6.3"}]},
  "6.4"->{
    Cell[36145, 864, 65, 1, 70, "Subsubsection",
      CellTags->{"SA.9.6", "6.4"}]},
  "6.5"->{
    Cell[36213, 867, 671, 14, 70, "Text",
      CellTags->{"SA.9.6", "6.5"}]},
  "6.6"->{
    Cell[36887, 883, 65, 1, 70, "Subsubsection",
      CellTags->{"SA.9.6", "6.6"}]},
  "6.7"->{
    Cell[36955, 886, 1330, 23, 70, "Text",
      CellTags->{"SA.9.6", "6.7"}]},
  "6.8"->{
    Cell[38288, 911, 91, 1, 70, "Subsubsection",
      CellTags->{"SA.9.6", "6.8"}]},
  "6.9"->{
    Cell[38382, 914, 789, 17, 70, "Text",
      CellTags->{"SA.9.6", "6.9"}]},
  "6.10"->{
    Cell[39174, 933, 78, 1, 70, "Subsubsection",
      CellTags->{"SA.9.6", "6.10"}]},
  "6.11"->{
    Cell[39255, 936, 990, 19, 70, "Text",
      CellTags->{"SA.9.6", "6.11"}]}
  }
*)

(*CellTagsIndex
CellTagsIndex->{
  {"SA.9.0", 40873, 974},
  {"0.1", 40962, 977},
  {"SA.9.1", 41054, 980},
  {"1.1", 41222, 985},
  {"1.2", 41314, 988},
  {"SA.9.2", 41405, 991},
  {"2.1", 41574, 996},
  {"2.2", 41666, 999},
  {"SA.9.3", 41758, 1002},
  {"3.1", 41937, 1007},
  {"3.2", 42030, 1010},
  {"Rule", 42129, 1013},
  {"SA.9.4", 42230, 1016},
  {"4.1", 45520, 1092},
  {"4.2", 45613, 1095},
  {"4.3", 45710, 1098},
  {"IntegerDigits", 45841, 1101},
  {"N", 45960, 1104},
  {"Floor", 46083, 1107},
  {"4.4", 46204, 1110},
  {"4.5", 46300, 1113},
  {"4.6", 46389, 1116},
  {"4.7", 46485, 1119},
  {"Random", 46586, 1122},
  {"4.8", 46684, 1125},
  {"4.9", 46780, 1128},
  {"PrimeQ", 46999, 1133},
  {"FactorInteger", 47225, 1138},
  {"Prime", 47443, 1143},
  {"PrimePi", 47663, 1148},
  {"LatticeReduce", 47889, 1153},
  {"ContinuedFraction", 48119, 1158},
  {"FromContinuedFraction", 48353, 1163},
  {"4.10", 48570, 1168},
  {"4.11", 48669, 1171},
  {"Factorial", 48841, 1176},
  {"Fibonacci", 49013, 1181},
  {"PartitionsP", 49187, 1186},
  {"ClebschGordan", 49363, 1191},
  {"4.12", 49530, 1196},
  {"4.13", 49629, 1199},
  {"4.14", 49720, 1202},
  {"4.15", 49819, 1205},
  {"Pi", 49945, 1208},
  {"E", 50070, 1211},
  {"EulerGamma", 50204, 1214},
  {"Catalan", 50335, 1217},
  {"4.16", 50463, 1220},
  {"4.17", 50562, 1223},
  {"Gamma", 50731, 1228},
  {"PolyGamma", 50904, 1233},
  {"PolyLog", 51075, 1238},
  {"Zeta", 51243, 1243},
  {"StieltjesGamma", 51421, 1248},
  {"4.18", 51589, 1253},
  {"4.19", 51688, 1256},
  {"NIntegrate", 51801, 1259},
  {"4.20", 51908, 1262},
  {"4.21", 52007, 1265},
  {"NSum", 52107, 1268},
  {"4.22", 52207, 1271},
  {"4.23", 52306, 1274},
  {"NDSolve", 52412, 1277},
  {"4.24", 52515, 1280},
  {"4.25", 52615, 1283},
  {"NSolve", 52781, 1288},
  {"FindRoot", 52949, 1293},
  {"FindMinimum", 53120, 1298},
  {"ConstrainedMax", 53294, 1303},
  {"4.26", 53458, 1308},
  {"4.27", 53557, 1311},
  {"Fourier", 53745, 1316},
  {"ListConvolve", 53938, 1321},
  {"ListCorrelate", 54132, 1326},
  {"InterpolatingFunction", 54334, 1331},
  {"Fit", 54518, 1336},
  {"4.28", 54703, 1341},
  {"4.29", 54802, 1344},
  {"LinearSolve", 55051, 1350},
  {"LUDecomposition", 55416, 1358},
  {"Inverse", 55661, 1364},
  {"RowReduce", 56020, 1372},
  {"Det", 56261, 1378},
  {"SingularValues", 56625, 1386},
  {"QRDecomposition", 56878, 1392},
  {"SchurDecomposition", 57134, 1398},
  {"4.30", 57376, 1404},
  {"4.31", 57475, 1407},
  {"SA.9.5", 57602, 1410},
  {"5.1", 59139, 1445},
  {"5.2", 59233, 1448},
  {"5.3", 59330, 1451},
  {"Factor", 59434, 1454},
  {"5.4", 59535, 1457},
  {"5.5", 59632, 1460},
  {"5.6", 59722, 1463},
  {"5.7", 59819, 1466},
  {"Solve", 59938, 1469},
  {"GroebnerBasis", 60065, 1472},
  {"5.8", 60182, 1475},
  {"5.9", 60279, 1478},
  {"FunctionExpand", 60415, 1481},
  {"FullSimplify", 60549, 1484},
  {"5.10", 60675, 1487},
  {"5.11", 60774, 1490},
  {"D", 60882, 1493},
  {"Integrate", 60998, 1496},
  {"5.12", 61109, 1499},
  {"5.13", 61208, 1502},
  {"DSolve", 61313, 1505},
  {"5.14", 61416, 1508},
  {"5.15", 61515, 1511},
  {"Sum", 61625, 1514},
  {"Product", 61739, 1517},
  {"5.16", 61850, 1520},
  {"5.17", 61949, 1523},
  {"Series", 62052, 1526},
  {"SA.9.6", 62155, 1529},
  {"6.1", 63066, 1552},
  {"6.2", 63160, 1555},
  {"6.3", 63257, 1558},
  {"6.4", 63346, 1561},
  {"6.5", 63443, 1564},
  {"6.6", 63533, 1567},
  {"6.7", 63630, 1570},
  {"6.8", 63721, 1573},
  {"6.9", 63818, 1576},
  {"6.10", 63909, 1579},
  {"6.11", 64008, 1582}
  }
*)

(*NotebookFileOutline
Notebook[{
Cell[1717, 49, 91, 1, 70, "Section",
  CellTags->{"SA.9.0", "0.1"}],
Cell[1811, 52, 71, 1, 70, "Subsection",
  CellTags->{"SA.9.1", "1.1"}],
Cell[1885, 55, 978, 19, 70, "Text",
  CellTags->{"SA.9.1", "1.2"}],
Cell[2866, 76, 96, 1, 70, "Subsection",
  CellTags->{"SA.9.2", "2.1"}],
Cell[2965, 79, 1774, 36, 70, "Text",
  CellTags->{"SA.9.2", "2.2"}],
Cell[4742, 117, 80, 1, 70, "Subsection",
  CellTags->{"SA.9.3", "3.1"}],
Cell[4825, 120, 1018, 20, 70, "Text",
  CellTags->{"SA.9.3", "3.2", "Rule"}],
Cell[5846, 142, 90, 1, 70, "Subsection",
  CellTags->{"SA.9.4", "4.1"}],
Cell[5939, 145, 102, 1, 70, "Subsubsection",
  CellTags->{"SA.9.4", "4.2"}],
Cell[6044, 148, 1098, 25, 70, "Text",
  CellTags->{"SA.9.4", "4.3", "IntegerDigits", "N", "Floor"}],
Cell[7145, 175, 72, 1, 70, "Subsubsection",
  CellTags->{"SA.9.4", "4.4"}],
Cell[7220, 178, 686, 14, 70, "Text",
  CellTags->{"SA.9.4", "4.5"}],
Cell[7909, 194, 76, 1, 70, "Subsubsection",
  CellTags->{"SA.9.4", "4.6"}],
Cell[7988, 197, 323, 7, 70, "Text",
  CellTags->{"SA.9.4", "4.7", "Random"}],
Cell[8314, 206, 92, 1, 70, "Subsubsection",
  CellTags->{"SA.9.4", "4.8"}],
Cell[8409, 209, 2884, 63, 70, "Text",
  CellTags->{
  "SA.9.4", "4.9", "PrimeQ", "FactorInteger", "Prime", "PrimePi", 
    "LatticeReduce", "ContinuedFraction", "FromContinuedFraction"}],
Cell[11296, 274, 80, 1, 70, "Subsubsection",
  CellTags->{"SA.9.4", "4.10"}],
Cell[11379, 277, 1068, 27, 70, "Text",
  CellTags->{
  "SA.9.4", "4.11", "Factorial", "Fibonacci", "PartitionsP", 
    "ClebschGordan"}],
Cell[12452, 307, 92, 1, 70, "Subsubsection",
  CellTags->{"SA.9.4", "4.12"}],
Cell[12547, 310, 314, 7, 70, "Text",
  CellTags->{"SA.9.4", "4.13"}],
Cell[12864, 319, 79, 1, 70, "Subsubsection",
  CellTags->{"SA.9.4", "4.14"}],
Cell[12946, 322, 697, 14, 70, "Text",
  CellTags->{"SA.9.4", "4.15", "Pi", "E", "EulerGamma", "Catalan"}],
Cell[13646, 338, 74, 1, 70, "Subsubsection",
  CellTags->{"SA.9.4", "4.16"}],
Cell[13723, 341, 2768, 48, 70, "Text",
  CellTags->{
  "SA.9.4", "4.17", "Gamma", "PolyGamma", "PolyLog", "Zeta", 
    "StieltjesGamma"}],
Cell[16494, 391, 78, 1, 70, "Subsubsection",
  CellTags->{"SA.9.4", "4.18"}],
Cell[16575, 394, 1406, 35, 70, "Text",
  CellTags->{"SA.9.4", "4.19", "NIntegrate"}],
Cell[17984, 431, 84, 1, 70, "Subsubsection",
  CellTags->{"SA.9.4", "4.20"}],
Cell[18071, 434, 377, 10, 70, "Text",
  CellTags->{"SA.9.4", "4.21", "NSum"}],
Cell[18451, 446, 89, 1, 70, "Subsubsection",
  CellTags->{"SA.9.4", "4.22"}],
Cell[18543, 449, 968, 22, 70, "Text",
  CellTags->{"SA.9.4", "4.23", "NDSolve"}],
Cell[19514, 473, 102, 1, 70, "Subsubsection",
  CellTags->{"SA.9.4", "4.24"}],
Cell[19619, 476, 1756, 41, 70, "Text",
  CellTags->{
  "SA.9.4", "4.25", "NSolve", "FindRoot", "FindMinimum", "ConstrainedMax"}],
Cell[21378, 519, 74, 1, 70, "Subsubsection",
  CellTags->{"SA.9.4", "4.26"}],
Cell[21455, 522, 1135, 25, 70, "Text",
  CellTags->{
  "SA.9.4", "4.27", "Fourier", "ListConvolve", "ListCorrelate", 
    "InterpolatingFunction", "Fit"}],
Cell[22593, 549, 93, 1, 70, "Subsubsection",
  CellTags->{"SA.9.4", "4.28"}],
Cell[22689, 552, 1338, 33, 70, "Text",
  CellTags->{
  "SA.9.4", "4.29", "LinearSolve", "LUDecomposition", "Inverse", "RowReduce", 
    "Det", "SingularValues", "QRDecomposition", "SchurDecomposition"}],
Cell[24030, 587, 87, 1, 70, "Subsubsection",
  CellTags->{"SA.9.4", "4.30"}],
Cell[24120, 590, 773, 19, 70, "Text",
  CellTags->{"SA.9.4", "4.31", "Inverse", "LinearSolve", "Det"}],
Cell[24896, 611, 79, 1, 70, "Subsection",
  CellTags->{"SA.9.5", "5.1"}],
Cell[24978, 614, 79, 1, 70, "Subsubsection",
  CellTags->{"SA.9.5", "5.2"}],
Cell[25060, 617, 1634, 32, 70, "Text",
  CellTags->{"SA.9.5", "5.3", "Factor"}],
Cell[26697, 651, 79, 1, 70, "Subsubsection",
  CellTags->{"SA.9.5", "5.4"}],
Cell[26779, 654, 894, 20, 70, "Text",
  CellTags->{"SA.9.5", "5.5"}],
Cell[27676, 676, 78, 1, 70, "Subsubsection",
  CellTags->{"SA.9.5", "5.6"}],
Cell[27757, 679, 1486, 33, 70, "Text",
  CellTags->{"SA.9.5", "5.7", "Solve", "GroebnerBasis"}],
Cell[29246, 714, 70, 1, 70, "Subsubsection",
  CellTags->{"SA.9.5", "5.8"}],
Cell[29319, 717, 2127, 40, 70, "Text",
  CellTags->{"SA.9.5", "5.9", "FunctionExpand", "FullSimplify"}],
Cell[31449, 759, 88, 1, 70, "Subsubsection",
  CellTags->{"SA.9.5", "5.10"}],
Cell[31540, 762, 1344, 23, 70, "Text",
  CellTags->{"SA.9.5", "5.11", "D", "Integrate"}],
Cell[32887, 787, 79, 1, 70, "Subsubsection",
  CellTags->{"SA.9.5", "5.12"}],
Cell[32969, 790, 1067, 18, 70, "Text",
  CellTags->{"SA.9.5", "5.13", "DSolve"}],
Cell[34039, 810, 74, 1, 70, "Subsubsection",
  CellTags->{"SA.9.5", "5.14"}],
Cell[34116, 813, 1076, 21, 70, "Text",
  CellTags->{"SA.9.5", "5.15", "Sum", "Product"}],
Cell[35195, 836, 74, 1, 70, "Subsubsection",
  CellTags->{"SA.9.5", "5.16"}],
Cell[35272, 839, 317, 7, 70, "Text",
  CellTags->{"SA.9.5", "5.17", "Series"}],
Cell[35592, 848, 81, 1, 70, "Subsection",
  CellTags->{"SA.9.6", "6.1"}],
Cell[35676, 851, 64, 1, 70, "Subsubsection",
  CellTags->{"SA.9.6", "6.2"}],
Cell[35743, 854, 399, 8, 70, "Text",
  CellTags->{"SA.9.6", "6.3"}],
Cell[36145, 864, 65, 1, 70, "Subsubsection",
  CellTags->{"SA.9.6", "6.4"}],
Cell[36213, 867, 671, 14, 70, "Text",
  CellTags->{"SA.9.6", "6.5"}],
Cell[36887, 883, 65, 1, 70, "Subsubsection",
  CellTags->{"SA.9.6", "6.6"}],
Cell[36955, 886, 1330, 23, 70, "Text",
  CellTags->{"SA.9.6", "6.7"}],
Cell[38288, 911, 91, 1, 70, "Subsubsection",
  CellTags->{"SA.9.6", "6.8"}],
Cell[38382, 914, 789, 17, 70, "Text",
  CellTags->{"SA.9.6", "6.9"}],
Cell[39174, 933, 78, 1, 70, "Subsubsection",
  CellTags->{"SA.9.6", "6.10"}],
Cell[39255, 936, 990, 19, 70, "Text",
  CellTags->{"SA.9.6", "6.11"}]
}
]
*)




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

