1
%% This is ptexpprt.all. This file is to be used for creating a paper
2
%% in the ACM/SIAM Preprint series with Plain TeX. It consists of the following
5
%% ptexpprt.tex ---- an example and documentation file
6
%% ptexpprt.sty ---- the macro file
8
%% To use, cut this file apart at the appropriate places. You can run the
9
%% example file with the macros to get sample output.
11
%%%%%%%%%%%%%%%%%%%%%%%%%%%%% CUT HERE %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
14
%%%%%%%%%%%%%%%%%%%%%%%%%% ptexpprt.tex %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
16
% This is ptexpprt.tex, an example file for use with the ACM/SIAM Plain TeX
17
% Preprint Series macros. It is designed to produce double-column output.
18
% Comments are placed at the beginning and throughout this file. Please
19
% take the time to read them as they document how to use these macros.
20
% This file can be composed and printed out for use as sample output.
22
% Any comments or questions regarding these macros should be directed to:
26
% 3600 University City Science Center
27
% Philadelphia, PA 19104-2688
29
% Telephone: (215) 382-9800
31
% e-mail: siampubs@wharton.upenn.edu
34
% This file is to be used as an example for style only. It should not be read
37
%%%%%%%%%%%%%%% PLEASE NOTE THE FOLLOWING STYLE RESTRICTIONS %%%%%%%%%%%%%%%
39
%% 1. You must use the numbered reference style([1],[2]), listing the
40
%% references at the end of the chapter either by order of citation
43
%% 2. Unless otherwise stated by your editor, do your chapter as if it
45
%% If you know which number your chapter is, you must do the following:
47
%% Go into the style file (ptexfrnt.sty) and search for the
48
%% \def\chapter#1 definition. At the end of this definition
49
%% there is a command \headcount=1. Change the 1 to
50
%% the appropriate number. This change will cause the headings
51
%% in your chapter to match the chapter number.
53
%% 3. This macro is set up for two levels of headings. The macro will
54
%% automatically number the headings for you.
56
%% 4. The running heads are defined in the output routine. It will be
57
%% necessary for you to alter the information currently included.
58
%% To do this, go into the style file and search for OUTPUT. Once there,
59
%% scroll through the file until you see the command \def\rhead. Replace
60
%% CHAPTER TITLE with the title (or shortened title) of your paper.
61
%% Replace AUTHORS NAMES with the appropriate names.
62
%% Neither running head may be longer than 50 characters.
64
%% 5. Theorems, Lemmas, Definitions, etc. are to be triple numbered,
65
%% indicating the chapter, section, and the occurence of that element
66
%% within that section. (For example, the first theorem in the second
67
%% section of chapter three would be numbered 3.2.1. This numbering must
70
%% 6. Figures and equations must be manually double-numbered, indicating
71
%% chapter and occurence. Use \leqno for equation numbering. See the
72
%% example of \caption for figure numbering.
73
%% Note. Although not shown, tables must also be double-numbered. The
74
%% command \caption can also be used for table captions.
76
%% 7. At the first occurence of each new element there is a description
77
%% of how to use the coding.
79
%%%%%%% PLEASE NOTE THE FOLLOWING POTENTIAL PROBLEMS:
81
%% 1. A bug exists that prevents a page number from printing on the first
82
%% page of the paper. Please ignore this problem. It will be handled
83
%% after you submit your paper.
85
%% 2. The use of \topinsert and \midinsert to allow space for figures can
86
%% result in unusual page breaks, or unusual looking pages in general.
87
%% If you encounter such a situation, contact the SIAM office at the
88
%% address listed above for instructions.
90
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
96
% It will be necessary to hard code the chapter title and chapter authors.
97
% You must decide where to break the lines. For the authors, please follow
98
% the following conventions:
99
% 1. If 2 authors are on a line, use \hskip4pc between them. If 3 authors,
100
% use \hskip2pc. Do not put more than 3 authors on the same line.
101
% 2. Use the following notation: asterisk, dagger, double-dagger, section
102
% symbol, paragraph symbol, double asterisk. If more are needed, contact
105
\centerline{\chapterfont Chapter 1}
107
\centerline{\titlefont SIAM/ACM Preprint Series Macros for
108
Plain TeX\footnote*{Supported by GSF grants ABC123, DEF456, and GHI 789.}}
110
\centerline{\authorfont J. Corey Gray\footnote\dag{Society for Industrial and
111
Applied Mathematics.}\hskip2pc Tricia Manning\footnote\ddag{Society for
112
Industrial and Applied Mathematics.}\hskip2pc Vickie Kearn\footnote\S{Society
113
for Industrial and Applied Mathematics.}}
118
% Use \headone for the first level headings. The macro will automatically
119
% number the headings.
121
\headone{Problem Specification}
122
In this paper, we consider the solution of the $N \times N$ linear
124
$$A x = b\leqno(1.1)$$
125
where $A$ is large, sparse, symmetric, and positive definite. We consider
126
the direct solution of by means of general sparse Gaussian
127
elimination. In such a procedure, we find a permutation matrix $P$, and
128
compute the decomposition
130
P A P^{t} = L D L^{t}
132
where $L$ is unit lower triangular and $D$ is diagonal.
134
\headone{Design Considerations}
135
Several good ordering algorithms (nested dissection and minimum degree)
136
are available for computing $P$ [1], [2].
137
Since our interest here does not
138
focus directly on the ordering, we assume for convenience that $P=I$,
139
or that $A$ has been preordered to reflect an appropriate choice of $P$.
141
% Use \headtwo for second level headings. They will be numbered automatically.
143
\headtwo{Robustness}In \S 1.2, we review the bordering algorithm, and introduce
144
the sorting and intersection problems that arise in the
145
sparse formulation of the algorithm.
147
\headtwo{Versatility} In \S 1.3., we analyze the complexity of the old and new
148
approaches to the intersection problem for the special case of
149
an $n \times n$ grid ordered by nested dissection. The special
150
structure of this problem allows us to make exact estimates of
151
the complexity. To our knowledge, the m-tree previously has not been applied in
153
fashion to the numerical factorization, but it has been used,
154
directly or indirectly, in several optimal order algorithms for
155
computing the fill-in during the symbolic factorization phase
156
[4] - [10], [5], [6].
157
This is accomplished by exploiting the m-tree,
158
a particular spanning tree for the graph of the filled-in matrix.
159
Our purpose here is to examine the nonnumerical complexity of the
160
sparse elimination algorithm given in [3].
161
As was shown there, a general sparse elimination scheme based on the
162
bordering algorithm requires less storage for pointers and
163
row/column indices than more traditional implementations of general
164
sparse elimination. This is accomplished by exploiting the m-tree,
165
a particular spanning tree for the graph of the filled-in matrix.
168
% Use \thm and \endthm for theorems. They must be numbered manually.
169
% Lemmas (\lem \endlem), corollaries (\cor \endcor), and
170
% propositions (\prop \endprop) are coded the same as theorems and must
171
% also be numbered manually.
173
\thm{Theorem 2.1.} The method was extended to three
174
dimensions. For the standard multigrid
176
(in which, for a given grid, the next coarser grid has $1/8$
177
as many points), anisotropic problems require plane
179
obtain a good smoothing factor.\endthm
181
Several good ordering algorithms (nested dissection and minimum degree)
182
are available for computing $P$ [1], [2].
183
Since our interest here does not
184
focus directly on the ordering, we assume for convenience that $P=I$,
185
or that $A$ has been preordered to reflect an appropriate choice of $P$.
186
Several good ordering algorithms (nested dissection and minimum degree)
187
are available for computing $P$ [1], [2].
188
Since our interest here does not
189
focus directly on the ordering, we assume for convenience that $P=I$,
190
or that $A$ has been preordered to reflect an appropriate choice of $P$.
192
% Use \prf to begin a proof.
194
\prf{Proof} In this paper we consider two methods. The first method
196
basically the method considered with two differences:
197
first, we perform plane relaxation by a two-dimensional
198
multigrid method, and second, we use a slightly different
200
interpolation operator, which improves performance
201
for nearly singular problems. In the second method coarsening
202
is done by successively coarsening each.
204
% Use \dfn to begin definitions.
206
\dfn{Definition 1.2.1.}We describe the two methods in \S\ 1.2. This is a
207
definition in the plain tex macro.
209
This is accomplished by exploiting the m-tree,
210
a particular spanning tree for the graph of the filled-in matrix.
211
Our purpose here is to examine the nonnumerical complexity of the
212
sparse elimination algorithm given in [3].
213
As was shown there, a general sparse elimination scheme based on the
214
bordering algorithm requires less storage for pointers and
215
row/column indices than more traditional implementations of general
216
sparse elimination. This is accomplished by exploiting the m-tree,
217
a particular spanning tree for the graph of the filled-in matrix.
218
Our purpose here is to examine the nonnumerical complexity of the
219
sparse elimination algorithm given in [3].
220
As was shown there, a general sparse elimination scheme based on the
221
bordering algorithm requires less storage for pointers and
222
row/column indices than more traditional implementations of general
223
sparse elimination. This is accomplished by exploiting the m-tree,
224
a particular spanning tree for the graph of the filled-in matrix.
225
Since our interest here does not
226
focus directly on the ordering, we assume for convenience that $P=I$,
227
or that $A$ has been preordered to reflect an appropriate choice of $P$.
230
To our knowledge, the m-tree previously has not been applied in this
231
fashion to the numerical factorization, but it has been used,
232
directly or indirectly, in several optimal order algorithms for
233
computing the fill-in during the symbolic factorization phase
234
[4] - [10], [5], [6]. In \S 1.3., we analyze the complexity of the old and new
235
approaches to the intersection problem for the special case of
236
an $n \times n$ grid ordered by nested dissection. The special
237
structure of this problem allows us to make exact estimates of
238
the complexity. To our knowledge, the m-tree previously has not been applied in
240
fashion to the numerical factorization, but it has been used,
241
directly or indirectly, in several optimal order algorithms for
242
computing the fill-in during the symbolic factorization phase
243
[4] - [10], [5], [6].
244
Several good ordering algorithms (nested dissection and minimum degree)
245
are available for computing $P$ [1], [2].
246
Since our interest here does not
247
focus directly on the ordering, we assume for convenience that $P=I$,
248
or that $A$ has been preordered to reflect an appropriate choice of $P$.
249
For the old approach, we show that the
250
complexity of the intersection problem is $O(n^{3})$, the same
251
as the complexity of the numerical computations. For the
252
new approach, the complexity of the second part is reduced to
253
$O(n^{2} (\log n)^{2})$.
255
% Use \midinsert along with \caption to allow space for
256
% figures. See note above in problem section.
257
%\midinsert\vskip15.5pc\caption{Fig. 1.1. {\nineit This is figure 1.}}
258
% \endcaption\endinsert
260
In this paper, we consider the solution of the $N \times N$ linear
262
where $A$ is large, sparse, symmetric, and positive definite. We consider
263
the direct solution of by means of general sparse Gaussian
264
elimination. In such a procedure, we find a permutation matrix $P$, and
265
compute the decomposition
266
where $L$ is unit lower triangular and $D$ is diagonal.
268
\headone{Design Considerations}
269
Several good ordering algorithms (nested dissection and minimum degree)
270
are available for computing $P$ [1], [2].
271
Since our interest here does not
272
focus directly on the ordering, we assume for convenience that $P=I$,
273
or that $A$ has been preordered to reflect an appropriate choice of $P$.
275
Several good ordering algorithms (nested dissection and minimum degree)
276
are available for computing $P$ [1], [2].
277
Since our interest here does not
278
focus directly on the ordering, we assume for convenience that $P=I$,
279
or that $A$ has been preordered to reflect an appropriate choice of $P$.
280
Several good ordering algorithms (nested dissection and minimum degree)
281
are available for computing $P$ [1], [2].
282
Since our interest here does not
283
focus directly on the ordering, we assume for convenience that $P=I$,
284
or that $A$ has been preordered to reflect an appropriate choice of $P$.
285
Our purpose here is to examine the nonnumerical complexity of the
286
sparse elimination algorithm given in [3].
287
As was shown there, a general sparse elimination scheme based on the
288
bordering algorithm requires less storage for pointers and
289
row/column indices than more traditional implementations of general
290
sparse elimination. This is accomplished by exploiting the m-tree,
291
a particular spanning tree for the graph of the filled-in matrix.
292
Since our interest here does not
293
focus directly on the ordering, we assume for convenience that $P=I$,
294
or that $A$ has been preordered to reflect an appropriate choice of $P$.
296
% Use \lem and \endlem to begin and end lemmas.
298
\lem{Lemma 2.1.}We discuss first the choice for $I_{k-1}^k$
299
which is a generalization. We assume that $G^{k-1}$ is
302
by standard coarsening; that is, if $G^k$ is a tensor product
303
grid $G_{x}^k \times G_{y}^k \times G_{z}^k$,
304
$G^{k-1}=G_{x}^{k-1} \times G_{y}^{k-1} \times G_{z}^{k-1}$,
305
where $G_{x}^{k-1}$ is obtained by deleting every other grid
306
point of $G_x^k$ and similarly for $G_{y}^k$ and $G_{z}^k$.
309
To our knowledge, the m-tree previously has not been applied in this
310
fashion to the numerical factorization, but it has been used,
311
directly or indirectly, in several optimal order algorithms for
312
computing the fill-in during the symbolic factorization phase
313
[4] - [10], [5], [6]. In \S 1.3., we analyze the complexity of the old and new
314
approaches to the intersection problem for the special case of
315
an $n \times n$ grid ordered by nested dissection. The special
316
structure of this problem allows us to make exact estimates of
317
the complexity. To our knowledge, the m-tree previously has not been applied in
319
fashion to the numerical factorization, but it has been used,
320
directly or indirectly, in several optimal order algorithms for
321
computing the fill-in during the symbolic factorization phase
322
[4] - [10], [5], [6].
324
% Use \headtwo for second level headings. They will be numbered automatically.
326
\headone{Problem Solving}In \S 1.2, we review the bordering algorithm, and
328
the sorting and intersection problems that arise in the
329
sparse formulation of the algorithm.
331
\headtwo{Versatility} In \S 1.3., we analyze the complexity of the old and new
332
approaches to the intersection problem for the special case of
333
an $n \times n$ grid ordered by nested dissection. The special
334
structure of this problem allows us to make exact estimates of
335
the complexity. To our knowledge, the m-tree previously has not been applied in
337
fashion to the numerical factorization, but it has been used,
338
directly or indirectly, in several optimal order algorithms for
339
computing the fill-in during the symbolic factorization phase
340
[4] - [10], [5], [6].
343
\headtwo{Complexity}For the old approach, we show that the
344
complexity of the intersection problem is $O(n^{3})$, the same
345
as the complexity of the numerical computations. For the
346
new approach, the complexity of the second part is reduced to
347
$O(n^{2} (\log n)^{2})$.
349
To our knowledge, the m-tree previously has not been applied in this
350
fashion to the numerical factorization, but it has been used,
351
directly or indirectly, in several optimal order algorithms for
352
computing the fill-in during the symbolic factorization phase
353
[4] - [10], [5], [6]. In \S 1.3., we analyze the complexity of the old and new
354
approaches to the intersection problem for the special case of
355
an $n \times n$ grid ordered by nested dissection. The special
356
structure of this problem allows us to make exact estimates of
357
the complexity. To our knowledge, the m-tree previously has not been applied in
359
fashion to the numerical factorization, but it has been used,
360
directly or indirectly, in several optimal order algorithms for
361
computing the fill-in during the symbolic factorization phase
362
[4] - [10], [5], [6].
364
% The command \Refs sets the word Reference as a heading and allows the proper
365
% amount of space before the start of the references. Each reference must
366
% begin with \ref\\. The article or title of the reference should be in
367
% italic. Use the \it command within brackets. End each reference with
368
% \endref and allow two returns between references. Use the command
369
% \sameauthor (see reference 8) when the same author or group of authors
370
% is listed consecutively.
374
\ref 1\\R.~E. Bank, {\it PLTMG users' guide, edition 5.0}, tech. report,
375
Department of Mathematics, University of California, San Diego, CA,
378
\ref 2\\R.~E. Bank, T.~F. Dupont, and H.~Yserentant, {\it The hierarchical basis
379
multigrid method}, Numer. Math., 52 (1988), pp.~427--458.\endref
381
\ref 3\\R.~E. Bank and R.~K. Smith, {\it General sparse elimination requires no
382
permanent integer storage}, SIAM J. Sci. Stat. Comput., 8 (1987),
385
\ref 4\\S.~C. Eisenstat, M.~C. Gursky, M.~Schultz, and A.~Sherman, {\it
386
Algorithms and data structures for sparse symmetric gaussian elimination},
387
SIAM J. Sci. Stat. Comput., 2 (1982), pp.~225--237.\endref
389
\ref 5\\A.~George and J.~Liu, {\it Computer Solution of Large Positive
390
Definite Systems}, Prentice Hall, Englewood Cliffs, NJ, 1981.\endref
392
\ref 6\\K.~H. Law and S.~J. Fenves, {\it A node addition model for symbolic
393
factorization}, ACM TOMS, 12 (1986), pp.~37--50.\endref
395
\ref 7\\J.~W.~H. Liu, {\it A compact row storage scheme for factors
396
using elimination trees}, ACM TOMS, 12 (1986), pp.~127--148.\endref
398
\ref 8\\\sameauthor , {\it The role of
399
elimination trees in sparse factorization}, Tech. Report CS-87-12,Department
400
of Computer Science, York University, Ontario, Canada, 1987.\endref
402
\ref 9\\D.~J. Rose, {\it A graph theoretic study of the numeric solution of
403
sparse positive definite systems}, in Graph Theory and Computing,
404
Academic Press, New York, 1972.\endref
406
\ref 10\\D.~J. Rose, R.~E. Tarjan, and G.~S. Lueker, {\it Algorithmic aspects of
407
vertex elimination on graphs}, SIAM J. Comput., 5 (1976), pp.~226--283.\endref
413
%%%%%%%%%%%%%%%%%%%%%%%%%%%%% CUT HERE %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
416
%%%%%%%%%%%%%%%%%%%%%%%%%% ptexpprt.sty %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
418
% This is a file of macros and definitions for creating a chapter
419
% for publication in the ACM/SIAM Preprint Series using Plain TeX.
420
% This file may be freely distributed but may not be altered in any way.
421
% Any comments or questions regarding these macros should be directed to:
425
% 3600 University City Science Center
426
% Philadelphia, PA 19104-2688
428
% Telephone: (215) 382-9800
429
% Fax: (215) 386-7999
430
% e-mail: siampubs@wharton.upenn.edu
434
% Report the version.
435
\message{*** ACM/SIAM Plain TeX Preprint Series macro package, version 1.0,
436
September 24, 1990.***}
438
% Make the @ sign a letter for internal control sequences.
459
\def\firstpar{\parindent=0pt\global\everypar{\parindent=18truept}}
460
\parskip=0pt plus 1pt
470
\def\rm{\tenrm}\def\bf{\tenbf}%
471
\def\it{\tenit}\def\smc{\tensmc}
472
\textfont0=\tenrm \scriptfont0=\sevenrm
473
\textfont1=\teni \scriptfont1=\seveni
474
\textfont2=\tensy \scriptfont2=\sevensy
475
\textfont3=\tenex \scriptfont3=\tenex
476
\baselineskip=12pt\rm}%
482
\def\rm{\ninerm}\def\bf{\ninebf}%
483
\def\it{\nineit}\baselineskip=11pt\rm}%
491
\def\rm{\eightrm}\def\bf{\eightbf}%
492
\def\it{\eightit}\def\smc{\eightrm}\baselineskip=10pt\rm%
493
\textfont0=\eightrm \scriptfont0=\sixrm
494
\textfont1=\eighti \scriptfont1=\sixi
495
\textfont2=\eightsy \scriptfont2=\sixsy
496
\textfont3=\tenex \scriptfont3=\tenex
505
\def\rm{\sixrm}\def\bf{\sixbf}%
506
\def\smc{\sixsmc}\baselineskip=8pt\rm}%
508
\fontdimen13\tensy=2.6pt
509
\fontdimen14\tensy=2.6pt
510
\fontdimen15\tensy=2.6pt
511
\fontdimen16\tensy=1.2pt
512
\fontdimen17\tensy=1.2pt
513
\fontdimen18\tensy=1.2pt
517
\font\twelverm=cmr10 scaled\magstep1
518
\font\twelvebf=cmbx10 scaled\magstep 1
519
\font\sixteenrm=cmr10 scaled\magstep2
520
\def\titlefont{\sixteenrm}
521
\def\chapterfont{\twelvebf}
522
\def\authorfont{\twelverm}
523
\def\rheadfont{\tenrm}
529
%%% COUNTERS FOR HEADINGS %%%
535
\newcount\subseccount
537
\def\reset{\global\seccount=1}
542
\def\headone#1{\global\advance\headcount by 1
543
\vskip12truept\parindent=0pt{\tenpoint\bf\the\headcount
544
\hskip11truept #1.}\par\nobreak\firstpar\global\advance\headcount by 0
545
%\global\advance\seccount by 1
548
\def\headtwo#1{%\advance\seccount by -1%
549
\vskip12truept\parindent=0pt{\tenpoint\bf\the\headcount.%
550
\the\seccount\hskip11truept #1.}\enspace\ignorespaces\firstpar
551
\global\advance\headcount by 0\global\advance\seccount by 1}
552
% \global\advance\subseccount by 1}
555
%%% THEOREMS, PROOFS, DEFINITIONS, etc. %%%
559
\begingroup\it\ignorespaces\firstpar}
565
\def\endthm{\endgroup}
570
\def\prf#1{{\it #1.}\rm\enspace\ignorespaces}
581
%%% FIGURES AND CAPTIONS %%%
583
\def\caption#1\endcaption{\vskip18pt\ninerm\centerline{#1}\vskip18pt\tenrm}
585
\newinsert\topins \newif\ifp@ge \newif\if@mid
586
\def\topinsert{\@midfalse\p@gefalse\@ins}
587
\def\midinsert{\@midtrue\@ins}
588
\def\pageinsert{\@midfalse\p@getrue\@ins}
589
\skip\topins=0pt %no space added when a topinsert is present
590
\count\topins=1000 %magnification factor (1 to 1)
591
\dimen\topins=\maxdimen
592
\def\@ins{\par\begingroup\setbox0=\vbox\bgroup}
593
\def\endinsert{\egroup
594
\if@mid \dimen@=\ht0 \advance\dimen@ by\dp0
595
\advance\dimen@ by12\p@ \advance\dimen@ by\pagetotal
596
\ifdim\dimen@>\pagegoal \@midfalse\p@gefalse\fi\fi
597
\if@mid \bigskip \box0 \bigbreak
598
\else\insert\topins{\penalty100
599
\splittopskip=0pt \splitmaxdepth=\maxdimen \floatingpenalty=0
601
\vbox to\vsize{\unvbox0 \kern-\dimen@}
602
\else \box0 \nobreak\bigskip\fi}\fi\endgroup}
608
\newdimen\refhangindent@
610
\setbox\refbox@=\hbox{\ninepoint\rm\baselineskip=11pt [00]}% Default 2 digits
611
\refindent@=\wd\refbox@
613
\def\resetrefindent#1{%
614
\setbox\refbox@=\hbox{\ninepoint\rm\baselineskip=11pt [#1]}%
615
\refindent@=\wd\refbox@}
619
\leftline{\noindent\tenpoint\bf References}%
623
\refhangindent@=\refindent@
624
\global\advance\refhangindent@ by .5em
625
\global\everypar{\hangindent\refhangindent@}%
626
\parindent=0pt\ninepoint\rm}
628
\def\sameauthor{\leavevmode\vbox to 1ex{\vskip 0pt plus 100pt
629
\hbox to 2em{\leaders\hrule\hfil}\vskip 0pt plus 300pt}}
631
\def\ref#1\\#2\endref{\leavevmode\hbox to \refindent@{\hfil[#1]}\enspace #2\par}
637
\dimen\margin=\maxdimen
638
\count\margin=0 \skip\margin=0pt
641
\def\footnote#1{\edef\@sf{\spacefactor\the\spacefactor}#1\@sf
642
\insert\footins\bgroup\eightpoint\hsize=30pc
643
\interlinepenalty100 \let\par=\endgraf
644
\leftskip=0pt \rightskip=0pt
645
\splittopskip=10pt plus 1pt minus 1pt \floatingpenalty=20000
647
\item{#1}\bgroup\strut\aftergroup\@foot\let\next}
648
\skip\footins=6pt plus 2pt minus 4pt
654
\def\titlepage{\global\titletrue\footline={\hss\ninepoint\rm\folio\hss}}
655
\def\rhead{\ifodd\pageno CHAPTER TITLE
656
\else AUTHORS NAMES\fi}
658
\def\makefootline{\ifnum\pageno>1\global\footline={\hfill}\fi
659
\baselineskip24\p@\vskip12\p@\fullline{\the\footline}}
660
\def\leftheadline{\hbox to \pagewidth{
662
{\kern-8pt\tenrm\folio\hfill\ninerm\rhead}}}
663
\def\rightheadline{\hbox to \pagewidth{
665
\kern-8pt\ninerm\rhead\hfil
666
{\kern-1pc\tenrm\folio}}}
668
\def\onepageout#1{\shipout\vbox{
671
\iftitle \global\titlefalse
673
\else\ifodd\pageno\rightheadline\else\leftheadline\fi\fi \vfill}
674
\vbox to \pageheight{
676
\rlap{\kern31pc\vbox to0pt{\kern4pt\box\margin \vss}}\fi
679
\vskip\skip\footins \kern 0pt
680
\hrule height\ruleht width 2.5pc \kern-\ruleht \kern 0pt
682
\boxmaxdepth=\maxdepth}}
685
\def\setcornerrules{\hbox to \pagewidth{
686
\vrule width 1pc height\ruleht \hfil \vrule width 1pc}
687
\hbox to \pagewidth{\llap{\sevenrm(page \folio)\kern1pc}
688
\vrule height1pc width\ruleht depth0pt
689
\hfil \vrule width\ruleht depth0pt}}
690
\output{\onepageout{\unvbox255}}
693
\def\begindoublecolumns{\begingroup
694
\output={\global\setbox\partialpage=\vbox{\unvbox255\bigskip}}\eject
695
\output={\doublecolumnout} \hsize=20pc \vsize=101pc}
696
\def\enddoublecolumns{\output={\balancecolumns}\eject
697
\endgroup \pagegoal=\vsize}
699
\def\doublecolumnout{\splittopskip=\topskip \splitmaxdepth=\maxdepth
700
\dimen@=50pc \advance\dimen@ by-\ht\partialpage
701
\setbox0=\vsplit255 to\dimen@ \setbox2=\vsplit255 to\dimen@
702
\onepageout\pagesofar \unvbox255 \penalty\outputpenalty}
703
\def\pagesofar{\unvbox\partialpage
704
\wd0=\hsize \wd2=\hsize \hbox to\pagewidth{\box0\hfil\box2}}
705
\def\balancecolumns{\setbox0=\vbox{\unvbox255} \dimen@=\ht0
706
\advance\dimen@ by\topskip \advance\dimen@ by-\baselineskip
707
\divide\dimen@ by2 \splittopskip=\topskip
708
{\vbadness=10000 \loop \global\setbox3=\copy0
709
\global\setbox1=\vsplit3 to\dimen@
710
\ifdim\ht3>\dimen@ \global\advance\dimen@ by1pt \repeat}
711
\setbox0=\vbox to\dimen@{\unvbox1} \setbox2=\vbox to\dimen@{\unvbox 3}
717
% Turn off @ as being a letter.
721
% End of ptexpprt.sty