----------------------------------------
|context> => |context: matrix play>
supported-ops |x1> => |op: M>
M |x1> => 0.0|y1> + 4.0|y2> + 2.0|y3>
supported-ops |x2> => |op: M>
M |x2> => |y1> + 0.0|y2> + |y3>
supported-ops |x3> => |op: M>
M |x3> => |y1> + 2.0|y2> + 4.0|y3>
supported-ops |x4> => |op: M>
M |x4> => 0.0|y1> + 3.0|y2> + 4.0|y3>
----------------------------------------
exit sw -- this tells the load code to stop processing the .sw file.
OK. Just want to show that literal-ops are a way to represent sparse matrices.
Sparse in the sense that usually if entry == 0, we don't include it.
The above context dump represents this matrix (with the matrix having "M" as its label):
[ y1 ] [ 0 1 1 0 ] [ x1 ]
[ y2 ] = [ 4 0 2 3 ] [ x2 ]
[ y3 ] [ 2 1 4 4 ] [ x3 ]
[ x4 ]
Here is a quick demonstration:
sa: M (|x1> + |x2> + |x3> + |x4>) -- here the coeffs of x_i are just 1, but they can be anything.
2.000|y1> + 9.000|y2> + 11.000|y3>
y = M x