lstcld |
Table of contents
ProcedureLSTCLD ( Last closest double precision array element ) INTEGER FUNCTION LSTCLD ( X, N, ARRAY ) AbstractFind the index of the array element closest to a given number X in an array of non-decreasing numbers. Required_ReadingNone. KeywordsARRAY SEARCH DeclarationsIMPLICIT NONE DOUBLE PRECISION X INTEGER N DOUBLE PRECISION ARRAY ( * ) Brief_I/OVARIABLE I/O DESCRIPTION -------- --- -------------------------------------------------- X I Search value. N I Number of elements in ARRAY. ARRAY I Array to be searched. The function returns the index of the element of ARRAY whose value is closest to X. Detailed_InputX is the value to be compared with the elements of ARRAY. N is the number of elements in ARRAY. ARRAY is an array of double precision numbers such that ARRAY( I ) <= ARRAY( J ) for all I < J. Detailed_OutputLSTCLD is the index of the element of the non-decreasing sequence: {ARRAY(I) : 1 <= I <= N} that is closest to X. In other words, ARRAY( LSTCLD( X, N, ARRAY ) ) is the element of ARRAY whose value is closest to X. If X falls precisely on the midpoint of consecutive array elements, the index of the larger of the two values is returned. If X is closest to a value which appears more than once in the array (since the array is ordered, these elements would have to be consecutive), the highest index for that value will be returned. LSTCLD = I for some I in the range 1 to N, unless N is less than or equal to zero, in which case LSTCLD is zero. ParametersNone. ExceptionsError free. 1) If the value of N is non-positive, LSTCLD returns the value zero. FilesNone. ParticularsLSTCLD uses a binary search algorithm to locate the value closest to X in the non-decreasing sequence of double precision numbers represented by the elements of ARRAY. ExamplesSuppose ARRAY contains the following double precision elements: ARRAY: -1 0 1 1.5 1.5 2 3 9 9.5 100 index: 1 2 3 4 5 6 7 8 9 10 The following table shows the values of LSTCLD that would be returned for various values of X, and the corresponding closest array element values. X LSTCLD( X,10,ARRAY ) ARRAY( LSTCLD( X,10,ARRAY )) ----- -------------------- --------------------------- 0.12 2 0 -0.12 2 0 -2.0 1 -1 2.5 7 3 1.3 5 1.5 100.0 10 100 100.1 10 100 Restrictions1) If the sequence is not non-decreasing, the routine will run to completion but the index found will not mean anything. Literature_ReferencesNone. Author_and_InstitutionJ. Diaz del Rio (ODC Space) W.L. Taber (JPL) R.E. Thurman (JPL) VersionSPICELIB Version 1.1.0, 26-OCT-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, 07-SEP-1990 (RET) |
Fri Dec 31 18:36:32 2021