Overview Schemas Index

MATHEMATICAL_FUNCTIONS_SCHEMA (jsdai.SMathematical_functions_schema)


FUNCTION equal_cregion_pregion
          (crgn : cartesian_complex_number_region, prgn : polar_complex_number_region) : LOGICAL;

LOCAL
    arng, amin, xc, yc : REAL;
    aitv, xitv, yitv : real_interval;
    c_in : BOOLEAN;
  END_LOCAL;
  IF  NOT  EXISTS  (crgn) OR  NOT  EXISTS (prgn) THEN   RETURN  (FALSE);  END_IF;
  IF  max_exists(prgn.distance_constraint) THEN   RETURN  (FALSE);  END_IF;
  IF  real_min(prgn.distance_constraint) <> 0.0 THEN   RETURN  (FALSE);  END_IF;
  c_in := min_included(prgn.distance_constraint);
  aitv := prgn.direction_constraint;
  amin := aitv.min;
  arng := aitv.max - amin;
  xc := prgn.centre.real_part;
  yc := prgn.centre.imag_part;
  xitv := crgn.real_constraint;
  yitv := crgn.imag_constraint;
  IF  arng = 0.5*PI THEN
    IF  amin = 0.0 THEN   -- quadrant TO  upper right
      RETURN  (NOT max_exists(xitv) AND  NOT  max_exists(yitv) AND  min_exists(xitv)
        AND  min_exists(yitv) AND  (real_min(xitv) = xc) AND  (real_min(yitv) = yc)
        AND  ((c_in AND  min_included(aitv) AND  max_included(aitv)
              AND  min_included(xitv) AND  min_included(yitv))
          OR  (NOT c_in AND  NOT  min_included(aitv) AND  max_included(aitv)
              AND  min_included(xitv) AND  NOT  min_included(yitv))
          OR  (NOT c_in AND  min_included(aitv) AND  NOT  max_included(aitv)
              AND  NOT  min_included(xitv) AND  min_included(yitv))
          OR  (NOT c_in AND  NOT  min_included(aitv) AND  NOT  max_included(aitv)
              AND  NOT  min_included(xitv) AND  NOT  min_included(yitv))));
    END_IF;
    IF  amin = 0.5*PI THEN   -- quadrant TO  upper left
      RETURN  (max_exists(xitv) AND  NOT  max_exists(yitv) AND  NOT  min_exists(xitv)
        AND  min_exists(yitv) AND  (real_max(xitv) = xc) AND  (real_min(yitv) = yc)
        AND  ((c_in AND  min_included(aitv) AND  max_included(aitv)
              AND  max_included(xitv) AND  min_included(yitv))
          OR  (NOT c_in AND  NOT  min_included(aitv) AND  max_included(aitv)
              AND  max_included(xitv) AND  NOT  min_included(yitv))
          OR  (NOT c_in AND  min_included(aitv) AND  NOT  max_included(aitv)
              AND  NOT  max_included(xitv) AND  min_included(yitv))
          OR  (NOT c_in AND  NOT  min_included(aitv) AND  NOT  max_included(aitv)
              AND  NOT  max_included(xitv) AND  NOT  min_included(yitv))));
    END_IF;
    IF  amin = -PI THEN   -- quadrant TO  lower left
      RETURN  (max_exists(xitv) AND  max_exists(yitv) AND  NOT  min_exists(xitv)
        AND  NOT  min_exists(yitv) AND  (real_max(xitv) = xc) AND  (real_max(yitv) = yc)
        AND  ((c_in AND  min_included(aitv) AND  max_included(aitv)
              AND  max_included(xitv) AND  max_included(yitv))
          OR  (NOT c_in AND  NOT  min_included(aitv) AND  max_included(aitv)
              AND  max_included(xitv) AND  NOT  max_included(yitv))
          OR  (NOT c_in AND  min_included(aitv) AND  NOT  max_included(aitv)
              AND  NOT  max_included(xitv) AND  max_included(yitv))
          OR  (NOT c_in AND  NOT  min_included(aitv) AND  NOT  max_included(aitv)
              AND  NOT  max_included(xitv) AND  NOT  max_included(yitv))));
    END_IF;
    IF  amin = -0.5*PI THEN   -- quadrant TO lower right
      RETURN  (NOT max_exists(xitv) AND  max_exists(yitv) AND  min_exists(xitv)
        AND  NOT  min_exists(yitv) AND  (real_min(xitv) = xc) AND  (real_max(yitv) = yc)
        AND  ((c_in AND  min_included(aitv) AND  max_included(aitv)
              AND  min_included(xitv) AND  max_included(yitv))
          OR  (NOT c_in AND  NOT  min_included(aitv) AND  max_included(aitv)
              AND  min_included(xitv) AND  NOT  max_included(yitv))
          OR  (NOT c_in AND  min_included(aitv) AND  NOT  max_included(aitv)
              AND  NOT  min_included(xitv) AND  max_included(yitv))
          OR  (NOT c_in AND  NOT  min_included(aitv) AND  NOT  max_included(aitv)
              AND  NOT  min_included(xitv) AND  NOT  max_included(yitv))));
    END_IF;
  END_IF;
  IF  arng = PI THEN
    IF  amin = 0.0 THEN   -- upper half space
      RETURN  (NOT max_exists(xitv) AND  NOT  max_exists(yitv) AND  NOT  min_exists(xitv)
        AND  min_exists(yitv) AND  (real_min(yitv) = yc)
        AND  ((c_in AND  min_included(aitv) AND  max_included(aitv)
              AND  min_included(yitv))
          OR  (NOT c_in AND  NOT  min_included(aitv) AND  NOT  max_included(aitv)
              AND  NOT  min_included(yitv))));
    END_IF;
    IF  amin = 0.5*PI THEN   -- left half space
      RETURN  (max_exists(xitv) AND  NOT  max_exists(yitv) AND  NOT  min_exists(xitv)
        AND  NOT  min_exists(yitv) AND  (real_max(xitv) = xc)
        AND  ((c_in AND  min_included(aitv) AND  max_included(aitv)
              AND  max_included(xitv))
          OR  (NOT c_in AND  NOT  min_included(aitv) AND  NOT  max_included(aitv)
              AND  NOT  max_included(xitv))));
    END_IF;
    IF  amin = -PI THEN   -- lower half space
      RETURN  (NOT max_exists(xitv) AND  max_exists(yitv) AND  NOT  min_exists(xitv)
        AND  NOT  min_exists(yitv) AND  (real_max(yitv) = yc)
        AND  ((c_in AND  min_included(aitv) AND  max_included(aitv)
              AND  max_included(yitv))
          OR  (NOT c_in AND  NOT  min_included(aitv) AND  NOT  max_included(aitv)
              AND  NOT  max_included(yitv))));
    END_IF;
    IF amin = -0.5*PI THEN  -- right half space
      RETURN  (NOT max_exists(xitv) AND  NOT  max_exists(yitv) AND  min_exists(xitv)
        AND  NOT  min_exists(yitv) AND  (real_min(xitv) = xc)
        AND  ((c_in AND  min_included(aitv) AND  max_included(aitv)
              AND  min_included(xitv))
          OR (NOT c_in AND  NOT  min_included(aitv) AND  NOT  max_included(aitv)
              AND NOT min_included(xitv))));
    END_IF;
  END_IF;
  RETURN (FALSE);

END_FUNCTION; -- equal_cregion_pregion

public class FEqual_cregion_pregion
          public static Value run(SdaiContext _context, Value crgn, Value prgn)