Lines Matching refs:Weight

32 // hold for the Weight class to be well-defined. It calls function object
34 template<class Weight, class WeightGenerator>
42 Weight w1 = weight_generator_();
43 Weight w2 = weight_generator_();
44 Weight w3 = weight_generator_();
46 VLOG(1) << "weight type = " << Weight::Type();
66 void TestSemiring(Weight w1, Weight w2, Weight w3) {
76 CHECK(Plus(w1, Weight::Zero()) == w1);
77 CHECK(Plus(Weight::Zero(), w1) == w1);
78 CHECK(Times(w1, Weight::One()) == w1);
79 CHECK(Times(Weight::One(), w1) == w1);
82 CHECK(!Weight::NoWeight().Member());
83 CHECK(!Plus(w1, Weight::NoWeight()).Member());
84 CHECK(!Plus(Weight::NoWeight(), w1).Member());
85 CHECK(!Times(w1, Weight::NoWeight()).Member());
86 CHECK(!Times(Weight::NoWeight(), w1).Member());
90 if (Weight::Properties() & kCommutative)
94 CHECK(Times(w1, Weight::Zero()) == Weight::Zero());
95 CHECK(Times(Weight::Zero(), w1) == Weight::Zero());
97 // Check Power(w, 0) is Weight::One()
98 CHECK(Power(w1, 0) == Weight::One());
107 if (Weight::Properties() & kLeftSemiring)
110 if (Weight::Properties() & kRightSemiring)
114 if (Weight::Properties() & kIdempotent)
117 if (Weight::Properties() & kPath)
121 CHECK(Weight::Properties() & (kLeftSemiring | kRightSemiring));
124 if (Weight::Properties() & kCommutative)
125 CHECK(Weight::Properties() & kSemiring);
129 void TestDivision(Weight w1, Weight w2) {
130 Weight p = Times(w1, w2);
132 if (Weight::Properties() & kLeftSemiring) {
133 Weight d = Divide(p, w1, DIVIDE_LEFT);
136 CHECK(!Divide(w1, Weight::NoWeight(), DIVIDE_LEFT).Member());
137 CHECK(!Divide(Weight::NoWeight(), w1, DIVIDE_LEFT).Member());
140 if (Weight::Properties() & kRightSemiring) {
141 Weight d = Divide(p, w2, DIVIDE_RIGHT);
144 CHECK(!Divide(w1, Weight::NoWeight(), DIVIDE_RIGHT).Member());
145 CHECK(!Divide(Weight::NoWeight(), w1, DIVIDE_RIGHT).Member());
148 if (Weight::Properties() & kCommutative) {
149 Weight d = Divide(p, w1, DIVIDE_RIGHT);
156 void TestReverse(Weight w1, Weight w2) {
157 typedef typename Weight::ReverseWeight ReverseWeight;
168 void TestEquality(Weight w1, Weight w2, Weight w3) {
181 void TestIO(Weight w) {
188 Weight v;
198 Weight v(Weight::One());
205 void TestCopy(Weight w) {
206 Weight x = w;
209 x = Weight(w);