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