Function: _*_
Section: symbolic_operators
C-Name: gmul
Prototype: GG
Help: x*y: product of x and y.
Description:
 (small, small):small:parens     $(1)*$(2)
 (int, small):int                mulis($1, $2)
 (small, int):int                mulsi($1, $2)
 (int, int):int                  mulii($1, $2)
 (0, mp):small                   ($2, 0)/*for side effect*/
 (#small, real):real             mulsr($1, $2)
 (small, real):mp                mulsr($1, $2)
 (real, small):mp                mulrs($1, $2)
 (real, real):real               mulrr($1, $2)
 (mp, mp):mp                     mpmul($1, $2)
 (gen, small):gen                gmulgs($1, $2)
 (small, gen):gen                gmulsg($1, $2)
 (vecsmall, vecsmall):vecsmall   perm_mul($1, $2)
 (gen, gen):gen                  gmul($1, $2)

 (usmall,Fp):Fp                  Fp_mulu($2, $1, p)
 (small,Fp):Fp                   Fp_muls($2, $1, p)
 (Fp, usmall):Fp                 Fp_mulu($1, $2, p)
 (Fp, small):Fp                  Fp_muls($1, $2, p)
 (usmall,FpX):FpX                FpX_mulu($2, $1, p)
 (FpX, usmall):FpX               FpX_mulu($1, $2, p)
 (Fp, FpX):FpX                   FpX_Fp_mul($2, $1, p)
 (FpX, Fp):FpX                   FpX_Fp_mul($1, $2, p)
 (FpX, FpX):FpX                  FpX_mul($1, $2, p)

 (usmall,Fq):Fq                  Fq_mulu($2, $1, T, p)
 (Fq, usmall):Fq                 Fq_mulu($1, $2, T, p)
 (Fq,Fp):Fq                      Fq_Fp_mul($1, $2, T, p)
 (Fp,Fq):Fq                      Fq_Fp_mul($2, $1, T, p)
 (usmall,FqX):FqX                FqX_mulu($2, $1, T, p)
 (FqX, usmall):FqX               FqX_mulu($1, $2, T, p)
 (FqX,Fp):FqX                    FqX_Fp_mul($1, $2, T, p)
 (Fp,FqX):FqX                    FqX_Fp_mul($2, $1, T, p)
 (Fq, FqX):FqX                   FqX_Fq_mul($2, $1, T, p)
 (FqX, Fq):FqX                   FqX_Fq_mul($1, $2, T, p)
 (FqX, FqX):FqX                  FqX_mul($1, $2, T, p)
