\hypertarget{argument_8c}{}\doxysection{argument.\+c File Reference}
\label{argument_8c}\index{argument.c@{argument.c}}
{\ttfamily \#include \char`\"{}form3.\+h\char`\"{}}\newline
\doxysubsection*{Macros}
\begin{DoxyCompactItemize}
\item 
\#define \mbox{\hyperlink{argument_8c_a4e067a0bb7a67c6c8a8aa4a2279807ae}{NEWORDER}}
\end{DoxyCompactItemize}
\doxysubsection*{Functions}
\begin{DoxyCompactItemize}
\item 
\mbox{\Hypertarget{argument_8c_a6ac64efe20003bba0b05ed6264751a72}\label{argument_8c_a6ac64efe20003bba0b05ed6264751a72}} 
WORD {\bfseries execarg} (PHEAD WORD $\ast$term, WORD level)
\item 
\mbox{\Hypertarget{argument_8c_a065fd901b0c36ebbee9339113f1d1a22}\label{argument_8c_a065fd901b0c36ebbee9339113f1d1a22}} 
WORD {\bfseries execterm} (PHEAD WORD $\ast$term, WORD level)
\item 
\mbox{\Hypertarget{argument_8c_ade2215fe148a2f9fbd5d4592eded2b13}\label{argument_8c_ade2215fe148a2f9fbd5d4592eded2b13}} 
int {\bfseries Argument\+Implode} (PHEAD WORD $\ast$term, WORD $\ast$thelist)
\item 
\mbox{\Hypertarget{argument_8c_a27775913e73d7f8828893e17587411e0}\label{argument_8c_a27775913e73d7f8828893e17587411e0}} 
int {\bfseries Argument\+Explode} (PHEAD WORD $\ast$term, WORD $\ast$thelist)
\item 
\mbox{\Hypertarget{argument_8c_a603856df9ff424b965e7578ab8ac4714}\label{argument_8c_a603856df9ff424b965e7578ab8ac4714}} 
int {\bfseries Arg\+Factorize} (PHEAD WORD $\ast$argin, WORD $\ast$argout)
\item 
WORD \mbox{\hyperlink{argument_8c_af45168cbea3835a9f6a4ac6f4957656f}{Find\+Arg}} (PHEAD WORD $\ast$a)
\item 
WORD \mbox{\hyperlink{argument_8c_a9719382cbeb70ace718875f20a6b2739}{Insert\+Arg}} (PHEAD WORD $\ast$argin, WORD $\ast$argout, int par)
\item 
int \mbox{\hyperlink{argument_8c_ac62a957275afdb8a072ffc3f25496c83}{Cleanup\+Arg\+Cache}} (PHEAD WORD bufnum)
\item 
\mbox{\Hypertarget{argument_8c_a47b4cce4e87343d4bda2c8e7c6332a42}\label{argument_8c_a47b4cce4e87343d4bda2c8e7c6332a42}} 
int {\bfseries Arg\+Symbol\+Merge} (WORD $\ast$t1, WORD $\ast$t2)
\item 
\mbox{\Hypertarget{argument_8c_ab12bbf1734e1c97ef9c4e7c8f0fae00d}\label{argument_8c_ab12bbf1734e1c97ef9c4e7c8f0fae00d}} 
int {\bfseries Arg\+Dotproduct\+Merge} (WORD $\ast$t1, WORD $\ast$t2)
\item 
WORD $\ast$ \mbox{\hyperlink{argument_8c_a97fa4c916afc2821456f82d25e14735b}{Take\+Arg\+Content}} (PHEAD WORD $\ast$argin, WORD $\ast$argout)
\item 
WORD $\ast$ \mbox{\hyperlink{argument_8c_abc0c43396a98c840ff524d45a1c5e646}{Make\+Integer}} (PHEAD WORD $\ast$argin, WORD $\ast$argout, WORD $\ast$argfree)
\item 
WORD $\ast$ \mbox{\hyperlink{argument_8c_a3a537571de833b1fc7bcbbe086d44a18}{Make\+Mod}} (PHEAD WORD $\ast$argin, WORD $\ast$argout, WORD $\ast$argfree)
\item 
void \mbox{\hyperlink{argument_8c_adf55e40be921bec44c5411dfcf86b987}{Sort\+Weights}} (LONG $\ast$weights, LONG $\ast$extraspace, WORD number)
\end{DoxyCompactItemize}


\doxysubsection{Detailed Description}
Contains the routines that deal with the execution phase of the argument and related statements (like term) 

\doxysubsection{Macro Definition Documentation}
\mbox{\Hypertarget{argument_8c_a4e067a0bb7a67c6c8a8aa4a2279807ae}\label{argument_8c_a4e067a0bb7a67c6c8a8aa4a2279807ae}} 
\index{argument.c@{argument.c}!NEWORDER@{NEWORDER}}
\index{NEWORDER@{NEWORDER}!argument.c@{argument.c}}
\doxysubsubsection{\texorpdfstring{NEWORDER}{NEWORDER}}
{\footnotesize\ttfamily \#define NEWORDER}

Factorizes an argument in general notation (meaning that the first word of the argument is a positive size indicator) Input (argin)\+: pointer to the complete argument Output (argout)\+: Pointer to where the output should be written. This is in the Work\+Space Return value should be negative if anything goes wrong.

The notation of the output should be a string of arguments terminated by the number zero.

Originally we sorted in a way that the constants came last. This gave conflicts with the dollar and expression factorizations (in the expressions we wanted the zero first and then followed by the constants). 

Definition at line 2022 of file argument.\+c.



\doxysubsection{Function Documentation}
\mbox{\Hypertarget{argument_8c_af45168cbea3835a9f6a4ac6f4957656f}\label{argument_8c_af45168cbea3835a9f6a4ac6f4957656f}} 
\index{argument.c@{argument.c}!FindArg@{FindArg}}
\index{FindArg@{FindArg}!argument.c@{argument.c}}
\doxysubsubsection{\texorpdfstring{FindArg()}{FindArg()}}
{\footnotesize\ttfamily WORD Find\+Arg (\begin{DoxyParamCaption}\item[{PHEAD WORD $\ast$}]{a }\end{DoxyParamCaption})}

Looks the argument up in the (workers) table. If it is found the number in the table is returned (plus one to make it positive). If it is not found we look in the compiler provided table. If it is found -\/ the number in the table is returned (minus one to make it negative). If in neither table we return zero. 

Definition at line 2472 of file argument.\+c.

\mbox{\Hypertarget{argument_8c_a9719382cbeb70ace718875f20a6b2739}\label{argument_8c_a9719382cbeb70ace718875f20a6b2739}} 
\index{argument.c@{argument.c}!InsertArg@{InsertArg}}
\index{InsertArg@{InsertArg}!argument.c@{argument.c}}
\doxysubsubsection{\texorpdfstring{InsertArg()}{InsertArg()}}
{\footnotesize\ttfamily WORD Insert\+Arg (\begin{DoxyParamCaption}\item[{PHEAD WORD $\ast$}]{argin,  }\item[{WORD $\ast$}]{argout,  }\item[{int}]{par }\end{DoxyParamCaption})}

Inserts the argument into the (workers) table. If the table is too full we eliminate half of it. The eliminated elements are the ones that have not been used most recently, weighted by their total use and age(?). If par == 0 it inserts in the regular factorization cache If par == 1 it inserts in the cache defined with the Factor\+Cache statement 

Definition at line 2496 of file argument.\+c.

\mbox{\Hypertarget{argument_8c_ac62a957275afdb8a072ffc3f25496c83}\label{argument_8c_ac62a957275afdb8a072ffc3f25496c83}} 
\index{argument.c@{argument.c}!CleanupArgCache@{CleanupArgCache}}
\index{CleanupArgCache@{CleanupArgCache}!argument.c@{argument.c}}
\doxysubsubsection{\texorpdfstring{CleanupArgCache()}{CleanupArgCache()}}
{\footnotesize\ttfamily int Cleanup\+Arg\+Cache (\begin{DoxyParamCaption}\item[{PHEAD WORD}]{bufnum }\end{DoxyParamCaption})}

Cleans up the argument factorization cache. We throw half the elements. For a weight of what we want to keep we use the product of usage and the number in the buffer. 

Definition at line 2531 of file argument.\+c.

\mbox{\Hypertarget{argument_8c_a97fa4c916afc2821456f82d25e14735b}\label{argument_8c_a97fa4c916afc2821456f82d25e14735b}} 
\index{argument.c@{argument.c}!TakeArgContent@{TakeArgContent}}
\index{TakeArgContent@{TakeArgContent}!argument.c@{argument.c}}
\doxysubsubsection{\texorpdfstring{TakeArgContent()}{TakeArgContent()}}
{\footnotesize\ttfamily WORD$\ast$ Take\+Arg\+Content (\begin{DoxyParamCaption}\item[{PHEAD WORD $\ast$}]{argin,  }\item[{WORD $\ast$}]{argout }\end{DoxyParamCaption})}

Implements part of the old Exec\+Arg in which we take common factors from arguments with more than one term. The common pieces are put in argout as a sequence of arguments. The part with the multiple terms that are now relative prime is put in argfree which is allocated via Term\+Malloc and is given as the return value. The difference with the old code is that negative powers are always removed. Hence it is as in Make\+Integer in which only numerators will be left\+: now only zero or positive powers will be remaining. 

Definition at line 2725 of file argument.\+c.

\mbox{\Hypertarget{argument_8c_abc0c43396a98c840ff524d45a1c5e646}\label{argument_8c_abc0c43396a98c840ff524d45a1c5e646}} 
\index{argument.c@{argument.c}!MakeInteger@{MakeInteger}}
\index{MakeInteger@{MakeInteger}!argument.c@{argument.c}}
\doxysubsubsection{\texorpdfstring{MakeInteger()}{MakeInteger()}}
{\footnotesize\ttfamily WORD$\ast$ Make\+Integer (\begin{DoxyParamCaption}\item[{PHEAD WORD $\ast$}]{argin,  }\item[{WORD $\ast$}]{argout,  }\item[{WORD $\ast$}]{argfree }\end{DoxyParamCaption})}

For normalizing everything to integers we have to determine for all elements of this argument the LCM of the denominators and the GCD of the numerators. The input argument is in argin. The number that comes out should go to argout. The new pointer in the argout buffer is the return value. The normalized argument is in argfree. 

Definition at line 3271 of file argument.\+c.

\mbox{\Hypertarget{argument_8c_a3a537571de833b1fc7bcbbe086d44a18}\label{argument_8c_a3a537571de833b1fc7bcbbe086d44a18}} 
\index{argument.c@{argument.c}!MakeMod@{MakeMod}}
\index{MakeMod@{MakeMod}!argument.c@{argument.c}}
\doxysubsubsection{\texorpdfstring{MakeMod()}{MakeMod()}}
{\footnotesize\ttfamily WORD$\ast$ Make\+Mod (\begin{DoxyParamCaption}\item[{PHEAD WORD $\ast$}]{argin,  }\item[{WORD $\ast$}]{argout,  }\item[{WORD $\ast$}]{argfree }\end{DoxyParamCaption})}

Similar to Make\+Integer but now with modulus arithmetic using only a one WORD \textquotesingle{}prime\textquotesingle{}. We make the coefficient of the first term in the argument equal to one. Already the coefficients are taken modulus AN.\+cmod and AN.\+ncmod == 1 

Definition at line 3442 of file argument.\+c.

\mbox{\Hypertarget{argument_8c_adf55e40be921bec44c5411dfcf86b987}\label{argument_8c_adf55e40be921bec44c5411dfcf86b987}} 
\index{argument.c@{argument.c}!SortWeights@{SortWeights}}
\index{SortWeights@{SortWeights}!argument.c@{argument.c}}
\doxysubsubsection{\texorpdfstring{SortWeights()}{SortWeights()}}
{\footnotesize\ttfamily void Sort\+Weights (\begin{DoxyParamCaption}\item[{LONG $\ast$}]{weights,  }\item[{LONG $\ast$}]{extraspace,  }\item[{WORD}]{number }\end{DoxyParamCaption})}

Sorts an array of LONGS in the same way Split\+Merge (in \mbox{\hyperlink{sort_8c}{sort.\+c}}) works We use gradual division in two. 

Definition at line 3487 of file argument.\+c.

