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