Skip to content
Snippets Groups Projects
Commit 6d6bbcb1 authored by Jacob Kegerreis's avatar Jacob Kegerreis
Browse files

Return the found index instead of using the pointer

parent 9a6f8a45
No related branches found
No related tags found
1 merge request!547Add generic utility function to find a value in an array
......@@ -27,12 +27,11 @@
* @param x The value to find
* @param array The array to search
* @param n The length of the array
* @param index The found index
*
* Set -1 and n for x below and above the array edge values respectively.
* Return -1 and n for x below and above the array edge values respectively.
*/
INLINE static void find_value_in_monotonic_array(
const float x, const float *array, const int n, int *index) {
INLINE static int find_value_in_monotonic_array(
const float x, const float *array, const int n) {
int index_mid, index_low = 0, index_high = n;
......@@ -49,11 +48,11 @@ INLINE static void find_value_in_monotonic_array(
// Set index with the found index_low or an error value if outside the array
if (x < array[0])
*index = -1;
return -1;
else if (array[n-1] <= x)
*index = n;
return n;
else
*index = index_low;
return index_low;
}
#endif /* SWIFT_UTILITIES_H */
......@@ -37,28 +37,28 @@ int main() {
// Typical value
x = 42.42f;
find_value_in_monotonic_array(x, array, n, &index);
index = find_value_in_monotonic_array(x, array, n);
if (index != 42) {
error("Failed with a typical value ");
}
// Value on array element
x = 33.f;
find_value_in_monotonic_array(x, array, n, &index);
index = find_value_in_monotonic_array(x, array, n);
if (index != 33) {
error("Failed with an array element ");
}
// Value below array
x = -123.f;
find_value_in_monotonic_array(x, array, n, &index);
index = find_value_in_monotonic_array(x, array, n);
if (index != -1) {
error("Failed with a value below the array ");
}
// Value above array
x = 123.f;
find_value_in_monotonic_array(x, array, n, &index);
index = find_value_in_monotonic_array(x, array, n);
if (index != n) {
error("Failed with a value above the array ");
}
......@@ -66,7 +66,7 @@ int main() {
// Array slice with typical value
x = 9.81f;
n = 10;
find_value_in_monotonic_array(x, array + 5, n, &index);
index = find_value_in_monotonic_array(x, array + 5, n);
if (index != 4) {
error("Failed with an array slice ");
}
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment