diff --git a/test.cpp b/test.cpp index 9c3cc0f..d491143 100644 --- a/test.cpp +++ b/test.cpp @@ -133,8 +133,8 @@ protected: } double rate(Mapping const &m, int max_order = -1) const { - const auto order = - (-1 == max_order) ? corpus.order() : static_cast(max_order); + const auto order = 1 + ((-1 == max_order) ? corpus.order() + : static_cast(max_order)); double score = 0.; char map[256]; m.create_map(&map[0]); @@ -143,14 +143,13 @@ protected: for (size_t i = 0, valid = 0; i < len; i++) { if (plain_text[i]) { valid++; - if (valid == (order + 1)) { - score += log(corpus.probability(&plain_text[i - valid], valid)); - } else if (valid > (order + 1)) { - score += log( - corpus.final_probability(&plain_text[i - order - 1], order + 1)); + if (valid == order) { + score += log(corpus.probability(&plain_text[i - order], order)); + } else if (valid > order) { + score += log(corpus.final_probability(&plain_text[i - order], order)); } } else { - if (valid && (valid <= order)) { + if (valid && (valid < order)) { score += log(corpus.probability(&plain_text[i - valid], valid)); } valid = 0;