1 #ifdef HAVE_STDLIB_H
2 #include <stdlib.h>
3 #endif
4 #include <stdio.h>
5 #include "yagi.h"
6
7 /* The function lew_length, computes the length of a dipole to have the same
8 reactance as an old dipole */
9
new_length(double old_l,double old_dia,double lambda,double new_dia)10 double new_length(double old_l, double old_dia, double lambda, double new_dia)
11 {
12 double old_r, old_x, r, x,l;
13 self(old_dia/2.0, old_l, lambda, &old_r, &old_x);
14 /* printf("old r=%f old l=%f old x=%f\n",old_r,old_l,old_x); */
15 if(old_dia > new_dia)
16 l=0.50001*lambda;
17 else
18 l=old_l;
19 do{
20 l-=0.1*lambda;
21 self(new_dia/2.0, l, lambda, &r, &x);
22 }while(x>old_x);
23 l+=0.1*lambda;
24 do{
25 l-=0.01*lambda;
26 self(new_dia/2.0, l, lambda, &r, &x);
27 }while(x>old_x);
28 l+=0.01*lambda;
29 do{
30 l-=0.001*lambda;
31 self(new_dia/2.0, l, lambda, &r, &x);
32 }while(x>old_x);
33 l+=0.001*lambda;
34 do{
35 l-=0.0001*lambda;
36 self(new_dia/2.0, l, lambda, &r, &x);
37 }while(x>old_x);
38 l+=0.0001*lambda;
39 do{
40 l-=0.00001*lambda;
41 self(new_dia/2.0, l, lambda, &r, &x);
42 }while(x>old_x);
43 l+=0.00001*lambda;
44 do{
45 l-=0.00001*lambda;
46 self(new_dia/2.0, l, lambda, &r, &x);
47 }while(x>old_x);
48 /* printf("new r=%f new l=%f new x=%f\n",r,l,x); */
49 return(l);
50 }
51