Commit 6d6bbcb1 authored by Jacob Kegerreis's avatar Jacob Kegerreis
Browse files

Return the found index instead of using the pointer

parent 9a6f8a45
...@@ -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 ");
} }
......
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment