From jfurman-dsl@sbcglobal.net Sun Apr 27 03:17:41 2008 Date: Sun, 27 Apr 2008 03:14:00 -0700 From: Jeffrey Furman To: jeff.furman@gmail.com Subject: smplot.C smplot.C [ Part 2: "Attached Text" ] /* generate smith chart data to plot */ #define gcc 0 #if gcc #include #include #else #include "..\..\include\math.h" #include "..\..\include\stdio.h" #endif #define p 20 #define f1 (3e6) #define f2 f1 #define fr (1.02) #define BASE 2.0 #define NUMBER_OF_LOOPS 5 #define plot 1 #define sgn(x) ((x == 0)? 1 :((x > 0)?1 :-1))) #define twopi (2*3.1415926535) #define DELTAT 0.01 /* double r_list[] = {0.1,0.2,0.3,0.4,0.5,0.6,0.7,0.8,0.9, 1.0,1.2,1.4,1.6,1.8, 2.0,2.5,3.0,4.0,5.0,6.0,7.0,8.0,9.0, 10.0,15.0,20.0,50.0,}; */ double r_list[] = {0.2,0.4,0.6,0.8, 1.0,1.5, 2.0,3.0,5.0,7.0,9.0, 10.0,15.0,20.0,50.0,}; #define rcount (sizeof(r_list)/sizeof(double)) raxis(r) float r; { float t; printf("\t \ta-%g\n",r); for(t = 0;t <= 2*r; t = t+DELTAT) printf("%.10g\t %.10g\n",t,0); for(t = 2*r;t >= 0; t = t-DELTAT) printf("%.10g\t %.10g\n",t,0); } rcircle(r) float r; { float t; printf("\t \tr-%g\n",r); for(t = 0;t <= 2*r; t = t+0.02) printf("%.10g\t %.10g\n",t,sqrt(t*((2.0*r)-t))); for(t = 2*r;t >= 0; t = t-DELTAT) printf("%.10g\t %.10g\n",t,-sqrt(t*((2.0*r)-t))); } xcircle(x) float x; { float t,tmax; printf("\t \tx-%g\n",x); /*tmax = 2.0/(x*x+1.0);*/ tmax = x*(1.0+((1.0-x*x)/(x*x+1.0))); for(t = 0;t <= tmax; t = t+DELTAT) printf("%.10g\t %.10g\n",sqrt(t*((2.0*x)-t)),t); for(t = tmax;t >= 0; t = t-DELTAT) printf("%.10g\t %.10g\n",sqrt(t*((2.0*x)-t)),t); for(t = 0;t <= tmax; t = t+DELTAT) printf("%.10g\t %.10g\n",sqrt(t*((2.0*x)-t)),-t); for(t = tmax;t >= 0; t = t-DELTAT) printf("%.10g\t %.10g\n",sqrt(t*((2.0*x)-t)),-t); } smithchart() { double ratio,val,g1,g2; int i,j; ratio = exp(log(BASE)/NUMBER_OF_LOOPS); printf("\t \tratio= %g\n",ratio); rcircle(1.0); raxis(1.0); for(i=0;i