1
2\chapter{The setup}
3\label{setup}
4
5When \FORM\ is started, it has a number of settings\index{setup} built in
6that were determined during its installation\index{installation}. If the
7user would like to alter these settings, it is possible to either specify
8their desired values in a setup file\index{file!setup} or to do so at the
9beginning of the program file\index{file!program}. There are two ways in
10which \FORM\ can find a setup file. The first way is by having a file named
11`form.set'\index{form.set} in the current directory. If such a file is
12present, \FORM\ will open it and interpret its contents as setup parameters.
13If this file is not present, one may specify a setup file with the -s
14option in the command tail. This option must precede the name of the input
15file. After the -s follow one or more blanks or tabs and then the full name
16of the setup file. \FORM\ will try to read startup parameters from this file.
17If a file `form.set' is present, \FORM\ will ignore the -s option and its
18corresponding file name. This order of interpretation allows the user to
19define an alias with a standard setup file which can be overruled by a
20local setup file. If, in the beginning of the program file, before any
21other statements with the exception of the \#- instruction and commentary
22statements, there are lines that start with \#: the remaining contents of
23these lines are interpreted exactly like the lines in the setup file. The
24specifications in the program file take precedence\index{precedence} over
25all other specifications. If neither of the above methods is used, \FORM\
26will use a built in set of parameters. Their values may depend on the
27installation and are given below.
28
29The following is a list of parameters that can be set. The syntax is rather
30simple: The full word must be specified (case insensitive), followed by one
31or more blanks or tabs and the desired number, string or character.
32Anything after this is considered to be commentary. In the setup file lines
33that do not start with an alphabetic character are seen as commentary. The
34sizes of the buffers are given in bytes, unless mentioned otherwise. A word
35is 2 bytes for 32\index{32 bits} bit machines and 4 bytes for 64\index{64
36bits} bit machines.
37
38In \FORM\ version 3.3 and later, it is also allowed to define
39preprocessor variables\index{preprocessor variables} (see also
40\ref{preprovariables}) in the setup file. In addition one can use
41preprocessor variables in the setup, provided it is not in the name of the
42parameter/keyword.
43
44\leftvitem{4.0cm}{bracketindexsize\index{setup!bracketindexsize}\index{bracketindexsize}}
45\rightvitem{12.6cm}{Maximum size in bytes of any individual index of a
46bracketted expression. Each expression will have its own index. The index
47starts with a relatively small size and will grow if needed. But it will
48never grow beyond the specified size. If more space is needed, \FORM\ will
49start skipping brackets and find those back later by linear search. See
50also chapter~\ref{brackets} and section~\ref{substabracket}.}
51
52\leftvitem{4.0cm}{CommentChar\index{setup!commentchar}\index{commentchar}}
53\rightvitem{12.6cm}{This should be followed by one or more blanks and a
54single non-blank character. This character will be used to indicate
55commentary, instead of the regular $*$ in column 1.}
56
57\leftvitem{4.0cm}{CompressSize\index{setup!compresssize}\index{compresssize}}
58\rightvitem{12.6cm}{When compressing output terms, \FORM\ needs a compression
59buffer. This buffer deals recursively with compression and decompression of
60terms that are either written or read. Its size will be at least
61MaxTermSize but when there is heavy use of expressions in the right hand
62side of definitions or substitution it would have to be considerably
63longer. It is hoped that in the future this parameter can be eliminated.
64CompressSize should be given in bytes.}
65
66\leftvitem{4.0cm}{ConstIndex\index{setup!constindex}\index{constindex}}
67\rightvitem{12.6cm}{This is the number of indices that are considered to be
68constant indices like in fixed vector components (the so-called fixed
69indices). The size of this parameter is not coupled to any array space, but
70it should not go much beyond 1000 on a 32\index{32 bits} bit machine. On a
7164\index{64 bits} bit machine it can go considerably further.}
72
73\leftvitem{4.0cm}{ContinuationLines\index{setup!continuationlines}\index{continuationlines}}
74\rightvitem{12.6cm}{The number of continuation lines that the local Fortran
75compiler will allow. This limits the number of continuation lines, when the
76output option `Format Fortran' (see \ref{substaformat}) is selected.}
77
78\leftvitem{4.0cm}{Define\index{setup!define}\index{define}}
79\rightvitem{12.6cm}{The syntax is as in the \#define instruction in the
80preprocessor (see \ref{preprovariables}), with the remark that in the setup
81file there should be no leading \# character as that would make the line
82into commentary. Example: \hfill \\
83{\tt\ \ \ \ define MODULUS "31991"} \hfill \\
84which could be used
85at a later point in the program to activate a modulus statement (see
86\ref{substamodulus}).}
87
88\leftvitem{4.0cm}{DotChar\index{setup!dotchar}\index{dotchar}}
89\rightvitem{12.6cm}{There should be a single character following this name
90(and the blank(s) after it). This character will be used instead of the \_,
91when dotproducts\index{dotproducts} are printed in Fortran\index{Fortran}
92output. This option is needed because some Fortran compilers do not
93recognize the underscore as a valid character. In the olden days one could
94use here the dollar character but nowadays many Fortran compilers do not
95recognize this character as belonging to a variable name.}
96
97\leftvitem{4.0cm}{FunctionLevels\index{setup!functionlevels}\index{functionlevels}}
98\rightvitem{12.6cm}{The maximum number of levels that may occur, when
99functions have functions in their arguments.}
100
101\leftvitem{4.0cm}{HideSize\index{setup!hidesize}\index{hidesize}}
102\rightvitem{12.6cm}{The size of the hide buffer. The size of this buffer is
103normally set equal to scratchsize (see below). If one uses the setting of
104HideSize after the setting of ScratchSize, one can give the hide buffer its
105own size. There are cases that this can make the program faster.}
106
107\leftvitem{4.0cm}{IncDir\index{setup!incdir}\index{incdir}}
108\rightvitem{12.6cm}{Directory (or path of directories) in which \FORM\ will
109look for files if they are not to be found in the current directory. This
110involves files for the \#include\index{\#include} and \#call\index{\#call}
111instructions. This variable takes precedence over the
112Path\index{setup!path}\index{path} variable.}
113
114%\leftvitem{4.0cm}{IndentSpace\index{setup!indentspace}\index{indentspace}}
115%\rightvitem{12.6cm}{}
116
117\leftvitem{4.0cm}{InsideFirst\index{setup!insidefirst}\index{insidefirst}}
118\rightvitem{12.6cm}{Not having any effect at the moment.}
119
120\leftvitem{4.0cm}{JumpRatio\index{setup!jumpratio}\index{jumpratio}}
121\rightvitem{12.6cm}{See the endswitch (\ref{substaendswitch}) statement.}
122
123\leftvitem{4.0cm}{MaxNumberSize\index{setup!maxnumbersize}\index{maxnumbersize}}
124\rightvitem{12.6cm}{Allows the setting of the maximum size of the numbers
125in \FORM. The number should be given in words. For 32\index{32 bits} bit
126systems a word is two bytes and for 64\index{64 bits} bit systems a word is
1274 bytes. The number size is always limited by the maximum size of the terms
128(see MaxTermSize). Actually it has to be less than half of MaxTermSize
129because a coefficient contains both a numerator and a denominator. It is
130not always a good idea to have the number size at its maximum value,
131especially when MaxTermSize is large. In that case it could be very long
132before a runaway algorithm runs into limitations of size (arithmetic for
133very long fractions is not very fast due to the continuous need for
134computing GCD's)}
135
136\leftvitem{4.0cm}{MaxTermSize\index{setup!maxtermsize}\index{maxtermsize}}
137\rightvitem{12.6cm}{This\label{setupmaxtermsize}
138is the maximum size that an individual term may occupy in words. This
139size does not affect any allocations. One should realize however that the
140larger this size is the heavier the demand can be on the workspace, because
141the workspace acts as a heap during the execution and sometimes allocations
142have to be made in advance, before \FORM\ knows what the actual size of the
143term will be. Consequently the evaluation tree cannot be very deep, when
144WorkSpace / MaxTermSize is not very big. MaxTermSize controls mainly how
145soon \FORM\ starts complaining about terms that are too complicated. Its
146absolute maximum is 32568 on 32\index{32 bits} bit systems and about $10^9$
147on 64\index{64 bits} bit systems (of course the workspace would have to be
148considerably larger than that....).}
149
150\leftvitem{4.0cm}{MaxWildCards\index{setup!maxwildcards}\index{maxwildcards}}
151\rightvitem{12.6cm}{The maximum number of wildcards that
152can be active in a single matching of a pattern. Under normal circumstance
153the default value of 100 should be more than enough.}
154
155\leftvitem{4.0cm}{NoSpacesInNumbers\index{setup!nospacesinnumbers}\index{nospacesinnumbers}}
156\rightvitem{12.6cm}{Long\label{nospacesinnumbers} numbers are usually spread over several lines
157by placing a backspace character at the end of each line and then
158continuing at the next line. For cosmetic purposes \FORM\ puts usually a few
159blank spaces at the beginning of the new line. \FORM\ itself can read this but
160some programs cannot. Hence one can put \FORM\ in a mode in which these
161blanks are omitted. The values of the variable are ON or OFF. There is also
162a command to change this behaviour at runtime. See the on and off commands
163in sections \ref{staonnospacesinnumbers} and \ref{staoffnospacesinnumbers}.}
164
165\leftvitem{4.0cm}{NumStoreCaches\index{setup!numstorecaches}\index{numstorecaches}}
166\rightvitem{12.6cm}{This number determines how many store caches (see
167the description of the SizeStoreCache setup parameter below) there will
168be. In the case of parallel processing this will be the number of caches
169per processor.}
170
171\leftvitem{4.0cm}{NwriteStatistics\index{setup!nwritestatistics}\index{nwritestatistics}}
172\rightvitem{12.6cm}{When this word is mentioned, the default setting for the
173statistics is that no run time statistics will be shown. Ordinarily they
174will be shown.}
175
176\leftvitem{4.0cm}{NwriteThreadStatistics\index{setup!nwritethreadstatistics}
177\index{nwritethreadstatistics}}
178\rightvitem{12.6cm}{\vspace{1ex}This variable has the values ON or OFF. It controls for
179\TFORM{} whether the statistics of the individual threads will be printed. The
180default value is ON.}
181
182\leftvitem{4.0cm}{OldOrder\index{setup!oldorder}\index{oldorder}}
183\rightvitem{12.6cm}{A special flag (values ON/OFF) by which one can still
184select the old option of not checking for the order of statements inside a
185module. This should be used only in the case that it is nearly impossible
186to change a program to the new mode in which the order of the statements
187(declarations etc) is relevant. In the future this old mode may not exist.}
188
189\leftvitem{4.0cm}{Parentheses\index{setup!parentheses}\index{parentheses}}
190\rightvitem{12.6cm}{The maximum number of nestings of parentheses or
191functions inside functions. The variable may be eliminated in a later
192version.}
193
194\leftvitem{4.0cm}{Path\index{setup!path}\index{path}}
195\rightvitem{12.6cm}{Directory (or path of directories) in which \FORM\ will
196look for files if they are not to be found in the current directory. This
197involves files for the \#include\index{\#include} and \#call\index{\#call}
198instructions. \FORM\ will test this path after a potential path specified as
199IncDir\index{setup!incdir}\index{incdir}.}
200
201%\leftvitem{4.0cm}{PolyGCDchoice\index{setup!polygcdchoice}\index{polygcdchoice}}
202%\rightvitem{12.6cm}{}
203
204\leftvitem{4.0cm}{ProcedureExtension\index{setup!procedureEetension}\index{procedureextension}}
205\rightvitem{12.6cm}{The extension that will be used by \FORM\ for finding the
206procedures that are in separate files. Restrictions on the strings used are
207as explained in the preprocessor
208\#procedureextension\index{\#procedureextension} instruction in section
209\ref{preprocedureextension}.}
210
211\leftvitem{4.0cm}{ProcessBucketSize\index{setup!processbucketsize}\index{processbucketsize}}
212\rightvitem{12.6cm}{\label{setupprocessbucketsize} For the parallel version
213\ParFORM. It is ignored in other versions. Tells \ParFORM\ how many terms
214there should be in the buckets that are being distributed over the
215secondary processors. See also \ref{substaprocessbucketsize}.}
216
217\leftvitem{4.0cm}{ResetTimeOnClear\index{setup!resettimeonclear}\index{resettimeonclear}}
218\rightvitem{12.6cm}{The value is ON or OFF. The default value is ON. This
219means that by default the clock is reset after each .clear\index{.clear}
220(see chapter \ref{modules} on modules) instruction at the end of a module.}
221
222\leftvitem{4.0cm}{ScratchSize\index{setup!scratchsize}\index{scratchsize}}
223\rightvitem{12.6cm}{The size of the input and the output buffers for the
224regular algebra processing. Terms are read in in chunks this size and are
225written to the output file using buffers of this size. There are either two
226or three of these buffers, depending on whether the hide\index{hide}
227facility is being used (see \ref{substahide}). These buffers must have a
228size that is at least as large as the MaxTermSize\index{maxtermsize}. These
229buffers act as caches for the files with the extension .sc1\index{.sc1},
230.sc2\index{.sc2} and .sc3\index{.sc3}. See also the HideSize parameter
231above for the independent setting of the size of the hide buffer.}
232
233\leftvitem{4.0cm}{SizeStoreCache\index{setup!sizestorecache}\index{sizestorecache}}
234\rightvitem{12.6cm}{The size of the caches\index{caches} that are used for
235reading terms when stored expressions are used in the r.h.s.\ of a
236statement. Typically there are several such caches and they make the
237reading much faster. In the case of parallel processing these caches become
238very important because without them the different processes may all want to
239read from the .str\index{.str} file\index{file!store} at the same time and
240execution speed will suffer badly. The number of store caches is determined
241by the NumStoreCaches\index{numstorecaches} setup parameter which is
242described above. The size of these caches doesn't have to be very large as
243compared to some of the other buffers. It is recommended though to have
244them at least as large as MaxTermSize\index{maxtermsize} (see above).}
245
246\leftvitem{4.0cm}{SortType\index{setup!sorttype}\index{sorttype}}
247\rightvitem{12.6cm}{Possible values are "lowfirst"\index{lowfirst},
248"highfirst"\index{highfirst} and "powerfirst"\index{powerfirst}. "lowfirst"
249is the default. Determines the order in which the terms are placed during
250sorting. In the case of lowfirst, lower powers of symbols and dotproducts
251come before higher powers. In the case of highfirst it is the opposite. In
252the case of powerfirst the combined powers of all symbols together are
253considered and the highest combined powers come first. See also the
254on\index{on} statement in \ref{substaon}.}
255
256\leftvitem{4.0cm}{TempDir\index{setup!tempdir}\index{tempdir}}
257\rightvitem{12.6cm}{This variable should contain the name of a directory
258that is the directory in which \FORM\ should make its temporary files. If the
259-t option is used when \FORM\ is started, the TempDir variable in the
260setup file is ignored. \FORM\ can create a number of different temporary
261files.}
262
263\leftvitem{4.0cm}{TempSortDir\index{setup!tempsortdir}\index{tempsortdir}}
264\rightvitem{12.6cm}{This variable should contain the name of a directory
265that is the directory in which \FORM{} should make its temporary sort files.
266If the -ts option is used when \FORM{} is started, the TempSortDir variable in
267the setup file is ignored. If TempSortDir is not specified, then the value of
268TempDir is used also for sort files.}
269
270\leftvitem{4.0cm}{ThreadBucketSize\index{setup!threadbucketsize}\index{threadbucketsize}}
271\rightvitem{12.6cm}{Only relevant for \TFORM. The size of the number of
272terms sent to the workers simultaneously.
273For details see the chapter on the parallel version (\ref{parallel}).}
274
275\leftvitem{4.0cm}{ThreadLoadBalancing\index{setup!threadloadbalancing}\index{threadloadbalancing}}
276\rightvitem{12.6cm}{\indent Only relevant for \TFORM. Possible values are ON
277or OFF. For details see the chapter on the parallel version (\ref{parallel}).}
278
279\leftvitem{4.0cm}{Threads\index{setup!threads}\index{threads}}
280\rightvitem{12.6cm}{Only relevant for \TFORM\ (see chapter on the parallel
281version). Specifies the default number of worker threads to be used. The
282values 0 and 1 will indicate that running will only be done by the master
283thread (\ref{parallel}).}
284
285\leftvitem{4.0cm}{ThreadScratchOutSize\index{setup!threadscratchoutsize}\index{threadscratchoutsize}}
286\rightvitem{12.6cm}{The size of the output scratch buffers for each of the
287worker threads. These buffers will be used when the InParallel
288statement~\ref{substainparallel} is active. They are used to catch the
289output of the expressions as processed by the individual workers before
290they are copied to the output scratch buffer/file of the master. The output
291scratch buffer/file of each worker will never contain more than one
292expression at a time.}
293
294\leftvitem{4.0cm}{ThreadScratchSize\index{setup!threadscratchsize}\index{threadscratchsize}}
295\rightvitem{12.6cm}{The size of the input scratch buffers for each of the
296worker threads. These buffers are only used when the main scratch buffers
297of the master process aren't sufficient and scratch files have been made.
298When the buffers of the master are big enough, the workers only use
299pointers to the buffer of the master. Once there are scratch files the
300buffer is used for caching the input from those files. In that case each
301worker has its own cache. For reading purposes it can actually be counter
302productive if these buffers are very large. This parameter sets the value
303for the input and the hide\index{hide} scratch files. The output scratch
304size for the workers is set with the ThreadScratchOutSize parameter.}
305
306%\leftvitem{4.0cm}{ThreadSortFileSynch\index{setup!threadsortfilesynch}\index{threadsortfilesynch}}
307%\rightvitem{12.6cm}{\indent Only relevant for \TFORM. Possible values are ON
308%or OFF. For details see the chapter on the parallel version (\ref{parallel}).}
309
310\leftvitem{4.0cm}{TotalSize\index{setup!totalsize}\index{totalsize}}
311\rightvitem{12.6cm}{Puts \FORM\ in a mode in which it tries to determine
312the maximum space occupied by all expressions at any given moment during
313the execution of the program. This space is the sum of the
314input/output/hide scratch files, the sort file(s) and the .str file. This
315maximum is printed at the end of the program. The same can be obtained with
316the "On TotalSize" statement (see \ref{ontotalsize}) or the -T option
317in the command tail when \FORM\ is started (see \ref{running}).}
318
319\leftvitem{4.0cm}{WorkSpace\index{setup!workspace}\index{workspace}}
320\rightvitem{12.6cm}{The size of the heap that is used by the algebra
321processor when it is evaluating the substitution tree. It will contain
322terms, half finished terms and other information. The size of the workspace
323may be a limitation on the depth of a substitution tree.}
324
325\leftvitem{4.0cm}{WTimeStats\index{setup!wtimestats}\index{wtimestats}}
326\rightvitem{12.6cm}{Turns on the wall-clock time mode in the statistics.
327See the `\texttt{On wtimestats}' statement~\ref{substaon}.}
328
329Variables that take a path\index{path} for their value expect a sequence of
330directories, separated by colon characters as in the UNIX\index{UNIX} way
331to define such objects.
332
333The above parameters are conceptually relatively easy. The parameters that
334are still left are more complicated and are often restricted in their
335size by some relationships. Hence it is necessary to understand the
336sorting inside \FORM\ a little bit before using them. On the other hand
337these parameters can influence the performance noticeably. See also chapter
338\ref{sorting} for more details.
339
340When terms are send to `output' by the main algebra engine, they are put
341inside a buffer. This buffer is called the `small\index{small buffer}
342buffer\index{buffer!small}'. Its size is given by the variable {\sl
343SmallSize\index{smallsize}}. When this buffer is full, or when the number
344of terms in this buffer exceeds a given maximum, indicated by the variable
345{\sl TermsInSmall\index{termsinsmall}}, the contents of the buffer are
346sorted. The sorting is done by pointers, hence it is important that the
347small buffer resides inside the physical memory. During the sorting it may
348happen that coefficients are added. The sum of two rational numbers can
349take more space than any of the individual numbers, so there will be a
350space problem. This has been solved by the construction of an extension to
351the small buffer. The variable {\sl SmallExtension\index{smallextension}}
352is the size of the small buffer together with this extension. The value for
353SmallExtension will always be at least 7/6 times the value of SmallSize.
354
355The result of the sorting of the small buffer is written to the
356`large\index{large buffer} buffer\index{buffer!large}' (with the size {\sl
357LargeSize\index{largesize}}) as a single object and the filling of the
358small buffer can resume. Whenever there is not enough room in the large
359buffer for the result of sorting the small buffer, or whenever there are
360already a given number of these sorted `patches' in it (controlled by the
361variable {\sl LargePatches\index{largepatches}}) the buffer will be sorted
362by merging the patches\index{patch} to make room for the new results. The
363output is written to the sort file as a single patch. Then the results from
364the small buffer can be written to the large buffer. This game can continue
365till no more terms are generated. In the end it will be necessary to sort
366the results in the intermediate sort file\index{file!sort}. This can be
367done with up to {\sl FilePatches\index{filepatches}} at a time. Because
368file operations are notoriously slow the combination of the small buffer,
369the small extension and the large buffer is used for caching\index{cache}
370purposes. Hence this space can be split in `FilePatches' caches. The
371limitation is that each cache should be capable to contain at least two
372terms of maximal size. This means that the sum of SmallExtension and
373LargeSize must be at least FilePatches times 2*MaxTermSize*(bytes in short
374integer). It is possible to set the size of these caches directly with the
375variable {\sl SortIOsize\index{sortiosize}}. If the variable is too large,
376the variable FilePatches may be adjusted by \FORM. If there are more than
377FilePatches patches in the sort file, a second sort file is needed for the
378output of each `superpatch'\index{superpatch}. When the first sort file has
379been treated, the second sort file can be treated in exactly the same way
380as its predecessor. This process will finish eventually. When there are at
381most FilePatches patches in a sort file, the output of their merging can be
382written directly to the regular output. For completeness we give a list of
383all these variables:
384
385\leftvitem{3cm}{FilePatches\index{setup!filepatches}\index{filepatches}}
386\rightvitem{13cm}{The maximum number of patches that can be merged
387simultaneously, when the intermediate sort file is involved.}
388
389\leftvitem{3cm}{LargePatches\index{setup!largepatches}\index{largepatches}}
390\rightvitem{13cm}{The maximum number of patches that is allowed in the
391large buffer. The large buffer may reside in virtual memory, due to the
392nature of the sort that is applied to it.}
393
394\leftvitem{3cm}{TermsInSmall\index{setup!termsinsmall}\index{termsinsmall}}
395\rightvitem{13cm}{The maximum number of terms that is allowed in the small
396buffer before it is sorted. The sorted result is either copied to the large
397buffer or written to the intermediate sort file (when LargeSize is too
398small).}
399
400\leftvitem{3cm}{SmallSize\index{setup!smallsize}\index{smallsize}}
401\rightvitem{13cm}{The size of the small buffer in bytes.}
402
403\leftvitem{3cm}{SmallExtension\index{setup!smallextension}\index{smallextension}}
404\rightvitem{13cm}{The size of the small buffer plus its extension.}
405
406\leftvitem{3cm}{LargeSize\index{setup!largesize}\index{largesize}}
407\rightvitem{13cm}{The size of the large buffer.}
408
409\leftvitem{3cm}{SortIOsize\index{setup!sortiosize}\index{sortiosize}}
410\rightvitem{13cm}{The size of the buffer that is used to write to the
411intermediate sorting file and to read from it. It should be noted that if
412this buffer is not very large, the sorting of large files may become rather
413slow, depending on the operating system. Hence we recommend a potential
414fourth stage in the sorting over having this number too small to fit more
415filepatches in the combined small and large buffer. Setting the small and
416large buffers to a decent size may avoid all problems by a: making more
417space for the caching, b: creating fewer file patches to start with.}
418
419There is a second set of the above setup parameters for sorts of
420subexpressions\index{subexpressions} as in function arguments or in the
421term environment (see \ref{substaterm}). Because these things can happen
422with more than one level, whatever allocations have to be made (during
423runtime when needed) may have to be made several times. Hence one should be
424far more conservative here than with the global allocations. Anyway, those
425sorts should rarely involve anything very big. With the function arguments
426the condition is that the final result will fit inside a single term, but
427with the term environment no such restriction exists. The relevant
428variables here are subfilepatches, sublargepatches, sublargesize,
429subsmallextension, subsmallsize, subsortiosize and subtermsinsmall. Their
430meanings are the same as for the variables without the sub in front.
431
432When \FORM\ is running in parallel mode (either \TFORM\ or \ParFORM) each worker
433will need its own buffers. In \ParFORM\ in which the processors each control
434their own memory, the size of each of these buffers are the same as for the
435master process. In \TFORM\ with its shared memory the above sizes refer to
436the buffers of the master thread. The workers each get basically buffers
437with 1/N times the size of the buffer of the master. This may get made a
438bit bigger when potential conflicts with MaxTermSize occur.
439
440The default settings are
441\begin{center}
442\begin{tabular}{lrr}
443Variable         &      32-bits       &    64-bits   \\ \hline
444bracketindexsize &      200000        & 200000 \\
445commentchar &           $*$           & $*$ \\
446compresssize &          90000         & 90000 \\
447constindex &            128           & 128 \\
448continuationlines &     15            & 15 \\
449dotchar &               .             & . \\
450filepatches &           256           & 256 \\
451functionlevels &        30            & 30 \\
452hidesize &              50000000      & 50000000 \\
453incdir &                .             & . \\
454%indentspace &                        & \\
455insidefirst &           ON            & ON \\
456largepatches &          256           & 256 \\
457largesize &             50000000      & 50000000 \\
458maxnumbersize &         200           & 200 \\
459maxtermsize &           10000         & 40000 \\
460maxwildcards &          100           & 100 \\
461nospacesinnumbers &     OFF           & OFF \\
462numstorecaches &        4             & 4 \\
463nwritefinalstatistics & OFF           & OFF \\
464nwritestatistics &      OFF           & OFF \\
465nwritethreadstatistics &OFF           & OFF \\
466oldorder &              OFF           & OFF \\
467parentheses &           100           & 100 \\
468path &                  .             & . \\
469%polygcdchoice &        0             & 0 \\
470processbucketsize &     1000          & 1000 \\
471scratchsize &           50000000      & 50000000 \\
472sizestorecache &        32768         & 32768 \\
473smallextension &        20000000      & 20000000 \\
474smallsize &             10000000      & 10000000 \\
475sortiosize &            100000        & 100000 \\
476sorttype &              lowfirst      & lowfirst \\
477subfilepatches &        64            & 64 \\
478sublargepatches &       64            & 64 \\
479sublargesize &          4000000       & 4000000 \\
480subsmallextension &     800000        & 800000 \\
481subsmallsize &          500000        & 500000 \\
482subsortiosize &         32768         & 32768 \\
483subtermsinsmall &       10000         & 10000 \\
484tempdir &               .             & . \\
485tempsortdir &           .             & . \\
486termsinsmall &          100000        & 100000 \\
487threadbucketsize &      500           & 500 \\
488threadloadbalancing &   ON            & ON \\
489threads &               0             & 0 \\
490threadsortfilesynch &   OFF           & OFF \\
491threadscratchoutsize &  2500000       & 2500000 \\
492threadscratchsize &     100000        & 100000 \\
493workspace &             10000000      & 40000000
494%zipsize &               32768        & 32768
495\end{tabular}
496\end{center}
497If one compares these numbers with the corresponding numbers for older
498versions one will notice that here we assume that the standard computer
499will have much more memory available than in the `old time'. Basically we
500expect that a serious \FORM\ user has at least 64 Mbytes available. If it is
501considerably less one should define a setup file with smaller settings.
502
503More recently a new notation for large numbers has been allowed. One can
504use the characters K, M, G and T to indicate kilo (three zeroes), mega (6
505zeroes), giga (9 zeroes) and tera (12 zeros) as in 10M for 10000000.
506
507To find out what the setup values are, one can use the `ON,setup;'
508statement (\ref{substaon}).
509
510In version 3.3 and later one may use environment\index{environment}
511variables for the values of the setup parameters, either in the setup file
512or at the beginning of the .frm file. The environment variable is used as a
513preprocessor variable in the sense that its name is enclosed in a
514backquote-quote pair as in \verb:`VARNAME':. The variable will be looked
515for and if found it will be substituted. This can however not be done in a
516recursive way, because the regular routines that take care of the
517preprocessor variables are not active yet when the setups are read.
518