// check whether compressed file can be // decompressd to original one bool check(string fn, string cfn, int bs, int cbs) { var obits = read_bits(fn); var cbits = read_bits(cfn); var cbits_list = cbits.ToList(); var cbits_queue = new Queue <int>(cbits_list); var dar = new Ar(cbits_queue); // reset models for (var i = 0; i < N; i++) { m[i] = new Model(i); } for (var i = 0; i < bs; i++) { var n = predict(); var bit = dar.decode(n[0], n[1]); if (bit != obits[i]) { WriteLine($"decompression error at {i}-th bit"); WriteLine($"{obits[i]} was expected instead of {bit}"); return(false); } update(bit); } return(true); }