I hope there is something obvious I’m missing:

I’m summing the point-wise product of two arrays, A and B of equal length

float subtotal = 0;

for(int i=0; i<length(A);i++){

subtotal += A_*B*;*_
_*}*_

*Whats happening is that subtotal ends up being zero (yet somehow not == 0), although every element of both A**and B**is greater or equal 0.*

*Let B be kept constant, then for some arrays A, the sum is as it should be, but for others, it shows this bizarre behavior where subtotal_i is as it should be up until a certain point j, after which subtotal_i>j is zero (but not == 0!) AND what’s more crazy is that a modified code including a subroutine which checks if subtotal_i+1 is ever less than subtotal_i always returns false!*

*So maybe I’m delusional and it’s just the way that the Serial.print(subtotal_i) is formatting the output when i try to debug it, except how is it possible that it prints “0.00” for subtotal_j+1 and some number n!=0 for subtotal_j without ever returning true for that subroutine? It’s not a formatting error - the problem is that when i try to calculate with subtotal later, it’s treated as zero when it clearly should not be zero. The same routine done in a sketch in processing works without problems. I chose not to include my source code because i think it would probably obfuscate the idea more than my rambling does.*

*My guess is something to do with precision. In particular, one array is essentially random numbers, but the other is a Gaussian distribution loaded into an array by evaluating a function of the form B**= exp(-sq(i-a)/b). However, B**= exp(-i) is one example of a function which doesn’t cause this strange behavior. Whats wrong with using the expression for a Gaussian curve???*