The V O (
outer] command applies
a given binary operator to all possible pairs of elements from two
vectors, to produce a matrix. For example, V O * with ‘[a, b]’
and ‘[x, y, z]’ on the stack produces a multiplication table:
‘[[a x, a y, a z], [b x, b y, b z]]’. Element r,c of
the result matrix is obtained by applying the operator to element r
of the lefthand vector and element c of the righthand vector.
The V I (
inner] command computes
the generalized inner product of two vectors or matrices, given a
“multiplicative” operator and an “additive” operator. These can each
actually be any binary operators; if they are ‘*’ and ‘+’,
respectively, the result is a standard matrix multiplication. Element
r,c of the result matrix is obtained by mapping the
multiplicative operator across row r of the lefthand matrix and
column c of the righthand matrix, and then reducing with the additive
operator. Just as for the standard * command, this can also do a
vector-matrix or matrix-vector inner product, or a vector-vector
generalized dot product.
Since V I requires two operators, it prompts twice. In each case, you can use any of the usual methods for entering the operator. If you use $ twice to take both operator formulas from the stack, the first (multiplicative) operator is taken from the top of the stack and the second (additive) operator is taken from second-to-top.