.. _operators: Basic Operators ================= .. list-table:: :widths: 6 8 16 :header-rows: 1 * - Operator - Argument(s) -> Result(s) - Brief Description * - ``+``, ``-``, ``*`` - ``(int,int->int)`` - usual integer arithmetic operations * - ``-`` - ``(int->int)`` - integral unary minus * - ``^`` - ``(int,int->int)`` - | integer exponentiation | (whenever result integral) * - ``\``, ``%`` - ``(int,int->int)`` - integer (Euclidian) division and remainder * - ``\%`` - ``(int,int->int,int)`` - Euclidian division with remainder * - ``+``, ``-``, ``\*``, ``/`` - ``(rat,rat->rat)`` - usual rational arithmetic operations * - ``+``, ``-``, ``\*``, ``/`` - ``(rat,int->rat)`` - more efficient in applicable bcases * - ``%`` - ``(rat,int->rat)`` - | remainder after removing | greatest integer multiple * - ``%`` - ``(rat,rat->rat)`` - | remainder after removing | greatest integer multiple * - ``-`` - ``(rat->rat)`` - rational unary minus * - ``/`` - ``(rat->rat)`` - rational unary divide (in other words: inverse) * - ``^`` - ``(rat,int->rat)`` - | rational exponentiation | (whenever result defined) * - ``%`` - ``(rat->int,int)`` - pair of numerator and denominator * - ``+``, ``-`` - ``(vec,vec->vec)`` - addition/subtraction of vectors of equal size * - ``-`` - ``(vec->vec)`` - vector unary minus * - ``*`` - ``(vec,int->vec)`` - scalar multiplication (note the operand order) * - ``\`` - ``(vec,int->vec)`` - scalar division, rounding down * - ``%`` - ``(vec,int->vec)`` - remainder in scalar division * - ``*`` - ``(vec,vec->int)`` - scalar product * - ``+``, ``-`` - ``(mat,mat->mat)`` - matrix addition and subtraction * - ``*`` - ``(mat,vec->vec)`` - matrix-vector product * - ``*`` - ``(mat,mat->mat)`` - matrix-matrix product * - ``*`` - ``(vec,mat->mat)`` - vector-matrix product (vector is transposed) * - ``^`` - ``(mat->mat)`` - (unary use of ^) matrix transposition * - ``^`` - ``(vec->mat)`` - | (unary use of ^) (transposed) vector | as 1-line matrix * - ``+``, ``-`` - ``(mat,int->mat)`` - | addition/subtraction | of multiple of identity * - ``+``, ``-`` - ``(int,mat->mat)`` - | addition/subtraction | from multiple of identity * - ``/`` - ``(vec,int->ratvec)`` - vector division giving rational vector * - ``%`` - ``(ratvec->vec,int)`` - pair of numerator vector and denominator * - ``+``, ``-`` - ``(ratvec,ratvec->ratvec)`` - additive rational vector arithmetic * - ``*``, ``/``, ``%`` - ``(ratvec,int->ratvec)`` - scalar rational vector operations * - ``*``, ``/`` - ``(ratvec,rat->ratvec)`` - scalar rational vector operations * - ``-`` - ``(ratvec->ratvec)`` - unary minus of rational vectors * - ``*`` - ``(mat,ratvec->ratvec)`` - left-multiplication my matrix of ratvec * - ``*`` - ``(ratvec,mat->ratvec)`` - right-multiplication my matrix of ratvec * - ``=``, ``!=`` - ``(int->bool)`` - test for equality/inequality against 0 * - ``>=``, ``>`` - ``(int->bool)`` - | non-negative, positive | (note op. on wrong side) * - ``<=``, ``<`` - ``(int->bool)`` - | non-positive, negative | (note op. on wrong side) * - | ``>``, ``>=``, ``<``, ``<=``, | ``=``, ``!=`` - ``(int,int->bool)`` - usual relational operators * - ``=``, ``!=`` - ``(rat->bool)`` - test for equality/inequality against 0/1 * - ``>=``, ``>`` - ``(rat->bool)`` - | non-negative, positive | (note op. on wrong side) * - ``<=``, ``<`` - ``(rat->bool)`` - | non-positive, negative | (note op. on wrong side) * - | ``>``, ``>=``, ``<``, ``<=``, | ``=``, ``!=`` - ``(rat,rat->bool)`` - usual relational operators * - ``=``, ``!=`` - ``(bool,bool->bool)`` - Boolean equivalence, inequivalence (xor) * - ``=``, ``!=`` - ``(string->bool)`` - test for being (or not being) the empty string * - | ``>``, ``>=``, ``<``, ``<=``, | ``=``, ``!=`` - ``(string,string->bool)`` - relational operators * - ``=``, ``!=`` - ``(vec->bool)`` - test for being (or not being) a zero vector * - ``>=``, ``>`` - ``(vec->bool)`` - | test for all entries being | non-negative/positive * - ``=``, ``!=`` - ``(vec,vec->bool)`` - vector equality and inequality * - ``=``, ``!=`` - ``(ratvec->bool)`` - test for being a (or not) zero rational vector * - ``>=``, ``>`` - ``(ratvec->bool)`` - test for all entries non-negative/positive * - ``=``, ``!=`` - ``(ratvec,ratvec->bool)`` - rational vector equality, inequality * - ``=``, ``!=`` - ``(mat->bool)`` - test for being a (or not) zero matrix * - ``=``, ``!=`` - ``(mat,mat->bool)`` - matrix equality and inequality * - ``#`` - ``(string->int)`` - length of string * - ``#`` - ``(vec->int)`` - number of components of vector * - ``#`` - ``(ratvec->int)`` - number of components of rational vector * - ``#`` - ``(mat->int,int)`` - dimensions (rows, columns) of a matrix * - ``#`` - ``([T]->int)`` - number of components of row (T is any type) * - ``#`` - ``(string,string->string)`` - string concatenation * - ``#`` - ``(vec,vec->vec)`` - concatenation of vectors * - ``#`` - ``(vec,int->vec)`` - append element to a vector * - ``#`` - ``(int,vec->vec)`` - prepend element to a vector * - ``#`` - ``([T],[T]->[T])`` - concatenation of rows (T is any type) * - ``#`` - ``([T],T->[T])`` - append element to a row (T is any type) * - ``#`` - ``(T,[T]->[T])`` - prepend element to a row (T is any type) * - ``#`` - ``(int,[vec]->mat)`` - | combine columns of given fixed height | into matrix * - ``^`` - ``(int,[vec]->mat)`` - | combine rows of given fixed length | into matrix