Code:
#include <stdio.h>
double max(double * start, size_t length);
int main(void)
{
double a[] = {0.5, 20.4, 158.1};
double b[][3] = {
{0.5, 20.4, 158.1},
{0.785, 1450.4, 1258.1},
{0.9, 254.68, 14.1}
};
double c[][3][3] = {
{
{0.5, 360.4, 4758.1},
{0.4755, 2047.4, 1548.1},
{0.5, 270.44, 158.145}
},
{
{47.5, 2470.4, 15478.1},
{470.5, 2440.4, 15847.1},
{0.75, 2470.47, 14758.1}
}
};
printf("max of a = %f\n", max(&a[0], 3));
printf("max of b = %f\n", max(&b[0][0], 9));
printf("max of c = %f\n", max(&c[0][0][0], 18));
return 0;
}
double max(double * start, size_t length)
{
double m = start[0];
size_t i = 0;
for(i = 0; i < length; i++)
{
if(start[i] > m)
m = start[i];
}
return m;
}
Ofcourse if it's DMA'd then you'd need a more robust solution