Index Page reordl_c

A B C D E F G H I J K L M N O P Q R S T U V W X

Procedure Abstract Required_Reading Keywords Brief_I/O Detailed_Input | Detailed_Output Parameters Exceptions Files Particulars Examples | Restrictions Literature_References Author_and_Institution Version Index_Entries

#### Procedure

       void reordl_c ( ConstSpiceInt   * iorder,
                       SpiceInt          ndim,
                       SpiceBoolean    * array )

#### Abstract

        Re-order the elements of a logical (Boolean) array according to
        a given order vector.

#### Required_Reading

       None.

#### Keywords

        ARRAY,  SORT

#### Brief_I/O

       VARIABLE  I/O  DESCRIPTION
       --------  ---  --------------------------------------------------
       iorder     I   Order vector to be used to re-order array.
       ndim       I   Dimension of array.
       array     I/O  Array to be re-ordered.

#### Detailed_Input

       iorder      is the order vector to be used to re-order the input
                   array. The first element of iorder is the index of
                   the first item of the re-ordered array, and so on.

                   Note that the order imposed by reordl_c is not the
                   same order that would be imposed by a sorting
                   routine. In general, the order vector will have
                   been created (by one of the order routines) for
                   a related array, as illustrated in the example below.

                   The elements of iorder range from zero to ndim-1.

       ndim        is the number of elements in the input array.

       array       on input, is an array containing some number of
                   elements in unspecified order.

#### Detailed_Output

       array       on output, is the same array, with the elements
                   in re-ordered as specified by iorder.

#### Parameters

       None.

#### Exceptions

       1) If memory cannot be allocated to create a Fortran-style version of
          the input order vector, the error SPICE(MALLOCFAILED) is signaled.

       2) If memory cannot be allocated to create a type "logical" copy of the
          the input SpiceBoolean array, the error SPICE(MALLOCFAILED) is
          signaled.

       3) If ndim < 2, this routine executes a no-op.  This case is
          not an error.

#### Files

       None.

#### Particulars

       reordl_c uses a cyclical algorithm to re-order the elements of
       the array in place. After re-ordering, element iorder[0] of
       the input array is the first element of the output array,
       element iorder[1] is the input array is the second element of
       the output array, and so on.

       The order vector used by reordl_c is typically created for
       a related array by one of the order*_c routines, as shown in
       the example below.

#### Examples

       In the following example, the order*_c and reord*_c routines are
       used to sort four related arrays (containing the names,
       masses, integer ID codes, and visual magnitudes for a group
       of satellites). This is representative of the typical use of
       these routines.

          #include "SpiceUsr.h"
              .
              .
              .
          /.
          Sort the object arrays by name.
          ./

          orderc_c ( namlen, names, n,  iorder );
    ordvec
          reordc_c ( iorder, n, namlen, names  );
          reordd_c ( iorder, n,         masses );
          reordi_c ( iorder, n,         codes  );
          reordd_c ( iorder, n,         vmags  );

#### Restrictions

       None.

#### Literature_References

       None.

#### Author_and_Institution

       N.J. Bachman    (JPL)
       W.L. Taber      (JPL)
       I.M. Underwood  (JPL)

#### Version

       -CSPICE Version 1.0.0, 10-JUL-2002 (NJB) (WLT) (IMU)

#### Index_Entries

       reorder a logical array

#### Link to routine reordl_c source file reordl_c.c

    Wed Apr  5 17:54:41 2017