Polymetic  1.1
A c++ library for polynomial and matrix arithmetic, focused on applications in Kinematics.
 All Classes Namespaces Files Functions Variables Typedefs Friends Macros Pages
PolynomialMultiplicationInterface.hpp
Go to the documentation of this file.
1 // Copyright 2018 Dhruvesh Nikhilkumar Patel
2 //
3 // Licensed under the Apache License, Version 2.0 (the "License");
4 // you may not use this file except in compliance with the License.
5 // You may obtain a copy of the License at
6 //
7 // http://www.apache.org/licenses/LICENSE-2.0
8 //
9 // Unless required by applicable law or agreed to in writing, software
10 // distributed under the License is distributed on an "AS IS" BASIS,
11 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 // See the License for the specific language governing permissions and
13 // limitations under the License.
14 //
17 #ifndef _POLYNOMIALMULTIPLICATIONINTERFACE_HPP_
18 #define _POLYNOMIALMULTIPLICATIONINTERFACE_HPP_
19 #include <list>
20 #include <memory>
21 template <typename FieldT>
22 class Polynomial;
23 
24 
25 
26 
30 template <typename FieldT>
32 {
33  private:
34 
35  protected:
36  // Forward declaration
37  // methods that provide interface to the data of Polynomial class.
38  virtual std::list<FieldT>& getPolynomialCoefficients(Polynomial<FieldT>& p){
39  return p.m_coefs;
40  }
41  virtual const std::list<FieldT>& getPolynomialCoefficients(const Polynomial<FieldT>& p) {
42  return p.m_coefs;
43  }
44  public:
47  virtual Polynomial<FieldT> multiply(const Polynomial<FieldT>& p1, const Polynomial<FieldT>& p2)=0;
48 
50  static std::unique_ptr<PolynomialMultiplicationInterface<FieldT>> getAppropriateAlgorithm(const Polynomial<FieldT>& p1, const Polynomial<FieldT>& p2);
51 };
52 
53 #endif // _POLYNOMIALMULTIPLICATIONINTERFACE_HPP_
54 
virtual Polynomial< FieldT > multiply(const Polynomial< FieldT > &p1, const Polynomial< FieldT > &p2)=0
The method which should be overloaded by the derived class to implement its own multiplication algori...
virtual const std::list< FieldT > & getPolynomialCoefficients(const Polynomial< FieldT > &p)
std::list< FieldT > m_coefs
Definition: Polynomial.hpp:169
static std::unique_ptr< PolynomialMultiplicationInterface< FieldT > > getAppropriateAlgorithm(const Polynomial< FieldT > &p1, const Polynomial< FieldT > &p2)
Algo picker.
virtual std::list< FieldT > & getPolynomialCoefficients(Polynomial< FieldT > &p)
Polynomial and related classes.
Definition: Polynomial.hpp:29
Contains the definition for the abstract base class which will be used by different multiplication al...
Definition: Polynomial.hpp:40