42 memset(coefficients,0,
sizeof(
double)*(Degree+1));
43 for(
int i=0;i<=Degree && i<=Degree2;i++){coefficients[i]=P.coefficients[i];}
50 int d=Degree<Degree2?Degree:Degree2;
51 memset(coefficients,0,
sizeof(
double)*(Degree+1));
52 memcpy(coefficients,p.coefficients,
sizeof(
double)*(d+1));
59 for(
int i=0;i<Degree;i++){p.coefficients[i]=coefficients[i+1]*(i+1);}
67 for(
int i=0;i<=Degree;i++){p.coefficients[i+1]=coefficients[i]/(i+1);}
75 double v=coefficients[Degree];
76 for(
int d=Degree-1 ; d>=0 ; d-- ) v = v*t + coefficients[d];
86 for(
int i=0;i<=Degree;i++){
87 v+=coefficients[i]*(t2-t1)/(i+1);
88 if(t1!=-DBL_MAX && t1!=DBL_MAX){t1*=tMin;}
89 if(t2!=-DBL_MAX && t2!=DBL_MAX){t2*=tMax;}
95 for(
int i=0;i<=Degree;i++){
if(coefficients[i]!=p.coefficients[i]){
return 0;}}
100 for(
int i=0;i<=Degree;i++){
if(coefficients[i]==p.coefficients[i]){
return 0;}}
105 for(
int i=0;i<=Degree;i++){
if(coefficients[i]!=0){
return 0;}}
113 for(
int i=0;i<=Degree;i++){coefficients[i]+=p.coefficients[i]*s;}
118 for(
int i=0;i<=Degree;i++){coefficients[i]+=p.coefficients[i];}
123 for(
int i=0;i<=Degree;i++){coefficients[i]-=p.coefficients[i];}
129 for(
int i=0;i<=Degree;i++){q.coefficients[i]=(coefficients[i]+p.coefficients[i]);}
135 for(
int i=0;i<=Degree;i++) {q.coefficients[i]=coefficients[i]-p.coefficients[i];}
140 for(
int i=0;i<=Degree;i++){q.coefficients[i]=p.coefficients[i]*w;}
144 for(
int i=0;i<=Degree;i++){q.coefficients[i]=p1.coefficients[i]*w1+p2.coefficients[i]*w2;}
148 for(
int i=0;i<=Degree;i++){q.coefficients[i]=p1.coefficients[i]*w1+p2.coefficients[i];}
152 for(
int i=0;i<=Degree;i++){q.coefficients[i]=p1.coefficients[i]+p2.coefficients[i]*w2;}
157 for(
int i=0;i<=Degree;i++){q.coefficients[i]=p1.coefficients[i]-p2.coefficients[i];}
162 for(
int i=0;i<=Degree;i++){out.coefficients[i]=-out.coefficients[i];}
168 for(
int i=0;i<=Degree;i++){q.coefficients[i]=-q.coefficients[i];}
172 template<
int Degree2>
175 for(
int i=0;i<=Degree;i++){
for(
int j=0;j<=Degree2;j++){q.coefficients[i+j]+=coefficients[i]*p.coefficients[j];}}
194 for(
int i=0;i<=Degree;i++){coefficients[i]*=s;}
200 for(
int i=0;i<=Degree;i++){coefficients[i]/=s;}
207 q.coefficients[0]+=s;
214 q.coefficients[0]-=s;
221 for(
int i=0;i<=Degree;i++){q.coefficients[i]=coefficients[i]*s;}
228 for(
int i=0 ; i<=Degree ; i++ ) q.coefficients[i] = coefficients[i]/s;
236 for(
int i=0;i<=Degree;i++){
237 q.coefficients[i]*=s2;
246 for(
int i=0;i<=Degree;i++){
248 for(
int j=i;j>=0;j--){
249 q.coefficients[j]+=coefficients[i]*temp;
258 for(
int j=0;j<=Degree;j++){
259 printf(
"%6.4f x^%d ",coefficients[j],j);
260 if(j<Degree && coefficients[j+1]>=0){printf(
"+");}
272 rCount=Factor(coefficients[1],coefficients[0]-c,r,EPS);
275 rCount=Factor(coefficients[2],coefficients[1],coefficients[0]-c,r,EPS);
278 rCount=Factor(coefficients[3],coefficients[2],coefficients[1],coefficients[0]-c,r,EPS);
284 printf(
"Can't solve polynomial of degree: %d\n",Degree);
286 for(
int i=0;i<rCount;i++){
287 if(fabs(r[i][1])<=EPS){
288 roots.push_back(r[i][0]);
296 p.coefficients[0] = 1.;
299 template<
int Degree >
307 p.coefficients[0] += _p(1);