Lines Matching refs:Weight
35 // vector in the direction defined by TYPE. Weight needs to be left
45 const vector<typename Arc::Weight> &potential,
47 typedef typename Arc::Weight Weight;
52 if (type == REWEIGHT_TO_FINAL && !(Weight::Properties() & kRightSemiring)) {
54 << "Weight to be right distributive: "
55 << Weight::Type();
60 if (type == REWEIGHT_TO_INITIAL && !(Weight::Properties() & kLeftSemiring)) {
62 << "Weight to be left distributive: "
63 << Weight::Type();
73 typename Arc::Weight weight = potential[state];
74 if (weight != Weight::Zero()) {
81 typename Arc::Weight nextweight = potential[arc.nextstate];
82 if (nextweight == Weight::Zero())
103 fst->SetFinal(state, Times(Weight::Zero(), fst->Final(state)));
106 typename Arc::Weight startweight = fst->Start() < potential.size() ?
107 potential[fst->Start()] : Weight::Zero();
108 if ((startweight != Weight::One()) && (startweight != Weight::Zero())) {
119 Divide(Weight::One(), startweight, DIVIDE_RIGHT),
126 fst->SetFinal(state, Times(Divide(Weight::One(), startweight,
131 Weight w = type == REWEIGHT_TO_INITIAL ? startweight :
132 Divide(Weight::One(), startweight, DIVIDE_RIGHT);