/* tplrt.c CCMATH mathematics library source code.
*
* Copyright (C) 2000 Daniel A. Atkinson All rights reserved.
* This code may be redistributed under the terms of the GNU library
* public license (LGPL). ( See the lgpl.license file for details.)
* ------------------------------------------------------------------------
*/
/*
Test: plrt polyc
To use an input data file call 'tplrt file'.
Input data files pol1.dat and pol2.dat
*/
#include "ccmath.h"
#include <math.h>
#define NN 10
/* complex structure is defined by */
/* struct complex {double re,im;}; */
int n=7;
double cof[]={ 10., -4., 7., 8., -3., 7., -2., 1.};
void main(int na,char **av)
{ struct complex py,root[NN];
double ra,rb,s; int i,ns;
FILE *fp;
if(na==2){
fp=fopen(*++av,"r");
for(n=0; fscanf(fp,"%lf",cof+n)!=EOF ;++n);
}
printf(" Test of Polynomial Root Program\n");
printf(" polynomial degree = %d\n",n);
printf(" coefficients:\n");
for(i=n; i>=0 ;) printf(" %8.4f\n",cof[i--]);
ra=1.; rb=2.;
ns=plrt(cof,n,root,ra,rb);
printf(" return status = %d\n",ns);
printf(" roots and residuals\n");
for(i=0; i<n ;++i){ py=polyc(root[i],cof,n);
s=sqrt(py.re*py.re+py.im*py.im);
printf(" %d %10.6f %10.6f %9.3e\n",i,root[i].re,root[i].im,s);
}
}
/* Test output
Test of Polynomial Root Program
polynomial degree = 7
coefficients:
1.0000
-2.0000
7.0000
-3.0000
8.0000
7.0000
-4.0000
10.0000
return status = 0
roots and residuals
0 -1.000000 0.000000 0.000e+00
1 0.000000 -1.414214 5.447e-15
2 0.000000 1.414214 5.447e-15
3 0.500000 -0.866025 2.031e-15
4 0.500000 0.866025 2.031e-15
5 1.000000 -2.000000 0.000e+00
6 1.000000 2.000000 0.000e+00
*/
syntax highlighted by Code2HTML, v. 0.9.1