1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
//
// GENERATED FILE
//
use super::*;
use crate::SpiceContext;
use f2rust_std::*;
/// Minimum element of array, integer
///
/// Locate the minimum element of an integer array.
///
/// # Brief I/O
///
/// ```text
/// VARIABLE I/O DESCRIPTION
/// -------- --- -------------------------------------------------
/// ARRAY I Array.
/// NDIM I Number of elements in ARRAY.
/// MINVAL O Minimum value in ARRAY.
/// LOC O Location of MINVAL in ARRAY.
/// ```
///
/// # Detailed Input
///
/// ```text
/// ARRAY is an arbitrary array.
///
/// NDIM is the number of elements in ARRAY.
/// ```
///
/// # Detailed Output
///
/// ```text
/// MINVAL is the value in array that is less than or equal
/// to all other values in the array. If the array
/// contains more than one element with this value,
/// the first one is returned.
///
/// LOC is the location of the minimum element. That is,
/// MINVAL contains element ARRAY(LOC).
/// ```
///
/// # Exceptions
///
/// ```text
/// Error free.
///
/// 1) If the array is empty (NDIM is less than one), LOC is zero,
/// and MINVAL is not changed.
/// ```
///
/// # Examples
///
/// ```text
/// Let array A contain the following elements.
///
/// A(1) = 16
/// A(2) = 4
/// A(3) = 32
/// A(4) = 64
/// A(5) = 2
/// A(6) = 8
///
/// Then following the call
///
/// CALL MINAI ( A, 6, MINVAL, LOC )
///
/// the values of MINVAL and LOC are 2 and 5 respectively.
/// ```
///
/// # Author and Institution
///
/// ```text
/// J. Diaz del Rio (ODC Space)
/// W.L. Taber (JPL)
/// I.M. Underwood (JPL)
/// ```
///
/// # Version
///
/// ```text
/// - SPICELIB Version 1.1.0, 14-APR-2021 (JDR)
///
/// Added IMPLICIT NONE statement.
///
/// Edited the header to comply with NAIF standard. Removed
/// unnecessary $Revisions section.
///
/// - 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 (IMU)
/// ```
pub fn minai(array: &[i32], ndim: i32, minval: &mut i32, loc: &mut i32) {
MINAI(array, ndim, minval, loc);
}
//$Procedure MINAI ( Minimum element of array, integer )
pub fn MINAI(ARRAY: &[i32], NDIM: i32, MINVAL: &mut i32, LOC: &mut i32) {
let ARRAY = DummyArray::new(ARRAY, 1..);
//
// Local variables
//
if (NDIM <= 0) {
*LOC = 0;
return;
}
*MINVAL = ARRAY[1];
*LOC = 1;
for I in 2..=NDIM {
if (ARRAY[I] < *MINVAL) {
*MINVAL = ARRAY[I];
*LOC = I;
}
}
}