FUNCTION extremal_position_check
(* SCHEMA mathematical_functions_schema; *)
FUNCTION extremal_position_check(fun : linearized_table_function) : BOOLEAN;
LOCAL
source_domain : maths_space;
source_interval : finite_integer_interval;
index : INTEGER := 1;
base : INTEGER;
shape : LIST OF positive_integer;
ndim : positive_integer;
slo, shi : INTEGER;
sublo : LIST OF INTEGER := [];
subhi : LIST OF INTEGER := [];
END_LOCAL;
IF NOT EXISTS (fun) THEN RETURN (FALSE); END_IF;
source_domain := factor1 (fun.source.domain);
IF (schema_prefix + 'TUPLE_SPACE') IN TYPEOF (source_domain) THEN
source_domain := factor1 (source_domain);
END_IF;
IF NOT ((schema_prefix + 'FINITE_INTEGER_INTERVAL') IN TYPEOF (source_domain)) THEN
RETURN (FALSE);
END_IF;
source_interval := source_domain;
base := fun\explicit_table_function.index_base;
shape := fun\explicit_table_function.shape;
IF (schema_prefix + 'STANDARD_TABLE_FUNCTION') IN TYPEOF (fun) THEN
REPEAT j := 1 TO SIZEOF (shape);
index := index * shape[j];
END_REPEAT;
index := fun.first + index - 1;
RETURN (bool({source_interval.min <= index <= source_interval.max}));
END_IF;
IF (schema_prefix + 'REGULAR_TABLE_FUNCTION') IN TYPEOF (fun) THEN
ndim := SIZEOF (fun\explicit_table_function.shape);
REPEAT j:= 1 TO ndim;
slo := base;
shi := base + shape[j] - 1;
IF fun\regular_table_function.increments[j] >= 0 THEN
INSERT (sublo, slo, j-1);
INSERT (subhi, shi, j-1);
ELSE
INSERT (sublo, shi, j-1);
INSERT (subhi, slo, j-1);
END_IF;
END_REPEAT;
index := regular_indexing (sublo, base, shape,
fun\regular_table_function.increments, fun.first);
IF NOT ({source_interval.min <= index <= source_interval.max}) THEN
RETURN (FALSE);
END_IF;
index := regular_indexing (subhi, base, shape,
fun\regular_table_function.increments, fun.first);
IF NOT ({source_interval.min <= index <= source_interval.max}) THEN
RETURN (FALSE);
END_IF;
RETURN (TRUE);
END_IF;
RETURN (FALSE);
END_FUNCTION; -- extremal_position_check
Referenced By
Defintion extremal_position_check is references by the following definitions:
[Top Level Definitions] [Exit]Generated by STEP Tools® EXPRESS to HTML Converter
2012-03-27T17:13:59-04:00