%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % % % Scientific Word Wrap/Unwrap Version 2.5 % % % % If you are separating the files in this message by hand, you will % % need to identify the file type and place it in the appropriate % % directory. The possible types are: Document, DocAssoc, Other, % % Macro, Style, Graphic, PastedPict, and PlotPict. Extract files % % tagged as Document, DocAssoc, or Other into your TeX source file % % directory. Macro files go into your TeX macros directory. Style % % files are used by Scientific Word and do not need to be extracted. % % Graphic, PastedPict, and PlotPict files should be placed in a % % graphics directory. % % % % Graphic files need to be converted from the text format (this is % % done for e-mail compatability) to the original 8-bit binary format. % % The following C code will do this: % % % % void main() % % { % % unsigned char src_byte = 0; % % int src_mask = 1; % % unsigned char dst_byte = 0; % % int dst_mask = 1; % % % % while ((src_byte = getchar()) != EOF) { % % if (src_byte < 64) continue; // ignore whitespace % % src_mask = 1; % % % % while (src_mask < 64) { % % if (src_byte & src_mask) dst_byte |= dst_mask; % % % % src_mask = src_mask << 1; /* increment src_mask */ % % dst_mask = dst_mask << 1; /* increment dst_mask */ % % % % if (dst_mask == 256) { % % putchar(dst_byte); % % dst_byte = 0; dst_mask = 1; % % } % % } % % } % % } % % % % Put the code in a file called "convert.c" and compile it. For % % example, if you are using gcc compiler you would type: % % % % gcc convert.c -o convert % % % % If "source" is the name of your source graphic file and "dest" is % % to be the name of the converted graphic file then you would type: % % % % convert < source > dest % % % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % % % Files included: % % % % "\document\atk-jeon.tex", Document, 53885, 4/9/1998, 22:53:26, "" % % "\macros\amsfonts\amsfonts.sty", Macro, 7458, 3/1/1996, 4:18:40, "" % % "\document\sw20siam.sty", Macro, 802, 8/7/1996, 17:40:00, "" % % "\document\siamltex.sty", Macro, 18488, 8/7/1996, 17:40:26, "" % % "\document\tcilatex.tex", Macro, 35715, 7/18/1996, 17:05:32, "" % % "\macros\amsfonts\Umsa57.fd", Macro, 3013, 3/1/1996, 4:18:42, "" % % "\macros\amsfonts\Umsb57.fd", Macro, 3013, 3/1/1996, 4:18:42, "" % % "\macros\amsfonts\Ueuf57.fd", Macro, 3092, 3/1/1996, 4:18:40, "" % % "\macros\OMXcmex.fd", Macro, 2608, 3/1/1996, 4:19:42, "" % % "\document\thmsupp.tex", Macro, 558, 7/18/1996, 17:07:08, "" % % "\document\gnuindex.sty", Macro, 1370, 7/18/1996, 17:07:30, "" % % "\document\latexsym.sty", Macro, 4022, 7/18/1996, 17:07:58, "" % % "\document\thmsa.sty", Macro, 382, 7/18/1996, 17:08:24, "" % % "\document\thmsb.sty", Macro, 318, 7/18/1996, 17:08:46, "" % % "\document\thmsc.sty", Macro, 409, 7/18/1996, 17:09:10, "" % % "\document\thmsd.sty", Macro, 421, 7/18/1996, 17:09:56, "" % % % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%% Start \document\atk-jeon.tex %%%%%%%%%%%%%%%%%%%% %% This document created by Scientific Word (R) Version 2.5 %% Starting shell: sw20siam.shl \documentstyle[amsfonts,12pt,sw20siam]{siamltex} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %TCIDATA{TCIstyle=article/art1.lat,siam,sw20siam} %TCIDATA{Created=Sun Aug 11 22:03:44 1996} %TCIDATA{LastRevised=Tue Apr 07 20:52:33 1998} \input{tcilatex} \input{psfig} \begin{document} \author{Kendall Atkinson\thanks{% Dept of Mathematics, University of Iowa, Iowa City, IA 52242. This research is supported in part by NSF grant DMS-9403589} \and Youngmok Jeon\thanks{% Dept of Mathematics, A-Jou University, Su Won, Korea 441-749. The research is supported by Korean Ministry of Education under the grant number BSRI-96-1441.}} \title{Automatic Boundary Integral Equation Programs for the Planar Laplace Equation} \date{} \maketitle \begin{abstract} Algorithms with automatic error control are described for the solution of Laplace's equation on both interior and exterior regions, with both Dirichlet and Neumann boundary conditions. The algorithms are based on standard reformulations of each boundary value problem as a boundary integral equation of the second kind. The Nystr\"{o}m method is used to solve the integral equations, and convergence of arbitrary high order is observed when the boundary data is analytic. The Kelvin transformation is introduced to allow a simple conversion between internal and external problems. Two Fortran program implementations, DRCHLT and NEUMAN, are defined, analyzed, and illustrated. \end{abstract} \keyphrases{Boundary integral equation, Laplace's equation, numerical integral equation, computer program} \AMclass{Primary: 65N38; Secondary 65R20, 45L10} \section{Introduction\label{section-1}} This paper presents two programs with automatic error control for solving Laplace's equation in two dimensions. The programs are based on solving standard boundary integral equation (BIE) reformulations of various boundary value problems. Let $\Omega $ denote a bounded simply connected planar region with a smooth boundary $\Gamma $. The programs treat both the Dirichlet and Neumann problems, for both interior and exterior regions, for such regions $\Omega $. We use standard BIE reformulations of Laplace's equation, and the numerical methods are also quite standard. The programs are of interest in that they are automatic in selecting various problem parameters so as to ensure a requested error tolerance. Moreover, we believe the programs are robust and relatively efficient, especially when the requested error tolerances are small or when the region $\Omega $ is not convex and has a complicated boundary. The NAG library \cite{nag} contains a routine {\it D03EAF }for using boundary integral representations to solve Laplace's equation. That program requires the user to specify the discretization parameter, and it does not contain any means to estimate the error in the computed solution, in contrast to our codes. For that reason, we have not included any numerical comparisons with {\it D03EAF}. Our codes, however, are restricted to smooth boundaries $\Gamma $, which is not a restriction with the NAG routine. In \S 2, we review the reformulation of the interior Dirichlet problem and the exterior Neumann problems as boundary integral equations; and we describe the numerical method used to solve these BIE. In \S 3, this work is extended to the exterior Dirichlet and interior Neumann problems, by means of applying a Kelvin transformation to convert the problems to those treated in \S 2. In \S 4, we describe the algorithms DRCHLT for the solution of the Dirichlet problem and NEUMAN for the Neumann problem. Numerical examples which explore the behaviour of the algorithms are given in \S 5. We note particularly the numerical example for the ``amoeba'' boundary of Figure \ref {amoeba}, as it is a region which would give a great deal of trouble to finite element and finite difference codes. \section{The Interior Dirichlet and Exterior Neumann Problems\label% {section-2}} The material of this and the following section is well-known, and the reader can find an extensive development of it in \cite[Chap. 7]{atkinson96}, Kress \cite{kress}, or in a number of other texts on boundary integral equations. Consider first the interior Dirichlet problem \begin{equation} \begin{array}{rlll} \Delta u(A) & = & 0, & A\in \Omega \medskip \\ u(P) & = & f(P), & P\in \Gamma \end{array} \label{2.1} \end{equation} and assume that $\Gamma $ has a parameterization which is at least twice continuously differentiable. Represent $u$ as a double layer potential \begin{equation} u(A)=-\int_{\Gamma }\rho (Q)\frac{\partial }{\partial n_{Q}}\left[ \log \left| A-Q\right| \right] dS_{Q},\quad A\in \Omega \label{2.2} \end{equation} in which $n_{Q}$ is the outward unit normal at $Q\in \Gamma $. Then $\rho $ satisfies the uniquely solvable integral equation \begin{equation} -\pi \rho (P)-\int_{\Gamma }\rho (Q)\frac{\partial }{\partial n_{Q}}\left[ \log \left| P-Q\right| \right] dS_{Q}=f(P),\quad P\in \Gamma \label{2.3} \end{equation} Parameterize $\Gamma $ by ${\bf r}(t)=\left( x(t),y(t)\right) $, $0\le t\le 2\pi $, where we assume $\left| {\bf r}^{\prime }(t)\right| \ne 0$ for all $% t $. Rewrite (\ref{2.3}) as \begin{equation} -\pi \rho (t)-\int_{0}^{2\pi }\rho (s)K(t,s)\,ds=f(t),\quad 0\le t\le 2\pi \label{2.4} \end{equation} In this, we have identified $\rho ({\bf r}(t))$ with $\rho (t)$, for simplicity. For the kernel function, \begin{equation} K(t,s)=\left\{ \begin{array}{ll} \dfrac{y^{\prime }(s)\left[ x(s)-x(t)\right] -x^{\prime }(s)\left[ y(s)-y(t)\right] }{\left[ x(s)-x(t)\right] ^{2}+\left[ y(s)-y(t)\right] ^{2}}% , & t\ne s\medskip \\ \dfrac{y^{\prime \prime }(t)x^{\prime }(t)-x^{\prime \prime }(t)y^{\prime }(t)}{2\left[ x^{\prime }(t)^{2}+y^{\prime }(t)^{2}\right] }, & t=s \end{array} \right. \label{2.4a} \end{equation} With the assumption that ${\bf r}(t)$ is at least twice continuously differentiable, the kernel function $K(t,s)$ is continuous; and for ${\bf r}% \in C^{q+2}$, it follows that $K\in C^{q}$ with respect to all partial derivatives of $K$. We write (\ref{2.4}) symbolically as \[ \left( -\pi -{\cal K}\right) \rho =f \] The most efficient way to solve (\ref{2.4}) is to use the Nystr\"{o}m method with the rectangle rule. This is because the integral in (\ref{2.4}) is periodic in $s$ with period $2\pi $, and for such cases, the rectangle rule (or equivalently the trapezoidal rule, due to periodicity) is a very rapidly convergent method. For example, if $g$ belongs to the Sobolev space $% H^{\beta }[0,2\pi ]$ for some $\beta >\frac{1}{2}$, and if $g$ is periodic on $[0,2\pi ]$, then \begin{equation} \left| \int_{0}^{2\pi }g(s)\,ds-h\sum_{j=1}^{n}g\left( s_{j}\right) \right| \le \frac{\sqrt{4\pi \zeta (2\beta )}}{n^{\beta }}\left\| g\right\| _{H^{\beta }},\quad n\ge 1 \label{2.5} \end{equation} with $h=2\pi /n,$ $s_{j}=jh$ for $j=1,...,n$, and $\zeta (t)$ the Riemann Zeta function. The Nystr\"{o}m approximation of (\ref{2.4}) is given by \begin{equation} -\pi \rho _{n}(t)-h\sum_{j=1}^{n}K(t,s_{j})\rho _{n}(s_{j})=f(t),\quad 0\le t\le 2\pi \label{2.6} \end{equation} We write this symbolically as \[ \left( -\pi -{\cal K}_{n}\right) \rho _{n}=f \] with the numerical integral operator ${\cal K}_{n}$ defined implicitly by (% \ref{2.6}). The equation (\ref{2.6}) is equivalent in solvability to the linear system $_{{}}$% \begin{equation} -\pi \rho _{n}(s_{i})-h\sum_{j=1}^{n}K(s_{i},s_{j})\rho _{n}(s_{j})=f(s_{i}),\quad i=1,...,n \label{2.7} \end{equation} The equivalence of these two formulas is given by the {\it Nystr\"{o}m interpolation formula} \begin{equation} \rho _{n}(t)=-\frac{1}{\pi }\left[ f(t)+h\sum_{j=1}^{n}K(t,s_{j})\rho _{n}(s_{j})\right] ,\quad 0\le t\le 2\pi \label{2.8} \end{equation} enabling one to extend the solution $\left\{ \rho _{n}(s_{i})\right\} $ of (% \ref{2.7}) to $\rho _{n}(s)$ for general $s$. The equivalence is discussed in \cite[p. 101]{atkinson96}. We write (\ref{2.7}) symbolically as \begin{equation} \left( -\pi -K_{n}\right) {\bf \rho }_{n}={\bf f}_{n},\quad \quad {\bf \rho }% _{n},{\bf f}_{n}\in {\Bbb R}^{n} \label{2.8a} \end{equation} By standard error analysis results (e.g. see \cite[Chap. 4]{atkinson96}), the operators $-\pi -{\cal K}_{n}$ are invertible for all sufficiently large $n$, say $n\ge n_{0}$, and their inverses are uniformly bounded. Moreover, \begin{equation} \left\| \rho -\rho _{n}\right\| _{\infty }\le \left\| \left( -\pi -{\cal K}% _{n}\right) ^{-1}\right\| \left\| {\cal K}\rho -{\cal K}_{n}\rho \right\| _{\infty },\quad n\ge n_{0} \label{2.9} \end{equation} Thus the smoother the curve and the smoother the data $f$, the faster the uniform convergence of $\rho _{n}$ to $\rho $. Precise bounds can be obtained from either (\ref{2.5}) or the Euler-MacLaurin formula (cf. \cite[p. 285]{atkinson89}). Using the latter, we have the following result. Let $\Gamma $ be $\left( q+2\right) $-times differentiable, let $\rho \in C^{p}(\Gamma )$, and let $r=\min \left\{ p,q\right\} $. Then \begin{equation} \left\| \rho -\rho _{n}\right\| _{\infty }\le \frac{c}{n^{r}}\left\| \rho ^{(r)}\right\| _{\infty } \label{2.10} \end{equation} for some $c$ independent of $n$ and $r$. By differentiating the equations (% \ref{2.4}) and (\ref{2.6}) with respect to $t$, we can also obtain bounds on the rate of convergence of $\rho _{n}^{(k)}$ to $\rho ^{(k)}$: \[ \left\| \rho ^{(k)}-\rho _{n}^{(k)}\right\| _{\infty }\le \frac{c_{r,k}}{% n^{r-k}}\left\| \rho ^{(r)}\right\| _{\infty },\quad \quad k=1,...,r-1 \] for some $c_{r,k}$ independent of $n$. To solve approximately the Dirichlet problem (\ref{2.1}), introduce the approximating potential \begin{equation} u_{n}(A)=-\int_{\Gamma }\rho _{n}(Q)\frac{\partial }{\partial n_{Q}}\left[ \log \left| A-Q\right| \right] dS_{Q},\quad A\in \Omega \label{2.10b} \end{equation} Using the parameterization of $\Gamma $, rewrite this as \begin{equation} u_{n}(A)=-\int_{0}^{2\pi }\rho _{n}(s)K_{A}(s)\,ds,\quad A\in \Omega \label{2.11} \end{equation} \[ K_{A}(s)=\left| {\bf r}^{\prime }(s)\right| \left. \frac{\partial }{\partial n_{Q}}\left[ \log \left| A-Q\right| \right] \right| _{Q={\bf r}(s)} \] The function $u_{n}$ is harmonic on $\Omega $. To look at the error $u-u_{n}$% , note first that by the maximum principle, \begin{equation} \left| u(A)-u_{n}(A)\right| \le \max_{P\in \Gamma }\left| u(P)-u_{n}(P)\right| \label{2.12} \end{equation} Let $A\rightarrow P\in \Gamma $ in (\ref{2.10b}) and then subtract from (\ref {2.3}) to obtain \[ \begin{array}{r} -\pi \left[ \rho (P)-\rho _{n}(P)\right] -\int_{\Gamma }\left[ \rho (Q)-\rho _{n}(Q)\right] \dfrac{\partial }{\partial n_{Q}}\left[ \log \left| P-Q\right| \right] dS_{Q}\medskip \quad \\ =u(P)-u_{n}(P),\quad P\in \Gamma \end{array} \] Then \[ \max_{P\in \Gamma }\left| u(P)-u_{n}(P)\right| \le \left( \pi +\left\| {\cal % K}\right\| \right) \left\| \rho -\rho _{n}\right\| _{\infty } \] When combined with (\ref{2.12}), \begin{equation} \left| u(A)-u_{n}(A)\right| \le \left( \pi +\left\| {\cal K}\right\| \right) \left\| \rho -\rho _{n}\right\| _{\infty },\quad A\in \Omega \label{2.13} \end{equation} If the region $\Omega $ is convex, then $\left\| {\cal K}\right\| =\pi $ and the bound simplifies further. In the program, we use the approximation \[ \left\| {\cal K}\right\| =\max_{t}\int_{0}^{2\pi }\left| K(t,s)\right| ds\doteq h\max_{1\le i\le n}\sum_{j=1}^{n}\left| K(s_{i},s_{j})\right| \] It is not difficult to see that $K_{A}(s)$ is very peaked for $A$ near to $% \Gamma $, with the maximum peaking occurring at the point of $\Gamma $ nearest to $A$. For that reason, we use a standard integral identity to write \begin{equation} u_{n}(A)=-2\pi \rho _{n}(s^{*})-\int_{0}^{2\pi }\left[ \rho _{n}(s)-\rho _{n}(s^{*})\right] K_{A}(s)\,ds,\quad A\in \Omega \label{2.14} \end{equation} with $s^{*}$ chosen to approximately minimize $\left| {\bf r}(s)-A\right| $. This new integral is slightly better in terms of its behaviour for $s$ near to $s^{*}$. This is a standard technique, long used to reduce the effect of the peak in $K_{A}(s)$. To evaluate (\ref{2.14}), we again use the rectangle rule, say with $m$ nodes: \begin{equation} u_{n,m}(A)=-2\pi \rho _{n}(s^{*})-\eta \sum_{j=1}^{m}\left[ \rho _{n}(\sigma _{j})-\rho _{n}(s^{*})\right] K_{A}(\sigma _{j}) \label{2.15} \end{equation} with $\eta =2\pi /m$, $\sigma _{j}=j\eta $, $j=1,2,...,m$. In our program, we begin with $n=n_{0}=16$, doubling as needed. The values of $m$ begin with $m=m_{0}=32$; and $m$ is doubled as needed. When $m$ exceeds $n$, the Nystr\"{o}m formula (\ref{2.8}) is used to extend $\rho _{n}$ to new argument values; and these are saved for possible use with other points $A$. The size of $m$ is limited by the size of the workspace given to the subroutine DRCHLT. For the total error in $u_{n,m}(A)$, \begin{equation} \begin{array}{lll} \left| u(A)-u_{n,m}(A)\right| & \le & \left| u(A)-u_{n}(A)\right| +\left| u_{n}(A)-u_{n,m}(A)\right| \medskip \\ & = & \left\{ \dfrac{c}{n^{r}}\left( \pi +\left\| {\cal K}\right\| \right) +% \dfrac{c^{\prime }}{\delta ^{r}m^{r}}\right\} \left\| \rho ^{(r)}\right\| _{\infty } \end{array} \label{2.16} \end{equation} In this, the bound on $\left| u_{n}(A)-u_{n,m}(A)\right| $ comes from \cite {mclean}, with \[ \delta =\min_{P\in \Gamma }\left| A-P\right| \] The power of $\delta $ in the denominator would be one greater if (\ref {2.10b}) had been used rather than (\ref{2.14}). \subsection{The exterior Neumann problem\label{section-2.1}} Consider the exterior Neumann problem \begin{equation} \begin{array}{rlll} \Delta u(A) & = & 0, & A\in \Omega _{e}\medskip \\ \dfrac{\partial u(P)}{\partial n_{P}} & = & g(P), & P\in \Gamma \medskip \\ u(A) & \rightarrow & 0 & \text{as}\;\left| A\right| \rightarrow \infty \end{array} \label{2.17} \end{equation} in which $\Omega _{e}={\Bbb R}^{2}/\overline{\Omega }$. Again, $n_{P}$ is directed into $\Omega _{e}$. Note that in the exterior Neumann problem, \begin{equation} u(A)\rightarrow 0\;\text{as}\;\left| A\right| \rightarrow \infty \quad \Leftrightarrow \quad \int_{\Gamma }\dfrac{\partial u(P)}{\partial n_{P}}% dS_{P}=\int_{\Gamma }g(P)dS_{P}=0 \label{2.18} \end{equation} For details, see Kress \cite{kress}. Represent the solution $u$ of (\ref{2.17}) as a single layer potential, \begin{equation} u(A)=-\int_{\Gamma }\psi (Q)\log \left| A-Q\right| dS_{Q},\quad A\in \Omega _{e} \label{2.19} \end{equation} By standard arguments, $\psi $ satisfies the equation \begin{equation} -\pi \psi (P)-\int_{\Gamma }\psi (Q)\frac{\partial }{\partial n_{P}}\left[ \log \left| P-Q\right| \right] dS_{Q}=g(P),\quad P\in \Gamma \label{2.20} \end{equation} Using the parameterization ${\bf r}(t)=\left( x(t),y(t)\right) $ for $\Gamma $, (\ref{2.20}) becomes \begin{equation} -\pi \psi (t)-\int_{0}^{2\pi }\psi (s)K_{e}(t,s)\,ds=g(t),\quad 0\le t\le 2\pi \label{2.21} \end{equation} For the kernel function, \[ K_{e}(t,s)=\left\{ \begin{array}{ll} \dfrac{y^{\prime }(t)\left[ x(s)-x(t)\right] -x^{\prime }(t)\left[ y(s)-y(t)\right] }{\left[ x(s)-x(t)\right] ^{2}+\left[ y(s)-y(t)\right] ^{2}}% \cdot \dfrac{\sqrt{x^{\prime }(s)^{2}+y^{\prime }(s)^{2}}}{\sqrt{x^{\prime }(t)^{2}+y^{\prime }(t)^{2}}}, & t\ne s\medskip \\ \dfrac{y^{\prime \prime }(t)x^{\prime }(t)-x^{\prime \prime }(t)y^{\prime }(t)}{2\left[ x^{\prime }(t)^{2}+y^{\prime }(t)^{2}\right] }, & t=s \end{array} \right. \] The integral equation (\ref{2.21}) is solved in the same manner as earlier with the interior Dirichlet problem, resulting in an approximation $\psi _{n} $; and the error bounds and rates of convergence are also as before. For the approximation of $u$, introduce \begin{equation} u_{n}(A)=-\int_{\Gamma }\psi _{n}(Q)\log \left| A-Q\right| dS_{Q},\quad A\in \Omega _{e} \label{2.22} \end{equation} Using the parameterization of $\Gamma $, we write \begin{equation} u_{n}(A)=-\int_{0}^{2\pi }\psi _{n}(s)K_{e,A}(s)\,ds,\quad A\in \Omega _{e} \label{2.23} \end{equation} \[ K_{e,A}(s)=\left| {\bf r}^{\prime }(s)\right| \log \left| A-{\bf r}% (s)\right| \] Using the maximum principle and arguing as before, \begin{equation} \left| u(A)-u_{n}(A)\right| \le \left\| \psi -\psi _{n}\right\| _{\infty }\sup_{P\in \Gamma }\int_{\Gamma }\left| \log \left| P-Q\right| \right| dS_{Q},\quad A\in \Omega _{e} \label{2.24} \end{equation} We approximate $u_{n}(A)$ by $u_{n,m}(A)$, much as before in (\ref{2.15}): \begin{equation} u_{n,m}(A)=-\eta \sum_{j=1}^{m}\psi _{n}(\sigma _{j})K_{e,A}(\sigma _{j}),\quad A\in \Omega _{e} \label{2.25} \end{equation} The error bound for $\left| u(A)-u_{n,m}(A)\right| $ is exactly the same as that in (\ref{2.16}) for the approximation of the double layer potential, with $\rho $ replace by $\psi $ and with other choices for $c$ and $% c^{\prime }$. For the case that $P\in \Gamma $, we must use an alternative to (\ref{2.25}% ). Rewrite (\ref{2.23}) as \begin{equation} u_{n}({\bf r}(t))=\pi {\cal A}\widetilde{\psi }_{n}(t)-{\cal R}\widetilde{% \psi }_{n}(t),\quad \quad 0\le t\le 2\pi \label{2.26} \end{equation} In this, we write $\widetilde{\psi }_{n}(t)=\psi _{n}(t)\left| {\bf r}% ^{\prime }(t)\right| $, \[ {\cal A}\varphi (t)\equiv -\frac{1}{\pi }\int_{0}^{2\pi }\log \left| 2e^{-% \frac{1}{2}}\sin \left( \frac{t-s}{2}\right) \right| \varphi (s)\,ds \] \[ {\cal R}\varphi (t)\equiv \int_{0}^{2\pi }\log \left| \frac{{\bf r}(t)-{\bf r% }(s)}{2e^{-\frac{1}{2}}\sin \left( \dfrac{t-s}{2}\right) }\right| \varphi (s)\,ds\equiv \int_{0}^{2\pi }R(t,s)\varphi (s)\,ds \] It is well-known that ${\cal A}:H^{p}(0,2\pi )\stackrel{1-1}{\stackunder{onto% }{\longrightarrow }}H^{p+1}(0,2\pi )$ for these Sobolev spaces, with $p\ge 0$% . Moreover, \begin{equation} {\cal A}\left( \sum_{k=-\infty }^{\infty }a_{k}e^{ikt}\right) =\sum_{k=-\infty }^{\infty }\frac{a_{k}}{k^{*}}e^{ikt},\quad k^{*}\equiv \max \left\{ 1,\left| k\right| \right\} \label{2.27} \end{equation} Also, the kernel of ${\cal R}$ is smooth; and for ${\bf r}\in C^{q+1}$, the kernel is in $C^{q}$, $q\ge 0$, with respect to both $s$ and $t$. We combine these results to give an accurate means of numerically approximating $u_{n}$ in (\ref{2.26}). Let $l$ be an even integer, and let $\tau _{j}=2\pi j/l,\;j=1,...,l$. Let $% \widetilde{\psi }_{n,l}(t)$ be the Fourier approximation of degree $l/2$ for $\widetilde{\psi }_{n}(t)$ given by \begin{equation} \widetilde{\psi }_{n,l}(t)=\sum_{k=-l/2}^{l/2}a_{k}^{(n,l)}e^{ikt},\quad \quad a_{k}^{(n,l)}=\frac{1}{l}\sum_{j=1}^{l}\widetilde{\psi }_{n}(\tau _{j})e^{-ik\tau _{j}} \label{2.27a} \end{equation} Then we approximate $u_{n}({\bf r}(t))$ by \begin{equation} u_{n,l,m}({\bf r}(t))=\pi {\cal A}\widetilde{\psi }_{n,l}(t)-{\cal R}_{m}% \widetilde{\psi }_{n}(t) \label{2.28} \end{equation} \[ {\cal R}_{m}\widetilde{\psi }_{n}(t)=\eta \sum_{j=1}^{m}\widetilde{\psi }% _{n}(\sigma _{j})R(t,\sigma _{j}) \] recalling the definitions of $\eta $ and $\left\{ \sigma _{j}\right\} $ from (\ref{2.15}). The term ${\cal A}\widetilde{\psi }_{n,l}(t)$ is calculated from (\ref{2.27}). As in the analysis of the error for the Dirichlet problem, assume ${\bf r}% \in C^{q+2}$ and $g\in C^{p}$, and let $r=\min \left\{ p,q\right\} $. For the error in $\widetilde{\psi }_{n,l}(t)$, \[ \begin{array}{lll} \left\| \widetilde{\psi }-\widetilde{\psi }_{n,l}\right\| _{\infty } & \le & \left\| \widetilde{\psi }-\widetilde{\psi }_{n}\right\| _{\infty }+\left\| \widetilde{\psi }_{n}-\widetilde{\psi }_{n,l}\right\| _{\infty }\medskip \\ & \le & \dfrac{c_{1}}{n^{r}}\left\| \widetilde{\psi }^{(r)}\right\| _{\infty }+\dfrac{c_{2}\log l}{l^{r}}\left\| \widetilde{\psi }_{n}^{(r)}\right\| _{\infty } \end{array} \] with the Fourier approximation error bound based on standard results (e.g. see \cite[p. 180]{atkinson89}). Also, \[ \begin{array}{lll} \left\| {\cal R}\widetilde{\psi }-{\cal R}_{m}\widetilde{\psi }_{n}\right\| _{\infty } & \le & \left\| {\cal R}\widetilde{\psi }-{\cal R}\widetilde{\psi }_{n}\right\| _{\infty }+\left\| {\cal R}\widetilde{\psi }_{n}-{\cal R}_{m}% \widetilde{\psi }_{n}\right\| _{\infty }\medskip \\ & \le & \dfrac{c_{3}}{n^{r}}\left\| \widetilde{\psi }^{(r)}\right\| _{\infty }+\dfrac{c_{4}}{m^{r}}\left\| \widetilde{\psi }_{n}^{(r)}\right\| _{\infty } \end{array} \] Returning to the analysis of the Nystr\"{o}m method, it is straightforward to show that \[ \left\| \widetilde{\psi }_{n}^{(r)}\right\| _{\infty }\le c_{5}\left\| \widetilde{\psi }^{(r)}\right\| _{\infty } \] and we omit the proof. Combining these results, we have \begin{equation} \begin{array}{lll} \left\| u\left( {\bf r}(\cdot )\right) -u_{n,l,m}\left( {\bf r}(\cdot )\right) \right\| _{\infty } & \le & \pi \left\| {\cal A}\widetilde{\psi }-% {\cal A}\widetilde{\psi }_{n,l}\right\| _{\infty }+\left\| {\cal R}% \widetilde{\psi }-{\cal R}_{m}\widetilde{\psi }_{n}\right\| _{\infty }\medskip \\ & \le & \left\{ \dfrac{c_{6}}{n^{r}}+\dfrac{c_{7}\log l}{l^{r}}+\dfrac{c_{8}% }{m^{r}}\right\} \left\| \widetilde{\psi }^{(r)}\right\| _{\infty } \end{array} \label{2.29} \end{equation} For smooth curves $\Gamma $ and smooth data $g$, the covergence will be quite rapid. The coefficients $\left\{ a_{k}^{(n,l)}\right\} $ can be evaluated quite rapidly with a FFT, which we have incorporated into our code. The routine used is DRFFT from Swarztrauber \cite{swarztrauber} with a minor modification. The above approximations for solving (\ref{2.17}) are incorporated into the program NEUMAN. This and DRCHLT are discussed in \S 4, including a description the error prediction mechanisms. \section{The Exterior Dirichlet and Interior Neumann Problems\label% {section-3}} We begin by introducing the Kelvin transformation, and we use it to reformulate the exterior Dirichlet and interior Neumann problems as interior Dirichlet and exterior Neumann problems, respectively. Define ${\cal T}:% {\Bbb R}^{2}/\{(0,0)\}\rightarrow {\Bbb R}^{2}/\{(0,0)\}$ by \begin{equation} {\cal T}(x,y)=\left( \widetilde{x},\widetilde{y}\right) =\left( \frac{x}{% r^{2}},\frac{y}{r^{2}}\right) ,\quad \quad r^{2}=x^{2}+y^{2} \label{3.1} \end{equation} Also introduce $\widetilde{r}^{2}=\widetilde{x}^{2}+\widetilde{y}^{2}$, and note that $r\widetilde{r}=1$. In addition, define the Kelvin transformation of a function $u$ by \begin{equation} \widetilde{u}(\widetilde{x},\widetilde{y})=u(x,y),\quad \quad \left( \widetilde{x},\widetilde{y}\right) ={\cal T}(x,y) \label{3.2} \end{equation} Assume $\Omega $ contains the origin $(0,0)$, and define \[ \widetilde{\Omega }=\left\{ \left( \widetilde{x},\widetilde{y}\right) ={\cal % T}(x,y)\mid \left( x,y\right) \in \Omega \right\} \] and $\widetilde{\Gamma }$ is the boundary of $\widetilde{\Omega }$. Introduce the exterior Dirichlet problem: \begin{equation} \begin{array}{rlll} \Delta u(A) & = & 0, & A\in \Omega _{e}\medskip \\ u(P) & = & f(P), & P\in \Gamma \medskip \\ u(A) & \rightarrow & C & \text{as}\;\left| A\right| \rightarrow \infty \end{array} \label{3.3} \end{equation} with $C$ a given constant. Also introduce the interior Neumann problem \begin{equation} \begin{array}{rlll} \Delta u(A) & = & 0, & A\in \Omega \medskip \\ \dfrac{\partial u(P)}{\partial n_{P}} & = & g(P), & P\in \Gamma \medskip \\ u(0,0) & = & 0 & \end{array} \label{3.4} \end{equation} As is well-known, this has a unique solution provided that \begin{equation} \int_{\Gamma }g(Q)\,dS_{Q}=0 \label{3.4a} \end{equation} All solutions without the restriction $u(0,0)=0$ are obtained by merely adding an arbitrary constant to the given solution $u$ of (\ref{3.4}). We reformulate these boundary value problems using (\ref{3.2}). The exterior problem (\ref{3.3}) is equivalent to the following interior problem: find $\widetilde{u}$ such that \begin{equation} \begin{array}{rlll} \Delta \widetilde{u}(\widetilde{A}) & = & 0, & \widetilde{A}\in \widetilde{% \Omega }_{e}\medskip \\ \widetilde{u}(\widetilde{P}) & = & f({\cal T}^{-1}\widetilde{P}), & \widetilde{P}\in \widetilde{\Gamma }\medskip \\ \widetilde{u}(0,0) & = & C & \end{array} \label{3.5} \end{equation} The interior Neumann problem (\ref{3.4}) is equivalent to the following exterior problem: find $\widetilde{u}$ such that \begin{equation} \begin{array}{rlll} \Delta \widetilde{u}(\widetilde{A}) & = & 0, & \widetilde{A}\in \Omega \medskip \\ \dfrac{\partial \widetilde{u}(\widetilde{P})}{\partial n_{\widetilde{P}}} & = & -\dfrac{1}{\widetilde{r}^{2}}g({\cal T}^{-1}\widetilde{P}), & \widetilde{P}% \in \Gamma \medskip \\ \widetilde{u}(\widetilde{A}) & \rightarrow & 0 & \text{as}\;\left| \widetilde{A}\right| \rightarrow \infty \end{array} \label{3.6} \end{equation} The proofs are omitted as this is standard material; see \cite[\S 7.1] {atkinson96}. We can now solve the problems (\ref{3.3}) and (\ref{3.4}) by applying the methods of the preceding section. This reformulation process is incorporated into the codes DRCHLT and NEUMAN. \section{Numerical Algorithms\label{section-4}} Many of the ideas are the same for both DRCHLT and NEUMAN, and we choose to introduce them for only DRCHLT. Later in the section, we discuss the differences which occur in NEUMAN. We also discuss the problems (\ref{2.1}) and (\ref{2.17}) of \S \ref{section-2}, as those in \S \ref{section-3} follow easily by applying the Kelvin transformation. The programs are written in double precision in {\it Fortran 77}, but are compatible with {\it Fortran 90}. In DRCHLT, we first call INTEQN to generate the density function $\rho _{n}$ of (\ref{2.6}); and we call EVALU to evaluate $u_{n,m}$ from (\ref{2.15}). Summary outlines of INTEQN and EVALU are given later in \S \ref{section4.1}. In INTEQN, we set up and solve the linear system (\ref{2.7}), using LAPACK routines \cite{lapack} for the Gaussian elimination. We could have used an iterative technique to solve the linear system, but the systems being used are of such size that it is both simpler and equally fast to just use a direct method of solution. The stopping criteria for INTEQN for the current values of $n$ and $\rho _{n} $ is based on the estimate \begin{equation} EST\equiv \limfunc{cond}(\pi +K_{n})\left( \pi +\left\| {\cal K}\right\| \right) \frac{\lambda }{1-\lambda }\left\| \rho _{n}-\rho _{\frac{1}{2}% n}\right\| _{\infty } \label{4.1} \end{equation} for the right side of the error bound (\ref{2.13}). This bound is obtained as follows. In (\ref{2.13}), we estimate $\left\| \rho -\rho _{n}\right\| _{\infty }$ using \begin{equation} \left\| \rho -\rho _{n}\right\| _{\infty }\doteq \frac{\lambda }{1-\lambda }% \left\| \rho _{n}-\rho _{\frac{1}{2}n}\right\| _{\infty } \label{4.1a} \end{equation} and \[ \left\| \rho _{n}-\rho _{\frac{1}{2}n}\right\| _{\infty }\doteq \max_{j=1,...,\frac{1}{2}n}\left| \rho _{n}(jh_{o})-\rho _{\frac{1}{2}% n}(jh_{o})\right| ,\quad h_{o}=\frac{2\pi }{\frac{1}{2}n} \] The constant $\lambda <1$ is meant to estimate the rate of convergence of $% \rho _{n}$ to $\rho $. In the program, we have both a conservative and a normal way to define this rate $\lambda $ (denoted by $RATE$ in INTEQN). The normal way of defining it is by \begin{equation} \lambda =\frac{\left\| \rho _{n}-\rho _{\frac{1}{2}n}\right\| _{\infty }}{% \left\| \rho _{\frac{1}{2}n}-\rho _{\frac{1}{4}n}\right\| _{\infty }} \label{4.2} \end{equation} with $\lambda $ restricted to lay in the interval $[RTLOW,RTUP]$. These limits are defined in an introductory DATA statement in INTEQN by \[ \lbrack RTLOW,RTUP]=[0.1,0.5] \] For the initial two choices of $n$ in our program INTEQN, we always use $% \lambda =RTUP$. The choice (\ref{4.2}) is a fairly conservative choice, since (\ref{2.10}) implies that the true rate $\lambda $ should tend to zero as $n\rightarrow \infty $. The more conservative way of defining $\lambda $ in our program is by choosing \begin{equation} RATE=RTUP \label{4.2a} \end{equation} and this choice leads to the error estimate \[ EST\equiv \text{cond}(A_{n})\left( \pi +\left\| {\cal K}\right\| \right) \left\| \rho _{n}-\rho _{\frac{1}{2}n}\right\| _{\infty } \] The first estimate (\ref{4.2}) usually results in less computation, and the value of $RTLOW$ could even be made smaller for quite well-conditioned problems. For fairly ill-conditioned problems with an error tolerance $% \varepsilon $ that is fairly large, say $\varepsilon \approx 10^{-2}$ to $% 10^{-4}$, it is probably better to use the conservative choice of $\lambda $ in (\ref{4.2a}), as the asymptotic estimate (\ref{4.1a}) is less likely to be accurate in this situation. In (\ref{4.1}), we have included the term $\limfunc{cond}(\pi +K_{n}),$ multiplying the right side of (\ref{2.13}), to take into account changes in the solution due to the conditioning of the linear system of (\ref{2.8a}). We accept $\rho _{n}$ as being sufficiently accurate if the test \begin{equation} EST\le \frac{\varepsilon }{2} \label{4.3} \end{equation} is satisfied, where $\varepsilon $ is a given error tolerance for the solution $u$ of the boundary value problem (\ref{2.1}). If this test is satisfied, then (\ref{2.13}) is likely to be satisfied with \begin{equation} \max \left| u(A)-u_{n}(A)\right| \le EST\le \frac{\varepsilon }{2},\quad \quad A\in \Omega \label{4.4} \end{equation} We must then evaluate $u_{n,m}(A)$ with sufficient accuracy for each given $% A $. Given $A\in \Omega $, we use EVALU to calculate $u_{n,m}(A)$ from (\ref{2.15}% ) with $m$ so chosen that \begin{equation} \left| u_{n}(A)-u_{n,m}(A)\right| \le \frac{\varepsilon }{2} \label{4.5} \end{equation} To do this, we must first find the point $s^{*}$ of (\ref{2.14})-(\ref{2.15}% ) which approximately minimizes $\left| A-{\bf r}(s)\right| $. Initially we use a simple check of the node points $s$ at which $\rho _{n}(s)$ has already been computed. In general, we accept a point $s=s^{*}$ as acceptable if \begin{equation} \left| \cos \theta \right| \le .01 \label{4.5aa} \end{equation} for the angle $\theta $ between ${\bf r}(s^{*})-A$ and the tangent vector $% {\bf r}^{\prime }(s^{*})$. As the point $A$ approaches the boundary $\Gamma $% , this simple procedure is not adequate and we must use a rootfinding method to calculate $s^{*}$. We use Newton's method if it appears to be converging, and otherwise we use the bisection method. In the evaluation of $u_{n,m}(A)$, $m$ is doubled repeatedly until $% u_{n,m}(A)$ satisfies (\ref{4.5}), and our codes begin with $m=32$. We use an estimate of $\left| u_{n}(A)-u_{n,m}(A)\right| $ to decide on an acceptable value of $m$. When $m>n$, we evaluate $\rho _{n}(\sigma _{i})$ at new node points $\left\{ \sigma _{i}\right\} $ using the Nystr\"{o}m interpolation formula (\ref{2.8}); and such values are stored for later use with other evaluations of $u_{n}$. The basic stopping criteria in EVALU for accepting $u_{n,m}(A)$ is the test \begin{equation} \left| u_{n}(A)-u_{n,m}(A)\right| \doteq \frac{\mu }{1-\mu }\left| u_{n,m}(A)-u_{n,\frac{1}{2}m}(A)\right| \le \frac{\varepsilon }{2} \label{4.5a} \end{equation} As in INTEQN, there are two choices for $\mu $ (which is called $RATE$ within EVALU). The normal choice is to define $\mu $ by \begin{equation} \mu =\frac{\left| u_{n,m}(A)-u_{n,\frac{1}{2}m}(A)\right| }{\left| u_{n,% \frac{1}{2}m}(A)-u_{n,\frac{1}{4}m}(A)\right| } \label{4.6} \end{equation} This is also restricted to lay in an interval \[ \lbrack RTLOW,RTUP]=[0.1,0.5] \] so as to be neither too large nor too small. The conservative choice for $% \mu $ is again to use \begin{equation} \mu =RTUP \label{4.7} \end{equation} Again, this seems necessary for more ill-conditioned problems. The maximum allowable size for $m$ is determined from the size of the work space vector supplied by the user to DRCHLT. The introductory comments for DRCHLT contain detailed information on the parameters to be supplied to the routine, and we omit those here. For NEUMAN, we use the same framework as described above. The error test for accepting $\psi _{n}$ must be modified in consonance with (\ref{2.24}), but that is straightforward and we omit it here. When evaluating $u_{n}(P)$ for $% P\in \Gamma $, we approximate $\psi _{n}$ using a Fourier approximation, as is described in \S \ref{section-2.1} following (\ref{2.27a}). The needed value of $l$ is determined experimentally by comparing the approximations of $\psi _{n}$ for parameters $l$ and $2l$. The Fourier coefficients of (\ref {2.27a}) are evaluated with an FFT program of Swarztrauber \cite {swarztrauber}. \subsection{An outline of the codes\label{section4.1}} The routine DRCHLT coordinates the use of INTEQN and EVALU, including dividing up the working storage delivered to DRCHLT by the user. It first calls the subroutine INTEQN, which has the following approximate outline. \begin{enumerate} \item Initialize for a loop on $n$, the number of nodes. \item Do steps \ref{step2} through \ref{step7} until the error test in step \ref{step7} is satisfied. \item \label{step2}Calculate the boundary nodal points on $\Gamma $ for $n$ subdivisions. \item Set up the linear system (\ref{2.7}) and estimate $\left\| {\cal K}% \right\| $. \item Solve the linear system (\ref{2.7}) for $\left\{ \rho _{n}(s_{i})\mid i=1,...,n\right\} $. \item Update the value of $RATE$ and $EST$. \item \label{step7}If $EST\le \varepsilon /2$, then return to DRCHLT.\bigskip \end{enumerate} The program EVALU has the following approximate outline. \begin{enumerate} \item Initialize for a loop on the number of given points $A$ at which $u(A) $ is to be approximated. \item For point $A_{i}$, do steps \ref{step3} through \ref{step9} until the error test in step (\ref{4.5}) is satisfied. \item \label{step3}Initialization of variables for integration of $% u_{n}(A_{i})$. \item Calculate $s^{*}$. Begin by consideration of points $s$ at which $% \rho _{n}(s)$ is already known. If (\ref{4.5aa}) is satisfied go to next step. Otherwise, solve for $s^{*}$ using Newton's method or the bisection method. \item Begin numerical integration (\ref{2.15}) with $m=m_{0}/2$ nodes. \item Loop thru step \ref{step8} on $m$, beginning with $m=m_{0}$ nodes. Compare the results for $m$ and $\frac{1}{2}m$ nodes, updating $\mu $ in (% \ref{4.6}) as needed. \item Calculate error estimate (\ref{4.5a}) for numerical integration error. \item \label{step8}If integration error estimate satisfies (\ref{4.5}), then end integration. \item \label{step9}Calculate an error estimate for the approximation $% u_{n,m}(A_{i})$, and then go to the consideration of the next point $A_{i}$% .\bigskip \end{enumerate} In both INTEQN and EVALU, the storage limitations are checked at all stages; and when these restrict obtaining the desired accuracy, appropriate error indicators are set. The program NEUMAN is organized similarly to the above, except for the inclusion of the option of computing the solution $u(A)$ at points $A\in \Gamma $, using the procedure described following (\ref{2.26}). \subsection{Computational complexity} What is the computational cost of using DRCHLT or NEUMAN? The cost of solving a single linear system of order $k$ by Gaussian elimination is well-known to be approximately $\frac{2}{3}k^{3}$ arithmetic operations. If we solve systems of orders \begin{equation} k=n_{0},2n_{0},...,n_{f} \label{4.8} \end{equation} (with $n_{0}=16$ in our code), then the total cost for the solution of linear systems is approximately \begin{equation} \frac{2}{3}\left( n_{0}^{3}+8n_{0}^{3}+\cdots +8^{\nu }n_{0}^{3}\right) =% \frac{2}{21}\left( 8^{\nu +1}-1\right) n_{0}^{3},\quad \quad \nu =\log _{2}\left( \frac{n_{f}}{n_{0}}\right) \label{4.9} \end{equation} We have not found it necessary to go above $\nu =5$ in the vast majority of our examples because of the rapid convergence of the trapezoidal numerical integration of (\ref{2.6}). The value of $n_{0}$ can be changed by simply changing the variable $N\_0$ in the DATA statement of INTEQN. The cost of setting up the coefficient matrix of (\ref{2.8a}), $-\pi I-K_{n}$, is $n^{2} $ evaluations of the kernel function $K(t,s)$ of (\ref{2.4a}); and the total cost for the indices of (\ref{4.8}) is \[ \frac{2}{9}\left( 4^{\nu +1}-1\right) n_{0}^{2} \] evaluations of $K(t,s)$. The cost of evaluating $u_{n,m}(A)$ using the trapezoidal rule in (\ref{2.15}% ) for the indices \[ m=\ell _{0},...,\ell _{f} \] is \begin{equation} \ell _{0}+2\ell _{0}+\cdots +2^{\gamma }\ell _{0}=\left( 2^{\gamma +1}-1\right) \ell _{0},\quad \quad \gamma =\log _{2}\left( \frac{\ell _{f}}{% \ell _{0}}\right) \label{4.10} \end{equation} arithmetic operations for the sum and the same number of evaluations of the kernel function $K_{A}(s)$. In our program, $\ell _{0}=16$; and it can be reset by changing the variable $M\_0\equiv 2\ell _{0}$ in the DATA statement of EVALU. If the approximate solution $u_{n,m}(A)$ is to be evaluated at a very large number of points $A$, then this can be an expensive proposition, especially if some of the points $A$ are close to the boundary $\Gamma $. Again, however, the trapezpoidal rule converges very rapidly if one wishes high accuracy. \section{Numerical examples\label{section-5}} For our examples, we use three boundary curves: an ellipse, the ovals of Cassini, and an ``amoeba''. For the ellipse, the boundary parameterization is simply \begin{equation} {\bf r}(s)=\left( a\cos s,b\sin s\right) ,\quad \quad 0\le s\le 2\pi \label{5.1} \end{equation} with $a,b>0$. For the ovals of Cassini, the boundary parameterization is \begin{equation} \begin{array}{lll} {\bf r}(s) & = & R(s)\left( \cos s,b\sin s\right) \smallskip \\ R(s) & = & \sqrt{\cos \left( 2s\right) +\sqrt{a-\sin ^{2}\left( 2s\right) }}% ,\quad \quad 0\le s\le 2\pi \end{array} \label{5.2} \end{equation} with $a>1$, $b>0$. The ovals of Cassini with $\left( a,b\right) =\left( 1.1,1\right) $ is shown in Figure \ref{ovals}. The ``amoeba'' boundary is defined by \begin{equation} \begin{array}{lll} {\bf r}(s) & = & R(s)\left( \cos s,\sin s\right) \smallskip \\ R(s) & = & e^{\cos s}\cos ^{2}\left( 2s\right) +e^{\sin s}\sin ^{2}\left( 2s\right) ,\quad \quad 0\le s\le 2\pi \end{array} \label{5.2a} \end{equation} and its graph is shown in Figure \ref{amoeba}. Its interior is a decidedly nonconvex and complicated region, and we use it to illustrate that our programs can handle solutions on such unusual boundaries. \begin{figure}[tb] {\Large \thicklines } \par \begin{center} {\Large \ \ \psfig{figure=ovals.eps,width=4.4841in} } \end{center} \par {\Large \ \vspace*{1em} } \caption{Ovals of Cassini with $\left(a,b\right) =\left( 1.1,1\right) $} \label{ovals} \end{figure} \begin{figure}[tb] {\Large \thicklines } \par \begin{center} {\Large \ \ \psfig{figure=amoeba.eps,width=4.734in} } \end{center} \par {\Large \ \vspace*{1em} } \caption{The ``amoeba'' boundary} \label{amoeba} \end{figure} In evaluating the function $u(x,y),$ we choose a radial grid of test points. It is defined for the interior Dirichlet problem as follows. \begin{equation} \begin{array}{rll} \tau _{j} & = & \dfrac{2j\pi }{n_{\theta }},\quad \quad j=0,...,n_{\theta }-1 \\ \sigma _{k} & = & \left( \dfrac{k}{n_{r}+1}\right) \left[ 2-\dfrac{k}{n_{r}+1% }\right] ,\quad \quad k=1,...,n_{r} \\ P_{j,k} & = & \sigma _{k}{\bf r}(\tau _{j}) \end{array} \label{5.3} \end{equation} along with the origin $P=(0,0)$. The number $\sigma _{k}$ is a measure of how close $P_{j,k}$ is to the boundary point ${\bf r}(\tau _{j})$; and $% \sigma _{k}$ is an increasing function of $k$. Also, note that \[ \sigma _{n_{r}}=1-\frac{1}{\left( n_{r}+1\right) ^{2}} \] If $n_{r}$ is even moderately large, some of the points $P_{j,k}$ will be quite close to the boundary. With the Neumann method we use the slight modification \begin{equation} \begin{array}{rll} \tau _{j} & = & \dfrac{2j\pi }{n_{\theta }},\quad \quad j=0,...,n_{\theta }-1 \\ \sigma _{k} & = & \left( \dfrac{k}{n_{r}}\right) \left[ 2-\dfrac{k}{n_{r}}% \right] ,\quad \quad k=1,...,n_{r} \\ P_{j,k} & = & \sigma _{k}{\bf r}(\tau _{j}) \end{array} \label{5.4} \end{equation} which includes points on the boundary $\Gamma $. For exterior problems, we define $\sigma _{k}$ and $\tau _{j}$ as above, and then we define \[ P_{j,k}=\frac{1}{\sigma _{k}}{\bf r}(\tau _{j}) \] We also include a very distant point, to approximate a point at $\infty $. The test program is designed to work with any region $\Omega $ which is starlike with respect to the origin, and we have used it with regions other than those discussed here. As test problems, we have used the following. \begin{itemize} \item Dirichlet problem: \[ \begin{array}{rll} \text{Interior Problem:} & u^{(1)}= & e^{x}\cos y\smallskip \\ \text{Exterior Problem:} & u^{(2)}= & \exp \left( \dfrac{x}{x^{2}+y^{2}}% \right) \cos \left( \dfrac{y}{x^{2}+y^{2}}\right) \end{array} \] \end{itemize} \begin{itemize} \item Neumann problem: \[ \begin{array}{rll} \text{Interior Problem:} & u^{(3)}= & e^{x}\cos y-1\smallskip \\ \text{Exterior Problem:} & u^{(4)}= & \dfrac{x}{x^{2}+y^{2}} \end{array} \] \end{itemize} \noindent These are well-behaved functions, but they will still adequately test the procedures when combined with boundaries $\Gamma $ that are more ill-behaved. We have, of course, used other test functions in addition to the ones given above. The function $u^{(2)}$ is the result of applying the Kelvin transformation (\ref{3.2}) to $u^{(1)}$. \subsection{The Dirichlet problem} There is a great deal of data to be presented, and a combination of graphical and tabular forms seems best. We give detailed results for solving the interior Dirichlet problem for $u^{(1)}$ at the points $P_{0,k}$, $% k=0,1,...,n_{r}$ [with $P_{0,0}=(0,0)$]. The parameter $\varepsilon $ refers to the desired error tolerance, and $n$ is the final order of the linear system used in INTEQN to calculate the density function $\rho $. The number of quadrature points used in obtaining the solution is $m$, and it varies with the point $P_{1,k}$. %TCIMACRO{\TeXButton{table-1}{\begin{table}[tb] \centering}} %BeginExpansion \begin{table}[tb] \centering% %EndExpansion \caption{Interior Dirichlet problem on an ellipse - Selected errors\label{table-1}} \begin{tabular}{|l|cccc|ccc|} \hline \ & \multicolumn{4}{|c|}{$\varepsilon =10^{-3}\quad n=64$} & \multicolumn{3}{|c|}{$\varepsilon =10^{-7}\quad n=128$} \\ \cline{2-8} \multicolumn{1}{|c|}{$\sigma _{k}$} & $m$ & $u$ & {\it Error} & {\it PredErr} & $m$ & {\it Error} & {\it PredErr} \\ \hline .000 & \multicolumn{1}{|r}{128} & \multicolumn{1}{l}{1.0000} & \multicolumn{1}{l}{$-4.85E-11$} & \multicolumn{1}{l|}{$6.99E-5$} & \multicolumn{1}{|r}{256} & \multicolumn{1}{r}{$1.44E-15$} & \multicolumn{1}{l|}{$1.62E-10$} \\ .210 & \multicolumn{1}{|r}{128} & \multicolumn{1}{l}{1.2335} & \multicolumn{1}{l}{$-2.51E-9$} & \multicolumn{1}{l|}{$8.29E-5$} & \multicolumn{1}{|r}{256} & \multicolumn{1}{r}{$-4.22E-15$} & \multicolumn{1}{l|}{$4.36E-10$} \\ .395 & \multicolumn{1}{|r}{128} & \multicolumn{1}{l}{1.4845} & \multicolumn{1}{l}{$-1.78E-7$} & \multicolumn{1}{l|}{$1.80E-4$} & \multicolumn{1}{|r}{256} & \multicolumn{1}{r}{$-2.84E-14$} & \multicolumn{1}{l|}{$1.99E-8$} \\ .556 & \multicolumn{1}{|r}{256} & \multicolumn{1}{l}{1.7429} & \multicolumn{1}{l}{$-7.21E-11$} & \multicolumn{1}{l|}{$6.85E-5$} & \multicolumn{1}{|r}{512} & \multicolumn{1}{r}{$2.89E-15$} & \multicolumn{1}{l|}{$1.64E-10$} \\ .691 & \multicolumn{1}{|r}{256} & \multicolumn{1}{l}{1.9964} & \multicolumn{1}{l}{$-3.46E-8$} & \multicolumn{1}{l|}{$8.31E-5$} & \multicolumn{1}{|r}{512} & \multicolumn{1}{r}{$-5.33E-15$} & \multicolumn{1}{l|}{$4.00E-9$} \\ .802 & \multicolumn{1}{|r}{256} & \multicolumn{1}{l}{2.2310} & \multicolumn{1}{l}{$-4.36E-6$} & \multicolumn{1}{l|}{$3.14E-4$} & \multicolumn{1}{|r}{1024} & \multicolumn{1}{r}{$2.22E-15$} & \multicolumn{1}{l|}{$1.76E-10$} \\ .889 & \multicolumn{1}{|r}{512} & \multicolumn{1}{l}{2.4324} & \multicolumn{1}{l}{$-3.92E-7$} & \multicolumn{1}{l|}{$1.02E-4$} & \multicolumn{1}{|r}{1024} & \multicolumn{1}{r}{$-4.38E-12$} & \multicolumn{1}{l|}{$4.37E-8$} \\ .951 & \multicolumn{1}{|r}{1024} & \multicolumn{1}{l}{2.5873} & \multicolumn{1}{l}{$-2.77E-7$} & \multicolumn{1}{l|}{$8.33E-5$} & \multicolumn{1}{|r}{2048} & \multicolumn{1}{r}{$-1.11E-11$} & \multicolumn{1}{l|}{$3.10E-8$} \\ .988 & \multicolumn{1}{|r}{2048} & \multicolumn{1}{l}{2.6849} & \multicolumn{1}{l}{$-2.76E-6$} & \multicolumn{1}{l|}{$9.23E-5$} & \multicolumn{1}{|r}{8192} & \multicolumn{1}{r}{$-7.10E-13$} & \multicolumn{1}{l|}{$2.09E-9$} \\ \hline \end{tabular} %TCIMACRO{\TeXButton{E}{\end{table}}} %BeginExpansion \end{table}% %EndExpansion Table \ref{table-1} contains results for the ellipse with $(a,b)=(1,5)$, with error tolerances of $\varepsilon =10^{-3}$ and $10^{-7}$. The columns labeled {\it Error} and {\it PredErr} give the actual error and the predicted error bound. {\it PredErr} is obtained by combining the error estimates from INTEQN and EVALU, using {\it EST} from (\ref{4.1}) and the numerical integration error estimate from (\ref{4.5a}). Figure \ref{fig-1} gives the plots the predicted and actual errors as a function of $\sigma _{k} $; or more precisely, we plot \[ \left\{ \sigma _{k}\right\} \;\text{vs.}\;\left\{ \log _{10}\left| E_{k}\right| \right\} ,\quad k=0,1,...,n_{r} \] with $E_{k}$ both the predicted error and the actual error. Figure \ref {fig-2} gives graphs of \[ \left\{ \sigma _{k}\right\} \;\text{vs.}\;\left\{ \log _{10}\left| u(P_{j,k})-u_{n,m}(P_{j,k})\right| \right\} ,\quad k=0,1,...,n_{r} \] for selected $j$, with $\varepsilon =10^{-3}$. The program DRCHLT used the normal error estimates based on (\ref{4.2}) and (\ref{4.6}), and the grid parameters inside $\Omega $ were $n_{\theta }=7,\,n_{r}=8$. All computations were carried out on an HP 720 workstation. Timings are omitted, in part because they were never more than a few seconds, and in part because timings on a workstation network with many users are unreliable. \begin{figure}[tb] {\Large \thicklines } \par \begin{center} {\Large \ \ \psfig{figure=figure-1.eps,width=6.3513in} } \end{center} \par {\Large \ \vspace*{1em} } \caption{Predicted and actual errors along the radial line $\theta =0$ for a Dirichlet problem on an ellipse} \label{fig-1} \end{figure} \begin{figure}[tb] {\Large \thicklines } \par \begin{center} {\Large \ \ \psfig{figure=figure-2.eps,width=6.1791in} } \end{center} \par {\Large \ \vspace*{1em} } \caption{Errors along selected radial lines $\theta =\theta _{j}$ for a Dirichlet problem on an ellipse} \label{fig-2} \end{figure} We solved the same interior Dirichlet problem, but on the ``amoeba'' boundary of Figure \ref{amoeba}. When requesting an error tolerance of $% \varepsilon =10^{-4}$ and when solving at the points of (\ref{5.3}) for $% \left( n_{\theta },n_{r}\right) =\left( 7,8\right) $, we obtained very regular behaviour in the error in the approximate values of $u^{(1)}$. The final number of nodes used in INTEQN was $n=256$. At all points $P\in \Omega $, the predicted error bound for $u(P_{j,k})-u_{n,m}(P_{j,k})$ was less than the requested error bound; and the actual errors were always smaller than the predicted error bound, usually much smaller. We also solve an exterior Dirichlet problem on the elliptical region used above. In this case, the boundary $\widetilde{\Gamma }$ obtained by inverting $\Gamma $ thru the unit circle is somewhat ill-behaved, as can be seen in Figure \ref{bdy}. The test function is $u^{(2)}$, and the other problem parameters are as before. The density function is shown in Figure \ref{density} (with periodic extension to a larger interval), and it is clearly fairly ill-behaved around $s=0$. The analogue of Figure \ref{fig-1} is given in Figure \ref{fig-3}; and again the predicted error bound satisfies the given error tolerance. For the desired error tolerances of $% \varepsilon =10^{-3},10^{-7}$, the final values of $n$ used in INTEQN were 256 and 512, respectively. The ``normal'' error test was used. \begin{center} \begin{figure}[tb] {\Large \thicklines } \par \begin{center} {\Large \ \ \psfig{figure=bdy-1.eps,width=4.4979in} } \end{center} \par {\Large \ \vspace*{1em} } \caption{Boundary $\widetilde{\Gamma }$ for ellipse with $(a,b)=(1,5)$ inverted thru unit circle} \label{bdy} \end{figure} \begin{figure}[tb] {\Large \thicklines } \par \begin{center} {\Large \ \ \psfig{figure=density.eps,width=4.5117in} } \end{center} \par {\Large \ \vspace*{1em} } \caption{The density $\rho (s)$ on $\widetilde{\Gamma }$ for exterior Dirichlet problem defined originally outside an ellipse} \label{density} \end{figure} \begin{figure}[tb] {\Large \thicklines } \par \begin{center} {\Large \ \ \psfig{figure=figure-3.eps,width=6.8035in} } \end{center} \par {\Large \ \vspace*{1em} } \caption{Predicted and actual errors along the radial line $\theta =0$ for an exterior Dirichlet problem on an ellipse} \label{fig-3} \end{figure} \end{center} \subsection{The Neuman problem} The principal differences in NEUMAN as compared to DRCHLT are as follows: (% {\it i}) the error bound (\ref{2.24}) has been changed; ({\it ii}) the Kelvin transform is now used to convert the interior Neumann problem to an exterior Neumann problem; and ({\it iii}) the potential $u(P)$ can now be evaluated at points $P$ on the boundary $\Gamma $. We illustrate NEUMAN by solving the exterior Neumann problem on the ovals of Cassini shown in Figure \ref{ovals}, with boundary data generated from the test case $u^{(4)}$ and with error tolerances of $\varepsilon =10^{-3}$ and $10^{-7}$. The points $P$ at which the problem is solved are given in (\ref{5.4}), which includes boundary points on $\Gamma $; and for the parameters defining $P$, we used $% \left( n_{\theta },n_{r}\right) =\left( 7,8\right) $. The analogue of Figure \ref{fig-3}, for errors along the line $\theta =0$, is given in Figure \ref {fig-4}; and again the predicted error bound satisfies the given error tolerance. For the desired error tolerances of $\varepsilon =10^{-3},10^{-7}$% , the final values of $n$ used in INTEQN were 128 and 256, respectively. \begin{figure}[tb] {\Large \thicklines } \par \begin{center} {\Large \ \ \psfig{figure=figure-4.eps,width=6.3313in} } \end{center} \par {\Large \ \vspace*{1em} } \caption{Predicted and actual errors along the radial line $\theta =0$ for an exterior Neumann problem on an ``ovals of Cassini''} \label{fig-4} \end{figure} \subsection{Details on computers used in testing} The programs DRCHLT and NEUMAN were tested on several workstations and on a PC using MS Fortran 77. The workstations used were a Hewlett-Packard 720, a Hewlett-Packard C200, an SGI O2, and an IBM RS/6000. The first three used the Fortran 90 compiler delivered by the manufacturers of the machines, and the last used a Fortran 77 compiler, again supplied by the manufacturer. The examples of this paper are from the HP 720 using Fortran 90 and the default options. \newpage \begin{thebibliography}{99} \bibitem{lapack} E. Anderson, Z. Bai, C. Bischof, J. Demmel, J. Dongarra, J. DuCroz, A. Greenbaum, S. Hammarling, A. Mckenney, S. Ostrouchov, and D. Sorenson (1992), {\it LAPACK Users' Guide}, SIAM Publications, Philadelphia. \bibitem{atkinson76} K. Atkinson (1976){\it \ A Survey of Numerical Methods for the Solution of Fredholm Integral Equations of the Second Kind, }SIAM Pub. \bibitem{atkinson89} K. Atkinson (1989){\it \ An Introduction to Numerical Analysis}, 2nd ed., John Wiley and Sons, New York. \bibitem{atkinson96} K. Atkinson (1997) {\it The Numerical Solution of Integral Equations of the Second Kind}, Cambridge University Press, Cambridge, UK. \bibitem{kress} R. Kress (1989){\it \ Linear Integral Equations, }Berlin, Springer. \bibitem{mclean} W. Mclean (1985){\it Boundary Integral Equation Methods for the Laplace Equation} Ph.D thesis, Australian National University, Canberra. \bibitem{miller} C. Miller (1979) {\it Numerical Solution of Two-Dimensional Potential Theory Problems Using Integral Equation Techniques,% } Ph.D thesis, University of Iowa, Iowa City. \bibitem{nag} NAG Library (1993) {\it D03EAF}, a program description. \bibitem{petrovskii} I. Petrovskii (1967){\it \ Partial Differential Equations}, W. B. Saunders, Co. \bibitem{swarztrauber} P. Swarztrauber (1982), Vectorizing the FFT's, in {\it Parallel Computations}, G. Rodrigue (editor), Academic Press, New York, pp. 51-83. (Available from the NETLIB library.) \end{thebibliography} \end{document} %%%%%%%%%%%%%%%%%%%%%% End \document\atk-jeon.tex %%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%% Start \macros\amsfonts\amsfonts.sty %%%%%%%%%%%%%%%%% %% %% This is file `amsfonts.sty', generated %% on <1995/2/1> with the docstrip utility (2.2i). %% %% The original source files were: %% %% amsfonts.dtx %%% ==================================================================== %%% @LaTeX-file{ %%% filename = "amsfonts.dtx", %%% version = "2.2b", %%% date = "1995/02/01", %%% time = "11:12:55 EST", %%% author = "American Mathematical Society", %%% copyright = "Copyright (C) 1995 American Mathematical Society, %%% all rights reserved. Copying of this file is %%% authorized only if either: %%% (1) you make absolutely no changes to your copy, %%% including name; OR %%% (2) if you do make changes, you first rename it %%% to some other name.", %%% address = "American Mathematical Society, %%% Technical Support, %%% Electronic Products and Services, %%% P. O. Box 6248, %%% Providence, RI 02940, %%% USA", %%% telephone = "401-455-4080 or (in the USA and Canada) %%% 800-321-4AMS (321-4267)", %%% FAX = "401-331-3842", %%% checksum = "60492 437 2050 17848", %%% email = "tech-support@math.ams.org (Internet)", %%% codetable = "ISO/ASCII", %%% keywords = "latex, amslatex, ams-latex, amsfonts, msam, %%% msbm, eufm, blackboard bold", %%% supported = "yes", %%% abstract = "This is part of the AMSFonts distribution, %%% It provides easy access to certain math fonts %%% for extra math symbols, fraktur letters, and %%% blackboard bold letters." %%% docstring = "The checksum field above contains a CRC-16 %%% checksum as the first value, followed by the %%% equivalent of the standard UNIX wc (word %%% count) utility output of lines, words, and %%% characters. This is produced by Robert %%% Solovay's checksum utility.", %%% } %%% ==================================================================== \NeedsTeXFormat{LaTeX2e} \ProvidesPackage{amsfonts}[1995/02/01 v2.2b] \DeclareOption{psamsfonts}{% \ifnum\cmex@opt=7 \def\cmex@opt{10}% \else \def\cmex@opt{0}\fi \input{Umsa57.fd}\input{Umsb57.fd}\input{Ueuf57.fd}} \@ifundefined{cmex@opt}{\def\cmex@opt{1}}{} \ProcessOptions\relax \ifnum\cmex@opt=1 \relax \catcode`\ =9 \DeclareFontShape{OMX}{cmex}{m}{n}{% <-8> cmex7% <8> cmex8% <9> cmex9% <10> <10.95> <12> <14.4> <17.28> <20.74> <24.88>cmex10% }{}% \expandafter\let\csname OMX/cmex/m/n/10\endcsname\relax \catcode`\ =10 \else \ifnum\cmex@opt=10 % need to override cmex7 fontdef from amsmath \input{OMXcmex.fd}% \expandafter\let\csname OMX/cmex/m/n/10\endcsname\relax \def\cmex@opt{0}% \fi \fi \@ifundefined{@mathmeasure}{% \def\@mathmeasure#1#2#3{\setbox#1\hbox{\frozen@everymath\@emptytoks \m@th$#2#3$}} }{} \@ifundefined{@emptytoks}{% \newtoks is still outer in LaTeX2e---why? \csname newtoks\endcsname\@emptytoks }{} \DeclareSymbolFont{AMSa}{U}{msa}{m}{n} \DeclareSymbolFont{AMSb}{U}{msb}{m}{n} \@ifundefined{yen}{% \edef\yen{\noexpand\mathhexbox{\hexnumber@\symAMSa}55} }{} \@ifundefined{checkmark}{% \edef\checkmark{\noexpand\mathhexbox{\hexnumber@\symAMSa}58} }{} \@ifundefined{circledR}{% \edef\circledR{\noexpand\mathhexbox{\hexnumber@\symAMSa}72} }{} \@ifundefined{maltese}{% \edef\maltese{\noexpand\mathhexbox{\hexnumber@\symAMSa}7A} }{} \begingroup \catcode`\"=12 \DeclareMathDelimiter\ulcorner{\mathopen} {AMSa}{"70}{AMSa}{"70} \DeclareMathDelimiter\urcorner{\mathclose}{AMSa}{"71}{AMSa}{"71} \DeclareMathDelimiter\llcorner{\mathopen} {AMSa}{"78}{AMSa}{"78} \DeclareMathDelimiter\lrcorner{\mathclose}{AMSa}{"79}{AMSa}{"79} \xdef\widehat#1{\noexpand\@mathmeasure\z@\textstyle{#1}% \noexpand\ifdim\noexpand\wd\z@>\tw@ em% \mathaccent"0\hexnumber@\symAMSb 5B{#1}% \noexpand\else\mathaccent"0362{#1}\noexpand\fi} \xdef\widetilde#1{\noexpand\@mathmeasure\z@\textstyle{#1}% \noexpand\ifdim\noexpand\wd\z@>\tw@ em% \mathaccent"0\hexnumber@\symAMSb 5D{#1}% \noexpand\else\mathaccent"0365{#1}\noexpand\fi} \DeclareMathSymbol\dabar@{\mathord}{AMSa}{"39} \xdef\dashrightarrow{\mathrel{\dabar@\dabar@ \mathchar"0\hexnumber@\symAMSa 4B}}% \xdef\dashleftarrow{\mathrel{\mathchar"0\hexnumber@\symAMSa 4C\dabar@ \dabar@}}% \global\let\dasharrow\dashrightarrow \global\let\rightleftharpoons\undefined \DeclareMathSymbol\rightleftharpoons{\mathrel}{AMSa}{"0A} \global\let\angle\undefined \DeclareMathSymbol\angle {\mathord}{AMSa}{"5C} \global\let\hbar\undefined \DeclareMathSymbol\hbar {\mathord}{AMSb}{"7E} \global\let\sqsubset\undefined \DeclareMathSymbol\sqsubset {\mathrel}{AMSa}{"40} \global\let\sqsupset\undefined \DeclareMathSymbol\sqsupset {\mathrel}{AMSa}{"41} \global\let\mho\undefined \DeclareMathSymbol\mho {\mathord}{AMSb}{"66} \endgroup \DeclareMathAlphabet\mathfrak{U}{euf}{m}{n} \SetMathAlphabet\mathfrak{bold}{U}{euf}{b}{n} \DeclareSymbolFontAlphabet{\mathbb}{AMSb} \DeclareFontEncodingDefaults{\relax}{\def\accentclass@{7}} \def\frak{\@subst@obsolete{amsfonts}\frak\mathfrak} \def\Bbb{\@subst@obsolete{amsfonts}\Bbb\mathbb} \def\bold{\@subst@obsolete{amsfonts}\bold\mathbf} \begingroup \catcode`\"=12 \relax \gdef\newsymbol#1#2#3#4#5{% \@obsolete{amsfonts}\newsymbol\DeclareMathSymbol \@ifdefinable#1{% \edef\next@ {\ifcase #2 \or \hexnumber@\symAMSa\or \hexnumber@\symAMSb\fi}% \ifx\next@\@empty \PackageError{amsfonts}{\Invalid@@\newsymbol}\@ehd% \else \global\mathchardef#1"#3\next@#4#5 \fi}} \endgroup \long\def\@gobblethree#1#2#3{} \if@compatibility \let\@obsolete\@gobblethree \else \def\@obsolete#1#2#3{\PackageWarning{#1}{% Obsolete command \protect#2; \protect#3 should be used instead}}% \fi \def\@subst@obsolete#1#2#3{\@obsolete{#1}#2#3\gdef#2{#3}#2} \if@compatibility \else \endinput \fi \begingroup \catcode`\"=12 \DeclareMathSymbol\square {\mathord}{AMSa}{"03} \DeclareMathSymbol\lozenge {\mathord}{AMSa}{"06} \DeclareMathSymbol\vartriangleright {\mathrel}{AMSa}{"42} \DeclareMathSymbol\vartriangleleft {\mathrel}{AMSa}{"43} \DeclareMathSymbol\trianglerighteq {\mathrel}{AMSa}{"44} \DeclareMathSymbol\trianglelefteq {\mathrel}{AMSa}{"45} \DeclareMathSymbol\rightsquigarrow {\mathrel}{AMSa}{"20} \def\@tempa{\not@base\lhd} \ifx\lhd\@tempa \global\let\lhd\vartriangleleft \global\let\unlhd\trianglelefteq \global\let\rhd\vartriangleright \global\let\unrhd\trianglerighteq \global\let\Box\square \global\let\Diamond\lozenge \global\let\leadsto\rightsquigarrow \xdef\Join{\mathrel{\mathchar"0\hexnumber@\symAMSb 6F\mkern-13.8mu% \mathchar"0\hexnumber@\symAMSb 6E}} \fi \endgroup \endinput %% %% End of file `amsfonts.sty'. %%%%%%%%%%%%%%%%%% End \macros\amsfonts\amsfonts.sty %%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%% Start \document\sw20siam.sty %%%%%%%%%%%%%%%%%%%% %sw20siam {Article: SIAM journals}{12pt}{siamltex} %Copyright (C) 1994-95 TCI Software Research \typeout{TCI Document Style `sw20siam' <1 July 1994>.} \typeout{NOTICE: This macro file is NOT proprietary and may be freely copied and distributed.} % \author{\ } % Avoid a problem when using \maketitle but no \author \def\tableofcontents{\section*{Contents.\@mkboth{CONTENTS}{CONTENTS}% \hskip 1em} % Avoid a problem with toc. \@starttoc{toc}} % Environments defined in siamltex.sty that must be defined in document %\let\theorem\undefined %\let\lemma\undefined %\let\corollary\undefined %\let\proposition\undefined %\input thmsupp.tex %TCI theorem option support \def\keyphrases#1{\begin{keywords}#1\end{keywords}} \def\AMclass#1{\begin{AM}#1\end{AM}} \def\AMSclass#1{\begin{AMS}#1\end{AMS}} %%%%%%%%%%%%%%%%%%%%%% End \document\sw20siam.sty %%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%% Start \document\siamltex.sty %%%%%%%%%%%%%%%%%%%% % siam.sty 11 Feb 88, based on article.sty 5 Feb 88 % Changed to hardwire the right headings for publications % Christian Bischof, 22 January 1990 % last modified by P. Duggan 12/11/92 % Modified by TCI Software 12 July 94 . Commented \sev... stuff \typeout{Document Style "siamltex". v2.1 Released 1 January 1993} \def\myoddhead{ } \def\myevenhead{ } \def\@ptsize{0} \@namedef{ds@11pt}{\def\@ptsize{1}} \@namedef{ds@12pt}{\def\@ptsize{2}} \def\ds@twoside{\@twosidetrue \@mparswitchtrue} \def\ds@draft{\overfullrule 5pt} \@options \input siam1\@ptsize.sty\relax \def\labelenumi{\arabic{enumi}.} \def\theenumi{\arabic{enumi}} \def\labelenumii{(\alph{enumii})} \def\theenumii{(\alph{enumii})} \def\p@enumii{\theenumi} \def\labelenumiii{\roman{enumiii}.} \def\theenumiii{\roman{enumiii}} \def\p@enumiii{\theenumi\theenumii} \def\labelenumiv{\Alph{enumiv}.} \def\theenumiv{\Alph{enumiv}} \def\p@enumiv{\p@enumiii\theenumiii} \def\labelitemi{$\bullet$} \def\labelitemii{\bf --} \def\labelitemiii{$\ast$} \def\labelitemiv{$\cdot$} \def\verse{\let\\=\@centercr \list{}{\itemsep\z@ \itemindent -1.5em\listparindent \itemindent \rightmargin\leftmargin\advance\leftmargin 1.5em}\item[]} \let\endverse\endlist \def\quotation{\list{}{\listparindent 1.5em \itemindent\listparindent \rightmargin\leftmargin \parsep 0pt plus 1pt}\item[]} \let\endquotation=\endlist \def\quote{\list{}{\rightmargin\leftmargin}\item[]} \let\endquote=\endlist %\def\descriptionlabel#1{\hspace\labelsep \bf #1} %\def\description{\list{}{\labelwidth\z@ \itemindent-\leftmargin % \let\makelabel\descriptionlabel}} %\let\enddescription\endlist \def\descriptionlabel#1{\bf #1} \def\description{\list{}{\labelwidth10pt \let\makelabel\descriptionlabel}} \let\enddescription\endlist \newcounter{rmnum} \newenvironment{romannum}{\begin{list}{{\rm (\roman{rmnum})}}{\usecounter{rmnum} \setlength{\leftmargin}{0pt}\setlength{\itemindent}{42pt}}}{\end{list}} \newcounter{muni} \newenvironment{remunerate}{\begin{list}{{\rm \arabic{muni}.}}{\usecounter{muni} \setlength{\leftmargin}{0pt}\setlength{\itemindent}{38pt}}}{\end{list}} \newcounter{part} \newcounter {section} \newcounter {subsection}[section] \newcounter {subsubsection}[subsection] \newcounter {paragraph}[subsubsection] \newcounter {subparagraph}[paragraph] \def\@begintheorem#1#2{\par\bgroup{\sc #1\ #2. }\it\ignorespaces} \def\@opargbegintheorem#1#2#3{\par\bgroup{\sc #1\ #2\ (#3). }\it\ignorespaces} \def\@endtheorem{\egroup\par} \def\proof{\par{\it Proof}. \ignorespaces} \def\endproof{{\ \vbox{\hrule\hbox{% \vrule height1.3ex\hskip0.8ex\vrule}\hrule }}\par} \newtheorem{theorem}{Theorem}[section] \newtheorem{lemma}[theorem]{Lemma} \newtheorem{corollary}[theorem]{Corollary} \newtheorem{proposition}[theorem]{Proposition} \def\theequation{\arabic{equation}} \def\@eqnnum{\hbox to .01pt{}\rlap{\rm \hskip -\displaywidth(\theequation)}} \def\titlepage{\@restonecolfalse\if@twocolumn\@restonecoltrue\onecolumn \else \newpage \fi \thispagestyle{empty}\c@page\z@} \def\endtitlepage{\if@restonecol\twocolumn \else \newpage \fi} \arraycolsep 5pt \tabcolsep 6pt \arrayrulewidth .4pt \doublerulesep 2pt \tabbingsep \labelsep \skip\@mpfootins = \skip\footins \fboxsep = 3pt \fboxrule = .4pt \def\thepart{\Roman{part}} \def\thesection {\arabic{section}} \def\thesubsection {\thesection.\arabic{subsection}} \def\thesubsubsection {\thesubsection .\arabic{subsubsection}} \def\theparagraph {\thesubsubsection.\arabic{paragraph}} \def\thesubparagraph {\theparagraph.\arabic{subparagraph}} \def\@sect#1#2#3#4#5#6[#7]#8{\ifnum #2>\c@secnumdepth \def\@svsec{}\else \refstepcounter{#1}\edef\@svsec{\csname the#1\endcsname.\hskip .5em }\fi \@tempskipa #5\relax \ifdim \@tempskipa>\z@ \begingroup #6\relax \@hangfrom{\hskip #3\relax\@svsec}{\interlinepenalty \@M #8\par} \endgroup \csname #1mark\endcsname{#7}\addcontentsline {toc}{#1}{\ifnum #2>\c@secnumdepth \else \protect\numberline{\csname the#1\endcsname}\fi #7}\else \def\@svsechd{#6\hskip #3\@svsec #8.\csname #1mark\endcsname {#7}\addcontentsline {toc}{#1}{\ifnum #2>\c@secnumdepth \else \protect\numberline{\csname the#1\endcsname}\fi #7}}\fi \@xsect{#5}} \def\@ssect#1#2#3#4#5{\@tempskipa #3\relax \ifdim \@tempskipa>\z@ \begingroup #4\@hangfrom{\hskip #1}{\interlinepenalty \@M #5.\par}\endgroup \else \def\@svsechd{#4\hskip #1\relax #5.}\fi \@xsect{#3}} \def\@pnumwidth{1.55em} \def\@tocrmarg {2.55em} \def\@dotsep{4.5} \setcounter{tocdepth}{3} \def\tableofcontents{\section*{Contents\@mkboth{CONTENTS}{CONTENTS}} \@starttoc{toc}} \def\l@part#1#2{\addpenalty{\@secpenalty} \addvspace{2.25em plus 1pt} \begingroup \@tempdima 3em \parindent \z@ \rightskip \@pnumwidth \parfillskip -\@pnumwidth {\bf \leavevmode #1\hfil \hbox to\@pnumwidth{\hss #2}}\par \nobreak \endgroup} \def\l@section#1#2{\addpenalty{\@secpenalty} \addvspace{1.0em plus 1pt} \@tempdima 1.5em \begingroup \parindent \z@ \rightskip \@pnumwidth \parfillskip -\@pnumwidth \bf \leavevmode \advance\leftskip\@tempdima \hskip -\leftskip #1\nobreak\hfil \nobreak\hbox to\@pnumwidth{\hss #2}\par \endgroup} \def\l@subsection{\@dottedtocline{2}{1.5em}{2.3em}} \def\l@subsubsection{\@dottedtocline{3}{3.8em}{3.2em}} \def\l@paragraph{\@dottedtocline{4}{7.0em}{4.1em}} \def\l@subparagraph{\@dottedtocline{5}{10em}{5em}} \def\listoffigures{\section*{List of Figures\@mkboth {LIST OF FIGURES}{LIST OF FIGURES}}\@starttoc{lof}} \def\l@figure{\@dottedtocline{1}{1.5em}{2.3em}} \def\listoftables{\section*{List of Tables\@mkboth {LIST OF TABLES}{LIST OF TABLES}}\@starttoc{lot}} \let\l@table\l@figure \def\thebibliography#1{\par\addvspace{.25in}% \begin{center}\footnotesize REFERENCES\end{center}\@mkboth {REFERENCES}{REFERENCES}\addvspace{.15in}\nopagebreak\list {[\arabic{enumi}]}{\settowidth\labelwidth{[#1]}\leftmargin\labelwidth \advance\leftmargin\labelsep \advance\leftmargin 16pt \itemindent -16pt \usecounter{enumi}} \def\newblock{\hskip .11em plus .33em minus .07em} \sloppy\clubpenalty4000\widowpenalty4000 \sfcode`\.=1000\relax\footnotesize} \let\endthebibliography=\endlist \newif\if@restonecol \def\theindex{\@restonecoltrue\if@twocolumn\@restonecolfalse\fi \columnseprule \z@ \columnsep 35pt\twocolumn[\section*{Index}] \@mkboth{INDEX}{INDEX}\thispagestyle{plain}\parindent\z@ \parskip\z@ plus .3pt\relax\let\item\@idxitem} \def\@idxitem{\par\hangindent 40pt} \def\subitem{\par\hangindent 40pt \hspace*{20pt}} \def\subsubitem{\par\hangindent 40pt \hspace*{30pt}} \def\endtheindex{\if@restonecol\onecolumn\else\clearpage\fi} \def\indexspace{\par \vskip 10pt plus 5pt minus 3pt\relax} \def\footnoterule{\kern-3\p@ \hrule width .5in \kern 2.6\p@} \long\def\@makefntext#1{\parindent .25in\noindent \hbox to .25in{\hss$^{\@thefnmark}$\kern 3pt}#1} \setcounter{topnumber}{2} \def\topfraction{.9} \setcounter{bottomnumber}{1} \def\bottomfraction{.1} \setcounter{totalnumber}{3} \def\textfraction{.1} \def\floatpagefraction{.91} \setcounter{dbltopnumber}{2} \def\dbltopfraction{.7} \def\dblfloatpagefraction{.5} \def\@tabtxt{table} \long\def\@makecaption#1#2{\footnotesize \setlength{\parindent}{1.5pc} \ifx\@captype\@tabtxt \hbox to\hsize{\hfil{\sc #1}\hfil}% \setbox\@tempboxa\hbox{{\it #2}}% \ifdim \wd\@tempboxa >\hsize {\it #2}\par \else \hbox to \hsize{\hfil\box\@tempboxa\hfil}\fi \vskip 10pt \else \vskip 10pt \setbox\@tempboxa\hbox{{\sc #1}. {\it #2}} \ifdim \wd\@tempboxa >\hsize {\sc #1}. {\it #2}\par \else \hbox to\hsize{\hfil\box\@tempboxa\hfil}% \fi \fi} \newcounter{figure} \def\thefigure{\@arabic\c@figure} \def\fps@figure{tp} \def\ftype@figure{1} \def\ext@figure{lof} \def\fnum@figure{Fig.\ \thefigure} \def\figure{\@float{figure}} \let\endfigure\end@float \@namedef{figure*}{\@dblfloat{figure}} \@namedef{endfigure*}{\end@dblfloat} \newcounter{table} \def\thetable{\@arabic\c@table} \def\fps@table{tp} \def\ftype@table{2} \def\ext@table{lot} \def\fnum@table{Table \thetable} \def\table{\@float{table}} \let\endtable\end@float \@namedef{table*}{\@dblfloat{table}} \@namedef{endtable*}{\end@dblfloat} \def\maketitle{\par \begingroup \def\thefootnote{\fnsymbol{footnote}} \def\@makefnmark{\hbox to 0pt{$^{\@thefnmark}$\hss}} \if@twocolumn \twocolumn[\@maketitle] \else %%%% commented out for \newpage \global\@topnum\z@ \@maketitle \fi\thispagestyle{plain}\@thanks \endgroup \setcounter{footnote}{0} \let\maketitle\relax \let\@maketitle\relax \gdef\@thanks{}\gdef\@author{}\gdef\@title{}\let\thanks\relax} \def\@maketitle{%%% commented out\newpage \null \begin{center} {\bf\@ucnothanks\@title\par}\vskip .075in {\footnotesize\spaceskip=1.5\fontdimen2\the\font \def\and{\ \scriptsize AND }\@tempswafalse\expandafter\@doauth\@author\and\relax} \end{center} \par \vskip .11in} \def\@ucnothanks#1{\expandafter\@ucnt#1\thanks\relax} \def\@ucnt#1\thanks{\uppercase{#1}\futurelet\@tempa\@ucnta} \def\@ucnta{\ifx\@tempa\relax\else\@ucntb\fi} \def\@ucntb#1\thanks\relax{\thanks{#1}} \def\@doauth#1\and{\let\@nextdoa=\@doauth \def\@tempc{\@ucnothanks{#1}} \futurelet\@tempa\@doautha} \def\@doautha{\ifx\@tempa\relax \if@tempswa {\and}\fi \let\@nextdoa=\relax \else \if@tempswa \gdef\and{,\ \scriptsize AND }, \fi \fi \@tempc\unskip\@tempswatrue\@nextdoa} \let\and=\relax \def\@abssec#1{\vspace{.05in}\footnotesize \parindent .2in {\bf #1. }\ignorespaces} \def\abstract{\@abssec{Abstract}} \def\keywords{\@abssec{Key words}} \def\AMS{\@abssec{AMS subject classifications}} \def\AM{\@abssec{AMS subject classification}} \def\endabstract{\par\vspace{.1in}} \let\endkeywords\endabstract \let\endAMS\endabstract \let\endAM\endabstract \mark{{}{}} \def\ps@plain{\let\@mkboth\@gobbletwo \def\@oddhead{}\def\@oddfoot{\footnotesize\rm\hfil\thepage \hfil}\def\@evenhead{}\let\@evenfoot\@oddfoot} \if@twoside \def\ps@headings{\let\@mkboth\markboth \def\@oddfoot{}\def\@evenfoot{}\def\@evenhead{ \rm\rlap{\thepage}\footnotesize\rm \hfil \leftmark\hfil}\def\@oddhead{\hbox{}\hfil {\footnotesize\rm\rightmark \hfil}\llap{\rm\thepage}} \def\sectionmark##1{\markboth {\uppercase{\ifnum \c@secnumdepth >\z@ \thesection.\hskip 1em\relax \fi ##1}}{}}\def\subsectionmark##1{\markright {\ifnum \c@secnumdepth >\@ne \thesubsection.\hskip 1em\relax \fi ##1}}} \else \def\ps@headings{\let\@mkboth\markboth\def\@oddfoot{}\def\@evenfoot{}% \def\@oddhead{\hbox{}\hfil{\footnotesize\rm \rightmark}\hfil \llap{\rm\thepage}}\def\sectionmark##1{\markright {\uppercase{\ifnum \c@secnumdepth >\z@ \thesection.\hskip 1em\relax \fi ##1}}}} \fi \def\ps@myheadings{\let\@mkboth\@gobbletwo \def\@oddhead{\hbox{}\hfil{\footnotesize\rm {\scriptsize \myoddhead} \rightmark}\hfil \llap{\rm\thepage}}\def\@oddfoot{}% \def\@evenhead{\rm\rlap{\thepage}\footnotesize\rm \hfil \leftmark {\scriptsize \myevenhead} \hfil\hbox{}}\def\@evenfoot{}\def\sectionmark##1{}% \def\subsectionmark##1{}} \def\sameauthor{\leavevmode\vrule height 2pt depth -1.6pt width 23pt} \def\endproof{\vbox{\hrule\hbox{% \vrule height1.3ex\hskip0.8ex\vrule}\hrule }} \def\today{\ifcase\month\or January\or February\or March\or April\or May\or June\or July\or August\or September\or October\or November\or December\fi \space\number\day, \number\year} \ps@plain \pagenumbering{arabic} \onecolumn \if@twoside\else\raggedbottom\fi % JCS - removed several lines here so that the style will run through % LaTeX2e %\font\sevbf=cmbx7 %\@addfontinfo\@xpt{\def\pbf{\fam\bffam\tenbf}\scriptfont\bffam\sevbf} %\font\eightbf=cmbx8 %\@addfontinfo\@viiipt{\def\pbf{\fam\bffam\tenbf}\textfont\bffam\eightbf} %\font\sevsyb=cmbsy7 %\@addfontinfo\@xpt{\def\pbf{\fam\bffam\tensyb}\scriptfont\bffam\sevsyb} %\font\sevsf=cmss8 %\@addfontinfo\@xpt{\def\psf{\fam\sffam\tensf}\scriptfont\sffam\sevsf} %\@getfont\psc\scfam\@viiipt{cmcsc8} % this font is installation dependant %\font\sevmib=cmmib7 %\@addfontinfo\@xpt{\def\boldmath{\@prtct\@nomathbold %\scriptfont\@ne\sevmib \@prtct\@boldtrue}} % FIXUP DOCUMENT STYLE OPTION % for LaTeX Version 2.09 <25 Jan 1988> % by John Hobby % % If the fleqn style option is also used, it should precede this one. \hyphenation{bi-dif-fer-en-tial buzz-word data-path equi-vari-ant gauss-ian hexa-dec-i-mal le-gendre mass-a-chu-setts non-smooth qua-si-smooth stand-alone time-stamp wave-guide white-space} % Fix Plain's \bigl, \Bigl, etc. macros so that they try to scale with % LaTeX size changes. This uses the fact that \@setsize sets \ht\strutbox % to be 70% of the normal unstretched baselineskip. \def\big#1{{\hbox{$\left#1\vcenter to1.428\ht\strutbox{}\right.\n@space$}}} \def\Big#1{{\hbox{$\left#1\vcenter to2.142\ht\strutbox{}\right.\n@space$}}} \def\bigg#1{{\hbox{$\left#1\vcenter to2.857\ht\strutbox{}\right.\n@space$}}} \def\Bigg#1{{\hbox{$\left#1\vcenter to3.571\ht\strutbox{}\right.\n@space$}}} \def\biggg#1{{\hbox{$\left#1\vcenter to4.286\ht\strutbox{}\right.\n@space$}}} \def\Biggg#1{{\hbox{$\left#1\vcenter to5.000\ht\strutbox{}\right.\n@space$}}} % Fix \sbox and \mbox so that they do not take the box contents as a %parameter. % This makes environments that depend on catcode changes work inside \def\sbox#1{\setbox#1\hbox} \def\mbox{\leavevmode\hbox} % Apply \addpenalty's trick for not confusing \addvspace so that the \write % from \addtocontents or \addcontentsline will not mess up vertical spacing \def\addvstuff#1{% \ifvmode\ifdim\lastskip=\z@ #1% \else \@tempskipb\lastskip \vskip -\lastskip #1\vskip\@tempskipb \fi \else #1\fi} \def\addpenalty#1{\ifvmode \if@minipage\else\if@nobreak\else \addvstuff{\penalty#1}% \fi\fi \else\@noitemerr\fi} \long\def\addtocontents#1#2{% \if@filesw \begingroup \let\label\@gobble \let\index\@gobble \def\protect##1{\string\string\string##1\string\space\space}% \edef\@tempa{\write \@auxout {\string\@writefile{#1}{#2}}}% \addvstuff{\@tempa \if@nobreak \ifvmode\nobreak\fi\fi}% \endgroup\fi} \def\addcontentsline#1#2#3{% \if@filesw \begingroup \let\label\@gobble \let\index\@gobble \def\protect##1{\string\string\string##1\string\space\space}% \@temptokena{\thepage}% \edef\@tempa{\write \@auxout{\string\@writefile{#1}% {\protect\contentsline{#2}{#3}{\the\@temptokena}}}}% \addvstuff{\@tempa \if@nobreak \ifvmode\nobreak\fi\fi}% \endgroup\fi} % Make floats use the trick from the minipage environment to avoid extraneous % space at the top. e.g., "\begin{figure} \begin{center}..." \def\@xfloat#1[#2]{\ifhmode \@bsphack\@floatpenalty -\@Mii\else \@floatpenalty-\@Miii\fi\def\@captype{#1}\ifinner \@parmoderr\@floatpenalty\z@ \else\@next\@currbox\@freelist{\@tempcnta\csname ftype@#1\endcsname \multiply\@tempcnta\@xxxii\advance\@tempcnta\sixt@@n \@tfor \@tempa :=#2\do {\if\@tempa h\advance\@tempcnta \@ne\fi \if\@tempa t\advance\@tempcnta \tw@\fi \if\@tempa b\advance\@tempcnta 4\relax\fi \if\@tempa p\advance\@tempcnta 8\relax\fi }\global\count\@currbox\@tempcnta}\@fltovf\fi \global\setbox\@currbox\vbox\bgroup \hsize\columnwidth \@parboxrestore \@minipagetrue \everypar{\global\@minipagefalse\everypar{}}} % We now redefine the eqnarray environment to correct the space around % the operator. Since the fleqn document style option also redefines % this environment, we carefully check the previous definition before % making any changes. Any changes to the definition in LaTeX itself % or in the fleqn document style option will cause the `Warning: unable...' % message to appear. If this happens it will be necessary to update the % definitions of \@tempa and \@tempb below and incorperate the changes into % the new definitions of \eqnarray. % This is the current definition of \eqnarray for the fleqn document style % option: \def\@tempa{\stepcounter{equation}\let\@currentlabel=\theequation \global\@eqnswtrue \global\@eqcnt\z@\tabskip\mathindent\let\\=\@eqncr \abovedisplayskip\topsep\ifvmode\advance\abovedisplayskip\partopsep\fi \belowdisplayskip\abovedisplayskip \belowdisplayshortskip\abovedisplayskip \abovedisplayshortskip\abovedisplayskip $$\halign to \linewidth\bgroup\@eqnsel\hskip\@centering$\displaystyle\tabskip\z@ {##}$&\global\@eqcnt\@ne \hskip 2\arraycolsep \hfil${##}$\hfil &\global\@eqcnt\tw@ \hskip 2\arraycolsep $\displaystyle{##}$\hfil \tabskip\@centering&\llap{##}\tabskip\z@\cr} % Here is the corresponding defintion from latex.tex: \def\@tempb{\stepcounter{equation}\let\@currentlabel=\theequation \global\@eqnswtrue \global\@eqcnt\z@\tabskip\@centering\let\\=\@eqncr $$\halign to \displaywidth\bgroup\@eqnsel\hskip\@centering $\displaystyle\tabskip\z@{##}$&\global\@eqcnt\@ne \hskip 2\arraycolsep \hfil${##}$\hfil &\global\@eqcnt\tw@ \hskip 2\arraycolsep $\displaystyle\tabskip\z@{##}$\hfil \tabskip\@centering&\llap{##}\tabskip\z@\cr} \ifx\eqnarray\@tempa % If the fleqn document style option is in effect \def\eqnarray{\stepcounter{equation}\let\@currentlabel=\theequation \global\@eqnswtrue \global\@eqcnt\z@\tabskip\mathindent\let\\=\@eqncr \abovedisplayskip\topsep\ifvmode\advance\abovedisplayskip\partopsep\fi \belowdisplayskip\abovedisplayskip \belowdisplayshortskip\abovedisplayskip \abovedisplayshortskip\abovedisplayskip $$\halign to \linewidth\bgroup\hfil $\displaystyle\tabskip\z@{##}$&\global\@eqcnt\@ne \hfil$\displaystyle{{}##{}}$\hfil &\global\@eqcnt\tw@ $\displaystyle{##}$\hfil \tabskip\@centering&\llap{##}\tabskip\z@\cr} \else\ifx\eqnarray\@tempb % Else try the default eqnarray environment \def\eqnarray{\stepcounter{equation}\let\@currentlabel=\theequation \global\@eqnswtrue \global\@eqcnt\z@\tabskip\@centering\let\\=\@eqncr $$\halign to \displaywidth\bgroup\hfil $\displaystyle\tabskip\z@{##}$&\global\@eqcnt\@ne \hfil$\displaystyle{{}##{}}$\hfil &\global\@eqcnt\tw@ $\displaystyle{##}$\hfil \tabskip\@centering&\llap{##}\tabskip\z@\cr} \else \typeout{Warning: Unable to fix unknown version of \string\enarray.} \fi\fi \def\@tempa{} % Free up TeX's memory \def\@tempb{} %%%%%%%%%%%%%%%%%%%%%% End \document\siamltex.sty %%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%% Start \document\tcilatex.tex %%%%%%%%%%%%%%%%%%%% % Macros for Scientific Word 2.5 documents saved with the LaTeX filter. %Copyright (C) 1994-95 TCI Software Research, Inc. \typeout{TCILATEX Macros for Scientific Word 2.5 <22 Dec 95>.} \typeout{NOTICE: This macro file is NOT proprietary and may be freely copied and distributed.} % \makeatletter % %%%%%%%%%%%%%%%%%%%%%% % macros for time \newcount\@hour\newcount\@minute\chardef\@x10\chardef\@xv60 \def\tcitime{ \def\@time{% \@minute\time\@hour\@minute\divide\@hour\@xv \ifnum\@hour<\@x 0\fi\the\@hour:% \multiply\@hour\@xv\advance\@minute-\@hour \ifnum\@minute<\@x 0\fi\the\@minute }}% %%%%%%%%%%%%%%%%%%%%%% % macro for hyperref \@ifundefined{hyperref}{\def\hyperref#1#2#3#4{#2\ref{#4}#3}}{} % macro for external program call \@ifundefined{qExtProgCall}{\def\qExtProgCall#1#2#3#4#5#6{\relax}}{} %%%%%%%%%%%%%%%%%%%%%% % % macros for graphics % \def\FILENAME#1{#1}% % \def\QCTOpt[#1]#2{% \def\QCTOptB{#1} \def\QCTOptA{#2} } \def\QCTNOpt#1{% \def\QCTOptA{#1} \let\QCTOptB\empty } \def\Qct{% \@ifnextchar[{% \QCTOpt}{\QCTNOpt} } \def\QCBOpt[#1]#2{% \def\QCBOptB{#1} \def\QCBOptA{#2} } \def\QCBNOpt#1{% \def\QCBOptA{#1} \let\QCBOptB\empty } \def\Qcb{% \@ifnextchar[{% \QCBOpt}{\QCBNOpt} } \def\PrepCapArgs{% \ifx\QCBOptA\empty \ifx\QCTOptA\empty {}% \else \ifx\QCTOptB\empty {\QCTOptA}% \else [\QCTOptB]{\QCTOptA}% \fi \fi \else \ifx\QCBOptA\empty {}% \else \ifx\QCBOptB\empty {\QCBOptA}% \else [\QCBOptB]{\QCBOptA}% \fi \fi \fi } \newcount\GRAPHICSTYPE %\GRAPHICSTYPE 0 is for TurboTeX %\GRAPHICSTYPE 1 is for DVIWindo (PostScript) %%%(removed)%\GRAPHICSTYPE 2 is for psfig (PostScript) \GRAPHICSTYPE=\z@ \def\GRAPHICSPS#1{% \ifcase\GRAPHICSTYPE%\GRAPHICSTYPE=0 \special{ps: #1}% \or%\GRAPHICSTYPE=1 \special{language "PS", include "#1"}% %%%\or%\GRAPHICSTYPE=2 %%% #1% \fi }% % \def\GRAPHICSHP#1{\special{include #1}}% % % \graffile{ body } %#1 % { contentswidth (scalar) } %#2 % { contentsheight (scalar) } %#3 % { vertical shift when in-line (scalar) } %#4 \def\graffile#1#2#3#4{% %%% \ifnum\GRAPHICSTYPE=\tw@ %%% %Following if using psfig %%% \@ifundefined{psfig}{\input psfig.tex}{}% %%% \psfig{file=#1, height=#3, width=#2}% %%% \else %Following for all others % JCS - added BOXTHEFRAME, see below \leavevmode \raise -#4 \BOXTHEFRAME{% \hbox to #2{\raise #3\hbox to #2{\null #1\hfil}}}% }% % % A box for drafts \def\draftbox#1#2#3#4{% \leavevmode\raise -#4 \hbox{% \frame{\rlap{\protect\tiny #1}\hbox to #2% {\vrule height#3 width\z@ depth\z@\hfil}% }% }% }% % \newcount\draft \draft=\z@ \let\nographics=\draft \newif\ifwasdraft \wasdraftfalse % \GRAPHIC{ body } %#1 % { draft name } %#2 % { contentswidth (scalar) } %#3 % { contentsheight (scalar) } %#4 % { vertical shift when in-line (scalar) } %#5 \def\GRAPHIC#1#2#3#4#5{% \ifnum\draft=\@ne\draftbox{#2}{#3}{#4}{#5}% \else\graffile{#1}{#3}{#4}{#5}% \fi }% % \def\addtoLaTeXparams#1{% \edef\LaTeXparams{\LaTeXparams #1}}% % % JCS - added a switch BoxFrame that can % be set by including X in the frame params. % If set a box is drawn around the frame. \newif\ifBoxFrame \BoxFramefalse \newif\ifOverFrame \OverFramefalse \newif\ifUnderFrame \UnderFramefalse \def\BOXTHEFRAME#1{% \hbox{% \ifBoxFrame \frame{#1}% \else {#1}% \fi }% } \def\doFRAMEparams#1{\BoxFramefalse\OverFramefalse\UnderFramefalse\readFRAMEparams#1\end}% \def\readFRAMEparams#1{% \ifx#1\end% \let\next=\relax \else \ifx#1i\dispkind=\z@\fi \ifx#1d\dispkind=\@ne\fi \ifx#1f\dispkind=\tw@\fi \ifx#1t\addtoLaTeXparams{t}\fi \ifx#1b\addtoLaTeXparams{b}\fi \ifx#1p\addtoLaTeXparams{p}\fi \ifx#1h\addtoLaTeXparams{h}\fi \ifx#1X\BoxFrametrue\fi \ifx#1O\OverFrametrue\fi \ifx#1U\UnderFrametrue\fi \ifx#1w \ifnum\draft=1\wasdrafttrue\else\wasdraftfalse\fi \draft=\@ne \fi \let\next=\readFRAMEparams \fi \next }% % %Macro for In-line graphics object % \IFRAME{ contentswidth (scalar) } %#1 % { contentsheight (scalar) } %#2 % { vertical shift when in-line (scalar) } %#3 % { draft name } %#4 % { body } %#5 % { caption} %#6 \def\IFRAME#1#2#3#4#5#6{% \bgroup \let\QCTOptA\empty \let\QCTOptB\empty \let\QCBOptA\empty \let\QCBOptB\empty #6% \parindent=0pt% \leftskip=0pt \rightskip=0pt \setbox0 = \hbox{\QCBOptA}% \@tempdima = #1\relax \ifOverFrame % Do this later \typeout{This is not implemented yet}% \show\HELP \else \ifdim\wd0>\@tempdima \advance\@tempdima by \@tempdima \ifdim\wd0 >\@tempdima \textwidth=\@tempdima \setbox1 =\vbox{% \noindent\hbox to \@tempdima{\hfill\GRAPHIC{#5}{#4}{#1}{#2}{#3}\hfill}\\% \noindent\hbox to \@tempdima{\parbox[b]{\@tempdima}{\QCBOptA}}% }% \wd1=\@tempdima \else \textwidth=\wd0 \setbox1 =\vbox{% \noindent\hbox to \wd0{\hfill\GRAPHIC{#5}{#4}{#1}{#2}{#3}\hfill}\\% \noindent\hbox{\QCBOptA}% }% \wd1=\wd0 \fi \else %\show\BBB \ifdim\wd0>0pt \hsize=\@tempdima \setbox1 =\vbox{% \unskip\GRAPHIC{#5}{#4}{#1}{#2}{0pt}% \break \unskip\hbox to \@tempdima{\hfill \QCBOptA\hfill}% }% \wd1=\@tempdima \else \hsize=\@tempdima \setbox1 =\vbox{% \unskip\GRAPHIC{#5}{#4}{#1}{#2}{0pt}% }% \wd1=\@tempdima \fi \fi \@tempdimb=\ht1 \advance\@tempdimb by \dp1 \advance\@tempdimb by -#2% \advance\@tempdimb by #3% \leavevmode \raise -\@tempdimb \hbox{\box1}% \fi \egroup% }% % %Macro for Display graphics object % \DFRAME{ contentswidth (scalar) } %#1 % { contentsheight (scalar) } %#2 % { draft label } %#3 % { name } %#4 % { caption} %#5 \def\DFRAME#1#2#3#4#5{% \begin{center} \let\QCTOptA\empty \let\QCTOptB\empty \let\QCBOptA\empty \let\QCBOptB\empty \ifOverFrame #5\QCTOptA\par \fi \GRAPHIC{#4}{#3}{#1}{#2}{\z@} \ifUnderFrame \nobreak\par #5\QCBOptA \fi \end{center}% }% % %Macro for Floating graphic object % \FFRAME{ framedata f|i tbph x F|T } %#1 % { contentswidth (scalar) } %#2 % { contentsheight (scalar) } %#3 % { caption } %#4 % { label } %#5 % { draft name } %#6 % { body } %#7 \def\FFRAME#1#2#3#4#5#6#7{% \begin{figure}[#1]% \let\QCTOptA\empty \let\QCTOptB\empty \let\QCBOptA\empty \let\QCBOptB\empty \ifOverFrame #4 \ifx\QCTOptA\empty \else \ifx\QCTOptB\empty \caption{\QCTOptA}% \else \caption[\QCTOptB]{\QCTOptA}% \fi \fi \ifUnderFrame\else \label{#5}% \fi \else \UnderFrametrue% \fi \begin{center}\GRAPHIC{#7}{#6}{#2}{#3}{\z@}\end{center}% \ifUnderFrame #4 \ifx\QCBOptA\empty \caption{}% \else \ifx\QCBOptB\empty \caption{\QCBOptA}% \else \caption[\QCBOptB]{\QCBOptA}% \fi \fi \label{#5}% \fi \end{figure}% }% % % % \FRAME{ framedata f|i tbph x F|T } %#1 % { contentswidth (scalar) } %#2 % { contentsheight (scalar) } %#3 % { vertical shift when in-line (scalar) } %#4 % { caption } %#5 % { label } %#6 % { name } %#7 % { body } %#8 % % framedata is a string which can contain the following % characters: idftbphxFT % Their meaning is as follows: % i, d or f : in-line, display, or floating % t,b,p,h : LaTeX floating placement options % x : fit contents box to contents % F or T : Figure or Table. % Later this can expand % to a more general float class. % % \newcount\dispkind% \def\makeactives{ \catcode`\"=\active \catcode`\;=\active \catcode`\:=\active \catcode`\'=\active \catcode`\~=\active } \bgroup \makeactives \gdef\activesoff{% \def"{\string"} \def;{\string;} \def:{\string:} \def'{\string'} \def~{\string~} %\bbl@deactivate{"}% %\bbl@deactivate{;}% %\bbl@deactivate{:}% %\bbl@deactivate{'}% } \egroup \def\FRAME#1#2#3#4#5#6#7#8{% \bgroup \@ifundefined{bbl@deactivate}{}{\activesoff} \ifnum\draft=\@ne \wasdrafttrue \else \wasdraftfalse% \fi \def\LaTeXparams{}% \dispkind=\z@ \def\LaTeXparams{}% \doFRAMEparams{#1}% \ifnum\dispkind=\z@\IFRAME{#2}{#3}{#4}{#7}{#8}{#5}\else \ifnum\dispkind=\@ne\DFRAME{#2}{#3}{#7}{#8}{#5}\else \ifnum\dispkind=\tw@ \edef\@tempa{\noexpand\FFRAME{\LaTeXparams}}% \@tempa{#2}{#3}{#5}{#6}{#7}{#8}% \fi \fi \fi \ifwasdraft\draft=1\else\draft=0\fi{}% \egroup }% % % This macro added to let SW gobble a parameter that % should not be passed on and expanded. \def\TEXUX#1{"texux"} % % Macros for text attributes: % \def\BF#1{{\bf {#1}}}% \def\NEG#1{\leavevmode\hbox{\rlap{\thinspace/}{$#1$}}}% % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % % % macros for user - defined functions \def\func#1{\mathop{\rm #1}}% \def\limfunc#1{\mathop{\rm #1}}% % % miscellaneous %\long\def\QQQ#1#2{}% \long\def\QQQ#1#2{% \long\expandafter\def\csname#1\endcsname{#2}}% %\def\QTP#1{}% JCS - this was changed becuase style editor will define QTP \@ifundefined{QTP}{\def\QTP#1{}}{} \@ifundefined{QEXCLUDE}{\def\QEXCLUDE#1{}}{} %\@ifundefined{Qcb}{\def\Qcb#1{#1}}{} %\@ifundefined{Qct}{\def\Qct#1{#1}}{} \@ifundefined{Qlb}{\def\Qlb#1{#1}}{} \@ifundefined{Qlt}{\def\Qlt#1{#1}}{} \def\QWE{}% \long\def\QQA#1#2{}% %\def\QTR#1#2{{\em #2}}% Always \em!!! %\def\QTR#1#2{\mbox{\begin{#1}#2\end{#1}}}%cb%%% \def\QTR#1#2{{\csname#1\endcsname #2}}%(gp) Is this the best? \long\def\TeXButton#1#2{#2}% \long\def\QSubDoc#1#2{#2}% \def\EXPAND#1[#2]#3{}% \def\NOEXPAND#1[#2]#3{}% \def\PROTECTED{}% \def\LaTeXparent#1{}% \def\ChildStyles#1{}% \def\ChildDefaults#1{}% \def\QTagDef#1#2#3{}% % % Macros for style editor docs \@ifundefined{StyleEditBeginDoc}{\def\StyleEditBeginDoc{\relax}}{} % % Macros for footnotes \def\QQfnmark#1{\footnotemark} \def\QQfntext#1#2{\addtocounter{footnote}{#1}\footnotetext{#2}} % % Macros for indexing. \def\MAKEINDEX{\makeatletter\input gnuindex.sty\makeatother\makeindex}% \@ifundefined{INDEX}{\def\INDEX#1#2{}{}}{}% \@ifundefined{SUBINDEX}{\def\SUBINDEX#1#2#3{}{}{}}{}% \@ifundefined{initial}% {\def\initial#1{\bigbreak{\raggedright\large\bf #1}\kern 2\p@\penalty3000}}% {}% \@ifundefined{entry}{\def\entry#1#2{\item {#1}, #2}}{}% \@ifundefined{primary}{\def\primary#1{\item {#1}}}{}% \@ifundefined{secondary}{\def\secondary#1#2{\subitem {#1}, #2}}{}% % % \@ifundefined{ZZZ}{}{\MAKEINDEX\makeatletter}% % % Attempts to avoid problems with other styles \@ifundefined{abstract}{% \def\abstract{% \if@twocolumn \section*{Abstract (Not appropriate in this style!)}% \else \small \begin{center}{\bf Abstract\vspace{-.5em}\vspace{\z@}}\end{center}% \quotation \fi }% }{% }% \@ifundefined{endabstract}{\def\endabstract {\if@twocolumn\else\endquotation\fi}}{}% \@ifundefined{maketitle}{\def\maketitle#1{}}{}% \@ifundefined{affiliation}{\def\affiliation#1{}}{}% \@ifundefined{proof}{\def\proof{\noindent{\bfseries Proof. }}}{}% \@ifundefined{endproof}{\def\endproof{\mbox{\ \rule{.1in}{.1in}}}}{}% \@ifundefined{newfield}{\def\newfield#1#2{}}{}% \@ifundefined{chapter}{\def\chapter#1{\par(Chapter head:)#1\par }% \newcount\c@chapter}{}% \@ifundefined{part}{\def\part#1{\par(Part head:)#1\par }}{}% \@ifundefined{section}{\def\section#1{\par(Section head:)#1\par }}{}% \@ifundefined{subsection}{\def\subsection#1% {\par(Subsection head:)#1\par }}{}% \@ifundefined{subsubsection}{\def\subsubsection#1% {\par(Subsubsection head:)#1\par }}{}% \@ifundefined{paragraph}{\def\paragraph#1% {\par(Subsubsubsection head:)#1\par }}{}% \@ifundefined{subparagraph}{\def\subparagraph#1% {\par(Subsubsubsubsection head:)#1\par }}{}% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % These symbols are not recognized by LaTeX \@ifundefined{therefore}{\def\therefore{}}{}% \@ifundefined{backepsilon}{\def\backepsilon{}}{}% \@ifundefined{yen}{\def\yen{\hbox{\rm\rlap=Y}}}{}% \@ifundefined{registered}{% \def\registered{\relax\ifmmode{}\r@gistered \else$\m@th\r@gistered$\fi}% \def\r@gistered{^{\ooalign {\hfil\raise.07ex\hbox{$\scriptstyle\rm\text{R}$}\hfil\crcr \mathhexbox20D}}}}{}% \@ifundefined{Eth}{\def\Eth{}}{}% \@ifundefined{eth}{\def\eth{}}{}% \@ifundefined{Thorn}{\def\Thorn{}}{}% \@ifundefined{thorn}{\def\thorn{}}{}% % A macro to allow any symbol that requires math to appear in text \def\TEXTsymbol#1{\mbox{$#1$}}% \@ifundefined{degree}{\def\degree{{}^{\circ}}}{}% % % macros for T3TeX files \newdimen\theight \def\Column{% \vadjust{\setbox\z@=\hbox{\scriptsize\quad\quad tcol}% \theight=\ht\z@\advance\theight by \dp\z@\advance\theight by \lineskip \kern -\theight \vbox to \theight{% \rightline{\rlap{\box\z@}}% \vss }% }% }% % \def\qed{% \ifhmode\unskip\nobreak\fi\ifmmode\ifinner\else\hskip5\p@\fi\fi \hbox{\hskip5\p@\vrule width4\p@ height6\p@ depth1.5\p@\hskip\p@}% }% % \def\cents{\hbox{\rm\rlap/c}}% \def\miss{\hbox{\vrule height2\p@ width 2\p@ depth\z@}}% %\def\miss{\hbox{.}}% %another possibility % \def\vvert{\Vert}% %always translated to \left| or \right| % \def\tcol#1{{\baselineskip=6\p@ \vcenter{#1}} \Column} % % \def\dB{\hbox{{}}}% %dummy entry in column \def\mB#1{\hbox{$#1$}}% %column entry \def\nB#1{\hbox{#1}}% %column entry (not math) % %\newcount\notenumber %\def\clearnotenumber{\notenumber=0} %\def\note{\global\advance\notenumber by 1 % \footnote{$^{\the\notenumber}$}} %\def\note{\global\advance\notenumber by 1 \def\note{$^{\dag}}% % % \def\newfmtname{LaTeX2e} \def\chkcompat{% \if@compatibility \else \usepackage{latexsym} \fi } \ifx\fmtname\newfmtname \DeclareOldFontCommand{\rm}{\normalfont\rmfamily}{\mathrm} \DeclareOldFontCommand{\sf}{\normalfont\sffamily}{\mathsf} \DeclareOldFontCommand{\tt}{\normalfont\ttfamily}{\mathtt} \DeclareOldFontCommand{\bf}{\normalfont\bfseries}{\mathbf} \DeclareOldFontCommand{\it}{\normalfont\itshape}{\mathit} \DeclareOldFontCommand{\sl}{\normalfont\slshape}{\@nomath\sl} \DeclareOldFontCommand{\sc}{\normalfont\scshape}{\@nomath\sc} \chkcompat \fi % % Greek bold macros % Redefine all of the math symbols % which might be bolded - there are % probably others to add to this list \def\alpha{{\Greekmath 010B}}% \def\beta{{\Greekmath 010C}}% \def\gamma{{\Greekmath 010D}}% \def\delta{{\Greekmath 010E}}% \def\epsilon{{\Greekmath 010F}}% \def\zeta{{\Greekmath 0110}}% \def\eta{{\Greekmath 0111}}% \def\theta{{\Greekmath 0112}}% \def\iota{{\Greekmath 0113}}% \def\kappa{{\Greekmath 0114}}% \def\lambda{{\Greekmath 0115}}% \def\mu{{\Greekmath 0116}}% \def\nu{{\Greekmath 0117}}% \def\xi{{\Greekmath 0118}}% \def\pi{{\Greekmath 0119}}% \def\rho{{\Greekmath 011A}}% \def\sigma{{\Greekmath 011B}}% \def\tau{{\Greekmath 011C}}% \def\upsilon{{\Greekmath 011D}}% \def\phi{{\Greekmath 011E}}% \def\chi{{\Greekmath 011F}}% \def\psi{{\Greekmath 0120}}% \def\omega{{\Greekmath 0121}}% \def\varepsilon{{\Greekmath 0122}}% \def\vartheta{{\Greekmath 0123}}% \def\varpi{{\Greekmath 0124}}% \def\varrho{{\Greekmath 0125}}% \def\varsigma{{\Greekmath 0126}}% \def\varphi{{\Greekmath 0127}}% \def\nabla{{\Greekmath 0272}} \def\FindBoldGroup{% {\setbox0=\hbox{$\mathbf{x\global\edef\theboldgroup{\the\mathgroup}}$}}% } \def\Greekmath#1#2#3#4{% \if@compatibility \ifnum\mathgroup=\symbold \mathchoice{\mbox{\boldmath$\displaystyle\mathchar"#1#2#3#4$}}% {\mbox{\boldmath$\textstyle\mathchar"#1#2#3#4$}}% {\mbox{\boldmath$\scriptstyle\mathchar"#1#2#3#4$}}% {\mbox{\boldmath$\scriptscriptstyle\mathchar"#1#2#3#4$}}% \else \mathchar"#1#2#3#4% \fi \else \FindBoldGroup \ifnum\mathgroup=\theboldgroup % For 2e \mathchoice{\mbox{\boldmath$\displaystyle\mathchar"#1#2#3#4$}}% {\mbox{\boldmath$\textstyle\mathchar"#1#2#3#4$}}% {\mbox{\boldmath$\scriptstyle\mathchar"#1#2#3#4$}}% {\mbox{\boldmath$\scriptscriptstyle\mathchar"#1#2#3#4$}}% \else \mathchar"#1#2#3#4% \fi \fi} \newif\ifGreekBold \GreekBoldfalse \let\SAVEPBF=\pbf \def\pbf{\GreekBoldtrue\SAVEPBF}% % \@ifundefined{theorem}{\newtheorem{theorem}{Theorem}}{} \@ifundefined{lemma}{\newtheorem{lemma}[theorem]{Lemma}}{} \@ifundefined{corollary}{\newtheorem{corollary}[theorem]{Corollary}}{} \@ifundefined{conjecture}{\newtheorem{conjecture}[theorem]{Conjecture}}{} \@ifundefined{proposition}{\newtheorem{proposition}[theorem]{Proposition}}{} \@ifundefined{axiom}{\newtheorem{axiom}{Axiom}}{} \@ifundefined{remark}{\newtheorem{remark}{Remark}}{} \@ifundefined{example}{\newtheorem{example}{Example}}{} \@ifundefined{exercise}{\newtheorem{exercise}{Exercise}}{} \@ifundefined{definition}{\newtheorem{definition}{Definition}}{} \@ifundefined{mathletters}{% %\def\theequation{\arabic{equation}} \newcounter{equationnumber} \def\mathletters{% \addtocounter{equation}{1} \edef\@currentlabel{\theequation}% \setcounter{equationnumber}{\c@equation} \setcounter{equation}{0}% \edef\theequation{\@currentlabel\noexpand\alph{equation}}% } \def\endmathletters{% \setcounter{equation}{\value{equationnumber}}% } }{} %Logos \@ifundefined{BibTeX}{% \def\BibTeX{{\rm B\kern-.05em{\sc i\kern-.025em b}\kern-.08em T\kern-.1667em\lower.7ex\hbox{E}\kern-.125emX}}}{}% \@ifundefined{AmS}% {\def\AmS{{\protect\usefont{OMS}{cmsy}{m}{n}% A\kern-.1667em\lower.5ex\hbox{M}\kern-.125emS}}}{}% \@ifundefined{AmSTeX}{\def\AmSTeX{\protect\AmS-\protect\TeX\@}}{}% % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % NOTE: The rest of this file is read only if amstex has not been % loaded. This section is used to define amstex constructs in the % event they have not been defined. % % \ifx\ds@amstex\relax \message{amstex already loaded}\makeatother\endinput% 2.09 compatability \else \@ifpackageloaded{amstex}% {\message{amstex already loaded}\makeatother\endinput} {} \@ifpackageloaded{amsgen}% {\message{amsgen already loaded}\makeatother\endinput} {} \fi %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %% % % % Macros to define some AMS LaTeX constructs when % AMS LaTeX has not been loaded % % These macros are copied from the AMS-TeX package for doing % multiple integrals. % \let\DOTSI\relax \def\RIfM@{\relax\ifmmode}% \def\FN@{\futurelet\next}% \newcount\intno@ \def\iint{\DOTSI\intno@\tw@\FN@\ints@}% \def\iiint{\DOTSI\intno@\thr@@\FN@\ints@}% \def\iiiint{\DOTSI\intno@4 \FN@\ints@}% \def\idotsint{\DOTSI\intno@\z@\FN@\ints@}% \def\ints@{\findlimits@\ints@@}% \newif\iflimtoken@ \newif\iflimits@ \def\findlimits@{\limtoken@true\ifx\next\limits\limits@true \else\ifx\next\nolimits\limits@false\else \limtoken@false\ifx\ilimits@\nolimits\limits@false\else \ifinner\limits@false\else\limits@true\fi\fi\fi\fi}% \def\multint@{\int\ifnum\intno@=\z@\intdots@ %1 \else\intkern@\fi %2 \ifnum\intno@>\tw@\int\intkern@\fi %3 \ifnum\intno@>\thr@@\int\intkern@\fi %4 \int}% %5 \def\multintlimits@{\intop\ifnum\intno@=\z@\intdots@\else\intkern@\fi \ifnum\intno@>\tw@\intop\intkern@\fi \ifnum\intno@>\thr@@\intop\intkern@\fi\intop}% \def\intic@{% \mathchoice{\hskip.5em}{\hskip.4em}{\hskip.4em}{\hskip.4em}}% \def\negintic@{\mathchoice {\hskip-.5em}{\hskip-.4em}{\hskip-.4em}{\hskip-.4em}}% \def\ints@@{\iflimtoken@ %1 \def\ints@@@{\iflimits@\negintic@ \mathop{\intic@\multintlimits@}\limits %2 \else\multint@\nolimits\fi %3 \eat@}% %4 \else %5 \def\ints@@@{\iflimits@\negintic@ \mathop{\intic@\multintlimits@}\limits\else \multint@\nolimits\fi}\fi\ints@@@}% \def\intkern@{\mathchoice{\!\!\!}{\!\!}{\!\!}{\!\!}}% \def\plaincdots@{\mathinner{\cdotp\cdotp\cdotp}}% \def\intdots@{\mathchoice{\plaincdots@}% {{\cdotp}\mkern1.5mu{\cdotp}\mkern1.5mu{\cdotp}}% {{\cdotp}\mkern1mu{\cdotp}\mkern1mu{\cdotp}}% {{\cdotp}\mkern1mu{\cdotp}\mkern1mu{\cdotp}}}% % % % These macros are for doing the AMS \text{} construct % \def\RIfM@{\relax\protect\ifmmode} \def\text{\RIfM@\expandafter\text@\else\expandafter\mbox\fi} \let\nfss@text\text \def\text@#1{\mathchoice {\textdef@\displaystyle\f@size{#1}}% {\textdef@\textstyle\tf@size{\firstchoice@false #1}}% {\textdef@\textstyle\sf@size{\firstchoice@false #1}}% {\textdef@\textstyle \ssf@size{\firstchoice@false #1}}% \glb@settings} \def\textdef@#1#2#3{\hbox{{% \everymath{#1}% \let\f@size#2\selectfont #3}}} \newif\iffirstchoice@ \firstchoice@true % % Old Scheme for \text % %\def\rmfam{\z@}% %\newif\iffirstchoice@ %\firstchoice@true %\def\textfonti{\the\textfont\@ne}% %\def\textfontii{\the\textfont\tw@}% %\def\text{\RIfM@\expandafter\text@\else\expandafter\text@@\fi}% %\def\text@@#1{\leavevmode\hbox{#1}}% %\def\text@#1{\mathchoice % {\hbox{\everymath{\displaystyle}\def\textfonti{\the\textfont\@ne}% % \def\textfontii{\the\textfont\tw@}\textdef@@ T#1}}% % {\hbox{\firstchoice@false % \everymath{\textstyle}\def\textfonti{\the\textfont\@ne}% % \def\textfontii{\the\textfont\tw@}\textdef@@ T#1}}% % {\hbox{\firstchoice@false % \everymath{\scriptstyle}\def\textfonti{\the\scriptfont\@ne}% % \def\textfontii{\the\scriptfont\tw@}\textdef@@ S\rm#1}}% % {\hbox{\firstchoice@false % \everymath{\scriptscriptstyle}\def\textfonti % {\the\scriptscriptfont\@ne}% % \def\textfontii{\the\scriptscriptfont\tw@}\textdef@@ s\rm#1}}}% %\def\textdef@@#1{\textdef@#1\rm\textdef@#1\bf\textdef@#1\sl % \textdef@#1\it}% %\def\DN@{\def\next@}% %\def\eat@#1{}% %\def\textdef@#1#2{% % \DN@{\csname\expandafter\eat@\string#2fam\endcsname}% % \if S#1\edef#2{\the\scriptfont\next@\relax}% % \else\if s#1\edef#2{\the\scriptscriptfont\next@\relax}% % \else\edef#2{\the\textfont\next@\relax}\fi\fi}% % % %These are the AMS constructs for multiline limits. % \def\Let@{\relax\iffalse{\fi\let\\=\cr\iffalse}\fi}% \def\vspace@{\def\vspace##1{\crcr\noalign{\vskip##1\relax}}}% \def\multilimits@{\bgroup\vspace@\Let@ \baselineskip\fontdimen10 \scriptfont\tw@ \advance\baselineskip\fontdimen12 \scriptfont\tw@ \lineskip\thr@@\fontdimen8 \scriptfont\thr@@ \lineskiplimit\lineskip \vbox\bgroup\ialign\bgroup\hfil$\m@th\scriptstyle{##}$\hfil\crcr}% \def\Sb{_\multilimits@}% \def\endSb{\crcr\egroup\egroup\egroup}% \def\Sp{^\multilimits@}% \let\endSp\endSb % % %These are AMS constructs for horizontal arrows % \newdimen\ex@ \ex@.2326ex \def\rightarrowfill@#1{$#1\m@th\mathord-\mkern-6mu\cleaders \hbox{$#1\mkern-2mu\mathord-\mkern-2mu$}\hfill \mkern-6mu\mathord\rightarrow$}% \def\leftarrowfill@#1{$#1\m@th\mathord\leftarrow\mkern-6mu\cleaders \hbox{$#1\mkern-2mu\mathord-\mkern-2mu$}\hfill\mkern-6mu\mathord-$}% \def\leftrightarrowfill@#1{$#1\m@th\mathord\leftarrow \mkern-6mu\cleaders \hbox{$#1\mkern-2mu\mathord-\mkern-2mu$}\hfill \mkern-6mu\mathord\rightarrow$}% \def\overrightarrow{\mathpalette\overrightarrow@}% \def\overrightarrow@#1#2{\vbox{\ialign{##\crcr\rightarrowfill@#1\crcr \noalign{\kern-\ex@\nointerlineskip}$\m@th\hfil#1#2\hfil$\crcr}}}% \let\overarrow\overrightarrow \def\overleftarrow{\mathpalette\overleftarrow@}% \def\overleftarrow@#1#2{\vbox{\ialign{##\crcr\leftarrowfill@#1\crcr \noalign{\kern-\ex@\nointerlineskip}$\m@th\hfil#1#2\hfil$\crcr}}}% \def\overleftrightarrow{\mathpalette\overleftrightarrow@}% \def\overleftrightarrow@#1#2{\vbox{\ialign{##\crcr \leftrightarrowfill@#1\crcr \noalign{\kern-\ex@\nointerlineskip}$\m@th\hfil#1#2\hfil$\crcr}}}% \def\underrightarrow{\mathpalette\underrightarrow@}% \def\underrightarrow@#1#2{\vtop{\ialign{##\crcr$\m@th\hfil#1#2\hfil $\crcr\noalign{\nointerlineskip}\rightarrowfill@#1\crcr}}}% \let\underarrow\underrightarrow \def\underleftarrow{\mathpalette\underleftarrow@}% \def\underleftarrow@#1#2{\vtop{\ialign{##\crcr$\m@th\hfil#1#2\hfil $\crcr\noalign{\nointerlineskip}\leftarrowfill@#1\crcr}}}% \def\underleftrightarrow{\mathpalette\underleftrightarrow@}% \def\underleftrightarrow@#1#2{\vtop{\ialign{##\crcr$\m@th \hfil#1#2\hfil$\crcr \noalign{\nointerlineskip}\leftrightarrowfill@#1\crcr}}}% %%%%%%%%%%%%%%%%%%%%% % 94.0815 by Jon: \def\qopnamewl@#1{\mathop{\operator@font#1}\nlimits@} \let\nlimits@\displaylimits \def\setboxz@h{\setbox\z@\hbox} \def\varlim@#1#2{\mathop{\vtop{\ialign{##\crcr \hfil$#1\m@th\operator@font lim$\hfil\crcr \noalign{\nointerlineskip}#2#1\crcr \noalign{\nointerlineskip\kern-\ex@}\crcr}}}} \def\rightarrowfill@#1{\m@th\setboxz@h{$#1-$}\ht\z@\z@ $#1\copy\z@\mkern-6mu\cleaders \hbox{$#1\mkern-2mu\box\z@\mkern-2mu$}\hfill \mkern-6mu\mathord\rightarrow$} \def\leftarrowfill@#1{\m@th\setboxz@h{$#1-$}\ht\z@\z@ $#1\mathord\leftarrow\mkern-6mu\cleaders \hbox{$#1\mkern-2mu\copy\z@\mkern-2mu$}\hfill \mkern-6mu\box\z@$} \def\projlim{\qopnamewl@{proj\,lim}} \def\injlim{\qopnamewl@{inj\,lim}} \def\varinjlim{\mathpalette\varlim@\rightarrowfill@} \def\varprojlim{\mathpalette\varlim@\leftarrowfill@} \def\varliminf{\mathpalette\varliminf@{}} \def\varliminf@#1{\mathop{\underline{\vrule\@depth.2\ex@\@width\z@ \hbox{$#1\m@th\operator@font lim$}}}} \def\varlimsup{\mathpalette\varlimsup@{}} \def\varlimsup@#1{\mathop{\overline {\hbox{$#1\m@th\operator@font lim$}}}} % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % \def\tfrac#1#2{{\textstyle {#1 \over #2}}}% \def\dfrac#1#2{{\displaystyle {#1 \over #2}}}% \def\binom#1#2{{#1 \choose #2}}% \def\tbinom#1#2{{\textstyle {#1 \choose #2}}}% \def\dbinom#1#2{{\displaystyle {#1 \choose #2}}}% \def\QATOP#1#2{{#1 \atop #2}}% \def\QTATOP#1#2{{\textstyle {#1 \atop #2}}}% \def\QDATOP#1#2{{\displaystyle {#1 \atop #2}}}% \def\QABOVE#1#2#3{{#2 \above#1 #3}}% \def\QTABOVE#1#2#3{{\textstyle {#2 \above#1 #3}}}% \def\QDABOVE#1#2#3{{\displaystyle {#2 \above#1 #3}}}% \def\QOVERD#1#2#3#4{{#3 \overwithdelims#1#2 #4}}% \def\QTOVERD#1#2#3#4{{\textstyle {#3 \overwithdelims#1#2 #4}}}% \def\QDOVERD#1#2#3#4{{\displaystyle {#3 \overwithdelims#1#2 #4}}}% \def\QATOPD#1#2#3#4{{#3 \atopwithdelims#1#2 #4}}% \def\QTATOPD#1#2#3#4{{\textstyle {#3 \atopwithdelims#1#2 #4}}}% \def\QDATOPD#1#2#3#4{{\displaystyle {#3 \atopwithdelims#1#2 #4}}}% \def\QABOVED#1#2#3#4#5{{#4 \abovewithdelims#1#2#3 #5}}% \def\QTABOVED#1#2#3#4#5{{\textstyle {#4 \abovewithdelims#1#2#3 #5}}}% \def\QDABOVED#1#2#3#4#5{{\displaystyle {#4 \abovewithdelims#1#2#3 #5}}}% % % Macros for text size operators: %JCS - added braces and \mathop around \displaystyle\int, etc. % \def\tint{\mathop{\textstyle \int}}% \def\tiint{\mathop{\textstyle \iint }}% \def\tiiint{\mathop{\textstyle \iiint }}% \def\tiiiint{\mathop{\textstyle \iiiint }}% \def\tidotsint{\mathop{\textstyle \idotsint }}% \def\toint{\mathop{\textstyle \oint}}% \def\tsum{\mathop{\textstyle \sum }}% \def\tprod{\mathop{\textstyle \prod }}% \def\tbigcap{\mathop{\textstyle \bigcap }}% \def\tbigwedge{\mathop{\textstyle \bigwedge }}% \def\tbigoplus{\mathop{\textstyle \bigoplus }}% \def\tbigodot{\mathop{\textstyle \bigodot }}% \def\tbigsqcup{\mathop{\textstyle \bigsqcup }}% \def\tcoprod{\mathop{\textstyle \coprod }}% \def\tbigcup{\mathop{\textstyle \bigcup }}% \def\tbigvee{\mathop{\textstyle \bigvee }}% \def\tbigotimes{\mathop{\textstyle \bigotimes }}% \def\tbiguplus{\mathop{\textstyle \biguplus }}% % % %Macros for display size operators: % \def\dint{\mathop{\displaystyle \int}}% \def\diint{\mathop{\displaystyle \iint }}% \def\diiint{\mathop{\displaystyle \iiint }}% \def\diiiint{\mathop{\displaystyle \iiiint }}% \def\didotsint{\mathop{\displaystyle \idotsint }}% \def\doint{\mathop{\displaystyle \oint}}% \def\dsum{\mathop{\displaystyle \sum }}% \def\dprod{\mathop{\displaystyle \prod }}% \def\dbigcap{\mathop{\displaystyle \bigcap }}% \def\dbigwedge{\mathop{\displaystyle \bigwedge }}% \def\dbigoplus{\mathop{\displaystyle \bigoplus }}% \def\dbigodot{\mathop{\displaystyle \bigodot }}% \def\dbigsqcup{\mathop{\displaystyle \bigsqcup }}% \def\dcoprod{\mathop{\displaystyle \coprod }}% \def\dbigcup{\mathop{\displaystyle \bigcup }}% \def\dbigvee{\mathop{\displaystyle \bigvee }}% \def\dbigotimes{\mathop{\displaystyle \bigotimes }}% \def\dbiguplus{\mathop{\displaystyle \biguplus }}% % %Companion to stackrel \def\stackunder#1#2{\mathrel{\mathop{#2}\limits_{#1}}}% % % % These are AMS environments that will be defined to % be verbatims if amstex has not actually been % loaded % % \begingroup \catcode `|=0 \catcode `[= 1 \catcode`]=2 \catcode `\{=12 \catcode `\}=12 \catcode`\\=12 |gdef|@alignverbatim#1\end{align}[#1|end[align]] |gdef|@salignverbatim#1\end{align*}[#1|end[align*]] |gdef|@alignatverbatim#1\end{alignat}[#1|end[alignat]] |gdef|@salignatverbatim#1\end{alignat*}[#1|end[alignat*]] |gdef|@xalignatverbatim#1\end{xalignat}[#1|end[xalignat]] |gdef|@sxalignatverbatim#1\end{xalignat*}[#1|end[xalignat*]] |gdef|@gatherverbatim#1\end{gather}[#1|end[gather]] |gdef|@sgatherverbatim#1\end{gather*}[#1|end[gather*]] |gdef|@gatherverbatim#1\end{gather}[#1|end[gather]] |gdef|@sgatherverbatim#1\end{gather*}[#1|end[gather*]] |gdef|@multilineverbatim#1\end{multiline}[#1|end[multiline]] |gdef|@smultilineverbatim#1\end{multiline*}[#1|end[multiline*]] |gdef|@arraxverbatim#1\end{arrax}[#1|end[arrax]] |gdef|@sarraxverbatim#1\end{arrax*}[#1|end[arrax*]] |gdef|@tabulaxverbatim#1\end{tabulax}[#1|end[tabulax]] |gdef|@stabulaxverbatim#1\end{tabulax*}[#1|end[tabulax*]] |endgroup \def\align{\@verbatim \frenchspacing\@vobeyspaces \@alignverbatim You are using the "align" environment in a style in which it is not defined.} \let\endalign=\endtrivlist \@namedef{align*}{\@verbatim\@salignverbatim You are using the "align*" environment in a style in which it is not defined.} \expandafter\let\csname endalign*\endcsname =\endtrivlist \def\alignat{\@verbatim \frenchspacing\@vobeyspaces \@alignatverbatim You are using the "alignat" environment in a style in which it is not defined.} \let\endalignat=\endtrivlist \@namedef{alignat*}{\@verbatim\@salignatverbatim You are using the "alignat*" environment in a style in which it is not defined.} \expandafter\let\csname endalignat*\endcsname =\endtrivlist \def\xalignat{\@verbatim \frenchspacing\@vobeyspaces \@xalignatverbatim You are using the "xalignat" environment in a style in which it is not defined.} \let\endxalignat=\endtrivlist \@namedef{xalignat*}{\@verbatim\@sxalignatverbatim You are using the "xalignat*" environment in a style in which it is not defined.} \expandafter\let\csname endxalignat*\endcsname =\endtrivlist \def\gather{\@verbatim \frenchspacing\@vobeyspaces \@gatherverbatim You are using the "gather" environment in a style in which it is not defined.} \let\endgather=\endtrivlist \@namedef{gather*}{\@verbatim\@sgatherverbatim You are using the "gather*" environment in a style in which it is not defined.} \expandafter\let\csname endgather*\endcsname =\endtrivlist \def\multiline{\@verbatim \frenchspacing\@vobeyspaces \@multilineverbatim You are using the "multiline" environment in a style in which it is not defined.} \let\endmultiline=\endtrivlist \@namedef{multiline*}{\@verbatim\@smultilineverbatim You are using the "multiline*" environment in a style in which it is not defined.} \expandafter\let\csname endmultiline*\endcsname =\endtrivlist \def\arrax{\@verbatim \frenchspacing\@vobeyspaces \@arraxverbatim You are using a type of "array" construct that is only allowed in AmS-LaTeX.} \let\endarrax=\endtrivlist \def\tabulax{\@verbatim \frenchspacing\@vobeyspaces \@tabulaxverbatim You are using a type of "tabular" construct that is only allowed in AmS-LaTeX.} \let\endtabulax=\endtrivlist \@namedef{arrax*}{\@verbatim\@sarraxverbatim You are using a type of "array*" construct that is only allowed in AmS-LaTeX.} \expandafter\let\csname endarrax*\endcsname =\endtrivlist \@namedef{tabulax*}{\@verbatim\@stabulaxverbatim You are using a type of "tabular*" construct that is only allowed in AmS-LaTeX.} \expandafter\let\csname endtabulax*\endcsname =\endtrivlist % macro to simulate ams tag construct % This macro is a fix to eqnarray \def\@@eqncr{\let\@tempa\relax \ifcase\@eqcnt \def\@tempa{& & &}\or \def\@tempa{& &}% \else \def\@tempa{&}\fi \@tempa \if@eqnsw \iftag@ \@taggnum \else \@eqnnum\stepcounter{equation}% \fi \fi \global\tag@false \global\@eqnswtrue \global\@eqcnt\z@\cr} % This macro is a fix to the equation environment \def\endequation{% \ifmmode\ifinner % FLEQN hack \iftag@ \addtocounter{equation}{-1} % undo the increment made in the begin part $\hfil \displaywidth\linewidth\@taggnum\egroup \endtrivlist \global\tag@false \global\@ignoretrue \else $\hfil \displaywidth\linewidth\@eqnnum\egroup \endtrivlist \global\tag@false \global\@ignoretrue \fi \else \iftag@ \addtocounter{equation}{-1} % undo the increment made in the begin part \eqno \hbox{\@taggnum} \global\tag@false% $$\global\@ignoretrue \else \eqno \hbox{\@eqnnum}% $$ BRACE MATCHING HACK $$\global\@ignoretrue \fi \fi\fi } \newif\iftag@ \tag@false \def\tag{\@ifnextchar*{\@tagstar}{\@tag}} \def\@tag#1{% \global\tag@true \global\def\@taggnum{(#1)}} \def\@tagstar*#1{% \global\tag@true \global\def\@taggnum{#1}% } % Do not add anything to the end of this file. % The last section of the file is loaded only if % amstex has not been. \makeatother \endinput %%%%%%%%%%%%%%%%%%%%%% End \document\tcilatex.tex %%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%% Start \macros\amsfonts\Umsa57.fd %%%%%%%%%%%%%%%%%% %% %% This is file `Umsa57.fd', generated %% on <1995/1/6> with the docstrip utility (2.2i). %% %% The original source files were: %% %% amsfonts.fdd (with options: `57,msa') %%% ==================================================================== %%% @LaTeX-file{ %%% author = "American Mathematical Society", %%% version = "2.2e", %%% date = "1995/01/05", %%% time = "11:48:06 EST", %%% filename = "amsfonts.fdd", %%% copyright = "Copyright (C) 1994 American Mathematical Society, %%% all rights reserved. Copying of this file is %%% authorized only if either: %%% (1) you make absolutely no changes to your copy, %%% including name; OR %%% (2) if you do make changes, you first rename it %%% to some other name.", %%% address = "American Mathematical Society, %%% Technical Support, %%% Electronic Products and Services, %%% P. O. Box 6248, %%% Providence, RI 02940, %%% USA", %%% telephone = "401-455-4080 or (in the USA and Canada) %%% 800-321-4AMS (321-4267)", %%% FAX = "401-331-3842", %%% checksum = "20746 270 1255 9876", %%% email = "tech-support@math.ams.org (Internet)", %%% codetable = "ISO/ASCII", %%% keywords = "latex, amslatex, ams-latex, amsfonts, msam, %%% msbm, eufm, blackboard bold", %%% supported = "yes", %%% abstract = "This file is part of the AMS-\LaTeX{} package, %%% It is a \LaTeX{} font definition file package %%% that unpacks into the .fd files which make %%% available to \LaTeX{} the fonts in the AMSFonts %%% (version 2.0+) font package, including two math %%% symbol fonts and four Euler fonts. See the %%% AMSFonts user's guide for more information.", %%% docstring = "The checksum field above contains a CRC-16 %%% checksum as the first value, followed by the %%% equivalent of the standard UNIX wc (word %%% count) utility output of lines, words, and %%% characters. This is produced by Robert %%% Solovay's checksum utility.", %%% } %%% ==================================================================== \ProvidesFile{Umsa57.fd} [1995/01/05 v2.2e AMS font definitions% (for Y&Y/BSR PS AMSFonts set)% ] \DeclareFontFamily{U}{msa}{} \DeclareFontShape{U}{msa}{m}{n}{ <-6> msam5 <6-8> msam7 <8-> msam10 }{} \endinput %% %% End of file `Umsa57.fd'. %%%%%%%%%%%%%%%%%%%% End \macros\amsfonts\Umsa57.fd %%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%% Start \macros\amsfonts\Umsb57.fd %%%%%%%%%%%%%%%%%% %% %% This is file `Umsb57.fd', generated %% on <1995/1/6> with the docstrip utility (2.2i). %% %% The original source files were: %% %% amsfonts.fdd (with options: `57,msb') %%% ==================================================================== %%% @LaTeX-file{ %%% author = "American Mathematical Society", %%% version = "2.2e", %%% date = "1995/01/05", %%% time = "11:48:06 EST", %%% filename = "amsfonts.fdd", %%% copyright = "Copyright (C) 1994 American Mathematical Society, %%% all rights reserved. Copying of this file is %%% authorized only if either: %%% (1) you make absolutely no changes to your copy, %%% including name; OR %%% (2) if you do make changes, you first rename it %%% to some other name.", %%% address = "American Mathematical Society, %%% Technical Support, %%% Electronic Products and Services, %%% P. O. Box 6248, %%% Providence, RI 02940, %%% USA", %%% telephone = "401-455-4080 or (in the USA and Canada) %%% 800-321-4AMS (321-4267)", %%% FAX = "401-331-3842", %%% checksum = "20746 270 1255 9876", %%% email = "tech-support@math.ams.org (Internet)", %%% codetable = "ISO/ASCII", %%% keywords = "latex, amslatex, ams-latex, amsfonts, msam, %%% msbm, eufm, blackboard bold", %%% supported = "yes", %%% abstract = "This file is part of the AMS-\LaTeX{} package, %%% It is a \LaTeX{} font definition file package %%% that unpacks into the .fd files which make %%% available to \LaTeX{} the fonts in the AMSFonts %%% (version 2.0+) font package, including two math %%% symbol fonts and four Euler fonts. See the %%% AMSFonts user's guide for more information.", %%% docstring = "The checksum field above contains a CRC-16 %%% checksum as the first value, followed by the %%% equivalent of the standard UNIX wc (word %%% count) utility output of lines, words, and %%% characters. This is produced by Robert %%% Solovay's checksum utility.", %%% } %%% ==================================================================== \ProvidesFile{Umsb57.fd} [1995/01/05 v2.2e AMS font definitions% (for Y&Y/BSR PS AMSFonts set)% ] \DeclareFontFamily{U}{msb}{} \DeclareFontShape{U}{msb}{m}{n}{ <-6> msbm5 <6-8> msbm7 <8-> msbm10 }{} \endinput %% %% End of file `Umsb57.fd'. %%%%%%%%%%%%%%%%%%%% End \macros\amsfonts\Umsb57.fd %%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%% Start \macros\amsfonts\Ueuf57.fd %%%%%%%%%%%%%%%%%% %% %% This is file `Ueuf57.fd', generated %% on <1995/1/6> with the docstrip utility (2.2i). %% %% The original source files were: %% %% amsfonts.fdd (with options: `57,euf') %%% ==================================================================== %%% @LaTeX-file{ %%% author = "American Mathematical Society", %%% version = "2.2e", %%% date = "1995/01/05", %%% time = "11:48:06 EST", %%% filename = "amsfonts.fdd", %%% copyright = "Copyright (C) 1994 American Mathematical Society, %%% all rights reserved. Copying of this file is %%% authorized only if either: %%% (1) you make absolutely no changes to your copy, %%% including name; OR %%% (2) if you do make changes, you first rename it %%% to some other name.", %%% address = "American Mathematical Society, %%% Technical Support, %%% Electronic Products and Services, %%% P. O. Box 6248, %%% Providence, RI 02940, %%% USA", %%% telephone = "401-455-4080 or (in the USA and Canada) %%% 800-321-4AMS (321-4267)", %%% FAX = "401-331-3842", %%% checksum = "20746 270 1255 9876", %%% email = "tech-support@math.ams.org (Internet)", %%% codetable = "ISO/ASCII", %%% keywords = "latex, amslatex, ams-latex, amsfonts, msam, %%% msbm, eufm, blackboard bold", %%% supported = "yes", %%% abstract = "This file is part of the AMS-\LaTeX{} package, %%% It is a \LaTeX{} font definition file package %%% that unpacks into the .fd files which make %%% available to \LaTeX{} the fonts in the AMSFonts %%% (version 2.0+) font package, including two math %%% symbol fonts and four Euler fonts. See the %%% AMSFonts user's guide for more information.", %%% docstring = "The checksum field above contains a CRC-16 %%% checksum as the first value, followed by the %%% equivalent of the standard UNIX wc (word %%% count) utility output of lines, words, and %%% characters. This is produced by Robert %%% Solovay's checksum utility.", %%% } %%% ==================================================================== \ProvidesFile{Ueuf57.fd} [1995/01/05 v2.2e AMS font definitions% (for Y&Y/BSR PS AMSFonts set)% ] \DeclareFontFamily{U}{euf}{} \DeclareFontShape{U}{euf}{m}{n}{ <-6> eufm5 <6-8> eufm7 <8-> eufm10 }{} \DeclareFontShape{U}{euf}{b}{n}{ <-6> eufb5 <6-8> eufb7 <8-> eufb10 }{} \endinput %% %% End of file `Ueuf57.fd'. %%%%%%%%%%%%%%%%%%%% End \macros\amsfonts\Ueuf57.fd %%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%% Start \macros\OMXcmex.fd %%%%%%%%%%%%%%%%%%%%%% %% %% This is file `OMXcmex.fd', generated %% on <1995/6/21> with the docstrip utility (2.2i). %% %% The original source files were: %% %% cmfonts.fdd (with options: `fd,OMXcmex') %% %% This is a generated file. %% %% Copyright 1993-1995 the LaTeX3 project and any individual authors %% listed elsewhere in this file. All rights reserved. %% %% For further copyright information see the file legal.txt, and any %% other copyright notices in this file. %% %% This file is part of the LaTeX2e system. %% ---------------------------------------- %% This system 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. %% %% For error reports concerning UNCHANGED versions of this file no more %% than one year old, see bugs.txt. %% %% Please do not request updates from us directly. Primary %% distribution is through the CTAN archives. %% %% %% IMPORTANT COPYRIGHT NOTICE: %% %% You are NOT ALLOWED to distribute this file alone. %% %% You are allowed to distribute this file under the condition that it is %% distributed together with all the files listed in manifest.txt. %% %% If you receive only some of these files from someone, complain! %% %% Permission is granted to customize the declarations in this file to %% serve the needs of your installation, provided that you comply with %% the conditions in the file legal.txt. %% %% However, NO PERMISSION is granted to distribute a modified version of %% this file under its original name. %% %% %% MODIFICATION ADVICE: %% %% If you want to customize this file, it is best to make a copy of the %% source file(s) from which it was produced. Use a different name for %% your copy(ies) and modify the copy(ies); this will ensure that your %% modifications do not get overwritten when you install a new release of %% the standard system. You can then easily distribute your %% modifications by distributing the modified and renamed copy of the %% source file together with a suitable .ins file, taking care to observe %% the conditions in legal.txt; this will ensure that other users can %% safely use your modifications. %% %% The names of the source files used are shown above. %% %% \ProvidesFile{OMXcmex.fd} [1995/04/22 v2.3f Standard LaTeX font definitions] \DeclareFontFamily{OMX}{cmex}{}{} \DeclareFontShape{OMX}{cmex}{m}{n}{ <-> sfixed * cmex10 }{} \endinput %% %% End of file `OMXcmex.fd'. %%%%%%%%%%%%%%%%%%%%%%%% End \macros\OMXcmex.fd %%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%% Start \document\thmsupp.tex %%%%%%%%%%%%%%%%%%%%% %theorem support %Copyright (C) 1994-95 TCI Software Research \typeout{TCI Theorem Support for Scientific Word <1 July 1994>.} \typeout{NOTICE: This macro file is NOT proprietary and may be freely copied and distributed.} % \def\newfmtname{LaTeX2e} \def\chkcompat{% \if@compatibility \else \DeclareOption{thmsa}{\input thmsa.sty} \DeclareOption{thmsb}{\input thmsb.sty} \DeclareOption{thmsc}{\input thmsc.sty} \DeclareOption{thmsd}{\input thmsd.sty} \ProcessOptions \fi } \ifx\fmtname\newfmtname \chkcompat \fi \endinput %%%%%%%%%%%%%%%%%%%%%% End \document\thmsupp.tex %%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%% Start \document\gnuindex.sty %%%%%%%%%%%%%%%%%%%% % GNUINDEX.STY.2, 18-Oct-86 15:44:17, Edit by BEEBE % Indexing macros for LaTeX and TeXIDX % Usage: % \INDEX{sortkey}{primaryentry} % \SUBINDEX{sortkey}{primaryentry}{secondaryentry} % % For \SUBINDEX, the {secondary} field is automatically appended % to the sort key, but separated from it by an ASCII % character, so that % \SUBINDEX{foo}{foo}{bar} % sorts before % \SUBINDEX{foo}{foo}{baz} % and % \INDEX{foo bar}{foo bar}{bar} % % The keys will be "foo{bar}", "foo{baz}", and "foo % bar", respectively. % \def\initial#1{\bigbreak{\raggedright\large\bf #1}\kern 2pt\penalty3000} \def\entry#1#2{\item {#1}, #2} \def\primary#1{\item {#1}} \def\secondary#1#2{\subitem {#1}, #2} \def\INDEX{\@bsphack\begingroup\@sanitize\@WRINDEX\@indexfile} \def\@WRINDEX#1#2#3{\let\thepage\relax \xdef\@gtempa{\write#1{\string \entry{#2}{\thepage}{#3}}}\endgroup\@gtempa \if@nobreak \ifvmode\nobreak\fi\fi\@esphack} % \def\SUBINDEX{\@bsphack\begingroup\@sanitize\@WRSUBINDEX\@indexfile} % \def\@WRSUBINDEX#1#2#3#4{\let\thepage\relax \xdef\@gtempa{\write#1{\string % NB: #3#4, NOT #3#4 in the next line % NB: [[TAB]] is required by TCI's Windows version of TeXIDX \entry{#2\space\space\space#4}{\thepage}{#3}{#4}}}\endgroup\@gtempa \if@nobreak \ifvmode\nobreak\fi\fi\@esphack} %%%%%%%%%%%%%%%%%%%%%% End \document\gnuindex.sty %%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%% Start \document\latexsym.sty %%%%%%%%%%%%%%%%%%%% %% %% This is file `latexsym.sty', generated %% on <1995/6/21> with the docstrip utility (2.2i). %% %% The original source files were: %% %% latexsym.dtx (with options: `package') %% %% %% This is a generated file. %% %% Copyright 1993-1995 the LaTeX3 project and any individual authors %% listed elsewhere in this file. All rights reserved. %% %% For further copyright information see the file legal.txt, and any %% other copyright notices in this file. %% %% This file is part of the LaTeX2e system. %% ---------------------------------------- %% This system 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. %% %% For error reports concerning UNCHANGED versions of this file no more %% than one year old, see bugs.txt. %% %% Please do not request updates from us directly. Primary %% distribution is through the CTAN archives. %% %% %% IMPORTANT COPYRIGHT NOTICE: %% %% You are NOT ALLOWED to distribute this file alone. %% %% You are allowed to distribute this file under the condition that it is %% distributed together with all the files listed in manifest.txt. %% %% If you receive only some of these files from someone, complain! %% %% Permission is granted to copy this file to another file with a clearly %% different name and to customize the declarations in that copy to serve %% the needs of your installation, provided that you comply with %% the conditions in the file legal.txt. %% %% However, NO PERMISSION is granted to generate or to distribute a %% modified version of this file under its original name. %% %% You are NOT ALLOWED to change this file. %% %% %% MODIFICATION ADVICE: %% %% If you want to customize this file, it is best to make a copy of the %% source file(s) from which it was produced. Use a different name for %% your copy(ies) and modify the copy(ies); this will ensure that your %% modifications do not get overwritten when you install a new release of %% the standard system. You should also ensure that your modified source %% file does not generate any modified file with the same name as a %% standard file. You can then easily distribute your modifications by %% distributing the modified and renamed copy of the source file, taking %% care to observe the conditions in legal.txt; this will ensure that %% other users can safely use your modifications. %% %% You will also need to produce your own, suitably named, .ins file to %% control the generation of files from your source file; this file %% should contain your own preambles for the files it generates, not %% those in the standard .ins files. %% %% The names of the source files used are shown above. %% %% %% \NeedsTeXFormat{LaTeX2e} \ProvidesPackage{latexsym} [1995/03/18 v2.2a Standard LaTeX package (lasy symbols)] \ifx\symlasy\undefined \else \wlog{Package latexsym: nothing to set up^^J}% \endinput \fi \DeclareSymbolFont{lasy}{U}{lasy}{m}{n} \SetSymbolFont{lasy}{bold}{U}{lasy}{b}{n} \let\mho\undefined \let\sqsupset\undefined \let\Join\undefined \let\lhd\undefined \let\Box\undefined \let\unlhd\undefined \let\Diamond\undefined \let\rhd\undefined \let\leadsto\undefined \let\unrhd\undefined \let\sqsubset\undefined \DeclareMathSymbol\mho {\mathord}{lasy}{"30} \DeclareMathSymbol\Join {\mathrel}{lasy}{"31} \DeclareMathSymbol\Box {\mathord}{lasy}{"32} \DeclareMathSymbol\Diamond {\mathord}{lasy}{"33} \DeclareMathSymbol\leadsto {\mathrel}{lasy}{"3B} \DeclareMathSymbol\sqsubset{\mathrel}{lasy}{"3C} \DeclareMathSymbol\sqsupset{\mathrel}{lasy}{"3D} \DeclareMathSymbol\lhd {\mathbin}{lasy}{"01} \DeclareMathSymbol\unlhd {\mathbin}{lasy}{"02} \DeclareMathSymbol\rhd {\mathbin}{lasy}{"03} \DeclareMathSymbol\unrhd {\mathbin}{lasy}{"04} \endinput %% %% End of file `latexsym.sty'. %%%%%%%%%%%%%%%%%%%%%% End \document\latexsym.sty %%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%% Start \document\thmsa.sty %%%%%%%%%%%%%%%%%%%%%% \newtheorem{theorem}{Theorem} \newtheorem{corollary}[theorem]{Corollary} \newtheorem{conjecture}[theorem]{Conjecture} \newtheorem{lemma}[theorem]{Lemma} \newtheorem{proposition}[theorem]{Proposition} \newtheorem{definition}[theorem]{Definition} \newtheorem{example}[theorem]{Example} \newtheorem{axiom}{Axiom} \newtheorem{remark}{Remark} \newtheorem{exercise}{Exercise}[section] %%%%%%%%%%%%%%%%%%%%%%% End \document\thmsa.sty %%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%% Start \document\thmsb.sty %%%%%%%%%%%%%%%%%%%%%% \newtheorem{theorem}{Theorem} \newtheorem{corollary}{Corollary} \newtheorem{conjecture}{Conjecture} \newtheorem{lemma}{Lemma} \newtheorem{proposition}{Proposition} \newtheorem{axiom}{Axiom} \newtheorem{remark}{Remark} \newtheorem{example}{Example} \newtheorem{exercise}{Exercise} \newtheorem{definition}{Definition} %%%%%%%%%%%%%%%%%%%%%%% End \document\thmsb.sty %%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%% Start \document\thmsc.sty %%%%%%%%%%%%%%%%%%%%%% \newtheorem{theorem}{Theorem}[section] \newtheorem{corollary}[theorem]{Corollary} \newtheorem{conjecture}[theorem]{Conjecture} \newtheorem{lemma}[theorem]{Lemma} \newtheorem{proposition}[theorem]{Proposition} \newtheorem{axiom}{Axiom}[section] \newtheorem{remark}{Remark}[section] \newtheorem{example}{Example}[section] \newtheorem{exercise}{Exercise}[section] \newtheorem{definition}{Definition}[section] %%%%%%%%%%%%%%%%%%%%%%% End \document\thmsc.sty %%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%% Start \document\thmsd.sty %%%%%%%%%%%%%%%%%%%%%% \newtheorem{theorem}{Theorem}[section] \newtheorem{corollary}[theorem]{Corollary} \newtheorem{conjecture}[theorem]{Conjecture} \newtheorem{lemma}[theorem]{Lemma} \newtheorem{proposition}[theorem]{Proposition} \newtheorem{axiom}{Axiom}[section] \newtheorem{remark}{Remark}[section] \newtheorem{example}{Example}[section] \newtheorem{exercise}{Exercise}[section] \newtheorem{definition}{Definition}[section] %%%%%%%%%%%%%%%%%%%%%%% End \document\thmsd.sty %%%%%%%%%%%%%%%%%%%%%%%