Skip to main content

interi

Function interi 

Source
pub fn interi(
    ctx: &mut SpiceContext<'_>,
    a: &[i32],
    b: &[i32],
    c: &mut [i32],
) -> Result<()>
Expand description

Intersect two integer sets

Intersect two integer sets to form a third set.

§Brief I/O

 VARIABLE  I/O  DESCRIPTION
 --------  ---  --------------------------------------------------
 A          I   First input set.
 B          I   Second input set.
 C          O   Intersection of A and B.

§Detailed Input

 A        is a set.


 B        is a set, distinct from A.

§Detailed Output

 C        is a set, distinct from sets A and B, which
          contains the intersection of A and B (that is,
          all of the elements which are in A, AND in B).

          If the size (maximum cardinality) of C is smaller
          than the cardinality of the intersection of A and B,
          then only as many items as will fit in C are
          included, and an error is signaled.

§Exceptions

 1)  If the intersection of the two sets causes an excess of
     elements, the error SPICE(SETEXCESS) is signaled.

§Examples

 The INTERSECTION of two sets contains every element
 which is in the first set AND in the second set.

       {a,b}      intersect  {c,d}     =  {}
       {a,b,c}               {b,c,d}      {b,c}
       {a,b,c,d}             {}           {}
       {}                    {a,b,c,d}    {}
       {}                    {}           {}

 The following call

       CALL INTERC  ( PLANETS, ASTEROIDS, RESULT )

 places the intersection of the character sets PLANETS and
 ASTEROIDS into the character set RESULT.

 The output set must be distinct from both of the input sets.
 For example, the following calls are invalid.

       CALL INTERI  ( CURRENT,     NEW, CURRENT )
       CALL INTERI  (     NEW, CURRENT, CURRENT )

 In each of the examples above, whether or not the subroutine
 signals an error, the results will almost certainly be wrong.
 Nearly the same effect can be achieved, however, by placing the
 result into a temporary set, which is immediately copied back
 into one of the input sets, as shown below.

       CALL INTERI ( CURRENT, NEW,  TEMP )
       CALL COPYI  ( TEMP,    NEW        )

§Author and Institution

 N.J. Bachman       (JPL)
 C.A. Curzon        (JPL)
 J. Diaz del Rio    (ODC Space)
 W.L. Taber         (JPL)
 I.M. Underwood     (JPL)

§Version

-    SPICELIB Version 1.1.0, 20-AUG-2021 (JDR)

        Added IMPLICIT NONE statement.

        Edited the header to comply with NAIF standard.

-    SPICELIB Version 1.0.1, 10-MAR-1992 (WLT)

        Comment section for permuted index source lines was added
        following the header.

-    SPICELIB Version 1.0.0, 31-JAN-1990 (CAC) (WLT) (IMU) (NJB)

§Revisions

-    Beta Version 1.1.0, 06-JAN-1989 (NJB)

        Calling protocol of EXCESS changed. Call to SETMSG removed.