summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/doc/latex/algorithms/algorithms.tex
diff options
context:
space:
mode:
Diffstat (limited to 'Master/texmf-dist/doc/latex/algorithms/algorithms.tex')
-rw-r--r--Master/texmf-dist/doc/latex/algorithms/algorithms.tex843
1 files changed, 0 insertions, 843 deletions
diff --git a/Master/texmf-dist/doc/latex/algorithms/algorithms.tex b/Master/texmf-dist/doc/latex/algorithms/algorithms.tex
deleted file mode 100644
index 251c1bad5ca..00000000000
--- a/Master/texmf-dist/doc/latex/algorithms/algorithms.tex
+++ /dev/null
@@ -1,843 +0,0 @@
-% ALGORITHMS for LaTeX version 2e
-%
-% Current maintainer: Rogério Brito <rbrito@ime.usp.br>
-% Previous maintainer: Peter Williams <pwil3058@bigpond.net.au>
-%
-% This document file is free software; you can redistribute it and/or
-% modify it under the terms of the GNU Lesser General Public License as
-% published by the Free Software Foundation; either version 2 of the
-% License, or (at your option) any later version.
-%
-% This document file is distributed in the hope that it will be useful, but
-% WITHOUT ANY WARRANTY; without even the implied warranty of
-% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser
-% General Public License for more details.
-%
-% You should have received a copy of the GNU Lesser General Public License
-% along with this document file; if not, write to the Free Software
-% Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
-% USA.
-%
-\documentclass[letterpaper]{article}
-
-\usepackage[latin1]{inputenc}
-\usepackage[T1]{fontenc}
-\usepackage{lmodern}
-\usepackage[pdfstartview={FitH}]{hyperref}
-\usepackage{algorithm}
-\usepackage{algorithmic}
-\usepackage{amsthm}
-\usepackage{multicol}
-
-\title{Algorithms}
-\author{Rogério Brito\\
- \href{mailto:rbrito@ime.usp.br}{rbrito@ime.usp.br}\thanks{Sincere thanks
- go to the original maintainer of this package, Peter Williams, and for
- being kind enough to allow me to continue with his quite useful work.}}
-
-\newcommand{\keyword}[1]{\texttt{#1}}
-\newcommand{\filename}[1]{\texttt{#1}}
-
-\setcounter{tocdepth}{2}
-
-\begin{document}
-\addtocontents{toc}{\protect\begin{multicols}{2}}
-\maketitle
-\tableofcontents
-%\listofalgorithms
-
-\section{Introduction}
-
-This package provides two environments, \keyword{algorithmic} and
-\keyword{algorithm}, which are designed to be used together but may,
-depending on the necessities of the author, be used separately.
-
-The \keyword{algorithmic} environment provides an environment for
-describing algorithms and the \keyword{algorithm} environment provides a
-``float'' wrapper for algorithms (implemented using
-\keyword{algorithmic} or some other method at the author's option). The
-reason that two environments are provided is to allow the author maximum
-flexibility.
-
-This work may be distributed and/or modified under the conditions of the
-GNU Lesser General Public License as published by the Free Software
-Foundation (see the file \filename{COPYING} included in this package).
-Currently, this package consists of three files:
-\filename{algorithm.sty}, \filename{algorithmic.sty} and
-\filename{algorithms.tex} (the source of this document). This is likely
-to change in the near future.
-
-\section[Environment: \keyword{algorithmic}]%
-{The \keyword{algorithmic} Environment}
-\label{sec:algorithmic-envir}
-Within an \keyword{algorithmic} a number of commands for typesetting
-popular algorithmic constructs are available. In general, the commands
-provided can be arbitrarily nested to describe quite complex algorithms.
-An optional argument to the \verb+\begin{algorithmic}+ statement can be
- used to turn on line numbering by giving a positive integer indicating
- the required frequency of line numbering. For example,
- \verb+\begin{algorithmic}[5]+ would cause every fifth line to be
- numbered.
-
-\subsection{The Simple Statement}
-
-The simple statement takes the form
-\begin{verbatim}
-\STATE <text>
-\end{verbatim}
-and is used for simple statements, e.g.
-\begin{verbatim}
-\begin{algorithmic}
-\STATE $S \leftarrow 0$
-\end{algorithmic}
-\end{verbatim}
-would produce
-\begin{algorithmic}
- \STATE $S \leftarrow 0$
-\end{algorithmic}
-and with line numbering selected for every line using
-\begin{verbatim}
-\begin{algorithmic}[1]
-\STATE $S \leftarrow 0$
-\end{algorithmic}
-\end{verbatim}
-would produce
-\begin{algorithmic}[1]
- \STATE $S \leftarrow 0$
-\end{algorithmic}
-For users of earlier versions of \keyword{algorithmic} this construct is
-a cause of an incompatibility. In the earlier version, instead of
-starting simple statements with the \verb+\STATE+ command, simple
-statements were entered as free text and terminated with \verb+\\+
-command. Unfortunately, this simpler method failed to survive the
-modifications necessary for statement numbering. However, the \verb+\\+
-command can still be used to force a line break within a simple
-statement.
-
-%\subsection{The \emph{if-then-else} Statement}
-\subsection{The \emph{if-then-else} Construct}
-
-The \emph{if-then-else} construct takes the forms.
-\begin{verbatim}
-\IF{<condition>} <text> \ENDIF
-\IF{<condition>} <text1> \ELSE <text2> \ENDIF
-\IF{<condition1>} <text1> \ELSIF{<condition2>} <text2> \ELSE <text3> \ENDIF
-\end{verbatim}
-In the third of these forms there is no limit placed on the number of
-\verb+\ELSIF{<C>}+ that may be used. For example,
-\begin{verbatim}
-\begin{algorithmic}
-\IF{some condition is true}
-\STATE do some processing
-\ELSIF{some other condition is true}
-\STATE do some different processing
-\ELSIF{some even more bizarre condition is met}
-\STATE do something else
-\ELSE
-\STATE do the default actions
-\ENDIF
-\end{algorithmic}
-\end{verbatim}
-would produce
-\begin{algorithmic}
- \IF{some condition is true}
- \STATE do some processing
- \ELSIF{some other condition is true}
- \STATE do some different processing
- \ELSIF{some even more bizarre condition is met}
- \STATE do something else
- \ELSE
- \STATE do the default actions
- \ENDIF
-\end{algorithmic}
-with appropriate indentations.
-
-\subsection{The \emph{for} Loop}
-
-The \emph{for} loop takes the forms.
-\begin{verbatim}
-\FOR{<condition>} <text> \ENDFOR
-\FORALL{<condition>} <text> \ENDFOR
-\end{verbatim}
-For example,
-\begin{verbatim}
-\begin{algorithmic}
-\FOR{$i=0$ to $10$}
-\STATE carry out some processing
-\ENDFOR
-\end{algorithmic}
-\end{verbatim}
-produces
-\begin{algorithmic}
- \FOR{$i=0$ to $10$}
- \STATE carry out some processing
- \ENDFOR
-\end{algorithmic}
-and
-\begin{verbatim}
-\begin{algorithmic}[1]
-\FORALL{$i$ such that $0\leq i\leq 10$}
-\STATE carry out some processing
-\ENDFOR
-\end{algorithmic}
-\end{verbatim}
-produces
-\begin{algorithmic}[1]
- \FORALL{$i$ such that $0\leq i\leq 10$}
- \STATE carry out some processing
- \ENDFOR
-\end{algorithmic}
-
-\subsection{The \emph{while} Loop}
-
-The \emph{while} loop takes the form.
-\begin{verbatim}
-\WHILE{<condition>} <text> \ENDWHILE
-\end{verbatim}
-For example,
-\begin{verbatim}
-\begin{algorithmic}
-\WHILE{some condition holds}
-\STATE carry out some processing
-\ENDWHILE
-\end{algorithmic}
-\end{verbatim}
-produces
-\begin{algorithmic}
- \WHILE{some condition holds}
- \STATE carry out some processing
- \ENDWHILE
-\end{algorithmic}
-
-\subsection{The \emph{repeat-until} Loop}
-
-The \emph{repeat-until} loop takes the form.
-\begin{verbatim}
-\REPEAT <text> \UNTIL{<condition>}
-\end{verbatim}
-For example,
-\begin{verbatim}
-\begin{algorithmic}
-\REPEAT
-\STATE carry out some processing
-\UNTIL{some condition is met}
-\end{algorithmic}
-\end{verbatim}
-produces
-\begin{algorithmic}
- \REPEAT
- \STATE carry out some processing
- \UNTIL{some condition is met}
-\end{algorithmic}
-
-\subsection{The Infinite Loop}
-
-The infinite loop takes the form.
-\begin{verbatim}
-\LOOP <text> \ENDLOOP
-\end{verbatim}
-For example,
-\begin{verbatim}
-\begin{algorithmic}
-\LOOP
-\STATE this processing will be repeated forever
-\ENDLOOP
-\end{algorithmic}
-\end{verbatim}
-produces
-\begin{algorithmic}
- \LOOP
- \STATE this processing will be repeated forever
- \ENDLOOP
-\end{algorithmic}
-
-\subsection{The Precondition}
-
-The precondition (that must be met if an algorithm is to correctly
-execute) takes the form:
-\begin{verbatim}
-\REQUIRE <text>
-\end{verbatim}
-For example,
-\begin{verbatim}
-\begin{algorithmic}
-\REQUIRE $x \neq 0$ and $n \geq 0$
-\end{algorithmic}
-\end{verbatim}
-produces
-\begin{algorithmic}
- \REQUIRE $x \neq 0$ and $n \geq 0$
-\end{algorithmic}
-
-\subsection{The Postcondition}
-
-The postcondition (that must be met after an algorithm has correctly
-executed) takes the form:
-\begin{verbatim}
-\ENSURE <text>
-\end{verbatim}
-For example,
-\begin{verbatim}
-\begin{algorithmic}
-\ENSURE $x \neq 0$ and $n \geq 0$
-\end{algorithmic}
-\end{verbatim}
-produces
-\begin{algorithmic}
- \ENSURE $x \neq 0$ and $n \geq 0$
-\end{algorithmic}
-
-\subsection{Returning Values}
-
-The \keyword{algorithmic} environment offers a special statement for
-explicitly returning values in algorithms. It has the syntax:
-\begin{verbatim}
-\RETURN <text>
-\end{verbatim}
-For example,
-\begin{verbatim}
-\begin{algorithmic}
-\RETURN $(x+y)/2$
-\end{algorithmic}
-\end{verbatim}
-produces
-\begin{algorithmic}
- \RETURN $(x+y)/2$
-\end{algorithmic}
-
-
-\subsubsection{The ``true'' and ``false'' Values}
-
-Since many algorithms have the necessity of returning \emph{true} or
-\emph{false} values, \keyword{algorithms}, starting with version
-2006-06-02, includes the keywords \verb+\TRUE+ and \verb+\FALSE+,
-which are intented to print the values in a standard fashion, like the
-following snippet of an algorithm to decide if an integer $n$ is even or
-odd:
-\begin{verbatim}
-\begin{algorithmic}
- \IF{$n$ is odd}
- \RETURN \TRUE
- \ELSE
- \RETURN \FALSE
- \ENDIF
-\end{algorithmic}
-\end{verbatim}
-The code above produces the following output:
-\begin{algorithmic}
- \IF{$n$ is odd}
- \RETURN \TRUE
- \ELSE
- \RETURN \FALSE
- \ENDIF
-\end{algorithmic}
-
-\subsection{Printing Messages}
-
-Another feature of the \keyword{algorithmic} environment is that it
-currently provides a standard way of printing values (which is an
-operation used enough to merit its own keyword). It has the syntax:
-\begin{verbatim}
-\PRINT <text>
-\end{verbatim}
-For example,
-\begin{verbatim}
-\begin{algorithmic}
-\PRINT \texttt{``Hello, World!''}
-\end{algorithmic}
-\end{verbatim}
-produces
-\begin{algorithmic}
- \PRINT \texttt{``Hello, World!''}
-\end{algorithmic}
-
-\subsection{Comments}
-
-Comments may be inserted at most points in an algorithm using the form:
-\begin{verbatim}
-\COMMENT{<text>}
-\end{verbatim}
-For example,
-\begin{verbatim}
-\begin{algorithmic}
-\STATE do something \COMMENT{this is a comment}
-\end{algorithmic}
-\end{verbatim}
-produces
-\begin{algorithmic}
- \STATE do something \COMMENT{this is a comment}
-\end{algorithmic}
-Because the mechanisms used to build the various algorithmic structures
-make it difficult to use the above mechanism for placing comments at the
-end of the first line of a construct, the commands \verb+\IF+,
-\verb+\ELSIF+, \verb+\ELSE+, \verb+\WHILE+, \verb+\FOR+, \verb+\FORALL+,
-\verb+\REPEAT+ and \verb+\LOOP+ all take an optional argument which will
-be treated as a comment to be placed at the end of the line on which
-they appear. For example,
-\begin{algorithmic}
- \REPEAT[this is comment number one]
- \IF[this is comment number two]{condition one is met}
- \STATE do something
- \ELSIF[this is comment number three]{condition two is met}
- \STATE do something else
- \ELSE[this is comment number four]
- \STATE do nothing
- \ENDIF
- \UNTIL{hell freezes over}
-\end{algorithmic}
-
-\subsection{An Example}
-
-The following example demonstrates the use of the \keyword{algorithmic}
-environment to describe a complete algorithm. The following input
-\begin{verbatim}
-\begin{algorithmic}
-\REQUIRE $n \geq 0$
-\ENSURE $y = x^n$
-\STATE $y \Leftarrow 1$
-\STATE $X \Leftarrow x$
-\STATE $N \Leftarrow n$
-\WHILE{$N \neq 0$}
-\IF{$N$ is even}
-\STATE $X \Leftarrow X \times X$
-\STATE $N \Leftarrow N / 2$
-\ELSE[$N$ is odd]
-\STATE $y \Leftarrow y \times X$
-\STATE $N \Leftarrow N - 1$
-\ENDIF
-\ENDWHILE
-\end{algorithmic}
-\end{verbatim}
-will produce
-\begin{algorithmic}
- \REQUIRE $n \geq 0$
- \ENSURE $y = x^n$
-
- \STATE $y \Leftarrow 1$
- \STATE $X \Leftarrow x$
- \STATE $N \Leftarrow n$
- \WHILE{$N \neq 0$}
- \IF{$N$ is even}
- \STATE $X \Leftarrow X \times X$
- \STATE $N \Leftarrow N / 2$
- \ELSE[$N$ is odd]
- \STATE $y \Leftarrow y \times X$
- \STATE $N \Leftarrow N - 1$
- \ENDIF
- \ENDWHILE
-\end{algorithmic}
-which is an algorithm for finding the value of a number taken to a
-non-negative power.
-
-\subsection[Options/Customization]%
-{Options and Customization}
-
-There is a single option, \keyword{noend}\label{kwd:noend} that may be
-invoked when the \texttt{algorithmic} package is loaded. With this
-option invoked the \emph{end} statements are omitted in the output.
-This allows space to be saved in the output document when this is an
-issue.
-
-\subsubsection{Changing Indentation}
-\label{sec:changing-indentation}
-In the spirit of saving vertical space (which is especially important
-when submitting a paper for a journal, where space is frequently limited
-for authors), the \keyword{algorithmic} environment offers, beginning
-with the version released in 2005-05-08, a way to control the amount of
-indentation that is used by a given algorithm.
-
-The amount of indentation to be used is given by the command
-\begin{verbatim}
-\algsetup{indent=lenght}
-\end{verbatim}
-where \emph{length} is any valid length used by \TeX. The default value
-of the indentation used by the \keyword{algorithmic} environment is $1$
-em (for ``backward compatibility reasons''), but a value of $2$ em or
-more is recommended, depending on the publication. For example, the
-snippet
-\begin{verbatim}
-\algsetup{indent=2em}
-\begin{algorithmic}[1]
- \STATE $a \Leftarrow 1$
- \IF{$a$ is even}
- \PRINT ``$a$ is even''
- \ELSE
- \PRINT ``$a$ is odd''
-\end{algorithmic}
-\end{verbatim}
-produces
-\algsetup{indent=2em}
-\begin{algorithmic}[1]
- \STATE $a \Leftarrow 1$
- \IF{$a$ is even}
- \PRINT ``$a$ is even''
- \ELSE
- \PRINT ``$a$ is odd''
- \ENDIF
-\end{algorithmic}
-while
-\begin{verbatim}
-\algsetup{indent=5em}
-\begin{algorithmic}[1]
- \STATE $a \Leftarrow 1$
- \IF{$a$ is even}
- \PRINT ``$a$ is even''
- \ELSE
- \PRINT ``$a$ is odd''
-\end{algorithmic}
-\end{verbatim}
-would produce
-\algsetup{indent=5em}
-\begin{algorithmic}[1]
- \STATE $a \Leftarrow 1$
- \IF{$a$ is even}
- \PRINT ``$a$ is even''
- \ELSE
- \PRINT ``$a$ is odd''
- \ENDIF
-\end{algorithmic}
-\algsetup{indent=1em}
-
-The intended use of this option is to allow the author to omit the
-\emph{end} (see Section~\ref{kwd:noend} for details) statements without
-loosing readability, by increasing the amount of indentation to a
-suitable level.
-
-\subsubsection{Changing Line Numbering}
-
-As mentioned in Section~\ref{sec:algorithmic-envir} and illustrated in
-Section~\ref{sec:changing-indentation}, \keyword{algorithms} already
-provides you with the possibility of numbering lines.
-
-Starting with the version released in 2005-07-05, you can now change two
-aspects of line numbering: the size of the line numbers (which, by
-default, is \verb+\footnotesize+) and the delimiter used to separate the
-line number from the code (which, by default, is \verb+:+, i.e., a
-colon).
-
-You can change the size of the line numbers using the command:
-\begin{verbatim}
-\algsetup{linenosize=size}
-\end{verbatim}
-where \emph{size} is any of the various commands provided by \LaTeX\ to
-change the size of the font to be used. Among others, useful values are
-\verb+\tiny+, \verb+\scriptsize+, \verb+\footnotesize+ and
-\verb+\small+. Please see the complete list of sizes in your \LaTeX\
-documentation.
-
-As another frequently requested feature, you can change the delimiter
-used with the line numbers by issuing the command:
-\begin{verbatim}
-\algsetup{linenodelimiter=delimiter}
-\end{verbatim}
-where \emph{delimiter} is any ``well-formed'' string, including the
-empty string. With this command, you can change the colon to a period
-(\verb+.+) by issuing the command
-\begin{verbatim}
-\algsetup{linenodelimiter=.}
-\end{verbatim}
-or even omit the delimiter, by specifying the empty string or a space
-(\verb+\ +), whatever seems best for your document.
-
-As an example of such commands, the code produced by
-\begin{verbatim}
-\algsetup{
- linenosize=\small,
- linenodelimiter=.
-}
-\begin{algorithmic}[1]
- \STATE $i \leftarrow 10$
- \RETURN $i$
-\end{algorithmic}
-\end{verbatim}
-would be something like
-
-\algsetup{
- linenosize=\small,
- linenodelimiter=.
-}
-\begin{algorithmic}[1]
- \STATE $i \leftarrow 10$
- \RETURN $i$
-\end{algorithmic}
-\algsetup{linenosize=\footnotesize,
- linenodelimiter=:}
-
-\subsubsection{Customization}
-
-In order to facilitate the use of this package with foreign languages,
-all of the words in the output are produced via redefinable macro
-commands. The default definitions of these macros are:
-\begin{verbatim}
-\newcommand{\algorithmicrequire}{\textbf{Require:}}
-\newcommand{\algorithmicensure}{\textbf{Ensure:}}
-\newcommand{\algorithmicend}{\textbf{end}}
-\newcommand{\algorithmicif}{\textbf{if}}
-\newcommand{\algorithmicthen}{\textbf{then}}
-\newcommand{\algorithmicelse}{\textbf{else}}
-\newcommand{\algorithmicelsif}{\algorithmicelse\ \algorithmicif}
-\newcommand{\algorithmicendif}{\algorithmicend\ \algorithmicif}
-\newcommand{\algorithmicfor}{\textbf{for}}
-\newcommand{\algorithmicforall}{\textbf{for all}}
-\newcommand{\algorithmicdo}{\textbf{do}}
-\newcommand{\algorithmicendfor}{\algorithmicend\ \algorithmicfor}
-\newcommand{\algorithmicwhile}{\textbf{while}}
-\newcommand{\algorithmicendwhile}{\algorithmicend\ \algorithmicwhile}
-\newcommand{\algorithmicloop}{\textbf{loop}}
-\newcommand{\algorithmicendloop}{\algorithmicend\ \algorithmicloop}
-\newcommand{\algorithmicrepeat}{\textbf{repeat}}
-\newcommand{\algorithmicuntil}{\textbf{until}}
-\newcommand{\algorithmicprint}{\textbf{print}}
-\newcommand{\algorithmicreturn}{\textbf{return}}
-\newcommand{\algorithmictrue}{\textbf{true}}
-\newcommand{\algorithmicfalse}{\textbf{false}}
-\end{verbatim}
-
-If you would like to change the definition of these commands to another
-content, then you should use, in your own document, the standard
-\LaTeX{} command \keyword{renewcommand}, with an usage like this:
-\begin{verbatim}
-\renewcommand{\algorithmicrequire}{\textbf{Input:}}
-\renewcommand{\algorithmicensure}{\textbf{Output:}}
-\end{verbatim}
-
-\paragraph{About the Way Comments Are Formatted}
-
-The formatting of comments is implemented via a single argument command
-macro which may also be redefined. The default definition is
-\begin{verbatim}
-\newcommand{\algorithmiccomment}[1]{\{#1\}}
-\end{verbatim}
-and another option that may be interesting for users familiar with
-C-like languages is to redefine the comments to be
-\begin{verbatim}
-\renewcommand{\algorithmiccomment}[1]{// #1}
-\end{verbatim}
-Comments produced this way would be like this:
-\renewcommand{\algorithmiccomment}[1]{// #1}
-\begin{algorithmic}
- \STATE $i \leftarrow i +1$ \COMMENT{Increments $i$}
-\end{algorithmic}
-This second way to present comments may become the default in a future
-version of this package.
-
-\section[Environment: \keyword{algorithm}]%
-{The \keyword{algorithm} Environment}
-
-\subsection{General}
-
-When placed within the text without being encapsulated in a floating
-environment \texttt{algorithmic} environments may be split over a page
-boundary, greatly detracting from their appearance.\footnote{This is the
- expected behaviour for floats in \LaTeX. If you don't care about
- having your algorithm split between pages, then one option that you
- have is to ignore the \texttt{algorithm} environment.} In addition, it
-is useful to have algorithms numbered for reference and for lists of
-algorithms to be appended to the list of contents. The
-\texttt{algorithm} environment is meant to address these concerns by
-providing a floating environment for algorithms.
-
-\subsection{An Example}
-To illustrate the use of the \texttt{algorithm} environment, the
-following text
-\begin{verbatim}
-\begin{algorithm}
-\caption{Calculate $y = x^n$}
-\label{alg1}
-\begin{algorithmic}
-\REQUIRE $n \geq 0 \vee x \neq 0$
-\ENSURE $y = x^n$
-\STATE $y \Leftarrow 1$
-\IF{$n < 0$}
-\STATE $X \Leftarrow 1 / x$
-\STATE $N \Leftarrow -n$
-\ELSE
-\STATE $X \Leftarrow x$
-\STATE $N \Leftarrow n$
-\ENDIF
-\WHILE{$N \neq 0$}
-\IF{$N$ is even}
-\STATE $X \Leftarrow X \times X$
-\STATE $N \Leftarrow N / 2$
-\ELSE[$N$ is odd]
-\STATE $y \Leftarrow y \times X$
-\STATE $N \Leftarrow N - 1$
-\ENDIF
-\ENDWHILE
-\end{algorithmic}
-\end{algorithm}
-\end{verbatim}
-produces Algorithm~\ref{alg1} which is a slightly modified version of
-the earlier algorithm for determining the value of a number taken to an
-integer power. In this case, provided the power may be negative
-provided the number is not zero.
-
-\begin{algorithm}[H]
- \caption{Calculate $y = x^n$}
- \label{alg1}
- \begin{algorithmic}
- \REQUIRE $n \geq 0 \vee x \neq 0$
- \ENSURE $y = x^n$
-
- \STATE $y \Leftarrow 1$
- \IF{$n < 0$}
- \STATE $X \Leftarrow 1 / x$
- \STATE $N \Leftarrow -n$
- \ELSE
- \STATE $X \Leftarrow x$
- \STATE $N \Leftarrow n$
- \ENDIF
-
- \WHILE{$N \neq 0$}
- \IF{$N$ is even}
- \STATE $X \Leftarrow X \times X$
- \STATE $N \Leftarrow N / 2$
- \ELSE[$N$ is odd]
- \STATE $y \Leftarrow y \times X$
- \STATE $N \Leftarrow N - 1$
- \ENDIF
- \ENDWHILE
- \end{algorithmic}
-\end{algorithm}
-
-The command \verb+\listofalgorithms+ may be used to produce a list of
-algorithms as part of the table contents as shown at the beginning of
-this document. An auxiliary file with a suffix of \texttt{.loa} is
-produced when this feature is used.
-
-\subsection{Options}
-
-The appearance of the typeset algorithm may be changed by use of the
-options: \texttt{plain}, \texttt{boxed} or \texttt{ruled} during the
-loading of the \texttt{algorithm} package. The default option is
-\texttt{ruled}.
-
-The numbering of algorithms can be influenced by providing the name of
-the document component within which numbering should be recommenced.
-The legal values for this option are: \texttt{part}, \texttt{chapter},
-\texttt{section}, \texttt{subsection}, \texttt{subsubsection} or
-\texttt{nothing}. The default value is \texttt{nothing} which causes
-algorithms to be numbered sequentially throughout the document.
-
-\subsection{Customization}
-
-In order to facilitate the use of this package with foreign languages,
-methods have been provided to facilitate the necessary modifications.
-
-The title used in the caption within \texttt{algorithm} environment can
-be set by use of the standard \verb+\floatname+ command which is
-provided as part of the \texttt{float} package which was used to
-implement this package. For example,
-\begin{verbatim}
-\floatname{algorithm}{Procedure}
-\end{verbatim}
-would cause \textbf{Procedure} to be used instead of \textbf{Algorithm}
-within the caption of algorithms.
-
-In a manner analogous to that available for the built in floating
-environments, the heading used for the list of algorithms may be changed
-by redefining the command \verb+listalgorithmname+. The default
-definition for this command is
-\begin{verbatim}
-\newcommand{\listalgorithmname}{List of Algorithms}
-\end{verbatim}
-
-\subsubsection{Placement of Algorithms}
-
-One important fact that many users may not have noticed is that the
-\texttt{algorithm} environment is actually built with the \texttt{float}
-package and \texttt{float}, in turn, uses David Carlisle's \textsf{here}
-style option. This means that the floats generated by the
-\texttt{algorithm} environment accept a special option, namely,
-\textbf{[H]}, with a capital `H', instead of the usual `h' offered by
-plain \LaTeX.
-
-This option works as a stronger request of ``please put the float
-here'': instead of just a suggestion for \LaTeX, it actually means ``put
-this float HERE'', which is something desired by many. The two
-algorithms typeset in this document use this option.
-
-\theoremstyle{definition}
-\newtheorem*{warning*}{Warning}
-
-\medskip
-\begin{warning*}
- You \emph{can't} use the `H' positioning option together with the
- usual `h' (for ``here''), `b' (for ``bottom'') etc. This is a
- limitation (as far as I know) of the \texttt{float.sty} package.
-\end{warning*}
-
-\section[References in Algorithms]%
-{Labels and References in Algorithms}
-
-With the release of 2005-07-05, now \keyword{algorithmic} accepts labels
-and references to specific lines of a given algorithm, so you don't have
-to hardcode the line numbers yourself when trying to explain what the
-code does in your texts. Thanks to Arnaud Legrand for the suggestion
-and patch for this highly missed feature.
-
-An example of its use is shown in Algorithm~\ref{alg2}.
-\begin{algorithm}[H]
- \caption{Calculate $y = x^n$}
- \label{alg2}
- \begin{algorithmic}[1]
- \REQUIRE $n \geq 0 \vee x \neq 0$
- \ENSURE $y = x^n$
- \STATE $y \Leftarrow 1$
- \IF{$n < 0$}
- \STATE $X \Leftarrow 1 / x$
- \STATE $N \Leftarrow -n$
- \ELSE
- \STATE $X \Leftarrow x$
- \STATE $N \Leftarrow n$
- \ENDIF
- \WHILE{$N \neq 0$}
- \IF{$N$ is even}\label{alg:n-is-even}
- \STATE $X \Leftarrow X \times X$
- \STATE $N \Leftarrow N / 2$
- \ELSE\label{alg:n-is-odd}
- \STATE $y \Leftarrow y \times X$
- \STATE $N \Leftarrow N - 1$
- \ENDIF
- \ENDWHILE
- \end{algorithmic}
-\end{algorithm}
-See that, in line~\ref{alg:n-is-even}, we deal with the case of $N$
-being even, while, in line~\ref{alg:n-is-odd}, we give treatment to the
-case of $N$ being odd. The numbers you see on this document were
-generated automatically from the source document.
-
-
-\section[Known Issues]{Issues Between \texttt{algorithms} and
- \href{http://www.ctan.org/tex-archive/help/Catalogue/entries/tocbibind.html}{\texttt{tocbibind}}
- or \href{http://www.ctan.org/tex-archive/help/Catalogue/entries/memoir.html}{\texttt{memoir}}}
-
-It
-\href{http://groups.google.com/group/comp.text.tex/browse_thread/thread/4094e0c4f4fbd83e/a80a3f4666c794f0?fwc=1}{has
- been discussed} in late 2005 that \texttt{algorithms} may have bad
-interactions with the
-\href{http://www.ctan.org/tex-archive/help/Catalogue/entries/tocbibind.html}{\texttt{tocbibind}}
-or the
-\href{http://www.ctan.org/tex-archive/help/Catalogue/entries/memoir.html}{\texttt{memoir}}
-package (which includes \texttt{tocbibind}).
-
-A workaround has been suggested for the problem. After including
-something like
-\begin{verbatim}
-\usepackage[nottoc]{tocbibind}
-\end{verbatim}
-in the preamble of your document, you can put, after
-\verb+\begin{document}+, the following snippet of code:
-\begin{verbatim}
-\renewcommand{\listofalgorithms}{\begingroup
- \tocfile{List of Algorithms}{loa}
-\endgroup}
-
-\makeatletter
-\let\l@algorithm\l@figure
-\makeatother
-\end{verbatim}
-which should make the command \verb+\listofalgorithms+ work as expected.
-
-\addtocontents{toc}{\protect\end{multicols}}
-\end{document}