#include <stdio.h>

int main()
{
	float x, y, p = 0.0f, xm1 = 0.0f;
	float delay[16];
	float table[512];
	int freq[512];
	unsigned int i, pos = 0, base;
	float base_val = 1.0f;

	for (i=0; i<512; i++) {
		table[i] = 0.0f;
		freq[i] = 0;
	}

	for (i=0; i<4000; i++) {
		y = delay[pos];
		x = p * p * 0.3f + p * p * p * 0.73f - p*p*p*p*p * 0.1f;
		delay[pos] = x * 0.9f - xm1 * 0.1f;
		//delay[pos] = x;
		xm1 = delay[pos];
		if (i > 30) {
			table[(int)((p+1.0f) * 256.0f)] += y;
			freq[(int)((p+1.0f) * 256.0f)]++;
		}
		p += 0.03f;
		if (p > 1.0f) {
			p -= 2.0f;
		}
		pos = (pos + 1) & 15;
	}

	/* Find the table origin (correct for delay) */
	for (i=0; i<512; i++) {
		if (table[i] / (float)freq[i] < base_val) {
			base_val = table[i] / (float)freq[i];
			base = i;
		}
	}

	for (i=10; i<502; i++) {
		int idx = (i + base) % 512;
		if (freq[idx] > 0) {
			printf("%f\t%f\n", ((float)i-256)/256.0f, table[idx]/(float)freq[idx]);
		}
	}
}
