static double autocorrelationOfAudioSamples(short[] samples) { ret autocorrelationOfAudioSamples(samples, 0, l(samples)); } static double autocorrelationOfAudioSamples(short[] samples, int start, int end) { int n = end-start; double sum = 0; for j to n: { double correlation = 0; for i to n: correlation += sixteenBitAudioSampleToDouble(samples[start+i]) * sixteenBitAudioSampleToDouble(samples[start+mod(i - j, n)]); sum += correlation; } ret doubleRatio(sum, n); } static double autocorrelationOfAudioSamples(short[] samples, IntRange r) { ret autocorrelationOfAudioSamples(samples, r.start, r.end); }