Convey static array sizes with a constant instead of manual immediate values.
Good work. You say "log scale" while it is quadratic. wouldn't
for (i=NUM_FACTORS-1,t=1.0;i>0;i--, t = t/2.5) factors[i] = t;
work better? (I'm away, I remember seeing factors 0.02 and 0.05 next to each other hence the 2.5 )