昨日のプログラムの訂正

kuri.に指摘もらった部分を訂正してみた

for (count = 0; count != samples_to_output; count++) {
	for (i = 0; i < channels; i++) {
		if(bits<=8){
			if ((x = fgetc(f)) == EOF) goto loopend;
			x -= 128;
		} else {
			if (fread(s, 2, 1, f) != 1) goto loopend;
			x = (short)(s[0] + 256 * s[1]);
		}
		histo[x+32768]++;
		total++;
	}
}

として

double p = (double)histo[i] / total;

を計算しないと全体のエントロピーが出ない。

これでやってみると

all  : 12.3109

となった。

あと差分なんだけど・・・。

わかんね。