polynomialRing.h

Go to the documentation of this file.
00001 
00002 
00003 /*
00004 class expIterator
00005 {
00006         short degree_m;
00007         short currDegree_m;
00008         pair<short>     xyexp;
00009         
00010         expIterator(polynomDegree)
00011         
00012         bool end()
00013 
00014         
00015         bool next()
00016         {
00017                 if (yexp<currDegree)
00018         {
00019                 yexp++;
00020                 xexp--;
00021         }
00022         else 
00023         {
00024                 currDegree++;
00025                 if (currDegree>polynomialDegree)
00026                         return false;
00027                 else
00028                 {
00029                         xexp=currDegree;
00030                         yexp=0;
00031                 }
00032         }
00033         }
00034 
00035 };*/
00036 
00037 
00041 template<class TPolynomXY, class TRing>
00042 class PolynomialRing
00043 {
00044         
00045 public :
00046 
00047         typedef         TPolynomXY              PolynomXY;
00048 
00049         typedef         TRing           RingType;
00050 
00051         
00052         const RingType &        ring_ref_m;
00053         
00054 
00055         PolynomialRing(const RingType & ring);
00056 
00060                 TPolynomXY              addInv          (const TPolynomXY  & polynom) const;
00061         
00062                 TPolynomXY*             addInvReturnPtr (const TPolynomXY  & polynom) const;
00063                 
00064                 void                    addInvInPlace   (       TPolynomXY & polynom) const;
00065 
00071                 TPolynomXY              add(            const TPolynomXY & polynom1,
00072                                                                         const TPolynomXY & polynom2 ) const;
00073         
00074                 TPolynomXY*     addReturnPtr(   const TPolynomXY & polynom1,
00075                                                                         const TPolynomXY & polynom2     ) const;
00076         
00077                 inline void                     addInPlace(             TPolynomXY & polynom1,
00078                                                                         const   TPolynomXY & polynom2) const;
00084                 TPolynomXY              scalarMultiply( const typename TPolynomXY::CoefficientType      scalar,
00085                                                                 const TPolynomXY                                & polynom                       ) const;
00086                 
00087                 inline void             scalarMultiplyInPlace(const     typename TPolynomXY::CoefficientType     scalar,
00088                                                                         TPolynomXY                                      & polynom               ) const;
00089         
00090                 TPolynomXY*             scalarMultiplyRetPtr(   const   typename TPolynomXY::CoefficientType    scalar,
00091                                                                         const TPolynomXY                                        & polynom       ) const;
00097                 //TPolynomXY    convert(        const typename TPolynomXY pxy ) const ;
00098 
00099                 template <class TPolynomXY_Type>
00100                 void    convertInPlace( TPolynomXY_Type & pxy) const ;
00101 
00102                 
00103                 template <class TPolynomXY_SRC_Type, class TPolynomXY_DEST_Type>
00104                 static void      copyPolynomWithGivenEpsPrecision(const TPolynomXY_SRC_Type  & srcPol,
00105                                                                  TPolynomXY_DEST_Type   &        destPol, int epsPrecision);
00106 
00109 };
00110 
00111 
00112 #include "polynomialRing.cpp"
Generated on Tue Nov 23 13:10:52 2010 for centerfocus by  doxygen 1.6.3