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 @@ ...@@ -27,12 +27,11 @@
* @param x The value to find * @param x The value to find
* @param array The array to search * @param array The array to search
* @param n The length of the array * @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( INLINE static int find_value_in_monotonic_array(
const float x, const float *array, const int n, int *index) { const float x, const float *array, const int n) {
int index_mid, index_low = 0, index_high = n; int index_mid, index_low = 0, index_high = n;
...@@ -49,11 +48,11 @@ INLINE static void find_value_in_monotonic_array( ...@@ -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 // Set index with the found index_low or an error value if outside the array
if (x < array[0]) if (x < array[0])
*index = -1; return -1;
else if (array[n-1] <= x) else if (array[n-1] <= x)
*index = n; return n;
else else
*index = index_low; return index_low;
} }
#endif /* SWIFT_UTILITIES_H */ #endif /* SWIFT_UTILITIES_H */
...@@ -37,28 +37,28 @@ int main() { ...@@ -37,28 +37,28 @@ int main() {
// Typical value // Typical value
x = 42.42f; x = 42.42f;
find_value_in_monotonic_array(x, array, n, &index); index = find_value_in_monotonic_array(x, array, n);
if (index != 42) { if (index != 42) {
error("Failed with a typical value "); error("Failed with a typical value ");
} }
// Value on array element // Value on array element
x = 33.f; x = 33.f;
find_value_in_monotonic_array(x, array, n, &index); index = find_value_in_monotonic_array(x, array, n);
if (index != 33) { if (index != 33) {
error("Failed with an array element "); error("Failed with an array element ");
} }
// Value below array // Value below array
x = -123.f; x = -123.f;
find_value_in_monotonic_array(x, array, n, &index); index = find_value_in_monotonic_array(x, array, n);
if (index != -1) { if (index != -1) {
error("Failed with a value below the array "); error("Failed with a value below the array ");
} }
// Value above array // Value above array
x = 123.f; x = 123.f;
find_value_in_monotonic_array(x, array, n, &index); index = find_value_in_monotonic_array(x, array, n);
if (index != n) { if (index != n) {
error("Failed with a value above the array "); error("Failed with a value above the array ");
} }
...@@ -66,7 +66,7 @@ int main() { ...@@ -66,7 +66,7 @@ int main() {
// Array slice with typical value // Array slice with typical value
x = 9.81f; x = 9.81f;
n = 10; 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) { if (index != 4) {
error("Failed with an array slice "); 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