Not sure what exactly you mean.
If the algorithm you posted works, then the resulting arrays are the cofficients (real and imaginary) corresponding certain frequencies (starting from 0 frequency).
To find out what the actual frequency is for each coefficient (m), you also need to know number of samples you collected (N) and the sampling interval (T)..
then you can calculated the correspondin frequencies for each "bin".
f(m) = m / ((N/2)*T)
(At least this applies to the fft algorithm you posted, I think)
You can see that the units are 1/s.. that is Hz.
So, you need to choose you samplerate and number of samples you collect appropriately. This is the way you scale the resulting frequency analysis. No need to modify the algorithm itself.
Also note that your number of samples N, needs to be a power of two.. 128, 512, 1024, etc.
What is the frequency range you are interested to "analyse"?
EDIT:
Also notice what the author says about "bucket 0" in his example code: "
The first bucket cannot be used so in reality our result is 31 buckets."
I believe that the "bucket 0" is there and it is a bucket for frequencies 0 - 312.5Hz
The reason that he is not using that bucket is that this example program is for audio frequencies.. so he leaves out the "dc" bucket.
C:
// Perform the (forward) FFT calculation
// Note: the FFT result length is half of the input data length
// so if we put 64 samples in we get 32 buckets out. The first bucket
// cannot be used so in reality our result is 31 buckets.
//
// The maximum frequency we can measure is half of the sampling rate
// so if we sample at 20Khz our maximum is 10Khz (this is called the
// Nyquist frequency). So if we have 32 buckets divided over 10Khz,
// each bucket represents 312.5Khz of range, so our lowest bucket is
// (bucket 1) 312.5Hz - 625Hz and so on up to our 32nd bucket which
// is 9687.5Hz - 10,000Hz
// 1 : 312.5 - 625
// 2 : 625 - 937.5
//..
// 30 : 9375 - 9687.5
// 31 : 9687.5 - 10000