I have a simple example that sums over an array like:
static uint64_t ySumSimple(uint32_t* arr, uint32_t* to) {
uint64_t sum = 0;
while (arr < to) {
sum = sum + *arr;
++arr;
}
return sum;
}
and use it in main method like :
using namespace std;
int main(){
size_t size = 1000*1000;// len*loops;
uint32_t * arr= (uint32_t *) malloc(size * sizeof(uint32_t));// random values here
auto sum = ySumSimple(arr,arr+size);
cout <<" sum " << sum << endl;
}
This returns real sum (some big digit) if size = 1000*100 but with one million uints it returns 0. How can that be if the sum over one million uints can not overflow ulong, right?