diff --git a/books/bookheader.tex b/books/bookheader.tex index 2cdfca1..865b863 100644 --- a/books/bookheader.tex +++ b/books/bookheader.tex @@ -5,6 +5,7 @@ \setlength{\textwidth}{400pt} \makeindex \usepackage{graphicx} +\usepackage{changepage} % for adjustwidth environment \begin{document} \frontmatter diff --git a/books/bookvolbib.pamphlet b/books/bookvolbib.pamphlet index 16a2dfd..cc7009a 100644 --- a/books/bookvolbib.pamphlet +++ b/books/bookvolbib.pamphlet @@ -3046,5 +3046,60 @@ Math. Tables Aids Comput. 10 91--96. (1956) \bibitem[Yun 76]{Yu76} Yun, D.Y.Y.\\ ``On square-free decomposition algorithms''\\ {\sl Proceedings of SYMSAC'76} pages 26-35, 1976 + +\section{Special Topics} + +\subsection{Polynomial GCD} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\bibitem[Knuth 71]{ST-PGCD-Knu71} Knuth, Donald\\ +``The Art of Computer Programming''\\ +2nd edition Vol. 2 (Seminumerical Algorithms) 1st edition, 2nd printing,\\ +Addison-Wesley 1971, section 4.6 pp399-505 + +\bibitem[Ma 90]{ST-PGCD-Ma90} Ma, Keju; Gathen, Joachim von zur\\ +``Analysis of Euclidean Algorithms for Polynomials over Finite Fields''\\ +J. Symbolic Computation (1990) Vol 9 pp429-455\hfill{}\\ +\verb|www.researchgate.net/publication/220161718_Analysis_of_Euclidean_|\\ +\verb|Algorithms_for_Polynomials_over_Finite_Fields/file/|\\ +\verb|60b7d52b326a1058e4.pdf| + +\begin{adjustwidth}{2.5em}{0pt} +This paper analyzes the Euclidean algorithm and some variants of it +for computing the greatest common divisor of two univariate polynomials +over a finite field. +\end{adjustwidth} + +\bibitem[Shoup 93]{ST-PGCD-Sh93} Shoup, Victor\\ +``Factoring Polynomials over Finite Fields: Asymptotic Complexity vs +Reality*''\\ +Proc. IMACS Symposium, Lille, France, (1993) +\verb|www.shoup.net/papers/lille.pdf| + +\begin{adjustwidth}{2.5em}{0pt} +This paper compares the algorithms by Berlekamp, Cantor and Zassenhaus, +and Gathen and Shoup to conclude that +(a) if large polynomials are factored the FFT should be used for polynomial +multiplication and division, +(b) Gathen and Shoup should be used if the number of irreducible factors +of $f$ is small. +(c) if nothing is know about the degrees of the factors then Berlekamp's +algorithm should be used +\end{adjustwidth} + +\bibitem[Gathen 01]{ST-PGCD-Ga01} Gathen, Joachim von zur; Panario, Daniel\\ +``Factoring Polynomials Over Finite Fields: A Survey''\\ +J. Symbolic Computation (2001) Vol 31, pp3-17\hfill{}\\ +\verb|people.csail.mit.edu/dmoshdov/courses/codes/poly-factorization.pdf| + +\begin{adjustwidth}{2.5em}{0pt} +This survey reviews several algorithms for the factorization of +univariate polynomials over finite fields. We emphasize the main ideas +of the methods and provide and up-to-date bibliography of the problem. +This paper gives algorithms for {\sl squarefree factorization}, +{\sl distinct-degree factorization}, and {\sl equal-degree factorization}. +The first and second algorithms are deterministic, the third is +probabilistic. +\end{adjustwidth} + \end{thebibliography} \end{document} diff --git a/books/changepage.sty b/books/changepage.sty new file mode 100644 index 0000000..7e1aab4 --- /dev/null +++ b/books/changepage.sty @@ -0,0 +1,352 @@ +% changepage.sty +% +% Provides commands to change the page layout in the middle of a document, +% and to robustly check for typesetting on odd or even pages. +% Instructions for use are at the end of this file. +% +% This package is an extraction of code from the memoir class. It is +% intended to eventually replace the chngpage package. +% +% Author: Peter Wilson (Herries Press) +% (occasionaly at herries dot press (at) earthlink dot net) +% Copyright 2008 Peter R. Wilson +% +% If you have any questions you will probably get better and faster +% answers if you ask them on the comp.text.tex newsgroup as I am away +% more often than I am here. +% +% This work may be distributed and/or modified under the +% conditions of the LaTeX Project Public License, either +% version 1.3 of this license or (at your option) any +% later version. +% The latest version of the license is in +% http://www.latex-project.org/lppl.txt +% and version 1.3 or later is part of all distributions of +% LaTeX version 2003/06/01 or later. +% +% This work has the LPPL maintenance status "author-maintained". +% +% This work consists of this file. +% +% +% +\NeedsTeXFormat{LaTeX2e} +\ProvidesPackage{changepage}[2008/08/15 v1.0a check page and change page layout] + +%%% Don't use this with memoir +\newcommand*{\cp@whoopsusingmemoir}{} +\@ifclassloaded{memoir}{\def\cp@whoopsusingmemoir{\endinput}} +\cp@whoopsusingmemoir + +%% new \if for the strict option +\newif\ifstrictpagecheck + \strictpagecheckfalse +%% user commands for switching strict page checking on/off +\newcommand*{\strictpagecheck}{\strictpagechecktrue} +\newcommand*{\easypagecheck}{\strictpagecheckfalse} + +%% Declare and process options +\DeclareOption{strict}{\strictpagechecktrue} +\ProcessOptions\relax + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% new commands for strict checking of odd/even page +%% Works by writing a label and then checking its pageref +%% + +\newif\ifoddpage +\newcounter{cp@cntr} +\newcount\cp@tempcnt % instead of \@memcnta +\newcommand{\cplabel}{^_} + +%%%\gdef\thememc@@page{\the\c@page} +\gdef\thepmemc@@page{\the\c@page} + +\long\def\pmemprotected@write#1#2#3{% modified \protected@write + \begingroup + \let\thepmemc@@page\relax + #2% + \let\protect\@unexpandable@protect + \edef\reserved@a{\write#1{#3}}% + \reserved@a + \endgroup + \if@nobreak\ifvmode\nobreak\fi\fi} + +\newcommand*{\pmemlabel}[1]{\@bsphack + \pmemprotected@write\@auxout{}% + {\string\newpmemlabel{#1}{\thepmemc@@page}}% + \@esphack} + +\newcommand*{\newpmemlabel}[2]{{\global\@namedef{m@#1}{#2}}} +\newcommand*{\pmemlabelref}[1]{% + \expandafter\ifx\csname m@#1\endcsname\relax + 0% % 0 if there is no label yet in the aux file + \else + \csname m@#1\endcsname + \fi} + +\DeclareRobustCommand{\checkoddpage}{% + \oddpagefalse% + \ifstrictpagecheck% + \stepcounter{cp@cntr}\pmemlabel{\cplabel\thecp@cntr}% + \cp@tempcnt=\pmemlabelref{\cplabel\thecp@cntr}\relax + \ifodd\cp@tempcnt\oddpagetrue\fi + \else + \ifodd\c@page\oddpagetrue\fi + \fi} + +%% end newcommands for strict checking of odd/even page +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +%% copy of some of the code from the ifmtarg package to save requiring ifmtarg +\begingroup +\catcode`\Q=3 +\long\gdef\@ifmtarg#1{\@xifmtarg#1QQ\@secondoftwo\@firstoftwo\@nil} +\long\gdef\@xifmtarg#1#2Q#3#4#5\@nil{#4} +\endgroup + +%% set the page output parameters +\DeclareRobustCommand{\ch@ngetext}{% + \setlength{\@colht}{\textheight}\setlength{\@colroom}{\textheight}% + \setlength{\vsize}{\textheight}\setlength{\columnwidth}{\textwidth}% + \if@twocolumn% + \advance\columnwidth-\columnsep \divide\columnwidth\tw@% + \@firstcolumntrue% + \fi% + \setlength{\hsize}{\columnwidth}% + \setlength{\linewidth}{\hsize}} + +\DeclareRobustCommand{\changetext}[5]{% + \@ifmtarg{#1}{}{\addtolength{\textheight}{#1}}% + \@ifmtarg{#2}{}{\addtolength{\textwidth}{#2}}% + \@ifmtarg{#3}{}{\addtolength{\evensidemargin}{#3}}% + \@ifmtarg{#4}{}{\addtolength{\oddsidemargin}{#4}}% + \@ifmtarg{#5}{}{\addtolength{\columnsep}{#5}}% + \ch@ngetext} + +\DeclareRobustCommand{\changepage}[9]{% + \@ifmtarg{#1}{}{\addtolength{\textheight}{#1}}% + \@ifmtarg{#2}{}{\addtolength{\textwidth}{#2}}% + \@ifmtarg{#3}{}{\addtolength{\evensidemargin}{#3}}% + \@ifmtarg{#4}{}{\addtolength{\oddsidemargin}{#4}}% + \@ifmtarg{#5}{}{\addtolength{\columnsep}{#5}}% + \ch@ngetext% + \@ifmtarg{#6}{}{\addtolength{\topmargin}{#6}}% + \@ifmtarg{#7}{}{\addtolength{\headheight}{#7}}% + \@ifmtarg{#8}{}{\addtolength{\headsep}{#8}}% + \@ifmtarg{#9}{}{\addtolength{\footskip}{#9}}} + +\newenvironment{adjustwidth}[2]{% + \begin{list}{}{% + \topsep\z@% + \listparindent\parindent% + \parsep\parskip% + \@ifmtarg{#1}{\setlength{\leftmargin}{\z@}}% + {\setlength{\leftmargin}{#1}}% + \@ifmtarg{#2}{\setlength{\rightmargin}{\z@}}% + {\setlength{\rightmargin}{#2}}% + } + \item[]}{\end{list}} + +\newenvironment{adjustwidth*}[2]{% + \begin{list}{}{% + \topsep\z@% + \listparindent\parindent% + \parsep\parskip% + \checkoddpage + \ifoddpage% odd numbered page + \@ifmtarg{#1}{\setlength{\leftmargin}{\z@}}% + {\setlength{\leftmargin}{#1}}% + \@ifmtarg{#2}{\setlength{\rightmargin}{\z@}}% + {\setlength{\rightmargin}{#2}}% + \else% even numbered page + \@ifmtarg{#2}{\setlength{\leftmargin}{\z@}}% + {\setlength{\leftmargin}{#2}}% + \@ifmtarg{#1}{\setlength{\rightmargin}{\z@}}% + {\setlength{\rightmargin}{#1}}% + \fi} + \item[]}{\end{list}} + +\endinput + +% Usage: +% ------ +% +% \usepackage[strict]{changepage} +% +%%%%%%%%%%%%%%% +% \checkoddpage +%%%%%%%%%%%%%%% +% +% The \checkoddpage command can be used anywhere in the body of +% a document to determine if TeX is typesetting on an odd or +% even numbered page. If on an odd page then \ifoddpage is +% set TRUE, otherwise (on an even page) \ifoddpage is set +% FALSE. +% +% Strict page checking works by the \checkoddpage command generating +% a label and then checking the \pageref for the label (actually, a special +% version of \pageref is required and is used internally by \checkoddpage). +% This mechanism requires at least two LaTeX passes to ensure that +% the labels have settled (on the initial pass there will be no labels +% in the *.aux file to be checked). +% +% The label identifier is composed of the command \cplabel +% and an automatically generated number. \cplabel, initially +% defined as `^_', can be changed in the preamble if it will cause +% a clash with any author-defined labels. The default labels will +% be of the form `^_N' where N is a positive integer. +% +% The package option `strict' turns on strict page checking --- the default +% is not to use strict checking. Strict page checking can be turned on or +% off at any time by the commands \strictpagecheck or \easypagecheck. +% The easy page check just tests the page number to see if it is odd or even, +% which does not always give the correct result because of TeX's asynchronous +% output mechanism. +% +%%%%%%%%%%%%% +% adjustwidth +%%%%%%%%%%%%% +% Within an adjustwidth environment the left and right margins can be +% adjusted. The environment takes two required length arguments: +% +% \begin{adjustwidth}{leftmargin}{rightmargin} +% +% A positive length value will increase the relevant margin (shortening +% the text lines) while a negative length value will decrease the margin +% (lengthening text lines). An empty length argument means no change +% to the margin. At the end of the environment the margins revert to +% their original values. +% +% For example, to extend the text into the right margin: +% \begin{adjustwidth}{}{-8em} +% +% The starred version, adjustwidth*, causes the values of the +% margins to switch between odd and even pages. +% +% If the document is being set twosided it might be advantageous +% to have any wider text extending into the outside margin. This +% could be done via the optional argument, as: +% \begin{adjustwidth*}{}{-8em} +% +% To have the adjusted text horizontally centered with respect to +% any surrounding text, the margins should be adjusted equally: +% \begin{adjustwidth}{-4em}{-4em} +% +% For interest, \begin{quotation} is pretty much equivalent +% to \begin{adjustwidth}{2.5em}{2.5em} +% +% The environment may also be used inside a float if the contents are +% a bit too wide for the text block, but can still fit within the physical +% page: +% \begin{figure} +% \begin{adjustwidth}{-2em}{-2em} +% \includegraphics{wide} +% \caption{Wide figure} +% \end{adjustwidth} +% \end{figure} +% +% Sometimes, because of the asynchronous nature of the TeX output +% routine, the margin switching may be incorrect (like \marginpar sometimes) +% near the top of a page. This can be corrected by using the package +% option `strict' (i.e., \usepackage[strict]{chngpage}), which causes +% adjustwidth to use the \checkoddpage command (see below). +% +% A disadvantage of the strict option is that the package generates +% a new label for each adjustwidth environment, and TeX may run out +% of space if there are an excessive number of labels in the document. +% +% Whether or not the strict option is used, `strict adjustwidths' +% can be turned on by putting the command \strictpagecheck before +% the environment, and turned off by using \easypagecheck. +% +% NOTE: In a twocolumn document, the adjustwidth environment +% treats both columns equally. For example, if the width is meant +% to be wider at the outer margin, then on odd pages the extra width +% will be at the right of any column, and on even pages the extra +% will be at the left of any column. You can get interesting effects +% by careful hand tuning on two column pages. +% +%%%%%%%%%%%%% +% \changetext +%%%%%%%%%%%%% +% The \changetext command is for changing the size and horizontal position +% of the text block on a page. The command takes 5 arguments, each of which +% is a length or is empty. i.e., +% +% \changetext{textheight}{textwidth}{evensidemargin}{oddsidemargin}{columnsep} +% +% The given lengths are added to the corresponding current lengths and +% the remainder of the current page is typeset using the changed text block +% layout. The new layout remains in effect until another \change... command +% is issued. +% +%%%%%%%%%%%%% +% \changepage +%%%%%%%%%%%%% +% The \changepage command is for changing the general layout of +% a page. The command takes 9 arguments, each of which is a length or is empty. +% The first 5 arguments are the same as for \changetext and have the same effect. +% The last four arguments are: +% +% \changepage{5 args}{topmargin}{headheight}{headsep}{footskip} +% +% These lengths are added to the corresponding current lengths and +% thus modify the vertical positions of the elements of the page. The +% remainder of the current page is typeset using the changed text block +% and page layout. The new layout remains in effect until another +% \change... command is issued. +% +% NOTE 1: Not supplying a value for a length argument is equivalent +% to giving it a zero length value. +% +% NOTE 2: For any given page, everything is constant except for the textwidth +% and columnsep (for example, what is the meaning of two +% topmargins on a single column page?). +% It is therefore best to change anything else at the +% start of a new page. Further, any changes only apply to whole +% paragraphs. If you want an odd shaped paragraph use either +% the hanging package or the TeX \parshape command. +% +% For example, to change from single column pages to double column +% pages where the text block is both shorter and wider, then to revert +% back to the initial layout: +% ... single column normal page +% \newpage % or \clearpage +% \changetext{-5\baselineskip}{10em}{-5em}{-5em}{} +% \twocolumn +% ... two column pages +% \clearpage +% \changetext{5\baselineskip}{-10em}{5em}{5em}{} +% \onecolumn +% ... normal pages +% +% Note the adjustments to the margins which will keep the vertical centerline +% of the textblock at the same position on the page. +% +% As another example, to increase the width of a single paragraph: +% +% \changetext{0pt}{5em}{}{}{}% +% Start of wider paragraph text ... +% ... end of paragraph. +% +% \changetext{0pt}{-5em}{}{}{} +% Start of a normal paragraph ... +% +% Under some circumstances you can include a \change... command as part of +% the argument to \afterpage (from the afterpage package) and it may work. +% Similarly it may work in a heading style used for \thispagestyle to change +% a single page. +% +% +% Changes in version 1.0a (2008/08/15) +% ---------------------- +% o Fixed typo (a missing `p', courtesy Will Robertson) +% +% Changes in version 1.0 (2008/03/22) +% ---------------------- +% o First public release +% +% Peter W. +% + diff --git a/changelog b/changelog index 27cff67..601a4d7 100644 --- a/changelog +++ b/changelog @@ -1,3 +1,5 @@ +20140605 tpd src/axiom-website/patches.html 20140605.02.tpd.patch +20140605 tpd books/bookvolbib add Special Topics / Polynomial GCD 20140605 tpd src/axiom-website/patches.html 20140605.01.tpd.patch 20140605 tpd book/*.txt email cleanup 20140604 tpd src/axiom-website/patches.html 20140604.01.tpd.patch diff --git a/src/axiom-website/patches.html b/src/axiom-website/patches.html index 498937a..3e8b09c 100644 --- a/src/axiom-website/patches.html +++ b/src/axiom-website/patches.html @@ -4380,6 +4380,8 @@ book/*.txt email cleanup books/dvipdfm.def added to fix missing file in latex builds 20140605.01.tpd.patch book/*.txt email cleanup +20140605.02.tpd.patch +books/bookvolbib add Special Topics / Polynomial GCD