51 #include "lm3g_model.h"
75 float32 lw, float32 wip, float32 uw)
77 int32 log_wip, log_uw, log_uniform_weight;
85 for (i = 0; i < base->
n_counts[0]; ++i) {
86 int32 prob1, bo_wt, n_used;
89 bo_wt = (int32)(lm3g->unigrams[i].
bo_wt1.l / base->
lw);
94 lm3g->unigrams[i].
bo_wt1.l = (int32)(bo_wt * lw);
95 if (strcmp(base->
word_str[i],
"<s>") == 0) {
97 lm3g->unigrams[i].
prob1.l = (int32)(prob1 * lw) + log_wip;
104 lm3g->unigrams[i].
prob1.l = (int32)(prob1 * lw) + log_wip;
108 for (i = 0; i < lm3g->
n_prob2; ++i) {
112 lm3g->
prob2[i].l = (int32)(prob2 * lw) + log_wip;
116 for (i = 0; i < lm3g->
n_bo_wt2; ++i) {
119 for (i = 0; i < lm3g->
n_prob3; i++) {
123 lm3g->
prob3[i].l = (int32)(prob3 * lw) + log_wip;
141 assert(!NGRAM_IS_CLASSWID(wid));
146 memset(lm3g->unigrams + base->
n_counts[0], 0,
161 lm3g->unigrams[wid].
prob1.l = score;
164 lm3g->unigrams[wid].
bo_wt1.l = 0;
165 lm3g->unigrams[wid].
bigrams = 0;
178 #define INITIAL_SORTED_ENTRIES MAX_UINT16
184 l->list[0].
val.l = INT_MIN;
185 l->list[0].
lower = 0;
188 l->size = INITIAL_SORTED_ENTRIES;
204 for (i = 0; i < l->
free; i++)
205 vals[i] = l->list[i].
val;
215 if (*val == l->list[i].
val.l)
217 if (*val < l->list[i].val.l) {
218 if (l->list[i].
lower == 0) {
220 if (l->
free >= l->size) {
221 int newsize = l->size + INITIAL_SORTED_ENTRIES;
223 memset(l->list + l->size,
230 i = l->list[i].
lower;
231 l->list[i].
val.l = *val;
235 i = l->list[i].
lower;
238 if (l->list[i].
higher == 0) {
240 if (l->
free >= l->size) {
241 int newsize = l->size + INITIAL_SORTED_ENTRIES;
243 memset(l->list + l->size,
251 l->list[i].
val.l = *val;