A Table is a Maths_function that is a rectangular arrangement of mathematical values. The domain of the function is the subscript space of the table, and the range of the function contains all of the terms in the arrangement.
The terms in a Table can be defined by explicitly enumerating each of them, or by taking advantage of some a structure to the table such as symmetry.
EXPRESS specification:
*)
ENTITY table
SUPERTYPE OF (ONEOF (
Banded_matrix,
Explicit_table,
Sparse_matrix,
Symmetric_matrix,
Symmetric_banded_matrix,
Triangular_matrix))
SUBTYPE OF (Maths_function);
subscript_lobnd_zero : BOOLEAN;
shape : LIST [1, ?] OF INTEGER;
order : BOOLEAN;
terms : LIST [1,?] of Maths_value;
END_ENTITY;
(*
Attributes:
subscript_lobnd_zero: The flag that indicates whether the subscript ranges have a zero or one lower bound. The value .TRUE. indicates a zero lower bound and the value .FALSE. indicates a one lower bound.
shape: The sizes of the individual subscript ranges. The number of dimensions of the Table is indicated by the length of this list.
order: The order in which the terms are specified in attribute terms. This can be row by row (true) or column by column (false).
terms: The terms of the Table, as a one dimensional list ordered column by column or row by row, according to the attribute order. The way in which the terms of this list are interpreted depends upon the subtype of Table.