Select a subgrid where the two indices are equal or differ by the offset, e.g. the diagonal affi for the matrix. The offset specifies sub- (offset<0) or super- (offset>0) diagonals.
Set a subgrid where the two indices are equal or differ by the offset, e.g. the diagonal affi for the matrix. The offset specifies sub- (offset<0) or super- (offset>0) diagonals. If grid is not supplied, a grid of one higher dimension than diagonal with default element
0is used.
Set the diagonal of the grid by calling the function on the indices. If value is non-nil, then set it to function-or-value, ignoring the indices.
The functions diagonal, (setf diagonal) (or set-diagonal)
get or set the part of the grid where two indices are equal or differ by
a constant to another grid; that is, either the diagonal or a sub- or super-diagonal.
The diagonal of a grid can be set to a fixed value or to a function of its
indices.
The diagonal is the collection of elements where there are two indices equal, or differ by a fixed amount. For a matrix (two dimensional grid), this would be for example:
ANTIK-USER> (grid::test-grid-double-float 'array '(3 4))
#2A((0.0 1.0 2.0 3.0) (10.0 11.0 12.0 13.0) (20.0 21.0 22.0 23.0))
ANTIK-USER> (diagonal @)
#(0.0 11.0 22.0)
The superdiagonal is accessible with the same function,
ANTIK-USER> (diagonal (grid::test-grid-double-float 'array '(3 4)) :offset 1)
#(1.0 12.0 23.0)
as is the subdiagonal,
ANTIK-USER> (diagonal (grid::test-grid-double-float 'array '(3 4)) :offset -1)
#(10.0 21.0)