# Objects in SYMMETRICA

Symmetrica was written in the programming language C. The design of the routines was in a object oriented way.

In Symmetrica there is only one type of object. One component of the object is a tag identifying the specific kind of object. Using this tag the (meta-) routines (e.g. mult) switch to the specific routine (e.g. mult_permutation).

The advantage of this method is that we only have one routine for different kind of objects. So is the routine for the inversion of a matrix independent of the objects inside the matrix. We only need a routine to invert the entries.
But we have a overhead in the object to store the tag, and a overhead in runtime to switch to the specific routine. This method is simliar to virtual classes in C++.

Now a complete listing of available types of objects.

INTEGER
VECTOR of arbitray objects
BITVECTOR 0-1 vector as bit vector
PARTITION
BRUCH fraction of two arbitrary objects
PERMUTATION
SKEWPARTITION
TABLEAUX
POLYNOM polynomial with arbitrary coefficents
SCHUR Schur function with arbitrary coefficents
MATRIX of arbitray objects
HOMSYM complete symmetric function
SCHUBERT Schubert polynomial
INTEGERVECTOR VECTOR object with INTEGER objects
INTEGERMATRIX MATRIX object with INTEGER objects
SYMCHAR charcter of the symmetric group
WORD
LIST list of arbitray objects
LONGINT (3/1/99)
BINTREE binary tree of arbitray objects
POWSYM symmetric power sum
ELMSYM elementary symmetric function
KRANZ element of wreath product of symmetric groups
FINITEFIELD element of a finite field
GROUPALGEBRA element of the group algebra of a permutation group
REIHE series
CYCLOTOMIC
MONOPOLY polynomial in one variable