FUNCTION derive_definite_integral_domain

(* SCHEMA step_merged_ap_schema; *)
-- IN AP238 STEP-NC/AP242
FUNCTION derive_definite_integral_domain
      (igrl : definite_integral_function ) : tuple_space;
      FUNCTION process_product_space
         (spc : product_space;
          idx : INTEGER;
          prefix : INTEGER;
          vdomn : maths_space ) : product_space;
      LOCAL
         uspc : uniform_product_space;
         expnt : INTEGER;
         factors : LIST OF maths_space;
      END_LOCAL;
         IF schema_prefix + 'UNIFORM_PRODUCT_SPACE' IN TYPEOF(spc) THEN
            uspc := spc;
            expnt := uspc.exponent + prefix;
            IF idx <= uspc.exponent THEN
               expnt := expnt - 1;
            END_IF;
            IF expnt = 0 THEN
               RETURN (make_listed_product_space([]));
            ELSE
               RETURN (make_uniform_product_space(uspc.base, expnt));
            END_IF;
         ELSE
            factors := spc\listed_product_space.factors;
            IF idx <= SIZEOF(factors) THEN
               REMOVE( factors, idx );
            END_IF;
            IF prefix > 0 THEN
               INSERT( factors, vdomn, 0 );
               IF prefix > 1 THEN
                  INSERT( factors, vdomn, 0 );
               END_IF;
            END_IF;
            RETURN (make_listed_product_space(factors));
         END_IF;
      END_FUNCTION;
   LOCAL
      idomn : tuple_space := igrl.integrand.domain;
      types : SET OF STRING := TYPEOF(idomn);
      idx : INTEGER := igrl.variable_of_integration;
      tupled : BOOLEAN := bool((space_dimension(idomn) = 1) AND (schema_prefix + 'TUPLE_SPACE' IN types));
      prefix : INTEGER := 0;
      espc : extended_tuple_space;
      vdomn : maths_space;
   END_LOCAL;
      IF tupled THEN
         idomn := factor1(idomn);
         types := TYPEOF(idomn);
      END_IF;
      IF igrl.lower_limit_neg_infinity THEN
         prefix := prefix + 1;
      END_IF;
      IF igrl.upper_limit_pos_infinity THEN
         prefix := prefix + 1;
      END_IF;
      vdomn := factor_space(idomn, idx);
      IF schema_prefix + 'EXTENDED_TUPLE_SPACE' IN types THEN
         espc := idomn;
         idomn := make_extended_tuple_space(process_product_space(espc.base, idx, prefix, vdomn), espc.extender);
      ELSE
         idomn := process_product_space(idomn, idx, prefix, vdomn);
      END_IF;
      IF tupled THEN
         RETURN (one_tuples_of(idomn));
      ELSE
         RETURN (idomn);
      END_IF;
END_FUNCTION;

Referenced By

Defintion derive_definite_integral_domain is references by the following definitions:
DefinitionType
 derive_function_domain FUNCTION


[Top Level Definitions] [Exit]

Generated by STEP Tools® EXPRESS to HTML Converter
2024-09-06T14:00:33-04:00