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 ; 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)