Overview Schemas Index

MATHEMATICAL_FUNCTIONS_SCHEMA (jsdai.SMathematical_functions_schema)


FUNCTION equal_maths_values
          (val1 : maths_value, val2 : maths_value) : LOGICAL;

FUNCTION mem_of_vs(val1, val2 : maths_value) : LOGICAL;
    IF  NOT  has_values_space(val2) THEN  RETURN  (UNKNOWN);  END_IF;
    IF  NOT  member_of(val1,values_space_of(val2)) THEN   RETURN  (FALSE);  END_IF;
    RETURN  (UNKNOWN);
  END_FUNCTION;  -- mem_of_vs
  LOCAL
    types1, types2 : SET OF  STRING;
    list1, list2 : LIST OF maths_value;
    cum : LOGICAL := TRUE;
  END_LOCAL;
  IF  NOT  EXISTS  (val1) OR  NOT  EXISTS (val2) THEN   RETURN  (FALSE);  END_IF;
  IF  val1 = val2 THEN   RETURN  (TRUE);  END_IF;
  types1 := stripped_typeof (val1);
  types2 := stripped_typeof (val2);
  IF  ('MATHS_ATOM' IN  types1) OR  ('COMPLEX_NUMBER_LITERAL' IN  types1) THEN
    IF  'MATHS_ATOM'             IN  types2 THEN   RETURN  (FALSE);  END_IF;
    IF  'COMPLEX_NUMBER_LITERAL' IN  types2 THEN   RETURN  (FALSE);  END_IF;
    IF  'LIST'                   IN  types2 THEN   RETURN  (FALSE);  END_IF;
    IF  'MATHS_SPACE'            IN  types2 THEN   RETURN  (FALSE);  END_IF;
    IF  'MATHS_FUNCTION'         IN  types2 THEN   RETURN  (FALSE);  END_IF;
    IF  'GENERIC_EXPRESSION' IN  types2 THEN   RETURN  (mem_of_vs(val1,val2)); END_IF;
    RETURN  (UNKNOWN);
  END_IF;
  IF  ('MATHS_ATOM' IN  types2) OR  ('COMPLEX_NUMBER_LITERAL' IN  types2) THEN
    RETURN  (equal_maths_values(val2,val1));
  END_IF;
  IF  'LIST' IN  types1 THEN
    IF  'LIST' IN  types2 THEN
      list1 := val1;
      list2 := val2;
      IF  SIZEOF  (list1) <> SIZEOF  (list2) THEN   RETURN  (FALSE);  END_IF;
      REPEAT i := 1 TO SIZEOF (list1);
        cum := cum AND  equal_maths_values (list1[i], list2[i]);
        IF  cum = FALSE THEN   RETURN  (FALSE);  END_IF;
      END_REPEAT;
      RETURN  (cum);
    END_IF;
    IF  'MATHS_SPACE'            IN  types2 THEN   RETURN  (FALSE);  END_IF;
    IF  'MATHS_FUNCTION'         IN  types2 THEN   RETURN  (FALSE);  END_IF;
    IF  'GENERIC_EXPRESSION' IN  types2 THEN   RETURN  (mem_of_vs(val1,val2)); END_IF;
    RETURN  (UNKNOWN);
  END_IF;
  IF  'LIST' IN  types2 THEN   RETURN  (equal_maths_values(val2,val1));  END_IF;
  IF  'MATHS_SPACE' IN  types1 THEN
    IF  'MATHS_SPACE' IN  types2 THEN
      RETURN  (equal_maths_spaces(val1,val2));
    END_IF;
    IF  'MATHS_FUNCTION'         IN  types2 THEN   RETURN  (FALSE);  END_IF;
    IF  'GENERIC_EXPRESSION' IN  types2 THEN   RETURN  (mem_of_vs(val1,val2)); END_IF;
    RETURN  (UNKNOWN);
  END_IF;
  IF  'MATHS_SPACE' IN  types2 THEN   RETURN  (equal_maths_values(val2,val1));  END_IF;
  IF  'MATHS_FUNCTION' IN  types1 THEN
    IF  'MATHS_FUNCTION' IN  types2 THEN
      RETURN  (equal_maths_functions(val1,val2));
    END_IF;
    IF  'GENERIC_EXPRESSION' IN  types2 THEN   RETURN  (mem_of_vs(val1,val2)); END_IF;
    RETURN  (UNKNOWN);
  END_IF;
  IF  'MATHS_FUNCTION' IN  types2 THEN  RETURN  (equal_maths_values(val2,val1));  END_IF;
  IF  ('GENERIC_EXPRESSION' IN  types1) AND ('GENERIC_EXPRESSION' IN types2) THEN
    IF  NOT  has_values_space(val1) OR NOT  has_values_space(val2) THEN
      RETURN  (UNKNOWN);
    END_IF;
    IF NOT compatible_spaces(values_space_of(val1),values_space_of(val2)) THEN
      RETURN  (FALSE);
    END_IF;
  END_IF;
  RETURN (UNKNOWN);

END_FUNCTION; -- equal_maths_values

public class FEqual_maths_values
          public static Value run(SdaiContext _context, Value val1, Value val2)