SCHEMA Tabular_function_arm;
  
USE FROM Maths_function_arm -- Maths_function
  (Maths_function);
USE FROM Maths_value_arm -- Maths_value
  (Maths_value);
  
ENTITY Banded_matrix
  SUBTYPE OF (Table);
  default  :  Maths_value;
  below  :  INTEGER;
  above  :  INTEGER;
WHERE
   nondefault : -below <= above;
END_ENTITY;
  
ENTITY explicit_table
   SUBTYPE OF (Table);
END_ENTITY;
  
ENTITY Sparse_matrix
  SUBTYPE OF (Table);
  default    :  Maths_value;
  index      :  LIST [1,?] OF INTEGER;
  locations  :  LIST [1,?] OF INTEGER;
WHERE
  matrix : SIZEOF(SELF\table.shape) = 2;
  proper_index_length:
    (order AND (SIZEOF(index) =  self\table.shape[1] + 1))
     OR
    ((NOT order) AND (SIZEOF(index) = self\table.shape[2] + 1));
  proper_locations_length: SIZEOF(locations) = SIZEOF(terms);
END_ENTITY;
  
ENTITY Symmetric_matrix
   SUBTYPE OF (Table);
  skew  :  BOOLEAN;
WHERE
   square : self\table.shape[1] = self\table.shape[2];
END_ENTITY;
  
ENTITY Symmetric_banded_matrix
  SUBTYPE OF (Table);
  default  :  Maths_value;
  above  :  INTEGER;
  skew  :  BOOLEAN;
WHERE
   non_default : above > 0;
   square : self\table.shape[1] = self\table.shape[2];
END_ENTITY;
  
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;
  
ENTITY Triangular_matrix
  SUBTYPE OF (Table);
  default  :  Maths_value;
  lower  : BOOLEAN;
END_ENTITY;
  
END_SCHEMA;

Page last updated - 7 Sep 2000