home *** CD-ROM | disk | FTP | other *** search
- // ret.terms[i]=complex(0.0,0.0);
- //
- // C++ Routines to manipulate Taylor series for solving a differential
- // equation.
- //
- // By Dennis J. Darland
- // 4/3/91
- // Public Domain
- // Version 1.6
- // Many enhancements expected.
- // PROVIDED WITH NO WARRANTY.
- //
- #include "ats.h"
- complex radius_cp(t_s & y,complex & order)
- {
- register int m;
- complex rm0,rm1,rm2,rm3,rm4,rcs,c;
- complex t1,t2,t3,t4;
-
- m = y.last_term - 1;
- rm0 = y.terms[m]/y.terms[m-1];
- cout << "rm0 = " << rm0 << "\n";
- rm1 = y.terms[m-1]/y.terms[m-2];
- cout << "rm1 = " << rm1 << "\n";
- rm2 = y.terms[m-2]/y.terms[m-3];
- cout << "rm2 = " << rm2 << "\n";
- rm3 = y.terms[m-3]/y.terms[m-4];
- cout << "rm3 = " << rm3 << "\n";
- rm4 = y.terms[m-4]/y.terms[m-5];
- cout << "rm4 = " << rm4 << "\n";
- t1 = complex(12.0,0.0)*rm2*rm1*rm1*rm4;
- t1 = t1 -complex(6.0,0.0)*rm3*rm3*rm2*rm4;
- t1 = t1 -complex(10.0,0.0)*rm1*rm1*rm2*rm3;
- t1 = t1 +complex(8.0,0.0)*rm2*rm2*rm3*rm4;
- t1 = t1 +complex(10.0,0.0)*rm2*rm2*rm1*rm3;
- t1 = t1 +complex(18.0,0.0)*rm1*rm3*rm3*rm4;
- t1 = t1 +complex(25.0,0.0)*complex(double(m),0.0)*rm1*rm3*rm2*rm4;
- t1 = t1 -complex(5.0,0.0)*complex(double(m),0.0)*rm0*rm2*rm1*rm3;
- t1 = t1 +complex(12.0,0.0)*complex(double(m),0.0)*rm1*rm1*rm2*rm3;
- t1 = t1 -complex(7.0,0.0)*complex(double(m),0.0)*rm2*rm2*rm1*rm3;
- t1 = t1 -complex(32.0,0.0)*rm2*rm1*rm3*rm4;
- t1 = t1 -complex(8.0,0.0)*complex(double(m),0.0)*rm2*rm2*rm3*rm4;
- t1 = t1 +complex(5.0,0.0)*complex(double(m),0.0)*rm3*rm3*rm2*rm4;
- t1 = t1 -complex(12.0,0.0)*complex(double(m),0.0)*rm3*rm3*rm4*rm1;
- t1 = t1 -complex(15.0,0.0)*complex(double(m),0.0)*rm1*rm1*rm2*rm4;
- t1 = t1 +complex(8.0,0.0)*complex(double(m),0.0)*rm0*rm2*rm1*rm4;
- t1 = t1 -complex(3.0,0.0)*complex(double(m),0.0)*rm0*rm1*rm3*rm4;
- t1 = t1 +rm1*rm3*rm4*rm0*complex(double(m),0.0)*complex(double(m),0.0);
- t1 = t1 +rm2*rm1*rm3*rm0*complex(double(m),0.0)*complex(double(m),0.0);
- t1 = t1 -complex(2.0,0.0)*rm2*rm1*rm4*rm0*complex(double(m),0.0)*complex(double(m),0.0);
- t1 = t1 -complex(2.0,0.0)*rm1*rm1*rm2*rm3*complex(double(m),0.0)*complex(double(m),0.0);
- t1 = t1 +complex(3.0,0.0)*rm2*rm1*rm1*rm4*complex(double(m),0.0)*complex(double(m),0.0);
- t1 = t1 +rm2*rm2*rm1*rm3*complex(double(m),0.0)*complex(double(m),0.0);
- t1 = t1 -complex(5.0,0.0)*rm2*rm1*rm3*rm4*complex(double(m),0.0)*complex(double(m),0.0);
- t1 = t1 +complex(2.0,0.0)*rm1*rm3*rm3*rm4*complex(double(m),0.0)*complex(double(m),0.0);
- t1 = t1 +complex(2.0,0.0)*rm2*rm2*rm3*rm4*complex(double(m),0.0)*complex(double(m),0.0);
- t1 = t1 -rm3*rm3*rm2*rm4*complex(double(m),0.0)*complex(double(m),0.0);
- t2 = -complex(5.0,0.0)*complex(double(m),0.0)*rm1*rm3*rm2*rm4;
- t2 = t2 +complex(3.0,0.0)*complex(double(m),0.0)*rm1*rm1*rm2*rm4;
- t2 = t2 +complex(10.0,0.0)*rm2*rm1*rm3*rm4;
- t2 = t2 -complex(3.0,0.0)*rm2*rm1*rm1*rm4;
- t2 = t2 +complex(2.0,0.0)*complex(double(m),0.0)*rm2*rm2*rm3*rm4;
- t2 = t2 -complex(4.0,0.0)*rm2*rm2*rm3*rm4;
- t2 = t2 +complex(2.0,0.0)*complex(double(m),0.0)*rm3*rm3*rm4*rm1;
- t2 = t2 -complex(double(m),0.0)*rm3*rm3*rm2*rm4;
- t2 = t2 -complex(6.0,0.0)*rm1*rm3*rm3*rm4;
- t2 = t2 +complex(3.0,0.0)*rm3*rm3*rm2*rm4;
- t2 = t2 -complex(2.0,0.0)*complex(double(m),0.0)*rm0*rm2*rm1*rm4;
- t2 = t2 +complex(double(m),0.0)*rm0*rm1*rm3*rm4;
- t2 = t2 +complex(double(m),0.0)*rm0*rm2*rm1*rm3;
- t2 = t2 -complex(2.0,0.0)*complex(double(m),0.0)*rm1*rm1*rm2*rm3;
- t2 = t2 +complex(2.0,0.0)*rm1*rm1*rm2*rm3;
- t2 = t2 +complex(double(m),0.0)*rm2*rm2*rm1*rm3;
- t2 = t2 -complex(2.0,0.0)*rm2*rm2*rm1*rm3;
- order = -t1/(complex(2.0,0.0)*t2);
- t3 = rm3*rm4;
- t3 = t3 -complex(4.0,0.0)*rm2*rm4;
- t3 = t3 +rm2*rm1;
- t3 = t3 -complex(4.0,0.0)*rm1*rm3;
- t3 = t3 +complex(3.0,0.0)*rm1*rm4;
- t3 = t3 +complex(3.0,0.0)*rm2*rm3;
- t4 = -complex(5.0,0.0)*complex(double(m),0.0)*rm1*rm3*rm2*rm4;
- t4 = t4 +complex(3.0,0.0)*complex(double(m),0.0)*rm1*rm1*rm2*rm4;
- t4 = t4 +complex(10.0,0.0)*rm2*rm1*rm3*rm4;
- t4 = t4 -complex(3.0,0.0)*rm2*rm1*rm1*rm4;
- t4 = t4 +complex(2.0,0.0)*complex(double(m),0.0)*rm2*rm2*rm3*rm4;
- t4 = t4 -complex(4.0,0.0)*rm2*rm2*rm3*rm4;
- t4 = t4 +complex(2.0,0.0)*complex(double(m),0.0)*rm3*rm3*rm4*rm1;
- t4 = t4 -complex(double(m),0.0)*rm3*rm3*rm2*rm4;
- t4 = t4 -complex(6.0,0.0)*rm1*rm3*rm3*rm4;
- t4 = t4 +complex(3.0,0.0)*rm3*rm3*rm2*rm4;
- t4 = t4 -complex(2.0,0.0)*complex(double(m),0.0)*rm0*rm2*rm1*rm4;
- t4 = t4 +complex(double(m),0.0)*rm0*rm1*rm3*rm4;
- t4 = t4 +complex(double(m),0.0)*rm0*rm2*rm1*rm3;
- t4 = t4 -complex(2.0,0.0)*complex(double(m),0.0)*rm1*rm1*rm2*rm3;
- t4 = t4 +complex(2.0,0.0)*rm1*rm1*rm2*rm3;
- t4 = t4 +complex(double(m),0.0)*rm2*rm2*rm1*rm3;
- t4 = t4 -complex(2.0,0.0)*rm2*rm2*rm1*rm3;
- rcs = -t3/t4;
- c = my_sqrt(rcs)*y.h;
- return(c);
- }
- complex radius_xx(t_s & y,complex & order)
- {
- register int m;
- complex rm0,rm1,hdrc,rcs;
-
- m = y.last_term - 1;
- rm0 = y.terms[m]/y.terms[m-1];
- cout << "rm0 = " << rm0 << "\n";
- rm1 = y.terms[m-1]/y.terms[m-2];
- cout << "rm1 = " << rm1 << "\n";
- hdrc = complex(double(m),0.0)*rm0-complex(double(m-1),0.0)*rm1;
- cout << "hdrc = " << hdrc << "\n";
- rcs = y.h/hdrc;
- cout << "rcs = " << rcs << "\n";
- order = complex(double(m),0.0)*rm0*rcs/y.h-(complex(double(m-1),0.0));
- cout << "order = " << order << "\n";
- return(rcs);
- }
-