Rpoly.h
Go to the documentation of this file.
1 // rpoly_ak1.cpp - Program for calculating the roots of a polynomial of real coefficients.
2 // Written in Visual C++ 2005 Express Edition
3 // 14 July 2007
4 //
5 // The sub-routines listed below are translations of the FORTRAN routines included in RPOLY.FOR,
6 // posted off the NETLIB site as TOMS/493:
7 //
8 // http://www.netlib.org/toms/493
9 //
10 // TOMS/493 is based on the Jenkins-Traub algorithm.
11 //
12 // To distinguish the routines posted below from others, an _ak1 suffix has been appended to them.
13 //
14 // Following is a list of the major changes made in the course of translating the TOMS/493 routines
15 // to the C++ versions posted below:
16 // 1) All global variables have been eliminated.
17 // 2) The "FAIL" parameter passed into RPOLY.FOR has been eliminated.
18 // 3) RPOLY.FOR solves polynomials of degree up to 100, but does not explicitly state this limit.
19 // rpoly_ak1 explicitly states this limit; uses the macro name MAXDEGREE to specify this limit;
20 // and does a check to ensure that the user input variable Degree is not greater than MAXDEGREE
21 // (if it is, an error message is output and rpoly_ak1 terminates). If a user wishes to compute
22 // roots of polynomials of degree greater than MAXDEGREE, using a macro name like MAXDEGREE provides
23 // the simplest way of offering this capability.
24 // 4) All "GO TO" statements have been eliminated.
25 //
26 // A small main program is included also, to provide an example of how to use rpoly_ak1. In this
27 // example, data is input from a file to eliminate the need for a user to type data in via
28 // the console.
29 
30 #ifndef __RPOLY_H__
31 #define __RPOLY_H__
32 
33 #define MAXDEGREE 100
34 #define MDP1 MAXDEGREE+1
35 
36 void rpoly_ak1(double op[MDP1], int* Degree, double zeror[MAXDEGREE], double zeroi[MAXDEGREE]);
37 void Fxshfr_ak1(int L2, int* NZ, double sr, double v, double K[MDP1], int N, double p[MDP1], int NN, double qp[MDP1], double u, double* lzi, double* lzr, double* szi, double* szr);
38 void QuadSD_ak1(int NN, double u, double v, double p[MDP1], double q[MDP1], double* a, double* b);
39 int calcSC_ak1(int N, double a, double b, double* a1, double* a3, double* a7, double* c, double* d, double* e, double* f, double* g, double* h, double K[MDP1], double u, double v, double qk[MDP1]);
40 void nextK_ak1(int N, int tFlag, double a, double b, double a1, double* a3, double* a7, double K[MDP1], double qk[MDP1], double qp[MDP1]);
41 void newest_ak1(int tFlag, double* uu, double* vv, double a, double a1, double a3, double a7, double b, double c, double d, double f, double g, double h, double u, double v, double K[MDP1], int N, double p[MDP1]);
42 void QuadIT_ak1(int N, int* NZ, double uu, double vv, double* szr, double* szi, double* lzr, double* lzi, double qp[MDP1], int NN, double* a, double* b, double p[MDP1], double qk[MDP1], double* a1, double* a3, double* a7, double* c, double* d, double* e, double* f, double* g, double* h, double K[MDP1]);
43 void RealIT_ak1(int* iFlag, int* NZ, double* sss, int N, double p[MDP1], int NN, double qp[MDP1], double* szr, double* szi, double K[MDP1], double qk[MDP1]);
44 void Quad_ak1(double a, double b1, double c, double* sr, double* si, double* lr, double* li);
45 
46 #endif
#define MAXDEGREE
Definition: Rpoly.h:33
void Quad_ak1(double a, double b1, double c, double *sr, double *si, double *lr, double *li)
Definition: Rpoly.cpp:704
int calcSC_ak1(int N, double a, double b, double *a1, double *a3, double *a7, double *c, double *d, double *e, double *f, double *g, double *h, double K[MDP1], double u, double v, double qk[MDP1])
Definition: Rpoly.cpp:400
void RealIT_ak1(int *iFlag, int *NZ, double *sss, int N, double p[MDP1], int NN, double qp[MDP1], double *szr, double *szi, double K[MDP1], double qk[MDP1])
Definition: Rpoly.cpp:613
void QuadIT_ak1(int N, int *NZ, double uu, double vv, double *szr, double *szi, double *lzr, double *lzi, double qp[MDP1], int NN, double *a, double *b, double p[MDP1], double qk[MDP1], double *a1, double *a3, double *a7, double *c, double *d, double *e, double *f, double *g, double *h, double K[MDP1])
Definition: Rpoly.cpp:519
void QuadSD_ak1(int NN, double u, double v, double p[MDP1], double q[MDP1], double *a, double *b)
Definition: Rpoly.cpp:382
void rpoly_ak1(double op[MDP1], int *Degree, double zeror[MAXDEGREE], double zeroi[MAXDEGREE])
Definition: Rpoly.cpp:11
void nextK_ak1(int N, int tFlag, double a, double b, double a1, double *a3, double *a7, double K[MDP1], double qk[MDP1], double qp[MDP1])
Definition: Rpoly.cpp:441
#define MDP1
Definition: Rpoly.h:34
void Fxshfr_ak1(int L2, int *NZ, double sr, double v, double K[MDP1], int N, double p[MDP1], int NN, double qp[MDP1], double u, double *lzi, double *lzr, double *szi, double *szr)
Definition: Rpoly.cpp:236
void newest_ak1(int tFlag, double *uu, double *vv, double a, double a1, double a3, double a7, double b, double c, double d, double f, double g, double h, double u, double v, double K[MDP1], int N, double p[MDP1])
Definition: Rpoly.cpp:481


fiducial_pose
Author(s): Jim Vaughan
autogenerated on Thu Dec 28 2017 04:06:58