# Matrix * Matrix -- matrix multiplication

• Operator: *
• Usage:
f * g
• Inputs:
• f,
• g,
• Outputs:

## Description

Multiplication of matrices corresponds to composition of maps, and when the target Q of g equals the source P of f, the product f*g is defined, its source is the source of g, and its target is the target of f.
 i1 : R = QQ[a,b,c,x,y,z]; i2 : f = matrix{{x},{y},{z}} o2 = | x | | y | | z | 3 1 o2 : Matrix R <--- R i3 : g = matrix{{a,b,c}} o3 = | a b c | 1 3 o3 : Matrix R <--- R i4 : f*g o4 = | ax bx cx | | ay by cy | | az bz cz | 3 3 o4 : Matrix R <--- R

The degree of f*g is the sum of the degrees of f and of g.

The product is also defined when P != Q, provided only that P and Q are free modules of the same rank. If the degrees of P differ from the corresponding degrees of Q by the same degree d, then the degree of f*g is adjusted by d so it will have a good chance to be homogeneous, and the target and source of f*g are as before.

 i5 : target (f*g) == target f o5 = true i6 : source (f*g) == source g o6 = true i7 : isHomogeneous (f*g) o7 = true i8 : degree(f*g) o8 = {1} o8 : List
Sometimes, it is useful to make this a map of degree zero. Use map(Matrix) for this purpose.
 i9 : h = map(f*g,Degree=>0) o9 = | ax bx cx | | ay by cy | | az bz cz | 3 3 o9 : Matrix R <--- R i10 : degree h o10 = {0} o10 : List i11 : degrees source h o11 = {{2}, {2}, {2}} o11 : List