Overview Schemas Index

MATHEMATICAL_FUNCTIONS_SCHEMA (jsdai.SMathematical_functions_schema)


FUNCTION derive_function_range
          (func : maths_function) : tuple_space;

 LOCAL typenames : SET OF STRING := stripped_typeof ( func ) ; tspace : tuple_space := make_listed_product_space ( [ ] ) ; m , n : nonnegative_integer := 0 ; END_LOCAL ; IF  'finite_function' IN  typenames THEN  RETURN  ( derive_finite_function_range ( func \ finite_function . pairs ) ) ; END_IF  ; IF  'constant_function' IN  typenames THEN  RETURN  ( one_tuples_of ( make_finite_space ( [ func \ constant_function . sole_output ] ) ) ) ; END_IF  ; IF  'selector_function' IN  typenames THEN  tspace := func . domain ; IF  ( space_dimension ( tspace ) = 1 ) AND ( ( schema_prefix + 'tuple_space' ) IN  TYPEOF ( tspace ) ) THEN  tspace := factor1 ( tspace ) ; END_IF  ; RETURN  ( one_tuples_of ( factor_space ( tspace , func \ selector_function . selector ) ) ) ; END_IF  ; IF  'elementary_function' IN  typenames THEN  RETURN  ( derive_elementary_function_range ( func \ elementary_function . func_id ) ) ; END_IF  ; IF  'restriction_function' IN  typenames THEN  RETURN  ( one_tuples_of ( func \ restriction_function . operand ) ) ; END_IF  ; IF  'repackaging_function' IN  typenames THEN  tspace := func \ repackaging_function . operand . range ; IF  func \ repackaging_function . output_repack = ro_wrap_as_tuple THEN  tspace := one_tuples_of ( tspace ) ; END_IF  ; IF  func \ repackaging_function . output_repack = ro_unwrap_tuple THEN  tspace := factor1 ( tspace ) ; END_IF  ; IF  func \ repackaging_function . selected_output > 0 THEN  tspace := one_tuples_of ( factor_space ( tspace , func \ repackaging_function . selected_output ) ) ; END_IF  ; RETURN  ( tspace ) ; END_IF  ; IF  'reindexed_array_function' IN  typenames THEN  RETURN  ( func \ unary_generic_expression . operand \ maths_function . range ) ; END_IF  ; IF  'series_composed_function' IN  typenames THEN  RETURN  ( func \ series_composed_function . operands [ SIZEOF  ( func \ series_composed_function . operands ) ] . range ) ; END_IF  ; IF  'parallel_composed_function' IN  typenames THEN  RETURN  ( func \ parallel_composed_function . final_function . range ) ; END_IF  ; IF  'explicit_table_function' IN  typenames THEN  IF  'listed_real_data' IN  typenames THEN  RETURN  ( one_tuples_of ( the_reals ) ) ; END_IF  ; IF  'listed_integer_data' IN  typenames THEN  RETURN  ( one_tuples_of ( the_integers ) ) ; END_IF  ; IF  'listed_logical_data' IN  typenames THEN  RETURN  ( one_tuples_of ( the_logicals ) ) ; END_IF  ; IF  'listed_string_data' IN  typenames THEN  RETURN  ( one_tuples_of ( the_strings ) ) ; END_IF  ; IF  'listed_complex_number_data' IN  typenames THEN  RETURN  ( one_tuples_of ( the_complex_numbers ) ) ; END_IF  ; IF  'listed_data' IN  typenames THEN  RETURN  ( one_tuples_of ( func \ listed_data . value_range ) ) ; END_IF  ; IF  'externally_listed_data' IN  typenames THEN  RETURN  ( one_tuples_of ( func \ externally_listed_data . value_range ) ) ; END_IF  ; IF  'linearized_table_function' IN  typenames THEN  RETURN  ( func \ linearized_table_function . source . range ) ; END_IF  ; IF  'basic_sparse_matrix' IN  typenames THEN  RETURN  ( func \ basic_sparse_matrix . val . range ) ; END_IF  ; RETURN  ( ? ) ; END_IF  ; IF  'homogeneous_linear_function' IN  typenames THEN  RETURN  ( one_tuples_of ( make_uniform_product_space ( factor1 ( func \ homogeneous_linear_function . mat . range ) , func \ homogeneous_linear_function . mat \ explicit_table_function . shape [ 3 - func \ homogeneous_linear_function . sum_index ] ) ) ) ; END_IF  ; IF  'general_linear_function' IN  typenames THEN  RETURN  ( one_tuples_of ( make_uniform_product_space ( factor1 ( func \ general_linear_function . mat . range ) , func \ general_linear_function . mat \ explicit_table_function . shape [ 3 - func \ general_linear_function . sum_index ] ) ) ) ; END_IF  ; IF  'b_spline_basis' IN  typenames THEN  RETURN  ( one_tuples_of ( make_uniform_product_space ( the_reals , func \ b_spline_basis . num_basis ) ) ) ; END_IF  ; IF  'b_spline_function' IN  typenames THEN  tspace := factor1 ( func \ b_spline_function . coef . domain ) ; m := SIZEOF ( func \ b_spline_function . basis ) ; n := space_dimension ( tspace ) ; IF  m = n THEN  RETURN  ( one_tuples_of ( the_reals ) ) ; END_IF  ; IF  m = n - 1 THEN  RETURN  ( one_tuples_of ( make_uniform_product_space ( the_reals , factor_space ( tspace , n ) \ finite_integer_interval . size ) ) ) ; END_IF  ; tspace := extract_factors ( tspace , m + 1 , n ) ; RETURN  ( one_tuples_of ( make_function_space ( sc_equal , tspace , sc_subspace , number_superspace_of ( func \ b_spline_function . coef . range ) ) ) ) ; END_IF  ; IF  'rationalize_function' IN  typenames THEN  tspace := factor1 ( func \ rationalize_function . fun . range ) ; n := space_dimension ( tspace ) ; RETURN  ( one_tuples_of ( make_uniform_product_space ( number_superspace_of ( factor1 ( tspace ) ) , n - 1 ) ) ) ; END_IF  ; IF  'partial_derivative_function' IN  typenames THEN  RETURN  ( drop_numeric_constraints ( func \ partial_derivative_function . derivand . range ) ) ; END_IF  ; IF  'definite_integral_function' IN  typenames THEN  RETURN  ( drop_numeric_constraints ( func \ definite_integral_function . integrand . range ) ) ; END_IF  ; IF  'abstracted_expression_function' IN  typenames THEN  RETURN  ( one_tuples_of ( values_space_of ( func \ abstracted_expression_function . expr ) ) ) ; END_IF  ; IF  'expression_denoted_function' IN  typenames THEN  RETURN  ( values_space_of ( func \ expression_denoted_function . expr ) \ function_space . range_argument ) ; END_IF  ; IF 'application_defined_function' IN typenames THEN RETURN  ( func \ application_defined_function . explicit_range ) ; END_IF ; RETURN ( ? ) ; 

END_FUNCTION; -- derive_function_range

public class FDerive_function_range
          public static Value run(SdaiContext _context, Value func)