| wnvald | 
| Table of contents Procedure
     WNVALD ( Validate a DP window )
     SUBROUTINE WNVALD ( SIZE, N, WINDOW )
Abstract
     Form a valid double precision window from the contents
     of a window array.
Required_Reading
     WINDOWS
Keywords
     WINDOWS
Declarations
     IMPLICIT NONE
     INTEGER               LBCELL
     PARAMETER           ( LBCELL = -5 )
     INTEGER               SIZE
     INTEGER               N
     DOUBLE PRECISION      WINDOW ( LBCELL:* )
Brief_I/O
     VARIABLE  I/O  DESCRIPTION
     --------  ---  --------------------------------------------------
     SIZE       I   Size of window.
     N          I   Original number of endpoints.
     WINDOW    I-O  Input, output window.
Detailed_Input
     SIZE     is the size of the window to be validated. This is the
              maximum number of endpoints that the cell used to
              implement the window is capable of holding at any one
              time.
     N        is the original number of endpoints in the input cell.
     WINDOW   on input is a (possibly uninitialized) cell array of
              maximum size SIZE containing N endpoints of (possibly
              unordered and non-disjoint) intervals.
Detailed_Output
     WINDOW   on output is a validated window, in which any overlapping
              input intervals have been merged and the resulting set of
              intervals is arranged in increasing order.
              WINDOW is ready for use with any of the window routines.
Parameters
     None.
Exceptions
     1)  If the original number of endpoints N is odd, the error
         SPICE(UNMATCHENDPTS) is signaled.
     2)  If the original number of endpoints of the window exceeds its
         size, the error SPICE(WINDOWTOOSMALL) is signaled.
     3)  If the left endpoint is greater than the right endpoint, the
         error SPICE(BADENDPOINTS) is signaled.
Files
     None.
Particulars
     This routine takes as input a cell array containing pairs of
     endpoints and validates it to form a window.
     On input, WINDOW is a cell of size SIZE containing N endpoints.
     During validation, the intervals are ordered, and overlapping
     intervals are merged. On output, the cardinality of WINDOW is
     the number of endpoints remaining, and it is ready for use with
     any of the window routines.
     Because validation is done in place, there is no chance of
     overflow.
     Validation is primarily useful for ordering and merging
     intervals read from input files or initialized in DATA
     statements.
Examples
     The numerical results shown for this example may differ across
     platforms. The results depend on the SPICE kernels used as input,
     the compiler and supporting libraries, and the machine specific
     arithmetic implementation.
     1) Define an array containing a set of unordered and possibly
        overlapping intervals, and validate the array as a SPICE
        window.
        Example code begins here.
              PROGRAM WNVALD_EX1
              IMPLICIT NONE
        C
        C     SPICELIB functions.
        C
              INTEGER               CARDD
              INTEGER               SIZED
        C
        C     Local parameters.
        C
              INTEGER               LBCELL
              PARAMETER           ( LBCELL = -5 )
              INTEGER               WINSIZ
              PARAMETER           ( WINSIZ = 20 )
              INTEGER               DATSIZ
              PARAMETER           ( DATSIZ = 16 )
        C
        C     Local variables
        C
              DOUBLE PRECISION      WINDOW  ( LBCELL : WINSIZ )
              DOUBLE PRECISION      WINDAT  ( DATSIZ )
              INTEGER               I
              DATA                  WINDAT  /  0,  0,
             .                                10, 12,
             .                                 2,  7,
             .                                13, 15,
             .                                 1,  5,
             .                                23, 29,  4*0 /
        C
        C     Insert the data into the SPICE cell array.
        C
              CALL MOVED ( WINDAT, WINSIZ, WINDOW(1) )
        C
        C     Validate the input WINDOW array as a SPICE window.
        C
              CALL WNVALD ( WINSIZ, DATSIZ, WINDOW )
              WRITE (*,*) 'Current intervals: ', CARDD ( WINDOW ) / 2
              WRITE (*,*) 'Maximum intervals: ', SIZED ( WINDOW ) / 2
              WRITE (*,*)
              WRITE (*,*) 'Intervals:'
              WRITE (*,*)
              DO I = 1, CARDD ( WINDOW ), 2
                 WRITE (*,*) WINDOW(I), WINDOW(I+1)
              END DO
              END
        When this program was executed on a Mac/Intel/gfortran/64-bit
        platform, the output was:
         Current intervals:            5
         Maximum intervals:           10
         Intervals:
           0.0000000000000000        0.0000000000000000
           1.0000000000000000        7.0000000000000000
           10.000000000000000        12.000000000000000
           13.000000000000000        15.000000000000000
           23.000000000000000        29.000000000000000
Restrictions
     None.
Literature_References
     None.
Author_and_Institution
     N.J. Bachman       (JPL)
     J. Diaz del Rio    (ODC Space)
     H.A. Neilan        (JPL)
     W.L. Taber         (JPL)
     I.M. Underwood     (JPL)
Version
    SPICELIB Version 1.2.0, 16-MAR-2021 (JDR)
        Changed argument name A to WINDOW for consistency with other
        routines.
        Added IMPLICIT NONE statement.
        Edited the header to comply to NAIF standard. Created complete
        code example from code fragment and added example's problem
        statement.
        Improved description of argument WINDOW in $Detailed_Output.
        Removed unnecessary $Revisions section.
    SPICELIB Version 1.1.1, 30-JUL-2002 (NJB)
        Fixed bugs in example program.
    SPICELIB Version 1.1.0, 14-AUG-1995 (HAN)
        Fixed a character string that continued over two lines.
        The "//" characters were missing. The Alpha/OpenVMS compiler
        issued a warning regarding this incorrect statement syntax.
    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 (WLT) (IMU) | 
Fri Dec 31 18:37:08 2021