\Header{BasicFunctions}{Group Generic Functions}
\alias{.makeBasicFunsList}{BasicFunctions}
\alias{Arith}{BasicFunctions}
\alias{Compare}{BasicFunctions}
\alias{Complex}{BasicFunctions}
\alias{Math}{BasicFunctions}
\alias{Math2}{BasicFunctions}
\alias{Ops}{BasicFunctions}
\alias{Summary}{BasicFunctions}
\keyword{internal}{BasicFunctions}
\begin{Description}\relax
These are group generic functions.  Methods defined for them will be
used for any of the specific functions belonging to the particular
group, provided no specific methods override.

These functions should never be called directly (a suitable error
message will result if they are).\end{Description}
\begin{Usage}
\begin{verbatim}
Arith(e1, e2)
Compare(e1, e2)
Ops(e1, e2)

Math(x)
Math2(x, digits)

Summary(x, ..., na.rm = FALSE)

Complex(z)

\end{verbatim}
\end{Usage}
\begin{Arguments}
\begin{ldescription}
\item[\code{e1, e2}] Arguments to the various binary operators. 
\item[\code{x}] The argument to the \code{Math} or  \code{Summary} groups
of functions.
\end{ldescription}
\end{Arguments}
\begin{Details}\relax
The functions belonging to the various groups are as follows:
\describe{
\item[\code{Arith}] \code{"+", "-", "*", "\textasciicircum{}", "\%\%", "\%/\%", "/"}
\item[\code{Compare}] \code{"==", ">", "<", "!=", "<=", ">="}
\item[\code{Ops}] \code{"Arith", "Compare"}

\item[\code{Math}] \code{"log", "sqrt", "log10", "cumprod", "abs",
       "acos", "acosh", "asin", "asinh", "atan", "atanh", "ceiling",
       "cos", "cosh", "cumsum", "exp", "floor", "gamma", "lgamma",
       "sin", "sinh", "tan", "tanh", "trunc"}
\item[\code{Math2}] \code{"round", "signif"}

\item[\code{Summary}] \code{"max", "min", "range", "prod", "sum",
       "any", "all"}

\item[\code{Complex}] \code{"Arg", "Conj", "Im", "Mod", "Re"}
}

All the functions in these groups (other than the group generics
themselves) are basic functions in R.  They are not by default generic
functions, and many of them are defined as primitives, meaning that
they do not have formal arguments.  However, you can still define
methods for them.  The effect of doing so is to create a generic
function with the appropriate arguments, in the environment where the
method definition is to be stored.  It all works more or less as you
might expect, admittedly via a bit of trickery in the background.\end{Details}
\begin{Author}\relax
John Chambers\end{Author}
\begin{References}\relax
The web page \url{http://www.omegahat.org/RSMethods/index.html} is the primary documentation.

The functions in this package emulate the facility for classes and methods described in
\emph{Programming with Data}, (John M. Chambers, Springer, 1998).  See this book
for further details and examples.\end{References}

