1 #ifndef __GF256_POLY_H__
2 #define __GF256_POLY_H__
8 * Copyright 2010 ZXing authors All rights reserved.
10 * Licensed under the Apache License, Version 2.0 (the "License");
11 * you may not use this file except in compliance with the License.
12 * You may obtain a copy of the License at
14 * http://www.apache.org/licenses/LICENSE-2.0
16 * Unless required by applicable law or agreed to in writing, software
17 * distributed under the License is distributed on an "AS IS" BASIS,
18 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
19 * See the License for the specific language governing permissions and
20 * limitations under the License.
24 #include <zxing/common/Counted.h>
25 #include <zxing/common/Array.h>
30 class GF256Poly : public Counted {
33 ArrayRef<int> coefficients;
34 void fixCoefficients();
36 GF256Poly(GF256 &field, ArrayRef<int> c);
41 int getCoefficient(int degree);
42 int evaluateAt(int a);
43 Ref<GF256Poly> addOrSubtract(Ref<GF256Poly> other);
44 Ref<GF256Poly> multiply(Ref<GF256Poly> other);
45 Ref<GF256Poly> multiply(int scalar);
46 Ref<GF256Poly> multiplyByMonomial(int degree, int coefficient);
47 const char *description() const;
48 friend std::ostream& operator<<(std::ostream& out, const GF256Poly& poly);
53 #endif // __GF256_POLY_H__