63 lines
1.5 KiB
C++
63 lines
1.5 KiB
C++
/*
|
|
* C++ class to implement a polynomial type and to allow
|
|
* arithmetic on polynomials whose elements are float numbers
|
|
*
|
|
* WARNING: This class has been cobbled together for a specific use with
|
|
* the MIRACL library. It is not complete, and may not work in other
|
|
* applications
|
|
*
|
|
* See Knuth The Art of Computer Programming Vol.2, Chapter 4.6
|
|
*/
|
|
|
|
#ifndef FPOLY_H
|
|
#define FPOLY_H
|
|
|
|
#include "floating.h"
|
|
|
|
class fterm
|
|
{
|
|
public:
|
|
Float an;
|
|
int n;
|
|
fterm *next;
|
|
};
|
|
|
|
class FPoly
|
|
{
|
|
fterm *start;
|
|
public:
|
|
FPoly() {start=NULL;}
|
|
FPoly(const FPoly&);
|
|
void clear();
|
|
fterm* addterm(Float,int,fterm *pos=NULL);
|
|
void multerm(Float,int);
|
|
Float coeff(int) const;
|
|
BOOL iszero() const;
|
|
|
|
FPoly& operator=(const FPoly&);
|
|
FPoly& operator+=(const FPoly&);
|
|
FPoly& operator-=(const FPoly&);
|
|
FPoly& operator*=(const Float&);
|
|
FPoly& divxn(FPoly&,int);
|
|
FPoly& mulxn(int);
|
|
|
|
friend int degree(const FPoly&);
|
|
friend FPoly twobytwo(const FPoly&,const FPoly&);
|
|
friend FPoly pow2bypow2(const FPoly&,const FPoly&,int);
|
|
friend FPoly powsof2(const FPoly&,int,const FPoly&,int);
|
|
friend FPoly special(const FPoly&,const FPoly&);
|
|
|
|
friend FPoly operator+(const FPoly&,const FPoly&);
|
|
friend FPoly operator-(const FPoly&,const FPoly&);
|
|
|
|
friend FPoly operator*(const FPoly&,const FPoly&);
|
|
friend FPoly operator*(const FPoly&,const Float&);
|
|
|
|
friend ostream& operator<<(ostream&,const FPoly&);
|
|
~FPoly();
|
|
};
|
|
|
|
|
|
#endif
|
|
|