When multiplying floats in a loop, round off errors can quickly become significant.
To test your results, I put this into MATLAB:
Code:
f = zeros(1,36);
for i = 1:36
f(i) = 2 ^ ((i - 1) / 12);
end
round(856 ./ f)
The output gave exactly the same numbers as your C implementation.