//NewGuide_State.java
//State of NewGuide
//Umberto Ravaioli, 1999 - Revision 2019
import java.awt.Dimension;
import java.awt.Toolkit;
import java.util.*;

public class NewGuide_State {
    //----------------------new variables for antenna
    public double theta_angle, theta_maximum, theta_minimum, 
		  phi_angle, phi_maximum, phi_minimum, 
		  point_distance, distance_minimum, distance_maximum, 
		  current_magnitude, wavelength, frequency, wire_radius;
    public double Directivity, TotalPower, TimeAveragePower, RadiationResistance, 
		  InputResistance, RadiationReactance, InputReactance;
    public double DipoleLength_lambda, DipoleLength_meters;
    public Complex Electric_Field, Magnetic_Field;
    //---------------------------------------------------------------------------------
    public double a, a_meters; // dimensions
    public double a_minimum, a_maximum, DeltaLength;
    public double mu_r, mu_r0, lambda_0, lambda; 
 
    public double epsilon_r, DeltaZ;
    public double frequency_minimum, frequency_maximum, Deltaf;
    public double angular_frequency, beta_total;
    public double beta;
    public double phase_velocity, phase_velocity0, light_velocity, light_velocity0;
    
    public Complex ZeroC;
    public double distance;
    public double medium_impedance;
    public double DVector[], RVector[], RinVector[], XVector[], XinVector[], leng[], DVMax, RVMax, RinVMax, XVMax, XVMin, XinVMax, XinVMin;
    
    public double x[], x_polar[];
    public Complex etheta[], erad[], hphigen[];
    public double ethetaM[], eradM[], ephigenM[], ex[], ey[], ez[], hthetaM[], hradM[], hphigenM[], hx[], hy[], hz[];
    public double Efield_3meters, Efield_3metersA, Efield_3metersB, Efield_3metersC;
    public double EfieldMax, EfieldRadMax, EfieldPhigenMax, EfieldCartxMax, EfieldCartyMax, EfieldCartzMax; 
    public double HfieldMax, HfieldRadMax, HfieldThetaMax, HfieldCartxMax, HfieldCartyMax, HfieldCartzMax; 
    public Complex ephi[], ephirad[], hphi[];
    public double ephiM[], ephiradM[], ephiphiM[], ephix[], ephiy[], ephiz[], hphiM[], hphiradM[], hphithetaM[], 
		  hphix[], hphiy[], hphiz[]; 
    public double EfieldphiMax, EfieldphiRadMax, EfieldphiPhiMax, EfieldCart2xMax, EfieldCart2yMax, EfieldCart2zMax; 
    public double HfieldphiMax, HfieldphiRadMax, HfieldphiThetaMax, HfieldCart2xMax, HfieldCart2yMax, HfieldCart2zMax; 
    public double Funcfar, Efar, Hfar, Pfar;
    public Complex EfarC, HfarC;
    
    public double area_front;
    
    public double zpos[], zposLarge[], zLambda[], theta, phi, currentM[], currentMAX, currentMLarge[], currentMIN, zposMax;
    public double currentNormalization;
    public double currentin, currentin_maximum, currentin_minimum, currentscale;
    
    public boolean need_update;
    
    public Complex ethetaC, eradC, exC, eyC, ezC, hphigenC, hxC, hyC, hzC;
    public double etheta0, erad0, ephigen0, ex0, ey0, ez0, htheta0, hrad0, hphigen0, hx0, hy0, hz0;
    
    public int Numpoints, Nsections, NsectionsLarge;
    public Complex current[], currentLarge[], cp, cn;//current along z, current coefficients
    public double dz, angle_factor;
    public boolean inputpanelflag, Is_theta, Is_radius, IsPolar;
    public boolean microFlag2, microFlag3, microFlag4, microFlag5, microFlag6, microFlag7, 
		   microFlag8, microFlag9, microFlag10, microFlag11, microFlag12, microFlag13, microFlag14,
		   microFlag15, microFlag16, microFlag17, microFlag18;
    
    public double Si[], Ci[], FA1, FA2, FA3, FA4, FB1, FB2, FB3, FB4, GA1, GA2, GA3, GA4, GB1, GB2, GB3, GB4;
    public int Nmaxint, ShowWhich;
    
    public boolean IsDirectivity, IsRad, IsRin, IsXrad, IsXin;
    
    public static final double mil_factor = 0.0254; // 1 mil = 0.0254 mm
    //public static final double epsilon0 = 8.8541878176E-12; //Units: F/m
    public static final double epsilon0 = 8.841941286E-12; // approximate value
    public static final double mu0 = 4.0*Math.PI*1.0e-7;//1.25663706144E-6; //Units H/m
    public Complex jay = new Complex(0.0,1.0);
    public Complex minusjay = new Complex(0.0,-1.0);
    public Complex One = new Complex(1.0,0.0);
    public Complex minusOne = new Complex(-1.0,0.0);
    
    public boolean LicenseExpired;
    public boolean IsWindows = false;
    public boolean IsMac = false;
    
    public int this_month, today_week, this_year, this_hour, this_minute, today_month, 
	       today_year,this_zone, saving_time;
	       
    GregorianCalendar Greg = new GregorianCalendar();

    //THIS IS THE PARAMETER FOR ZOOM ===========================================
    public static int base_width = 626;
    public static int base_height = 570;
    public double Xfactor = 0.85;
    
    //public double sfactor = 1.25;
    Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
    public int screenHeight = screenSize.height;
    public int screenWidth = screenSize.width;
    public int sfactor1 = screenSize.height;
    public int sfactor2 = screenSize.width;
    
    //public int screenHeight = 768;
    //public int screenWidth = 1360;
    //public int sfactor1 = 768;
    //public int sfactor2 = 1360;
    
    //public int screenHeight = 800;
    //public int screenWidth = 1280;
    //public int sfactor1 = 800;
    //public int sfactor2 = 1280;
    
    //public int screenHeight = 720;
    //public int screenWidth = 1280;
    //public int sfactor1 = 720;
    //public int sfactor2 = 1280;
    //==========================================================================
    
    public double sfactor3 = Math.min(sfactor1, sfactor2);
    public double sfactor = MaestroA.rounder(Xfactor*(double)(sfactor3/base_height),2);
    
   // Look-up table to simplify zoom 
    public int ss2 = (int)Math.ceil(2*sfactor);
    public int s1 = (int)Math.ceil(1*sfactor);
    public int s2 = (int)Math.ceil(2*sfactor);
    public int s3 = (int)Math.ceil(3*sfactor);
    public int s4 = (int)Math.ceil(4*sfactor);
    public int s5 = (int)Math.ceil(5*sfactor);
    public int s6 = (int)Math.ceil(6*sfactor);
    public int s7 = (int)Math.ceil(7*sfactor);
    public int s8 = (int)Math.ceil(8*sfactor);
    public int s9 = (int)Math.ceil(9*sfactor);
    public int s10 = (int)Math.ceil(10*sfactor);
    public int s11 = (int)Math.ceil(11*sfactor);
    public int s12 = (int)Math.ceil(12*sfactor);
    public int s13 = (int)Math.ceil(13*sfactor);
    public int s14 = (int)Math.ceil(14*sfactor);
    public int s15 = (int)Math.ceil(15*sfactor);
    public int s16 = (int)Math.ceil(16*sfactor);
    public int s17 = (int)Math.ceil(17*sfactor);
    public int s18 = (int)Math.ceil(18*sfactor);
    public int s19 = (int)Math.ceil(19*sfactor);
    public int s20 = (int)Math.ceil(20*sfactor);
    public int s21 = (int)Math.ceil(21*sfactor);
    public int s22 = (int)Math.ceil(22*sfactor);
    public int s23 = (int)Math.ceil(23*sfactor);
    public int s24 = (int)Math.ceil(24*sfactor);
    public int s25 = (int)Math.ceil(25*sfactor);
    public int s26 = (int)Math.ceil(26*sfactor);
    public int s27 = (int)Math.ceil(27*sfactor);
    public int s28 = (int)Math.ceil(28*sfactor);
    public int s29 = (int)Math.ceil(29*sfactor);
    public int s30 = (int)Math.ceil(30*sfactor);
    public int s31 = (int)Math.ceil(31*sfactor);
    public int s32 = (int)Math.ceil(32*sfactor);
    public int s33 = (int)Math.ceil(33*sfactor);
    public int s34 = (int)Math.ceil(34*sfactor);
    public int s35 = (int)Math.ceil(35*sfactor);
    public int s36 = (int)Math.ceil(36*sfactor);
    public int s37 = (int)Math.ceil(37*sfactor);
    public int s38 = (int)Math.ceil(38*sfactor);
    public int s39 = (int)Math.ceil(39*sfactor);
    public int s40 = (int)Math.ceil(40*sfactor);
    public int s41 = (int)Math.ceil(41*sfactor);
    public int s42 = (int)Math.ceil(42*sfactor);
    public int s43 = (int)Math.ceil(43*sfactor);
    public int s44 = (int)Math.ceil(44*sfactor);
    public int s45 = (int)Math.ceil(45*sfactor);
    public int s46 = (int)Math.ceil(46*sfactor);
    public int s47 = (int)Math.ceil(47*sfactor);
    public int s48 = (int)Math.ceil(48*sfactor);
    public int s49 = (int)Math.ceil(49*sfactor);
    public int s50 = (int)Math.ceil(50*sfactor);
    public int s51 = (int)Math.ceil(51*sfactor);
    public int s52 = (int)Math.ceil(52*sfactor);
    public int s53 = (int)Math.ceil(53*sfactor);
    public int s54 = (int)Math.ceil(54*sfactor);
    public int s55 = (int)Math.ceil(55*sfactor);
    public int s56 = (int)Math.ceil(56*sfactor);
    public int s57 = (int)Math.ceil(57*sfactor);
    public int s58 = (int)Math.ceil(58*sfactor);
    public int s59 = (int)Math.ceil(59*sfactor);
    public int s60 = (int)Math.ceil(60*sfactor);
    public int s61 = (int)Math.ceil(61*sfactor);
    public int s62 = (int)Math.ceil(62*sfactor);
    public int s63 = (int)Math.ceil(63*sfactor);
    public int s64 = (int)Math.ceil(64*sfactor);
    public int s65 = (int)Math.ceil(65*sfactor);
    public int s66 = (int)Math.ceil(66*sfactor);
    public int s67 = (int)Math.ceil(67*sfactor);
    public int s68 = (int)Math.ceil(68*sfactor);
    public int s69 = (int)Math.ceil(69*sfactor);
    public int s70 = (int)Math.ceil(70*sfactor);
    public int s71 = (int)Math.ceil(71*sfactor);
    public int s72 = (int)Math.ceil(72*sfactor);
    public int s73 = (int)Math.ceil(73*sfactor);
    public int s74 = (int)Math.ceil(74*sfactor);
    public int s75 = (int)Math.ceil(75*sfactor);
    public int s76 = (int)Math.ceil(76*sfactor);
    public int s77 = (int)Math.ceil(77*sfactor);
    public int s78 = (int)Math.ceil(78*sfactor);
    public int s79 = (int)Math.ceil(79*sfactor);
    public int s80 = (int)Math.ceil(80*sfactor);
    public int s81 = (int)Math.ceil(81*sfactor);
    public int s82 = (int)Math.ceil(82*sfactor);
    public int s83 = (int)Math.ceil(83*sfactor);
    public int s84 = (int)Math.ceil(84*sfactor);
    public int s85 = (int)Math.ceil(85*sfactor);
    public int s86 = (int)Math.ceil(86*sfactor);
    public int s87 = (int)Math.ceil(87*sfactor);
    public int s88 = (int)Math.ceil(88*sfactor);
    public int s89 = (int)Math.ceil(89*sfactor);
    public int s90 = (int)Math.ceil(90*sfactor);
    public int s91 = (int)Math.ceil(91*sfactor);
    public int s92 = (int)Math.ceil(92*sfactor);
    public int s93 = (int)Math.ceil(93*sfactor);
    public int s94 = (int)Math.ceil(94*sfactor);
    public int s95 = (int)Math.ceil(95*sfactor);
    public int s96 = (int)Math.ceil(96*sfactor);
    public int s97 = (int)Math.ceil(97*sfactor);
    public int s98 = (int)Math.ceil(98*sfactor);
    public int s99 = (int)Math.ceil(99*sfactor);
    
    public int s100 = (int)Math.ceil(100*sfactor);
    public int s101 = (int)Math.ceil(101*sfactor);
    public int s102 = (int)Math.ceil(102*sfactor);
    public int s103 = (int)Math.ceil(103*sfactor);
    public int s104 = (int)Math.ceil(104*sfactor);
    public int s105 = (int)Math.ceil(105*sfactor);
    public int s106 = (int)Math.ceil(106*sfactor);
    public int s107 = (int)Math.ceil(107*sfactor);
    public int s108 = (int)Math.ceil(108*sfactor);
    public int s109 = (int)Math.ceil(109*sfactor);
    public int s110 = (int)Math.ceil(110*sfactor);
    public int s111 = (int)Math.ceil(111*sfactor);
    public int s112 = (int)Math.ceil(112*sfactor);
    public int s113 = (int)Math.ceil(113*sfactor);
    public int s114 = (int)Math.ceil(114*sfactor);
    public int s115 = (int)Math.ceil(115*sfactor);
    public int s116 = (int)Math.ceil(116*sfactor);
    public int s117 = (int)Math.ceil(117*sfactor);
    public int s118 = (int)Math.ceil(118*sfactor);
    public int s119 = (int)Math.ceil(119*sfactor);
    public int s120 = (int)Math.ceil(120*sfactor);
    public int s121 = (int)Math.ceil(121*sfactor);
    public int s122 = (int)Math.ceil(122*sfactor);
    public int s123 = (int)Math.ceil(123*sfactor);
    public int s124 = (int)Math.ceil(124*sfactor);
    public int s125 = (int)Math.ceil(125*sfactor);
    public int s126 = (int)Math.ceil(126*sfactor);
    public int s127 = (int)Math.ceil(127*sfactor);
    public int s128 = (int)Math.ceil(128*sfactor);
    public int s129 = (int)Math.ceil(129*sfactor);
    public int s130 = (int)Math.ceil(130*sfactor);
    public int s131 = (int)Math.ceil(131*sfactor);
    public int s132 = (int)Math.ceil(132*sfactor);
    public int s133 = (int)Math.ceil(133*sfactor);
    public int s134 = (int)Math.ceil(134*sfactor);
    public int s135 = (int)Math.ceil(135*sfactor);
    public int s136 = (int)Math.ceil(136*sfactor);
    public int s137 = (int)Math.ceil(137*sfactor);
    public int s138 = (int)Math.ceil(138*sfactor);
    public int s139 = (int)Math.ceil(139*sfactor);
    public int s140 = (int)Math.ceil(140*sfactor);
    public int s141 = (int)Math.ceil(141*sfactor);
    public int s142 = (int)Math.ceil(142*sfactor);
    public int s143 = (int)Math.ceil(143*sfactor);
    public int s144 = (int)Math.ceil(144*sfactor);
    public int s145 = (int)Math.ceil(145*sfactor);
    public int s146 = (int)Math.ceil(146*sfactor);
    public int s147 = (int)Math.ceil(147*sfactor);
    public int s148 = (int)Math.ceil(148*sfactor);
    public int s149 = (int)Math.ceil(149*sfactor);
    public int s150 = (int)Math.ceil(150*sfactor);
    public int s151 = (int)Math.ceil(151*sfactor);
    public int s152 = (int)Math.ceil(152*sfactor);
    public int s153 = (int)Math.ceil(153*sfactor);
    public int s154 = (int)Math.ceil(154*sfactor);
    public int s155 = (int)Math.ceil(155*sfactor);
    public int s156 = (int)Math.ceil(156*sfactor);
    public int s157 = (int)Math.ceil(157*sfactor);
    public int s158 = (int)Math.ceil(158*sfactor);
    public int s159 = (int)Math.ceil(159*sfactor);
    public int s160 = (int)Math.ceil(160*sfactor);
    public int s161 = (int)Math.ceil(161*sfactor);
    public int s162 = (int)Math.ceil(162*sfactor);
    public int s163 = (int)Math.ceil(163*sfactor);
    public int s164 = (int)Math.ceil(164*sfactor);
    public int s165 = (int)Math.ceil(165*sfactor);
    public int s166 = (int)Math.ceil(166*sfactor);
    public int s167 = (int)Math.ceil(167*sfactor);
    public int s168 = (int)Math.ceil(168*sfactor);
    public int s169 = (int)Math.ceil(169*sfactor);
    public int s170 = (int)Math.ceil(170*sfactor);
    public int s171 = (int)Math.ceil(171*sfactor);
    public int s172 = (int)Math.ceil(172*sfactor);
    public int s173 = (int)Math.ceil(173*sfactor);
    public int s174 = (int)Math.ceil(174*sfactor);
    public int s175 = (int)Math.ceil(175*sfactor);
    public int s176 = (int)Math.ceil(176*sfactor);
    public int s177 = (int)Math.ceil(177*sfactor);
    public int s178 = (int)Math.ceil(178*sfactor);
    public int s179 = (int)Math.ceil(179*sfactor);
    public int s180 = (int)Math.ceil(180*sfactor);
    public int s181 = (int)Math.ceil(181*sfactor);
    public int s182 = (int)Math.ceil(182*sfactor);
    public int s183 = (int)Math.ceil(183*sfactor);
    public int s184 = (int)Math.ceil(184*sfactor);
    public int s185 = (int)Math.ceil(185*sfactor);
    public int s186 = (int)Math.ceil(186*sfactor);
    public int s187 = (int)Math.ceil(187*sfactor);
    public int s188 = (int)Math.ceil(188*sfactor);
    public int s189 = (int)Math.ceil(189*sfactor);
    public int s190 = (int)Math.ceil(190*sfactor);
    public int s191 = (int)Math.ceil(191*sfactor);
    public int s192 = (int)Math.ceil(192*sfactor);
    public int s193 = (int)Math.ceil(193*sfactor);
    public int s194 = (int)Math.ceil(194*sfactor);
    public int s195 = (int)Math.ceil(195*sfactor);
    public int s196 = (int)Math.ceil(196*sfactor);
    public int s197 = (int)Math.ceil(197*sfactor);
    public int s198 = (int)Math.ceil(198*sfactor);
    public int s199 = (int)Math.ceil(199*sfactor);
    
    public int s200 = (int)Math.ceil(200*sfactor);
    public int s201 = (int)Math.ceil(201*sfactor);
    public int s202 = (int)Math.ceil(202*sfactor);
    public int s203 = (int)Math.ceil(203*sfactor);
    public int s204 = (int)Math.ceil(204*sfactor);
    public int s205 = (int)Math.ceil(205*sfactor);
    public int s206 = (int)Math.ceil(206*sfactor);
    public int s207 = (int)Math.ceil(207*sfactor);
    public int s208 = (int)Math.ceil(208*sfactor);
    public int s209 = (int)Math.ceil(209*sfactor);
    public int s210 = (int)Math.ceil(210*sfactor);
    public int s211 = (int)Math.ceil(211*sfactor);
    public int s212 = (int)Math.ceil(212*sfactor);
    public int s213 = (int)Math.ceil(213*sfactor);
    public int s214 = (int)Math.ceil(214*sfactor);
    public int s215 = (int)Math.ceil(215*sfactor);
    public int s216 = (int)Math.ceil(216*sfactor);
    public int s217 = (int)Math.ceil(217*sfactor);
    public int s218 = (int)Math.ceil(218*sfactor);
    public int s219 = (int)Math.ceil(219*sfactor);
    public int s220 = (int)Math.ceil(220*sfactor);
    public int s221 = (int)Math.ceil(221*sfactor);
    public int s222 = (int)Math.ceil(222*sfactor);
    public int s223 = (int)Math.ceil(223*sfactor);
    public int s224 = (int)Math.ceil(224*sfactor);
    public int s225 = (int)Math.ceil(225*sfactor);
    public int s226 = (int)Math.ceil(226*sfactor);
    public int s227 = (int)Math.ceil(227*sfactor);
    public int s228 = (int)Math.ceil(228*sfactor);
    public int s229 = (int)Math.ceil(229*sfactor);
    public int s230 = (int)Math.ceil(230*sfactor);
    public int s231 = (int)Math.ceil(231*sfactor);
    public int s232 = (int)Math.ceil(232*sfactor);
    public int s233 = (int)Math.ceil(233*sfactor);
    public int s234 = (int)Math.ceil(234*sfactor);
    public int s235 = (int)Math.ceil(235*sfactor);
    public int s236 = (int)Math.ceil(236*sfactor);
    public int s237 = (int)Math.ceil(237*sfactor);
    public int s238 = (int)Math.ceil(238*sfactor);
    public int s239 = (int)Math.ceil(239*sfactor);
    public int s240 = (int)Math.ceil(240*sfactor);
    public int s241 = (int)Math.ceil(241*sfactor);
    public int s242 = (int)Math.ceil(242*sfactor);
    public int s243 = (int)Math.ceil(243*sfactor);
    public int s244 = (int)Math.ceil(244*sfactor);
    public int s245 = (int)Math.ceil(245*sfactor);
    public int s246 = (int)Math.ceil(246*sfactor);
    public int s247 = (int)Math.ceil(247*sfactor);
    public int s248 = (int)Math.ceil(248*sfactor);
    public int s249 = (int)Math.ceil(249*sfactor);
    public int s250 = (int)Math.ceil(250*sfactor);
    public int s251 = (int)Math.ceil(251*sfactor);
    public int s252 = (int)Math.ceil(252*sfactor);
    public int s253 = (int)Math.ceil(253*sfactor);
    public int s254 = (int)Math.ceil(254*sfactor);
    public int s255 = (int)Math.ceil(255*sfactor);
    public int s256 = (int)Math.ceil(256*sfactor);
    public int s257 = (int)Math.ceil(257*sfactor);
    public int s258 = (int)Math.ceil(258*sfactor);
    public int s259 = (int)Math.ceil(259*sfactor);
    public int s260 = (int)Math.ceil(260*sfactor);
    public int s261 = (int)Math.ceil(261*sfactor);
    public int s262 = (int)Math.ceil(262*sfactor);
    public int s263 = (int)Math.ceil(263*sfactor);
    public int s264 = (int)Math.ceil(264*sfactor);
    public int s265 = (int)Math.ceil(265*sfactor);
    public int s266 = (int)Math.ceil(266*sfactor);
    public int s267 = (int)Math.ceil(267*sfactor);
    public int s268 = (int)Math.ceil(268*sfactor);
    public int s269 = (int)Math.ceil(269*sfactor);
    public int s270 = (int)Math.ceil(270*sfactor);
    public int s271 = (int)Math.ceil(271*sfactor);
    public int s272 = (int)Math.ceil(272*sfactor);
    public int s273 = (int)Math.ceil(273*sfactor);
    public int s274 = (int)Math.ceil(274*sfactor);
    public int s275 = (int)Math.ceil(275*sfactor);
    public int s276 = (int)Math.ceil(276*sfactor);
    public int s277 = (int)Math.ceil(277*sfactor);
    public int s278 = (int)Math.ceil(278*sfactor);
    public int s279 = (int)Math.ceil(279*sfactor);
    public int s280 = (int)Math.ceil(280*sfactor);
    public int s281 = (int)Math.ceil(281*sfactor);
    public int s282 = (int)Math.ceil(282*sfactor);
    public int s283 = (int)Math.ceil(283*sfactor);
    public int s284 = (int)Math.ceil(284*sfactor);
    public int s285 = (int)Math.ceil(285*sfactor);
    public int s286 = (int)Math.ceil(286*sfactor);
    public int s287 = (int)Math.ceil(287*sfactor);
    public int s288 = (int)Math.ceil(288*sfactor);
    public int s289 = (int)Math.ceil(289*sfactor);
    public int s290 = (int)Math.ceil(290*sfactor);
    public int s291 = (int)Math.ceil(291*sfactor);
    public int s292 = (int)Math.ceil(292*sfactor);
    public int s293 = (int)Math.ceil(293*sfactor);
    public int s294 = (int)Math.ceil(294*sfactor);
    public int s295 = (int)Math.ceil(295*sfactor);
    public int s296 = (int)Math.ceil(296*sfactor);
    public int s297 = (int)Math.ceil(297*sfactor);
    public int s298 = (int)Math.ceil(298*sfactor);
    public int s299 = (int)Math.ceil(299*sfactor);
    
    public int s300 = (int)Math.ceil(300*sfactor);
    public int s301 = (int)Math.ceil(301*sfactor);
    public int s302 = (int)Math.ceil(302*sfactor);
    public int s303 = (int)Math.ceil(303*sfactor);
    public int s304 = (int)Math.ceil(304*sfactor);
    public int s305 = (int)Math.ceil(305*sfactor);
    public int s306 = (int)Math.ceil(306*sfactor);
    public int s307 = (int)Math.ceil(307*sfactor);
    public int s308 = (int)Math.ceil(308*sfactor);
    public int s309 = (int)Math.ceil(309*sfactor);
    public int s310 = (int)Math.ceil(310*sfactor);
    public int s311 = (int)Math.ceil(311*sfactor);
    public int s312 = (int)Math.ceil(312*sfactor);
    public int s313 = (int)Math.ceil(313*sfactor);
    public int s314 = (int)Math.ceil(314*sfactor);
    public int s315 = (int)Math.ceil(315*sfactor);
    public int s316 = (int)Math.ceil(316*sfactor);
    public int s317 = (int)Math.ceil(317*sfactor);
    public int s318 = (int)Math.ceil(318*sfactor);
    public int s319 = (int)Math.ceil(319*sfactor);
    public int s320 = (int)Math.ceil(320*sfactor);
    public int s321 = (int)Math.ceil(321*sfactor);
    public int s322 = (int)Math.ceil(322*sfactor);
    public int s323 = (int)Math.ceil(323*sfactor);
    public int s324 = (int)Math.ceil(324*sfactor);
    public int s325 = (int)Math.ceil(325*sfactor);
    public int s326 = (int)Math.ceil(326*sfactor);
    public int s327 = (int)Math.ceil(327*sfactor);
    public int s328 = (int)Math.ceil(328*sfactor);
    public int s329 = (int)Math.ceil(329*sfactor);
    public int s330 = (int)Math.ceil(330*sfactor);
    public int s331 = (int)Math.ceil(331*sfactor);
    public int s332 = (int)Math.ceil(332*sfactor);
    public int s333 = (int)Math.ceil(333*sfactor);
    public int s334 = (int)Math.ceil(334*sfactor);
    public int s335 = (int)Math.ceil(335*sfactor);
    public int s336 = (int)Math.ceil(336*sfactor);
    public int s337 = (int)Math.ceil(337*sfactor);
    public int s338 = (int)Math.ceil(338*sfactor);
    public int s339 = (int)Math.ceil(339*sfactor);
    public int s340 = (int)Math.ceil(340*sfactor);
    public int s341 = (int)Math.ceil(341*sfactor);
    public int s342 = (int)Math.ceil(342*sfactor);
    public int s343 = (int)Math.ceil(343*sfactor);
    public int s344 = (int)Math.ceil(344*sfactor);
    public int s345 = (int)Math.ceil(345*sfactor);
    public int s346 = (int)Math.ceil(346*sfactor);
    public int s347 = (int)Math.ceil(347*sfactor);
    public int s348 = (int)Math.ceil(348*sfactor);
    public int s349 = (int)Math.ceil(349*sfactor);
    public int s350 = (int)Math.ceil(350*sfactor);
    public int s351 = (int)Math.ceil(351*sfactor);
    public int s352 = (int)Math.ceil(352*sfactor);
    public int s353 = (int)Math.ceil(353*sfactor);
    public int s354 = (int)Math.ceil(354*sfactor);
    public int s355 = (int)Math.ceil(355*sfactor);
    public int s356 = (int)Math.ceil(356*sfactor);
    public int s357 = (int)Math.ceil(357*sfactor);
    public int s358 = (int)Math.ceil(358*sfactor);
    public int s359 = (int)Math.ceil(359*sfactor);
    public int s360 = (int)Math.ceil(360*sfactor);
    public int s361 = (int)Math.ceil(361*sfactor);
    public int s362 = (int)Math.ceil(362*sfactor);
    public int s363 = (int)Math.ceil(363*sfactor);
    public int s364 = (int)Math.ceil(364*sfactor);
    public int s365 = (int)Math.ceil(365*sfactor);
    public int s366 = (int)Math.ceil(366*sfactor);
    public int s367 = (int)Math.ceil(367*sfactor);
    public int s368 = (int)Math.ceil(368*sfactor);
    public int s369 = (int)Math.ceil(369*sfactor);
    public int s370 = (int)Math.ceil(370*sfactor);
    public int s371 = (int)Math.ceil(371*sfactor);
    public int s372 = (int)Math.ceil(372*sfactor);
    public int s373 = (int)Math.ceil(373*sfactor);
    public int s374 = (int)Math.ceil(374*sfactor);
    public int s375 = (int)Math.ceil(375*sfactor);
    public int s376 = (int)Math.ceil(376*sfactor);
    public int s377 = (int)Math.ceil(377*sfactor);
    public int s378 = (int)Math.ceil(378*sfactor);
    public int s379 = (int)Math.ceil(379*sfactor);
    public int s380 = (int)Math.ceil(380*sfactor);
    public int s381 = (int)Math.ceil(381*sfactor);
    public int s382 = (int)Math.ceil(382*sfactor);
    public int s383 = (int)Math.ceil(383*sfactor);
    public int s384 = (int)Math.ceil(384*sfactor);
    public int s385 = (int)Math.ceil(385*sfactor);
    public int s386 = (int)Math.ceil(386*sfactor);
    public int s387 = (int)Math.ceil(387*sfactor);
    public int s388 = (int)Math.ceil(388*sfactor);
    public int s389 = (int)Math.ceil(389*sfactor);
    public int s390 = (int)Math.ceil(390*sfactor);
    public int s391 = (int)Math.ceil(391*sfactor);
    public int s392 = (int)Math.ceil(392*sfactor);
    public int s393 = (int)Math.ceil(393*sfactor);
    public int s394 = (int)Math.ceil(394*sfactor);
    public int s395 = (int)Math.ceil(395*sfactor);
    public int s396 = (int)Math.ceil(396*sfactor);
    public int s397 = (int)Math.ceil(397*sfactor);
    public int s398 = (int)Math.ceil(398*sfactor);
    public int s399 = (int)Math.ceil(399*sfactor);
    
    public int s400 = (int)Math.ceil(400*sfactor);
    public int s401 = (int)Math.ceil(401*sfactor);
    public int s402 = (int)Math.ceil(402*sfactor);
    public int s403 = (int)Math.ceil(403*sfactor);
    public int s404 = (int)Math.ceil(404*sfactor);
    public int s405 = (int)Math.ceil(405*sfactor);
    public int s406 = (int)Math.ceil(406*sfactor);
    public int s407 = (int)Math.ceil(407*sfactor);
    public int s408 = (int)Math.ceil(408*sfactor);
    public int s409 = (int)Math.ceil(409*sfactor);
    public int s410 = (int)Math.ceil(410*sfactor);
    public int s411 = (int)Math.ceil(411*sfactor);
    public int s412 = (int)Math.ceil(412*sfactor);
    public int s413 = (int)Math.ceil(413*sfactor);
    public int s414 = (int)Math.ceil(414*sfactor);
    public int s415 = (int)Math.ceil(415*sfactor);
    public int s416 = (int)Math.ceil(416*sfactor);
    public int s417 = (int)Math.ceil(417*sfactor);
    public int s418 = (int)Math.ceil(418*sfactor);
    public int s419 = (int)Math.ceil(419*sfactor);
    public int s420 = (int)Math.ceil(420*sfactor);
    public int s421 = (int)Math.ceil(421*sfactor);
    public int s422 = (int)Math.ceil(422*sfactor);
    public int s423 = (int)Math.ceil(423*sfactor);
    public int s424 = (int)Math.ceil(424*sfactor);
    public int s425 = (int)Math.ceil(425*sfactor);
    public int s426 = (int)Math.ceil(426*sfactor);
    public int s427 = (int)Math.ceil(427*sfactor);
    public int s428 = (int)Math.ceil(428*sfactor);
    public int s429 = (int)Math.ceil(429*sfactor);
    public int s430 = (int)Math.ceil(430*sfactor);
    public int s431 = (int)Math.ceil(431*sfactor);
    public int s432 = (int)Math.ceil(432*sfactor);
    public int s433 = (int)Math.ceil(433*sfactor);
    public int s434 = (int)Math.ceil(434*sfactor);
    public int s435 = (int)Math.ceil(435*sfactor);
    public int s436 = (int)Math.ceil(36*sfactor);
    public int s437 = (int)Math.ceil(37*sfactor);
    public int s438 = (int)Math.ceil(38*sfactor);
    public int s439 = (int)Math.ceil(439*sfactor);
    public int s440 = (int)Math.ceil(440*sfactor);
    public int s441 = (int)Math.ceil(441*sfactor);
    public int s442 = (int)Math.ceil(442*sfactor);
    public int s443 = (int)Math.ceil(443*sfactor);
    public int s444 = (int)Math.ceil(444*sfactor);
    public int s445 = (int)Math.ceil(445*sfactor);
    public int s446 = (int)Math.ceil(446*sfactor);
    public int s447 = (int)Math.ceil(447*sfactor);
    public int s448 = (int)Math.ceil(448*sfactor);
    public int s449 = (int)Math.ceil(449*sfactor);
    public int s450 = (int)Math.ceil(450*sfactor);
    public int s451 = (int)Math.ceil(451*sfactor);
    public int s452 = (int)Math.ceil(452*sfactor);
    public int s453 = (int)Math.ceil(453*sfactor);
    public int s454 = (int)Math.ceil(454*sfactor);
    public int s455 = (int)Math.ceil(455*sfactor);
    public int s456 = (int)Math.ceil(456*sfactor);
    public int s457 = (int)Math.ceil(457*sfactor);
    public int s458 = (int)Math.ceil(458*sfactor);
    public int s459 = (int)Math.ceil(459*sfactor);
    public int s460 = (int)Math.ceil(460*sfactor);
    public int s461 = (int)Math.ceil(461*sfactor);
    public int s462 = (int)Math.ceil(462*sfactor);
    public int s463 = (int)Math.ceil(463*sfactor);
    public int s464 = (int)Math.ceil(464*sfactor);
    public int s465 = (int)Math.ceil(465*sfactor);
    public int s466 = (int)Math.ceil(466*sfactor);
    public int s467 = (int)Math.ceil(467*sfactor);
    public int s468 = (int)Math.ceil(468*sfactor);
    public int s469 = (int)Math.ceil(469*sfactor);
    public int s470 = (int)Math.ceil(470*sfactor);
    public int s471 = (int)Math.ceil(471*sfactor);
    public int s472 = (int)Math.ceil(472*sfactor);
    public int s473 = (int)Math.ceil(473*sfactor);
    public int s474 = (int)Math.ceil(474*sfactor);
    public int s475 = (int)Math.ceil(475*sfactor);
    public int s476 = (int)Math.ceil(476*sfactor);
    public int s477 = (int)Math.ceil(477*sfactor);
    public int s478 = (int)Math.ceil(478*sfactor);
    public int s479 = (int)Math.ceil(479*sfactor);
    public int s480 = (int)Math.ceil(480*sfactor);
    public int s481 = (int)Math.ceil(481*sfactor);
    public int s482 = (int)Math.ceil(482*sfactor);
    public int s483 = (int)Math.ceil(483*sfactor);
    public int s484 = (int)Math.ceil(484*sfactor);
    public int s485 = (int)Math.ceil(485*sfactor);
    public int s486 = (int)Math.ceil(486*sfactor);
    public int s487 = (int)Math.ceil(487*sfactor);
    public int s488 = (int)Math.ceil(488*sfactor);
    public int s489 = (int)Math.ceil(489*sfactor);
    public int s490 = (int)Math.ceil(490*sfactor);
    public int s491 = (int)Math.ceil(491*sfactor);
    public int s492 = (int)Math.ceil(492*sfactor);
    public int s493 = (int)Math.ceil(493*sfactor);
    public int s494 = (int)Math.ceil(494*sfactor);
    public int s495 = (int)Math.ceil(495*sfactor);
    public int s496 = (int)Math.ceil(496*sfactor);
    public int s497 = (int)Math.ceil(497*sfactor);
    public int s498 = (int)Math.ceil(498*sfactor);
    public int s499 = (int)Math.ceil(499*sfactor);
    
    public int s500 = (int)Math.ceil(500*sfactor);
    public int s501 = (int)Math.ceil(501*sfactor);
    public int s502 = (int)Math.ceil(502*sfactor);
    public int s503 = (int)Math.ceil(503*sfactor);
    public int s504 = (int)Math.ceil(504*sfactor);
    public int s505 = (int)Math.ceil(505*sfactor);
    public int s506 = (int)Math.ceil(506*sfactor);
    public int s507 = (int)Math.ceil(507*sfactor);
    public int s508 = (int)Math.ceil(508*sfactor);
    public int s509 = (int)Math.ceil(509*sfactor);
    public int s510 = (int)Math.ceil(510*sfactor);
    public int s511 = (int)Math.ceil(511*sfactor);
    public int s512 = (int)Math.ceil(512*sfactor);
    public int s513 = (int)Math.ceil(513*sfactor);
    public int s514 = (int)Math.ceil(514*sfactor);
    public int s515 = (int)Math.ceil(515*sfactor);
    public int s516 = (int)Math.ceil(516*sfactor);
    public int s517 = (int)Math.ceil(517*sfactor);
    public int s518 = (int)Math.ceil(518*sfactor);
    public int s519 = (int)Math.ceil(519*sfactor);
    public int s520 = (int)Math.ceil(520*sfactor);
    public int s521 = (int)Math.ceil(521*sfactor);
    public int s522 = (int)Math.ceil(522*sfactor);
    public int s523 = (int)Math.ceil(523*sfactor);
    public int s524 = (int)Math.ceil(524*sfactor);
    public int s525 = (int)Math.ceil(525*sfactor);
    public int s526 = (int)Math.ceil(526*sfactor);
    public int s527 = (int)Math.ceil(527*sfactor);
    public int s528 = (int)Math.ceil(528*sfactor);
    public int s529 = (int)Math.ceil(529*sfactor);
    public int s530 = (int)Math.ceil(530*sfactor);
    public int s531 = (int)Math.ceil(531*sfactor);
    public int s532 = (int)Math.ceil(532*sfactor);
    public int s533 = (int)Math.ceil(533*sfactor);
    public int s534 = (int)Math.ceil(534*sfactor);
    public int s535 = (int)Math.ceil(535*sfactor);
    public int s536 = (int)Math.ceil(536*sfactor);
    public int s537 = (int)Math.ceil(537*sfactor);
    public int s538 = (int)Math.ceil(538*sfactor);
    public int s539 = (int)Math.ceil(539*sfactor);
    public int s540 = (int)Math.ceil(540*sfactor);
    public int s541 = (int)Math.ceil(541*sfactor);
    public int s542 = (int)Math.ceil(542*sfactor);
    public int s543 = (int)Math.ceil(543*sfactor);
    public int s544 = (int)Math.ceil(544*sfactor);
    public int s545 = (int)Math.ceil(545*sfactor);
    public int s546 = (int)Math.ceil(546*sfactor);
    public int s547 = (int)Math.ceil(547*sfactor);
    public int s548 = (int)Math.ceil(548*sfactor);
    public int s549 = (int)Math.ceil(549*sfactor);
    public int s550 = (int)Math.ceil(550*sfactor);
    public int s551 = (int)Math.ceil(551*sfactor);
    public int s552 = (int)Math.ceil(552*sfactor);
    public int s553 = (int)Math.ceil(553*sfactor);
    public int s554 = (int)Math.ceil(554*sfactor);
    public int s555 = (int)Math.ceil(555*sfactor);
    public int s556 = (int)Math.ceil(556*sfactor);
    public int s557 = (int)Math.ceil(557*sfactor);
    public int s558 = (int)Math.ceil(558*sfactor);
    public int s559 = (int)Math.ceil(559*sfactor);
    public int s560 = (int)Math.ceil(560*sfactor);
    public int s561 = (int)Math.ceil(561*sfactor);
    public int s562 = (int)Math.ceil(562*sfactor);
    public int s563 = (int)Math.ceil(563*sfactor);
    public int s564 = (int)Math.ceil(564*sfactor);
    public int s565 = (int)Math.ceil(565*sfactor);
    public int s566 = (int)Math.ceil(566*sfactor);
    public int s567 = (int)Math.ceil(567*sfactor);
    public int s568 = (int)Math.ceil(568*sfactor);
    public int s569 = (int)Math.ceil(569*sfactor);
    public int s570 = (int)Math.ceil(570*sfactor);
    public int s571 = (int)Math.ceil(571*sfactor);
    public int s572 = (int)Math.ceil(572*sfactor);
    public int s573 = (int)Math.ceil(573*sfactor);
    public int s574 = (int)Math.ceil(574*sfactor);
    public int s575 = (int)Math.ceil(575*sfactor);
    public int s576 = (int)Math.ceil(576*sfactor);
    public int s577 = (int)Math.ceil(577*sfactor);
    public int s578 = (int)Math.ceil(578*sfactor);
    public int s579 = (int)Math.ceil(579*sfactor);
    public int s580 = (int)Math.ceil(580*sfactor);
    public int s581 = (int)Math.ceil(581*sfactor);
    public int s582 = (int)Math.ceil(582*sfactor);
    public int s583 = (int)Math.ceil(583*sfactor);
    public int s584 = (int)Math.ceil(584*sfactor);
    public int s585 = (int)Math.ceil(585*sfactor);
    public int s586 = (int)Math.ceil(586*sfactor);
    public int s587 = (int)Math.ceil(587*sfactor);
    public int s588 = (int)Math.ceil(588*sfactor);
    public int s589 = (int)Math.ceil(589*sfactor);
    public int s590 = (int)Math.ceil(590*sfactor);
    public int s591 = (int)Math.ceil(591*sfactor);
    public int s592 = (int)Math.ceil(592*sfactor);
    public int s593 = (int)Math.ceil(593*sfactor);
    public int s594 = (int)Math.ceil(594*sfactor);
    public int s595 = (int)Math.ceil(595*sfactor);
    public int s596 = (int)Math.ceil(596*sfactor);
    public int s597 = (int)Math.ceil(597*sfactor);
    public int s598 = (int)Math.ceil(598*sfactor);
    public int s599 = (int)Math.ceil(599*sfactor);
    
    public int s600 = (int)Math.ceil(600*sfactor);
    public int s601 = (int)Math.ceil(601*sfactor);
    public int s602 = (int)Math.ceil(602*sfactor);
    public int s603 = (int)Math.ceil(603*sfactor);
    public int s604 = (int)Math.ceil(604*sfactor);
    public int s605 = (int)Math.ceil(605*sfactor);
    public int s606 = (int)Math.ceil(606*sfactor);
    public int s607 = (int)Math.ceil(607*sfactor);
    public int s608 = (int)Math.ceil(608*sfactor);
    public int s609 = (int)Math.ceil(609*sfactor);
    public int s610 = (int)Math.ceil(610*sfactor);
    public int s611 = (int)Math.ceil(611*sfactor);
    public int s612 = (int)Math.ceil(612*sfactor);
    public int s613 = (int)Math.ceil(613*sfactor);
    public int s614 = (int)Math.ceil(614*sfactor);
    public int s615 = (int)Math.ceil(615*sfactor);
    public int s616 = (int)Math.ceil(616*sfactor);
    public int s617 = (int)Math.ceil(617*sfactor);
    public int s618 = (int)Math.ceil(618*sfactor);
    public int s619 = (int)Math.ceil(619*sfactor);
    public int s620 = (int)Math.ceil(620*sfactor);
    public int s621 = (int)Math.ceil(621*sfactor);
    public int s622 = (int)Math.ceil(622*sfactor);
    public int s623 = (int)Math.ceil(623*sfactor);
    public int s624 = (int)Math.ceil(624*sfactor);
    public int s625 = (int)Math.ceil(625*sfactor);
    public int s626 = (int)Math.ceil(626*sfactor);
    public int s627 = (int)Math.ceil(627*sfactor);
    public int s628 = (int)Math.ceil(628*sfactor);
    public int s629 = (int)Math.ceil(629*sfactor);
    public int s630 = (int)Math.ceil(630*sfactor);
    public int s631 = (int)Math.ceil(631*sfactor);
    public int s632 = (int)Math.ceil(632*sfactor);
    public int s633 = (int)Math.ceil(633*sfactor);
    public int s634 = (int)Math.ceil(634*sfactor);
    public int s635 = (int)Math.ceil(635*sfactor);
    public int s636 = (int)Math.ceil(636*sfactor);
    public int s637 = (int)Math.ceil(637*sfactor);
    public int s638 = (int)Math.ceil(638*sfactor);
    public int s639 = (int)Math.ceil(639*sfactor);
    public int s640 = (int)Math.ceil(640*sfactor);
    public int s641 = (int)Math.ceil(641*sfactor);
    public int s642 = (int)Math.ceil(642*sfactor);
    public int s643 = (int)Math.ceil(643*sfactor);
    public int s644 = (int)Math.ceil(644*sfactor);
    public int s645 = (int)Math.ceil(645*sfactor);
    public int s646 = (int)Math.ceil(646*sfactor);
    public int s647 = (int)Math.ceil(647*sfactor);
    public int s648 = (int)Math.ceil(648*sfactor);
    public int s649 = (int)Math.ceil(649*sfactor);
    public int s650 = (int)Math.ceil(650*sfactor);
    public int s651 = (int)Math.ceil(651*sfactor);
    public int s652 = (int)Math.ceil(652*sfactor);
    public int s653 = (int)Math.ceil(653*sfactor);
    public int s654 = (int)Math.ceil(54*sfactor);
    public int s655 = (int)Math.ceil(655*sfactor);
    public int s656 = (int)Math.ceil(656*sfactor);
    public int s657 = (int)Math.ceil(657*sfactor);
    public int s658 = (int)Math.ceil(658*sfactor);
    public int s659 = (int)Math.ceil(659*sfactor);
    public int s660 = (int)Math.ceil(660*sfactor);
    public int s661 = (int)Math.ceil(661*sfactor);
    public int s662 = (int)Math.ceil(662*sfactor);
    public int s663 = (int)Math.ceil(663*sfactor);
    public int s664 = (int)Math.ceil(664*sfactor);
    public int s665 = (int)Math.ceil(665*sfactor);
    public int s666 = (int)Math.ceil(666*sfactor);
    public int s667 = (int)Math.ceil(667*sfactor);
    public int s668 = (int)Math.ceil(668*sfactor);
    public int s669 = (int)Math.ceil(669*sfactor);
    public int s670 = (int)Math.ceil(670*sfactor);
    public int s671 = (int)Math.ceil(671*sfactor);
    public int s672 = (int)Math.ceil(672*sfactor);
    public int s673 = (int)Math.ceil(673*sfactor);
    public int s674 = (int)Math.ceil(674*sfactor);
    public int s675 = (int)Math.ceil(675*sfactor);
    public int s676 = (int)Math.ceil(676*sfactor);
    public int s677 = (int)Math.ceil(677*sfactor);
    public int s678 = (int)Math.ceil(678*sfactor);
    public int s679 = (int)Math.ceil(679*sfactor);
    public int s680 = (int)Math.ceil(680*sfactor);
    public int s681 = (int)Math.ceil(681*sfactor);
    public int s682 = (int)Math.ceil(682*sfactor);
    public int s683 = (int)Math.ceil(683*sfactor);
    public int s684 = (int)Math.ceil(684*sfactor);
    public int s685 = (int)Math.ceil(685*sfactor);
    public int s686 = (int)Math.ceil(686*sfactor);
    public int s687 = (int)Math.ceil(687*sfactor);
    public int s688 = (int)Math.ceil(688*sfactor);
    public int s689 = (int)Math.ceil(689*sfactor);
    public int s690 = (int)Math.ceil(690*sfactor);
    public int s691 = (int)Math.ceil(691*sfactor);
    public int s692 = (int)Math.ceil(692*sfactor);
    public int s693 = (int)Math.ceil(693*sfactor);
    public int s694 = (int)Math.ceil(694*sfactor);
    public int s695 = (int)Math.ceil(695*sfactor);
    public int s696 = (int)Math.ceil(696*sfactor);
    public int s697 = (int)Math.ceil(697*sfactor);
    public int s698 = (int)Math.ceil(698*sfactor);
    public int s699 = (int)Math.ceil(699*sfactor);
        
    public int s700 = (int)Math.ceil(700*sfactor);
    public int s701 = (int)Math.ceil(701*sfactor);
    public int s702 = (int)Math.ceil(702*sfactor);
    public int s703 = (int)Math.ceil(703*sfactor);
    public int s704 = (int)Math.ceil(704*sfactor);
    public int s705 = (int)Math.ceil(705*sfactor);
    public int s706 = (int)Math.ceil(706*sfactor);
    public int s707 = (int)Math.ceil(707*sfactor);
    public int s708 = (int)Math.ceil(708*sfactor);
    public int s709 = (int)Math.ceil(709*sfactor);
    public int s710 = (int)Math.ceil(710*sfactor);
    public int s711 = (int)Math.ceil(711*sfactor);
    public int s712 = (int)Math.ceil(712*sfactor);
    public int s713 = (int)Math.ceil(713*sfactor);
    public int s714 = (int)Math.ceil(714*sfactor);
    public int s715 = (int)Math.ceil(715*sfactor);
    public int s716 = (int)Math.ceil(716*sfactor);
    public int s717 = (int)Math.ceil(717*sfactor);
    public int s718 = (int)Math.ceil(718*sfactor);
    public int s719 = (int)Math.ceil(719*sfactor);
    public int s720 = (int)Math.ceil(720*sfactor);
    public int s721 = (int)Math.ceil(721*sfactor);
    public int s722 = (int)Math.ceil(722*sfactor);
    public int s723 = (int)Math.ceil(723*sfactor);
    public int s724 = (int)Math.ceil(724*sfactor);
    public int s725 = (int)Math.ceil(725*sfactor);
    public int s726 = (int)Math.ceil(726*sfactor);
    public int s727 = (int)Math.ceil(727*sfactor);
    public int s728 = (int)Math.ceil(728*sfactor);
    public int s729 = (int)Math.ceil(729*sfactor);
    public int s730 = (int)Math.ceil(730*sfactor);
    public int s731 = (int)Math.ceil(731*sfactor);
    public int s732 = (int)Math.ceil(732*sfactor);
    public int s733 = (int)Math.ceil(733*sfactor);
    public int s734 = (int)Math.ceil(734*sfactor);
    public int s735 = (int)Math.ceil(735*sfactor);
    public int s736 = (int)Math.ceil(736*sfactor);
    public int s737 = (int)Math.ceil(737*sfactor);
    public int s738 = (int)Math.ceil(738*sfactor);
    public int s739 = (int)Math.ceil(739*sfactor);
    public int s740 = (int)Math.ceil(740*sfactor);
    public int s741 = (int)Math.ceil(741*sfactor);
    public int s742 = (int)Math.ceil(742*sfactor);
    public int s743 = (int)Math.ceil(743*sfactor);
    public int s744 = (int)Math.ceil(744*sfactor);
    public int s745 = (int)Math.ceil(745*sfactor);
    public int s746 = (int)Math.ceil(746*sfactor);
    public int s747 = (int)Math.ceil(747*sfactor);
    public int s748 = (int)Math.ceil(748*sfactor);
    public int s749 = (int)Math.ceil(749*sfactor);
    public int s750 = (int)Math.ceil(750*sfactor);
    public int s751 = (int)Math.ceil(751*sfactor);
    public int s752 = (int)Math.ceil(752*sfactor);
    public int s753 = (int)Math.ceil(753*sfactor);
    public int s754 = (int)Math.ceil(754*sfactor);
    public int s755 = (int)Math.ceil(755*sfactor);
    public int s756 = (int)Math.ceil(756*sfactor);
    public int s757 = (int)Math.ceil(757*sfactor);
    public int s758 = (int)Math.ceil(758*sfactor);
    public int s759 = (int)Math.ceil(759*sfactor);
    public int s760 = (int)Math.ceil(760*sfactor);
    public int s761 = (int)Math.ceil(761*sfactor);
    public int s762 = (int)Math.ceil(762*sfactor);
    public int s763 = (int)Math.ceil(763*sfactor);
    public int s764 = (int)Math.ceil(764*sfactor);
    public int s765 = (int)Math.ceil(765*sfactor);
    public int s766 = (int)Math.ceil(766*sfactor);
    public int s767 = (int)Math.ceil(767*sfactor);
    public int s768 = (int)Math.ceil(768*sfactor);
    public int s769 = (int)Math.ceil(769*sfactor);
    public int s770 = (int)Math.ceil(770*sfactor);
    public int s771 = (int)Math.ceil(771*sfactor);
    public int s772 = (int)Math.ceil(772*sfactor);
    public int s773 = (int)Math.ceil(773*sfactor);
    public int s774 = (int)Math.ceil(774*sfactor);
    public int s775 = (int)Math.ceil(775*sfactor);
    public int s776 = (int)Math.ceil(776*sfactor);
    public int s777 = (int)Math.ceil(777*sfactor);
    public int s778 = (int)Math.ceil(778*sfactor);
    public int s779 = (int)Math.ceil(779*sfactor);
    public int s780 = (int)Math.ceil(780*sfactor);
    public int s781 = (int)Math.ceil(781*sfactor);
    public int s782 = (int)Math.ceil(782*sfactor);
    public int s783 = (int)Math.ceil(783*sfactor);
    public int s784 = (int)Math.ceil(784*sfactor);
    public int s785 = (int)Math.ceil(785*sfactor);
    public int s786 = (int)Math.ceil(786*sfactor);
    public int s787 = (int)Math.ceil(787*sfactor);
    public int s788 = (int)Math.ceil(788*sfactor);
    public int s789 = (int)Math.ceil(789*sfactor);
    public int s790 = (int)Math.ceil(790*sfactor);
    public int s791 = (int)Math.ceil(791*sfactor);
    public int s792 = (int)Math.ceil(792*sfactor);
    public int s793 = (int)Math.ceil(793*sfactor);
    public int s794 = (int)Math.ceil(794*sfactor);
    public int s795 = (int)Math.ceil(795*sfactor);
    public int s796 = (int)Math.ceil(796*sfactor);
    public int s797 = (int)Math.ceil(797*sfactor);
    public int s798 = (int)Math.ceil(798*sfactor);
    public int s799 = (int)Math.ceil(799*sfactor);
    
    public int s800 = (int)Math.ceil(800*sfactor);
    public int s801 = (int)Math.ceil(801*sfactor);
    public int s802 = (int)Math.ceil(802*sfactor);
    public int s803 = (int)Math.ceil(803*sfactor);
    public int s804 = (int)Math.ceil(804*sfactor);
    public int s805 = (int)Math.ceil(805*sfactor);
    public int s806 = (int)Math.ceil(806*sfactor);
    public int s807 = (int)Math.ceil(807*sfactor);
    public int s808 = (int)Math.ceil(808*sfactor);
    public int s809 = (int)Math.ceil(809*sfactor);
    public int s810 = (int)Math.ceil(810*sfactor);
    public int s811 = (int)Math.ceil(811*sfactor);
    public int s812 = (int)Math.ceil(812*sfactor);
    public int s813 = (int)Math.ceil(813*sfactor);
    public int s814 = (int)Math.ceil(814*sfactor);
    public int s815 = (int)Math.ceil(815*sfactor);
    public int s816 = (int)Math.ceil(816*sfactor);
    public int s817 = (int)Math.ceil(817*sfactor);
    public int s818 = (int)Math.ceil(818*sfactor);
    public int s819 = (int)Math.ceil(819*sfactor);
    public int s820 = (int)Math.ceil(820*sfactor);
    public int s821 = (int)Math.ceil(821*sfactor);
    public int s822 = (int)Math.ceil(822*sfactor);
    public int s823 = (int)Math.ceil(823*sfactor);
    public int s824 = (int)Math.ceil(824*sfactor);
    public int s825 = (int)Math.ceil(825*sfactor);
    public int s826 = (int)Math.ceil(826*sfactor);
    public int s827 = (int)Math.ceil(827*sfactor);
    public int s828 = (int)Math.ceil(828*sfactor);
    public int s829 = (int)Math.ceil(829*sfactor);
    public int s830 = (int)Math.ceil(830*sfactor);
    public int s831 = (int)Math.ceil(831*sfactor);
    public int s832 = (int)Math.ceil(832*sfactor);
    public int s833 = (int)Math.ceil(833*sfactor);
    public int s834 = (int)Math.ceil(834*sfactor);
    public int s835 = (int)Math.ceil(835*sfactor);
    public int s836 = (int)Math.ceil(836*sfactor);
    public int s837 = (int)Math.ceil(837*sfactor);
    public int s838 = (int)Math.ceil(838*sfactor);
    public int s839 = (int)Math.ceil(839*sfactor);
    public int s840 = (int)Math.ceil(840*sfactor);
    public int s841 = (int)Math.ceil(841*sfactor);
    public int s842 = (int)Math.ceil(842*sfactor);
    public int s843 = (int)Math.ceil(843*sfactor);
    public int s844 = (int)Math.ceil(844*sfactor);
    public int s845 = (int)Math.ceil(845*sfactor);
    public int s846 = (int)Math.ceil(846*sfactor);
    public int s847 = (int)Math.ceil(847*sfactor);
    public int s848 = (int)Math.ceil(848*sfactor);
    public int s849 = (int)Math.ceil(849*sfactor);
    public int s850 = (int)Math.ceil(850*sfactor);
    public int s851 = (int)Math.ceil(851*sfactor);
    public int s852 = (int)Math.ceil(852*sfactor);
    public int s853 = (int)Math.ceil(853*sfactor);
    public int s854 = (int)Math.ceil(854*sfactor);
    public int s855 = (int)Math.ceil(855*sfactor);
    public int s856 = (int)Math.ceil(856*sfactor);
    public int s857 = (int)Math.ceil(857*sfactor);
    public int s858 = (int)Math.ceil(858*sfactor);
    public int s859 = (int)Math.ceil(859*sfactor);
    public int s860 = (int)Math.ceil(860*sfactor);
    public int s861 = (int)Math.ceil(861*sfactor);
    public int s862 = (int)Math.ceil(862*sfactor);
    public int s863 = (int)Math.ceil(863*sfactor);
    public int s864 = (int)Math.ceil(864*sfactor);
    public int s865 = (int)Math.ceil(865*sfactor);
    public int s866 = (int)Math.ceil(866*sfactor);
    public int s867 = (int)Math.ceil(867*sfactor);
    public int s868 = (int)Math.ceil(868*sfactor);
    public int s869 = (int)Math.ceil(869*sfactor);
    public int s870 = (int)Math.ceil(870*sfactor);
    public int s871 = (int)Math.ceil(871*sfactor);
    public int s872 = (int)Math.ceil(872*sfactor);
    public int s873 = (int)Math.ceil(873*sfactor);
    public int s874 = (int)Math.ceil(874*sfactor);
    public int s875 = (int)Math.ceil(875*sfactor);
    public int s876 = (int)Math.ceil(876*sfactor);
    public int s877 = (int)Math.ceil(877*sfactor);
    public int s878 = (int)Math.ceil(878*sfactor);
    public int s879 = (int)Math.ceil(879*sfactor);
    public int s880 = (int)Math.ceil(880*sfactor);
    public int s881 = (int)Math.ceil(881*sfactor);
    public int s882 = (int)Math.ceil(882*sfactor);
    public int s883 = (int)Math.ceil(883*sfactor);
    public int s884 = (int)Math.ceil(884*sfactor);
    public int s885 = (int)Math.ceil(885*sfactor);
    public int s886 = (int)Math.ceil(886*sfactor);
    public int s887 = (int)Math.ceil(887*sfactor);
    public int s888 = (int)Math.ceil(888*sfactor);
    public int s889 = (int)Math.ceil(889*sfactor);
    public int s890 = (int)Math.ceil(890*sfactor);
    public int s891 = (int)Math.ceil(891*sfactor);
    public int s892 = (int)Math.ceil(892*sfactor);
    public int s893 = (int)Math.ceil(893*sfactor);
    public int s894 = (int)Math.ceil(894*sfactor);
    public int s895 = (int)Math.ceil(895*sfactor);
    public int s896 = (int)Math.ceil(896*sfactor);
    public int s897 = (int)Math.ceil(897*sfactor);
    public int s898 = (int)Math.ceil(898*sfactor);
    public int s899 = (int)Math.ceil(899*sfactor);
    
    public int s900 = (int)Math.ceil(900*sfactor);
    public int s901 = (int)Math.ceil(901*sfactor);
    public int s902 = (int)Math.ceil(902*sfactor);
    public int s903 = (int)Math.ceil(903*sfactor);
    public int s904 = (int)Math.ceil(904*sfactor);
    public int s905 = (int)Math.ceil(905*sfactor);
    public int s906 = (int)Math.ceil(906*sfactor);
    public int s907 = (int)Math.ceil(907*sfactor);
    public int s908 = (int)Math.ceil(908*sfactor);
    public int s909 = (int)Math.ceil(909*sfactor);
    public int s910 = (int)Math.ceil(910*sfactor);
    public int s911 = (int)Math.ceil(911*sfactor);
    public int s912 = (int)Math.ceil(912*sfactor);
    public int s913 = (int)Math.ceil(913*sfactor);
    public int s914 = (int)Math.ceil(914*sfactor);
    public int s915 = (int)Math.ceil(915*sfactor);
    public int s916 = (int)Math.ceil(916*sfactor);
    public int s917 = (int)Math.ceil(917*sfactor);
    public int s918 = (int)Math.ceil(918*sfactor);
    public int s919 = (int)Math.ceil(919*sfactor);
    public int s920 = (int)Math.ceil(920*sfactor);
    public int s921 = (int)Math.ceil(921*sfactor);
    public int s922 = (int)Math.ceil(922*sfactor);
    public int s923 = (int)Math.ceil(923*sfactor);
    public int s924 = (int)Math.ceil(924*sfactor);
    public int s925 = (int)Math.ceil(925*sfactor);
    public int s926 = (int)Math.ceil(926*sfactor);
    public int s927 = (int)Math.ceil(927*sfactor);
    public int s928 = (int)Math.ceil(928*sfactor);
    public int s929 = (int)Math.ceil(929*sfactor);
    public int s930 = (int)Math.ceil(930*sfactor);
    public int s931 = (int)Math.ceil(931*sfactor);
    public int s932 = (int)Math.ceil(932*sfactor);
    public int s933 = (int)Math.ceil(933*sfactor);
    public int s934 = (int)Math.ceil(934*sfactor);
    public int s935 = (int)Math.ceil(935*sfactor);
    public int s936 = (int)Math.ceil(936*sfactor);
    public int s937 = (int)Math.ceil(937*sfactor);
    public int s938 = (int)Math.ceil(938*sfactor);
    public int s939 = (int)Math.ceil(939*sfactor);
    public int s940 = (int)Math.ceil(940*sfactor);
    public int s941 = (int)Math.ceil(941*sfactor);
    public int s942 = (int)Math.ceil(942*sfactor);
    public int s943 = (int)Math.ceil(943*sfactor);
    public int s944 = (int)Math.ceil(944*sfactor);
    public int s945 = (int)Math.ceil(945*sfactor);
    public int s946 = (int)Math.ceil(946*sfactor);
    public int s947 = (int)Math.ceil(947*sfactor);
    public int s948 = (int)Math.ceil(948*sfactor);
    public int s949 = (int)Math.ceil(949*sfactor);
    public int s950 = (int)Math.ceil(950*sfactor);
    public int s951 = (int)Math.ceil(951*sfactor);
    public int s952 = (int)Math.ceil(952*sfactor);
    public int s953 = (int)Math.ceil(953*sfactor);
    public int s954 = (int)Math.ceil(954*sfactor);
    public int s955 = (int)Math.ceil(955*sfactor);
    public int s956 = (int)Math.ceil(956*sfactor);
    public int s957 = (int)Math.ceil(957*sfactor);
    public int s958 = (int)Math.ceil(958*sfactor);
    public int s959 = (int)Math.ceil(959*sfactor);
    public int s960 = (int)Math.ceil(960*sfactor);
    public int s961 = (int)Math.ceil(961*sfactor);
    public int s962 = (int)Math.ceil(962*sfactor);
    public int s963 = (int)Math.ceil(963*sfactor);
    public int s964 = (int)Math.ceil(964*sfactor);
    public int s965 = (int)Math.ceil(965*sfactor);
    public int s966 = (int)Math.ceil(966*sfactor);
    public int s967 = (int)Math.ceil(967*sfactor);
    public int s968 = (int)Math.ceil(968*sfactor);
    public int s969 = (int)Math.ceil(969*sfactor);
    public int s970 = (int)Math.ceil(970*sfactor);
    public int s971 = (int)Math.ceil(971*sfactor);
    public int s972 = (int)Math.ceil(972*sfactor);
    public int s973 = (int)Math.ceil(973*sfactor);
    public int s974 = (int)Math.ceil(974*sfactor);
    public int s975 = (int)Math.ceil(975*sfactor);
    public int s976 = (int)Math.ceil(976*sfactor);
    public int s977 = (int)Math.ceil(977*sfactor);
    public int s978 = (int)Math.ceil(978*sfactor);
    public int s979 = (int)Math.ceil(979*sfactor);
    public int s980 = (int)Math.ceil(980*sfactor);
    public int s981 = (int)Math.ceil(981*sfactor);
    public int s982 = (int)Math.ceil(982*sfactor);
    public int s983 = (int)Math.ceil(983*sfactor);
    public int s984 = (int)Math.ceil(984*sfactor);
    public int s985 = (int)Math.ceil(985*sfactor);
    public int s986 = (int)Math.ceil(986*sfactor);
    public int s987 = (int)Math.ceil(987*sfactor);
    public int s988 = (int)Math.ceil(988*sfactor);
    public int s989 = (int)Math.ceil(989*sfactor);
    public int s990 = (int)Math.ceil(990*sfactor);
    public int s991 = (int)Math.ceil(991*sfactor);
    public int s992 = (int)Math.ceil(992*sfactor);
    public int s993 = (int)Math.ceil(993*sfactor);
    public int s994 = (int)Math.ceil(994*sfactor);
    public int s995 = (int)Math.ceil(995*sfactor);
    public int s996 = (int)Math.ceil(996*sfactor);
    public int s997 = (int)Math.ceil(997*sfactor);
    public int s998 = (int)Math.ceil(998*sfactor);
    public int s999 = (int)Math.ceil(999*sfactor);
    
    public int s1000 = (int)Math.ceil(1000*sfactor);
    public int s1231 = (int)Math.ceil(1231*sfactor);
    public int s1237 = (int)Math.ceil(1237*sfactor);
    public int s100000 = (int)Math.ceil(100000*sfactor);

    //------------------------------------------------------------------------------ 
    // Look-up table for automatic adjustment of fonts
    //------------------------------------------------------------------------------
    public int font8 = (int)Math.floor(8*sfactor);
    public int font9 = (int)Math.floor(9*sfactor);
    public int font10 = (int)Math.floor(10*sfactor);
    public int font11 = (int)Math.floor(11*sfactor);
    public int font12 = (int)Math.floor(12*sfactor);
    public int font13 = (int)Math.floor(13*sfactor);
    public int font14 = (int)Math.floor(14*sfactor);
    public int font15 = (int)Math.floor(15*sfactor);
    public int font16 = (int)Math.floor(16*sfactor);
    public int font17 = (int)Math.floor(17*sfactor);
    public int font18 = (int)Math.floor(18*sfactor);
    public int font19 = (int)Math.floor(19*sfactor);
    public int font20 = (int)Math.floor(20*sfactor);
    public int font21 = (int)Math.floor(21*sfactor);
    public int font22 = (int)Math.floor(22*sfactor);
    public int font23 = (int)Math.floor(23*sfactor);
    public int font24 = (int)Math.floor(24*sfactor);
    public int font25 = (int)Math.floor(25*sfactor);
    public int font26 = (int)Math.floor(26*sfactor);
    public int font27 = (int)Math.floor(27*sfactor);
    public int font28 = (int)Math.floor(28*sfactor);
    public int font29 = (int)Math.floor(29*sfactor);
    public int font30 = (int)Math.floor(30*sfactor);
    public int font31 = (int)Math.floor(31*sfactor);
    public int font32 = (int)Math.floor(32*sfactor);
    public int font33 = (int)Math.floor(33*sfactor);
    public int font34 = (int)Math.floor(34*sfactor);
    public int font35 = (int)Math.floor(35*sfactor);
    public int font36 = (int)Math.floor(36*sfactor);
    public int font37 = (int)Math.floor(37*sfactor);
    public int font38 = (int)Math.floor(38*sfactor);
    public int font39 = (int)Math.floor(39*sfactor);
    public int font40 = (int)Math.floor(40*sfactor);
    //==========================================================================

    public void refresh_size(){
    if(sfactor < 1.3){
        ss2 = (int)Math.floor(2*sfactor);
    }
    else{
        ss2 = (int)Math.ceil(2*sfactor);
    }
    //----------------------------------------------------------------------
    s1 = (int)Math.ceil(1*sfactor);
    s2 = (int)Math.ceil(2*sfactor);
    s3 = (int)Math.ceil(3*sfactor);
    s4 = (int)Math.ceil(4*sfactor);
    s5 = (int)Math.ceil(5*sfactor);
    s6 = (int)Math.ceil(6*sfactor);
    s7 = (int)Math.ceil(7*sfactor);
    s8 = (int)Math.ceil(8*sfactor);
    s9 = (int)Math.ceil(9*sfactor);
    s10 = (int)Math.ceil(10*sfactor);
    s11 = (int)Math.ceil(11*sfactor);
    s12 = (int)Math.ceil(12*sfactor);
    s13 = (int)Math.ceil(13*sfactor);
    s14 = (int)Math.ceil(14*sfactor);
    s15 = (int)Math.ceil(15*sfactor);
    s16 = (int)Math.ceil(16*sfactor);
    s17 = (int)Math.ceil(17*sfactor);
    s18 = (int)Math.ceil(18*sfactor);
    s19 = (int)Math.ceil(19*sfactor);
    s20 = (int)Math.ceil(20*sfactor);
    s21 = (int)Math.ceil(21*sfactor);
    s22 = (int)Math.ceil(22*sfactor);
    s23 = (int)Math.ceil(23*sfactor);
    s24 = (int)Math.ceil(24*sfactor);
    s25 = (int)Math.ceil(25*sfactor);
    s26 = (int)Math.ceil(26*sfactor);
    s27 = (int)Math.ceil(27*sfactor);
    s28 = (int)Math.ceil(28*sfactor);
    s29 = (int)Math.ceil(29*sfactor);
    s30 = (int)Math.ceil(30*sfactor);
    s31 = (int)Math.ceil(31*sfactor);
    s32 = (int)Math.ceil(32*sfactor);
    s33 = (int)Math.ceil(33*sfactor);
    s34 = (int)Math.ceil(34*sfactor);
    s35 = (int)Math.ceil(35*sfactor);
    s36 = (int)Math.ceil(36*sfactor);
    s37 = (int)Math.ceil(37*sfactor);
    s38 = (int)Math.ceil(38*sfactor);
    s39 = (int)Math.ceil(39*sfactor);
    s40 = (int)Math.ceil(40*sfactor);
    s41 = (int)Math.ceil(41*sfactor);
    s42 = (int)Math.ceil(42*sfactor);
    s43 = (int)Math.ceil(43*sfactor);
    s44 = (int)Math.ceil(44*sfactor);
    s45 = (int)Math.ceil(45*sfactor);
    s46 = (int)Math.ceil(46*sfactor);
    s47 = (int)Math.ceil(47*sfactor);
    s48 = (int)Math.ceil(48*sfactor);
    s49 = (int)Math.ceil(49*sfactor);
    s50 = (int)Math.ceil(50*sfactor);
    s51 = (int)Math.ceil(51*sfactor);
    s52 = (int)Math.ceil(52*sfactor);
    s53 = (int)Math.ceil(53*sfactor);
    s54 = (int)Math.ceil(54*sfactor);
    s55 = (int)Math.ceil(55*sfactor);
    s56 = (int)Math.ceil(56*sfactor);
    s57 = (int)Math.ceil(57*sfactor);
    s58 = (int)Math.ceil(58*sfactor);
    s59 = (int)Math.ceil(59*sfactor);
    s60 = (int)Math.ceil(60*sfactor);
    s61 = (int)Math.ceil(61*sfactor);
    s62 = (int)Math.ceil(62*sfactor);
    s63 = (int)Math.ceil(63*sfactor);
    s64 = (int)Math.ceil(64*sfactor);
    s65 = (int)Math.ceil(65*sfactor);
    s66 = (int)Math.ceil(66*sfactor);
    s67 = (int)Math.ceil(67*sfactor);
    s68 = (int)Math.ceil(68*sfactor);
    s69 = (int)Math.ceil(69*sfactor);
    s70 = (int)Math.ceil(70*sfactor);
    s71 = (int)Math.ceil(71*sfactor);
    s72 = (int)Math.ceil(72*sfactor);
    s73 = (int)Math.ceil(73*sfactor);
    s74 = (int)Math.ceil(74*sfactor);
    s75 = (int)Math.ceil(75*sfactor);
    s76 = (int)Math.ceil(76*sfactor);
    s77 = (int)Math.ceil(77*sfactor);
    s78 = (int)Math.ceil(78*sfactor);
    s79 = (int)Math.ceil(79*sfactor);
    s80 = (int)Math.ceil(80*sfactor);
    s81 = (int)Math.ceil(81*sfactor);
    s82 = (int)Math.ceil(82*sfactor);
    s83 = (int)Math.ceil(83*sfactor);
    s84 = (int)Math.ceil(84*sfactor);
    s85 = (int)Math.ceil(85*sfactor);
    s86 = (int)Math.ceil(86*sfactor);
    s87 = (int)Math.ceil(87*sfactor);
    s88 = (int)Math.ceil(88*sfactor);
    s89 = (int)Math.ceil(89*sfactor);
    s90 = (int)Math.ceil(90*sfactor);
    s91 = (int)Math.ceil(91*sfactor);
    s92 = (int)Math.ceil(92*sfactor);
    s93 = (int)Math.ceil(93*sfactor);
    s94 = (int)Math.ceil(94*sfactor);
    s95 = (int)Math.ceil(95*sfactor);
    s96 = (int)Math.ceil(96*sfactor);
    s97 = (int)Math.ceil(97*sfactor);
    s98 = (int)Math.ceil(98*sfactor);
    s99 = (int)Math.ceil(99*sfactor);
    s100 = (int)Math.ceil(100*sfactor);
    s101 = (int)Math.ceil(101*sfactor);
    s102 = (int)Math.ceil(102*sfactor);
    s103 = (int)Math.ceil(103*sfactor);
    s104 = (int)Math.ceil(104*sfactor);
    s105 = (int)Math.ceil(105*sfactor);
    s106 = (int)Math.ceil(106*sfactor);
    s107 = (int)Math.ceil(107*sfactor);
    s108 = (int)Math.ceil(108*sfactor);
    s109 = (int)Math.ceil(109*sfactor);
    s110 = (int)Math.ceil(110*sfactor);
    s111 = (int)Math.ceil(111*sfactor);
    s112 = (int)Math.ceil(112*sfactor);
    s113 = (int)Math.ceil(113*sfactor);
    s114 = (int)Math.ceil(114*sfactor);
    s115 = (int)Math.ceil(115*sfactor);
    s116 = (int)Math.ceil(116*sfactor);
    s117 = (int)Math.ceil(117*sfactor);
    s118 = (int)Math.ceil(118*sfactor);
    s119 = (int)Math.ceil(119*sfactor);
    s120 = (int)Math.ceil(120*sfactor);
    s121 = (int)Math.ceil(121*sfactor);
    s122 = (int)Math.ceil(122*sfactor);
    s123 = (int)Math.ceil(123*sfactor);
    s124 = (int)Math.ceil(124*sfactor);
    s125 = (int)Math.ceil(125*sfactor);
    s126 = (int)Math.ceil(126*sfactor);
    s127 = (int)Math.ceil(127*sfactor);
    s128 = (int)Math.ceil(128*sfactor);
    s129 = (int)Math.ceil(129*sfactor);
    s130 = (int)Math.ceil(130*sfactor);
    s131 = (int)Math.ceil(131*sfactor);
    s132 = (int)Math.ceil(132*sfactor);
    s133 = (int)Math.ceil(133*sfactor);
    s134 = (int)Math.ceil(134*sfactor);
    s135 = (int)Math.ceil(135*sfactor);
    s136 = (int)Math.ceil(136*sfactor);
    s137 = (int)Math.ceil(137*sfactor);
    s138 = (int)Math.ceil(138*sfactor);
    s139 = (int)Math.ceil(139*sfactor);
    s140 = (int)Math.ceil(140*sfactor);
    s141 = (int)Math.ceil(141*sfactor);
    s142 = (int)Math.ceil(142*sfactor);
    s143 = (int)Math.ceil(143*sfactor);
    s144 = (int)Math.ceil(144*sfactor);
    s145 = (int)Math.ceil(145*sfactor);
    s146 = (int)Math.ceil(146*sfactor);
    s147 = (int)Math.ceil(147*sfactor);
    s148 = (int)Math.ceil(148*sfactor);
    s149 = (int)Math.ceil(149*sfactor);
    s150 = (int)Math.ceil(150*sfactor);
    s151 = (int)Math.ceil(151*sfactor);
    s152 = (int)Math.ceil(152*sfactor);
    s153 = (int)Math.ceil(153*sfactor);
    s154 = (int)Math.ceil(154*sfactor);
    s155 = (int)Math.ceil(155*sfactor);
    s156 = (int)Math.ceil(156*sfactor);
    s157 = (int)Math.ceil(157*sfactor);
    s158 = (int)Math.ceil(158*sfactor);
    s159 = (int)Math.ceil(159*sfactor);
    s160 = (int)Math.ceil(160*sfactor);
    s161 = (int)Math.ceil(161*sfactor);
    s162 = (int)Math.ceil(162*sfactor);
    s163 = (int)Math.ceil(163*sfactor);
    s164 = (int)Math.ceil(164*sfactor);
    s165 = (int)Math.ceil(165*sfactor);
    s166 = (int)Math.ceil(166*sfactor);
    s167 = (int)Math.ceil(167*sfactor);
    s168 = (int)Math.ceil(168*sfactor);
    s169 = (int)Math.ceil(169*sfactor);
    s170 = (int)Math.ceil(170*sfactor);
    s171 = (int)Math.ceil(171*sfactor);
    s172 = (int)Math.ceil(172*sfactor);
    s173 = (int)Math.ceil(173*sfactor);
    s174 = (int)Math.ceil(174*sfactor);
    s175 = (int)Math.ceil(175*sfactor);
    s176 = (int)Math.ceil(176*sfactor);
    s177 = (int)Math.ceil(177*sfactor);
    s178 = (int)Math.ceil(178*sfactor);
    s179 = (int)Math.ceil(179*sfactor);
    s180 = (int)Math.ceil(180*sfactor);
    s181 = (int)Math.ceil(181*sfactor);
    s182 = (int)Math.ceil(182*sfactor);
    s183 = (int)Math.ceil(183*sfactor);
    s184 = (int)Math.ceil(184*sfactor);
    s185 = (int)Math.ceil(185*sfactor);
    s186 = (int)Math.ceil(186*sfactor);
    s187 = (int)Math.ceil(187*sfactor);
    s188 = (int)Math.ceil(188*sfactor);
    s189 = (int)Math.ceil(189*sfactor);
    s190 = (int)Math.ceil(190*sfactor);
    s191 = (int)Math.ceil(191*sfactor);
    s192 = (int)Math.ceil(192*sfactor);
    s193 = (int)Math.ceil(193*sfactor);
    s194 = (int)Math.ceil(194*sfactor);
    s195 = (int)Math.ceil(195*sfactor);
    s196 = (int)Math.ceil(196*sfactor);
    s197 = (int)Math.ceil(197*sfactor);
    s198 = (int)Math.ceil(198*sfactor);
    s199 = (int)Math.ceil(199*sfactor);
    s200 = (int)Math.ceil(200*sfactor);
    s250 = (int)Math.ceil(250*sfactor);
    s300 = (int)Math.ceil(300*sfactor);
    s350 = (int)Math.ceil(350*sfactor);
    s400 = (int)Math.ceil(400*sfactor);
    s450 = (int)Math.ceil(450*sfactor);
    s500 = (int)Math.ceil(500*sfactor);
    s550 = (int)Math.ceil(550*sfactor);
    s600 = (int)Math.ceil(600*sfactor);
    s700 = (int)Math.ceil(700*sfactor);
    s800 = (int)Math.ceil(800*sfactor);
    s900 = (int)Math.ceil(900*sfactor);
    s1000 = (int)Math.ceil(1000*sfactor);
    //----------------------------------------------------------------------
    font8 = (int)Math.floor(8*sfactor);
    font9 = (int)Math.floor(9*sfactor);
    font10 = (int)Math.floor(10*sfactor);
    font11 = (int)Math.floor(11*sfactor);
    font12 = (int)Math.floor(12*sfactor);
    font13 = (int)Math.floor(13*sfactor);
    font14 = (int)Math.floor(14*sfactor);
    font15 = (int)Math.floor(15*sfactor);
    font16 = (int)Math.floor(16*sfactor);
    font17 = (int)Math.floor(17*sfactor);
    font18 = (int)Math.floor(18*sfactor);
    font19 = (int)Math.floor(19*sfactor);
    font20 = (int)Math.floor(20*sfactor);
    font21 = (int)Math.floor(21*sfactor);
    font22 = (int)Math.floor(22*sfactor);
    font23 = (int)Math.floor(23*sfactor);
    font24 = (int)Math.floor(24*sfactor);
    font25 = (int)Math.floor(25*sfactor);
    font26 = (int)Math.floor(26*sfactor);
    font27 = (int)Math.floor(27*sfactor);
    font28 = (int)Math.floor(28*sfactor);
    font29 = (int)Math.floor(29*sfactor);
    font30 = (int)Math.floor(30*sfactor);
    font31 = (int)Math.floor(31*sfactor);
    font32 = (int)Math.floor(32*sfactor);
    font33 = (int)Math.floor(33*sfactor);
    font34 = (int)Math.floor(34*sfactor);
    font35 = (int)Math.floor(35*sfactor);
    font36 = (int)Math.floor(36*sfactor);
    font37 = (int)Math.floor(37*sfactor);
    font38 = (int)Math.floor(38*sfactor);
    font39 = (int)Math.floor(39*sfactor);
    font40 = (int)Math.floor(40*sfactor);
}
 
    public NewGuide_State(){
    
	this_month = Greg.get(Calendar.MONTH);
	//System.out.println("  This is the month = "+this_month);
	today_week = Greg.get(Calendar.DAY_OF_WEEK);
	//System.out.println("  This is the day_week = "+today_week);
	this_year = Greg.get(Calendar.YEAR);
	this_hour = Greg.get(Calendar.HOUR_OF_DAY);
	//System.out.println("  This is the year = "+this_year);
	this_minute = Greg.get(Calendar.MINUTE);
	//System.out.println("  This is the minute = "+this_minute);
	today_month = Greg.get(Calendar.DAY_OF_MONTH);
	//System.out.println("  This is the day_month = "+today_month);
	today_year = Greg.get(Calendar.DAY_OF_YEAR);
	//System.out.println("  This is the day_year = "+today_year);
	this_zone = Greg.get(Calendar.ZONE_OFFSET);
	//System.out.println("  This is the zone_offset = "+this_zone/3600000);
	saving_time = Greg.get(Calendar.DST_OFFSET);
	//System.out.println("  This is the dst_offset = "+saving_time/3600000);
	
	wire_radius = 1.0e-5; //radius of dipole wire (wavelengths) 
	
	// Tables for Sin and Cos Integrals
	Nmaxint = 1001;
        ShowWhich = 1;
        
	Si = new double[Nmaxint+1];
	Ci = new double[Nmaxint+1];
	
	Si[0] = 0.0;
	Si[1] = 0.009999944444;
	Si[2] = 0.0199995556;
	Si[3] = 0.0299985;
	Si[4] = 0.0399964446;
	Si[5] = 0.0499930561;
	Si[6] = 0.0599880013;
	Si[7] = 0.0699809472;
	Si[8] = 0.079971561;
	Si[9] = 0.0899595098;
	Si[10] = 0.09994446111;
	Si[11] = 0.1099260824;
	Si[12] = 0.1199040415;
	Si[13] = 0.1298780063;
	Si[14] = 0.1398476452;
	Si[15] = 0.14981262265;
	Si[16] = 0.1597726191;
	Si[17] = 0.1697272921;
	Si[18] = 0.1796763147;
	Si[19] = 0.1896193569;
	Si[20] = 0.1995560885;
	Si[21] = 0.2094861802;
	Si[22] = 0.2194093027;
	Si[23] = 0.2293251273;
	Si[24] = 0.2392333258;
	Si[25] = 0.2491335703;
	Si[26] = 0.2590255335;
	Si[27] = 0.2689088885;
	Si[28] = 0.278783309;
	Si[29] = 0.2886484692;
	Si[30] = 0.2985040438;
	Si[31] = 0.3083497081;
	Si[32] = 0.3181851382;
	Si[33] = 0.3280100105;
	Si[34] = 0.3378240022;
	Si[35] = 0.347626791;
	Si[36] = 0.3574180555;
	Si[37] = 0.3671974749;
	Si[38] = 0.3769647291;
	Si[39] = 0.3867194986;
	Si[40] = 0.3964614648;
	Si[41] = 0.4061903098;
	Si[42] = 0.4159057166;
	Si[43] = 0.425607369;
	Si[44] = 0.4352949513;
	Si[45] = 0.444968149;
	Si[46] = 0.4546266484;
	Si[47] = 0.4642701365;
	Si[48] = 0.4738983013;
	Si[49] = 0.4835108319;
	Si[50] = 0.4931074180;
	Si[51] = 0.5026877506;
	Si[52] = 0.5122515212;
	Si[53] = 0.5217984228;
	Si[54] = 0.5313281492;
	Si[55] = 0.5408403951;
	Si[56] = 0.5408403951;
	Si[57] = 0.5503348563;
	Si[58] = 0.5692692137;
	Si[59] = 0.5787085069;
	Si[60] = 0.5881288096;
	Si[61] = 0.5975298233;
	Si[62] = 0.6069112503;
	Si[63] = 0.6162727944;
	Si[64] = 0.6256141603;
	Si[65] = 0.6349350541;
	Si[66] = 0.6442351831;
	Si[67] = 0.6535142557;
	Si[68] = 0.6627719817;
	Si[69] = 0.6720080721;
	Si[70] = 0.6812222391;
	Si[71] = 0.6904141965;
	Si[72] = 0.6995836590;
	Si[73] = 0.7087303430;
	Si[74] = 0.7178539660;
	Si[75] = 0.7269542472;
	Si[76] = 0.7360309067;
	Si[77] = 0.7450836664;
	Si[78] = 0.7541122494;
	Si[79] = 0.7631163804;
	Si[80] = 0.7720957855;
	Si[81] = 0.7810501921;
	Si[82] = 0.7899793293;
	Si[83] = 0.7988829277;
	Si[84] = 0.8077607191;
	Si[85] = 0.8166124372;
	Si[86] = 0.8254378170;
	Si[87] = 0.8342365953;
	Si[88] = 0.8430085102;
	Si[89] = 0.8517533016;
	Si[90] = 0.8604707107;
	Si[91] = 0.8691604808;
	Si[92] = 0.8778223564;
	Si[93] = 0.8864560839;
	Si[94] = 0.8950614112;
	Si[95] = 0.9036380880;
	Si[96] = 0.9121858656;
	Si[97] = 0.9207044970;
	Si[98] = 0.9291937370;
	Si[99] = 0.9376533420;
	Si[100] = 0.9460830704;
	
	Si[101] = 0.9544826820;
	Si[102] = 0.9628519387;
	Si[103] = 0.9711906039;
	Si[104] = 0.9794984431;
	Si[105] = 0.9877752233;
	Si[106] = 0.9960207135;
	Si[107] = 1.0042346846;
	Si[108] = 1.0124169091;
	Si[109] = 1.0205671617;
	Si[110] = 1.0286852187;
	Si[111] = 1.0367708583;
	Si[112] = 1.0448238608;
	Si[113] = 1.0528440082;
	Si[114] = 1.0608310845;
	Si[115] = 1.0687848757;
	Si[116] = 1.0767051696;
	Si[117] = 1.0845917561;
	Si[118] = 1.0924444270;
	Si[119] = 1.100262976;
	Si[120] = 1.1080471990;
	Si[121] = 1.1157968937;
	Si[122] = 1.1235118599;
	Si[123] = 1.1311918994;
	Si[124] = 1.1388368160;
	Si[125] = 1.1464464157;
	Si[126] = 1.1540205063;
	Si[127] = 1.1615588978;
	Si[128] = 1.1690614023;
	Si[129] = 1.1765278340;
	Si[130] = 1.1839580091;
	Si[131] = 1.1913517459;
	Si[132] = 1.1987088649;
	Si[133] = 1.2060291886;
	Si[134] = 1.2133125418;
	Si[135] = 1.2205587513;
	Si[136] = 1.2277676460;
	Si[137] = 1.2349390571;
	Si[138] = 1.2420728180;
	Si[139] = 1.2491687640;
	Si[140] = 1.2562267328;
	Si[141] = 1.2632465642;
	Si[142] = 1.2702281004;
	Si[143] = 1.2771711854;
	Si[144] = 1.2840756658;
	Si[145] = 1.2909413902;
	Si[146] = 1.2977682094;
	Si[147] = 1.3045559767;
	Si[148] = 1.3113045473;
	Si[149] = 1.3180137788;
	Si[150] = 1.3246835312;
	Si[151] = 1.3313136664;
	Si[152] = 1.3379040489;
	Si[153] = 1.3444545453;
	Si[154] = 1.3509650245;
	Si[155] = 1.3574353577;
	Si[156] = 1.3638654183;
	Si[157] = 1.3702550823;
	Si[158] = 1.3766042275;
	Si[159] = 1.3829127345;
	Si[160] = 1.3891804859;
	Si[161] = 1.3954073666;
	Si[162] = 1.4015932640;
	Si[163] = 1.4077380678;
	Si[164] = 1.4138416698;
	Si[165] = 1.4199039644;
	Si[166] = 1.4259248482;
	Si[167] = 1.4319042202;
	Si[168] = 1.4378419816;
	Si[169] = 1.4437380361;
	Si[170] = 1.4495922897;
	Si[171] = 1.4554046507;
	Si[172] = 1.4611750299;
	Si[173] = 1.4669033404;
	Si[174] = 1.4725894974;
	Si[175] = 1.4782334189;
	Si[176] = 1.4838350249;
	Si[177] = 1.4893942379;
	Si[178] = 1.4949109830;
	Si[179] = 1.5003851872;
	Si[180] = 1.5058167803;
	Si[181] = 1.5112056942;
	Si[182] = 1.5165518633;
	Si[183] = 1.5218552243;
	Si[184] = 1.5271157165;
	Si[185] = 1.5323332813;
	Si[186] = 1.5375078626;
	Si[187] = 1.5426394066;
	Si[188] = 1.5477278621;
	Si[189] = 1.5527731800;
	Si[190] = 1.5577753137;
	Si[191] = 1.5627342192;
	Si[192] = 1.5676498545;
	Si[193] = 1.5725221801;
	Si[194] = 1.5773511591;
	Si[195] = 1.5821367567;
	Si[196] = 1.5868789407;
	Si[197] = 1.5915776810;
	Si[198] = 1.5962329502;
	Si[199] = 1.6008447231;
	Si[200] = 1.6054129768;
	Si[210] = 1.6486986362;
	Si[220] = 1.6876248272;
	Si[230] = 1.7222074818;
	Si[240] = 1.7524855008;
	Si[250] = 1.7785201734;
	Si[260] = 1.8003944505;
	Si[270] = 1.8182120765;
	Si[280] = 1.8320965891;
	Si[290] = 1.8421901946;
	Si[300] = 1.8486525280;
	Si[310] = 1.8516593077;
	Si[320] = 1.8514008970;
	Si[330] = 1.8480807828;
	Si[340] = 1.8419139833;
	Si[350] = 1.8331253987;
	Si[360] = 1.8219481156;
	Si[370] = 1.8086216809;
	Si[380] = 1.7933903548;
	Si[390] = 1.7765013604;
	Si[400] = 1.7582031389;
	Si[410] = 1.7387436265;
	Si[420] = 1.7183685637;
	Si[430] = 1.6973198507;
	Si[440] = 1.6758339594;
	Si[450] = 1.6541404144;
	Si[460] = 1.6324603525;
	Si[470] = 1.6110051718;
	Si[480] = 1.5899752782;
	Si[490] = 1.5695589381;
	Si[500] = 1.5499312449;
	Si[510] = 1.5312532047;
	Si[520] = 1.5136709468;
	Si[530] = 1.4973150636;
	Si[540] = 1.4823000826;
	Si[550] = 1.4687240727;
	Si[560] = 1.4566683847;
	Si[570] = 1.4461975285;
	Si[580] = 1.4373591823;
	Si[590] = 1.4301843341;
	Si[600] = 1.4246875513;
	Si[610] = 1.4208673734;
	Si[620] = 1.4187068241;
	Si[630] = 1.4181740348;
	Si[640] = 1.4192229740;
	Si[650] = 1.4217942744;
	Si[660] = 1.4258161486;
	Si[670] = 1.4312053853;
	Si[680] = 1.4378684161;
	Si[690] = 1.4457024427;
	Si[700] = 1.4545966142;
	Si[710] = 1.4644332441;
	Si[720] = 1.4750890554;
	Si[730] = 1.4864364451;
	Si[740] = 1.4983447533;
	Si[750] = 1.5106815309;
	Si[760] = 1.5233137914;
	Si[770] = 1.5361092381;
	Si[780] = 1.5489374581;
	Si[790] = 1.5616710702;
	Si[800] = 1.5741868217;
	Si[810] = 1.5863666225;
	Si[820] = 1.5980985106;
	Si[830] = 1.6092775419;
	Si[840] = 1.6198065968;
	Si[850] = 1.6295970996;
	Si[860] = 1.6385696454;
	Si[870] = 1.6466545309;
	Si[880] = 1.6537921861;
	Si[890] = 1.6599335052;
	Si[900] = 1.6650400758;
	Si[910] = 1.6650400758;
	Si[920] = 1.6720494480;
	Si[930] = 1.6739295283;
	Si[940] = 1.6747291725;
	Si[950] = 1.6744633423;
	Si[960] = 1.6731569801;
	Si[970] = 1.6708445697;
	Si[980] = 1.6675696169;
	Si[990] = 1.6633840566;
	Si[1000] = 1.6583475942;
	
	Ci[0] = -1.0e-230;
	Ci[1] = -4.027979521;
	Ci[2] = -3.3349073389;
	Ci[3] = -2.929567224;
	Ci[4] = -2.6420601333;
	Ci[5] = -2.4191415436;
	Ci[6] = -2.2370949169;
	Ci[7] = -2.083269122;
	Ci[8] = -1.9501125528;
	Ci[9] = -1.8327542604;
	Ci[10] = -1.7278683867;
	Ci[11] = -1.6330827236;
	Ci[12] = -1.546645712;
	Ci[13] = -1.4672271896;
	Ci[14] = -1.3937931915;
	Ci[15] = -1.3255240492;
	Ci[16] = -1.2617589761;
	Ci[17] = -1.2019574825;
	Ci[18] = -1.1456718361;
	Ci[19] = -1.0925269777;
	Ci[20] = -1.0422055957;
	Ci[21] = -0.9944368448;
	Ci[22] = -0.9489876923;
	Ci[23] = -0.9056561893;
	Ci[24] = -0.8642661749;
	Ci[25] = -0.8246630626;
	Ci[26] = -0.7867104528;
	Ci[27] = -0.7502873862;
	Ci[28] = -0.7152860957;
	Ci[29] = -0.6816101535;
	Ci[30] = -0.649172933;
	Ci[31] = -0.6178963217;
	Ci[32] = -0.5877096398;
	Ci[33] = -0.5585487247;
	Ci[34] = -0.4766799229;
	Ci[35] = -0.4510873931;
	Ci[36] = -0.4766611256;
	Ci[37] = -0.4510669762;
	Ci[38] = -0.4262518553;
	Ci[39] = -0.4021777044;
	Ci[40] = -0.3788093464;
	Ci[41] = -0.3561142014;
	Ci[42] = -0.3340620354;
	Ci[43] = -0.31262474;
	Ci[44] = -0.2917761359;
	Ci[45] = -0.2714917998;
	Ci[46] = -0.2517489099;
	Ci[47] = -0.2325261071;
	Ci[48] = -0.2138033726;
	Ci[49] = -0.1955619166;
	Ci[50] = -0.1777840788;
	Ci[51] = -0.1604532390;
	Ci[52] = -0.1435537358;
	Ci[53] = -0.1270707938;
	Ci[54] = -0.1109904567;
	Ci[55] = -0.0952995274;
	Ci[56] = -0.0799855129;
	Ci[57] = -0.0650365744;
	Ci[58] = -0.0504414815;
	Ci[59] = -0.0361895707;
	Ci[60] = -0.022270707;
	Ci[61] = -0.0086752486;
	Ci[62] = 0.0046059849;
	Ci[63] = 0.0175817424;
	Ci[64] = 0.0302603686;
	Ci[65] = 0.0426498293;
	Ci[66] = 0.0547577343;
	Ci[67] = 0.0665913594;
	Ci[68] = 0.0781576659;
	Ci[69] = 0.0894633195;
	Ci[70] = 0.1005147070;
	Ci[71] = 0.1113179525;
	Ci[72] = 0.1218789322;
	Ci[73] = 0.1322032879;
	Ci[74] = 0.1422964404;
	Ci[75] = 0.1521636010;
	Ci[76] = 0.1618097827;
	Ci[77] = 0.1712398110;
	Ci[78] = 0.1804583335;
	Ci[79] = 0.1894698290;
	Ci[80] = 0.1982786160;
	Ci[81] = 0.2068888610;
	Ci[82] = 0.2153045859;
	Ci[83] = 0.2235296752;
	Ci[84] = 0.2315678824;
	Ci[85] = 0.2394228368;
	Ci[86] = 0.2470980486;
	Ci[87] = 0.2545969153;
	Ci[88] = 0.2619227264;
	Ci[89] = 0.2690786687;
	Ci[90] = 0.2760678305;
	Ci[91] = 0.2828932065;
	Ci[92] = 0.2895577018;
	Ci[93] = 0.2960641358;
	Ci[94] = 0.3024152458;
	Ci[95] = 0.3086136908;
	Ci[96] = 0.3146620547;
	Ci[97] = 0.3205628495;
	Ci[98] = 0.3263185183;
	Ci[99] = 0.3319314382;
	Ci[100] = 0.3374039229;
	
	Ci[101] = 0.3427382254;
	Ci[102] = 0.3479365405;
	Ci[103] = 0.3530010067;
	Ci[104] = 0.3579337091;
	Ci[105] = 0.3627366810;
	Ci[106] = 0.3674119060;
	Ci[107] = 0.3719613201;
	Ci[108] = 0.3763868132;
	Ci[109] = 0.3806902312;
	Ci[110] = 0.3848733774;
	Ci[111] = 0.3889380142;
	Ci[112] = 0.3928858645;
	Ci[113] = 0.3967186134;
	Ci[114] = 0.4004379090;
	Ci[115] = 0.4040453647;
	Ci[116] = 0.4075425593;
	Ci[117] = 0.4109310390;
	Ci[118] = 0.4142123185;
	Ci[119] = 0.4173878816;
	Ci[120] = 0.4204591829;
	Ci[121] = 0.4234276482;
	Ci[122] = 0.4262946760;
	Ci[123] = 0.4290616379;
	Ci[124] = 0.4317298802;
	Ci[125] = 0.4343007240;
	Ci[126] = 0.4367754665;
	Ci[127] = 0.4391553815;
	Ci[128] = 0.4414417205;
	Ci[129] = 0.4436357130;
	Ci[130] = 0.4457385675;
	Ci[131] = 0.4477514723;
	Ci[132] = 0.4496755955;
	Ci[133] = 0.4515120863;
	Ci[134] = 0.4532620753;
	Ci[135] = 0.4549266752;
	Ci[136] = 0.4565069811;
	Ci[137] = 0.4580040711;
	Ci[138] = 0.4594190071;
	Ci[139] = 0.4607528349;
	Ci[140] = 0.4620065851;
	Ci[141] = 0.4631812730;
	Ci[142] = 0.4642778995;
	Ci[143] = 0.4652974513;
	Ci[144] = 0.4662409014;
	Ci[145] = 0.4671092094;
	Ci[146] = 0.4679033219;
	Ci[147] = 0.4686241732;
	Ci[148] = 0.4692726848;
	Ci[149] = 0.4698497667;
	Ci[150] = 0.4703563172;
	Ci[151] = 0.4707932232;
	Ci[152] = 0.4711613608;
	Ci[153] = 0.4714615952;
	Ci[154] = 0.4716947815;
	Ci[155] = 0.4718617642;
	Ci[156] = 0.4719633785;
	Ci[157] = 0.4720004495;
	Ci[158] = 0.4719737932;
	Ci[159] = 0.4718842164;
	Ci[160] = 0.4717325169;
	Ci[161] = 0.4715194840;
	Ci[162] = 0.4712458984;
	Ci[163] = 0.4709125325;
	Ci[164] = 0.4705201507;
	Ci[165] = 0.4700695096;
	Ci[166] = 0.4695613580;
	Ci[167] = 0.4689964372;
	Ci[168] = 0.4683754812;
	Ci[169] = 0.4676992169;
	Ci[170] = 0.4669683642;
	Ci[171] = 0.4661836359;
	Ci[172] = 0.4653457385;
	Ci[173] = 0.4644553716;
	Ci[174] = 0.4635132286;
	Ci[175] = 0.4625199967;
	Ci[176] = 0.4614763568;
	Ci[177] = 0.4603829839;
	Ci[178] = 0.4592405471;
	Ci[179] = 0.4580497097;
	Ci[180] = 0.4568111294;
	Ci[181] = 0.4555254585;
	Ci[182] = 0.4541933436;
	Ci[183] = 0.4528154262;
	Ci[184] = 0.4513923427;
	Ci[185] = 0.4499247241;
	Ci[186] = 0.4484131966;
	Ci[187] = 0.4468583813;
	Ci[188] = 0.4452608948;
	Ci[189] = 0.4436213486;
	Ci[190] = 0.4419403497;
	Ci[191] = 0.4402185005;
	Ci[192] = 0.4384563991;
	Ci[193] = 0.4366546388;
	Ci[194] = 0.4348138088;
	Ci[195] = 0.4329344941;
	Ci[196] = 0.4310172752;
	Ci[197] = 0.4290627288;
	Ci[198] = 0.4270714273;
	Ci[199] = 0.4250439391;
	Ci[200] = 0.4229808288;
	Ci[210] = 0.4005119878;
	Ci[220] = 0.3750745990;
	Ci[230] = 0.3471756175;
	Ci[240] = 0.3172916174;
	Ci[250] = 0.2858711964;
	Ci[260] = 0.2533366161;
	Ci[270] = 0.2200848786;
	Ci[280] = 0.1864883896;
	Ci[290] = 0.1528953242;
	Ci[300] = 0.1196297860;
	Ci[310] = 0.0869918312;
	Ci[320] = 0.0552574117;
	Ci[330] = 0.0246782846;
	Ci[340] = -0.0045180779;
	Ci[350] = -0.0321285485;
	Ci[360] = -0.0579743519;
	Ci[370] = -0.0819010013;
	Ci[380] = -0.1037781504;
	Ci[390] = -0.1234993492;
	Ci[400] = -0.1409816979;
	Ci[410] = -0.1561653918;
	Ci[420] = -0.1690131568;
	Ci[430] = -0.1795095725;
	Ci[440] = -0.1876602868;
	Ci[450] = -0.1934911221;
	Ci[460] = -0.1970470797;
	Ci[470] = -0.1983912468;
	Ci[480] = -0.1976036133;
	Ci[490] = -0.1947798060;
	Ci[500] = -0.1900297497;
	Ci[510] = -0.1834762632;
	Ci[520] = -0.1752536023;
	Ci[530] = -0.1655059586;
	Ci[540] = -0.1543859262;
	Ci[550] = -0.1420529476;
	Ci[560] = -0.1286717494;
	Ci[570] = -0.1144107808;
	Ci[580] = -0.0994406647;
	Ci[590] = -0.0839326741;
	Ci[600] = -0.0680572439;
	Ci[610] = -0.0519825290;
	Ci[620] = -0.0358730193;
	Ci[630] = -0.0198882206;
	Ci[640] = -0.0041814110;
	Ci[650] = 0.0111015195;
	Ci[660] = 0.0258231381;
	Ci[670] = 0.0398554400;
	Ci[680] = 0.0530807167;
	Ci[690] = 0.0653923140;
	Ci[700] = 0.0766952785;
	Ci[710] = 0.0869068881;
	Ci[720] = 0.0959570643;
	Ci[730] = 0.1037886664;
	Ci[740] = 0.1103576658;
	Ci[750] = 0.1156332032;
	Ci[760] = 0.1195975293;
	Ci[770] = 0.1222458319;
	Ci[780] = 0.1235859542;
	Ci[790] = 0.1236380071;
	Ci[800] = 0.1224338825;
	Ci[810] = 0.1200166733;
	Ci[820] = 0.1164400055;
	Ci[830] = 0.1117672931;
	Ci[840] = 0.1060709196;
	Ci[850] = 0.0994313586;
	Ci[860] = 0.0919362396;
	Ci[870] = 0.0836793696;
	Ci[880] = 0.0747597196;
	Ci[890] = 0.0652803850;
	Ci[900] = 0.0553475313;
	Ci[910] = 0.0450693325;
	Ci[920] = 0.0345549134;
	Ci[930] = 0.0239133045;
	Ci[940] = 0.0132524187;
	Ci[950] = 0.0026780588;
	Ci[960] = -0.0077070361;
	Ci[970] = -0.0178040977;
	Ci[980] = -0.0275191811;
	Ci[990] = -0.0367639563;
	Ci[1000] = -0.0454564330;
	
	//coefficient for rational approximation of Sin and Cos integrals
	FA1 = 38.027264;    FA2 = 265.187033;	FA3 = 335.677320;   FA4 = 38.102495;
	FB1 = 40.021433;    FB2 = 322.624911;	FB3 = 570.236280;   FB4 = 157.105423;
	
	GA1 = 42.242855;    GA2 = 302.757865;	GA3 = 352.018498;   GA4 = 21.821899;
	GB1 = 48.196927;    GB2 = 482.485984;	GB3 = 1114.978885;  GB4 = 449.690326; 
    
	//new initialization for antenna
	
	    theta_angle = 45.0;//degrees
	    theta_maximum = 180.0;
	    theta_minimum = 0.0;
	    phi_angle = 45.0;//degrees
	    phi_maximum = 360.0;
	    phi_minimum = 0.0;
	    point_distance = 10.0; //wavelength
	    distance_minimum = 0;//      "
	    distance_maximum = 1000;//   "
	    current_magnitude = currentin; //Amperes
	    frequency = 1.0E9;//Hertz
	    
            area_front = distance * distance * 4.0 * Math.PI; // Area of spherical front
            
	    Numpoints = 1001;
	    a = 0.5; // wavelengths of antenna length
	    DipoleLength_lambda = a;//lambda
	
	    a_minimum = 0.0;
	    a_maximum = 5.0;// wavelengths
	    DeltaLength = (a_maximum - a_minimum)/(Numpoints - 1);
	    
	    wavelength = 1.0/Math.sqrt(epsilon0 * mu0)/frequency;//meters
	    
	    DipoleLength_meters = DipoleLength_lambda * wavelength;
	    Directivity = 0.0;
	    TotalPower = 0.0;
	    RadiationResistance = 0.0;
	    InputResistance = 0.0;
	    
	    DVector = new double[Numpoints];
	    RVector = new double[Numpoints];
	    RinVector = new double[Numpoints];
	    XVector = new double[Numpoints];
	    XinVector = new double[Numpoints];
	    leng = new double[Numpoints];
	    
	//------------------------------------------------------------------
	
	x_polar = new double[361];
	for(int i=0; i<361; i++){
	    x_polar[i] = i;
	}

	currentNormalization = 1.0;
		
	epsilon_r = 1.0;
	mu_r = 1.0;
	
	angle_factor = Math.PI/180.0;
	
	medium_impedance = Math.sqrt(mu0*mu_r/(epsilon0*epsilon_r));
	frequency = 1.0E9;
	frequency_minimum = 0.0;
	frequency_maximum = 5.0E9;
	angular_frequency = 2.0 * Math.PI * frequency;
	
	currentin = 1.0; //Amperes
	currentin_maximum = 10.0; //Amperes
	currentin_minimum = 0.0;  //Amperes
	
	lambda_0 = 1.0/Math.sqrt(epsilon0*mu0)/frequency;
	lambda = lambda_0;
	ZeroC = new Complex(0.0,0.0);
	light_velocity = 1.0/(Math.sqrt(epsilon0*epsilon_r*mu0*mu_r));
	light_velocity0 = 1.0/(Math.sqrt(epsilon0*mu0));
	
	Nsections = 40;
	NsectionsLarge = 501;
	
	phi = Math.PI/2.0;
	
	inputpanelflag = true;
	Deltaf = (frequency_maximum - frequency_minimum)/(Numpoints - 1);
	
	Is_theta = true;
	Is_radius = false;
	IsPolar = false;
	IsDirectivity = true;
	IsRad = false;
	IsRin = false;
	IsXrad = false;
	IsXin = false;
	
        need_update = false;
        
	microFlag2 = false; microFlag3 = false; microFlag4 = false; microFlag5 = false; microFlag6 = false;
	microFlag7 = false; microFlag8 = false; microFlag9 = false; microFlag10 = false; microFlag11 = false; microFlag12 = false;
	microFlag13 = false; microFlag14 = false;
	
	scan_coefficients();
	ignition();
    }
    
    public void ignition(){
        String lcOSName = System.getProperty("os.name").toLowerCase();
        boolean MAC_OS_X = lcOSName.startsWith("mac os x");
        boolean WINDOWS = lcOSName.startsWith("windows");
        if(WINDOWS){
            IsWindows = true;
            IsMac = false;
        }
        else{
            IsWindows = false;
        }
        if(MAC_OS_X){
            IsMac = true;
            IsWindows = false;
        }
        else{
            IsMac = false;
        }
        //System.out.println(lcOSName);
        
	Complex factor1, factor2, complex1, complex2, complex3, complex4, complex5,
		complex6, complex7, complex8, complex9, complex10;
	int Lratio;
	double seno;
	
	current_magnitude = currentin;
	
	wavelength = 1.0/Math.sqrt(epsilon0 * mu0 * epsilon_r * mu_r)/frequency;//meters
	DipoleLength_lambda = a;//lambda
	DipoleLength_meters = DipoleLength_lambda * wavelength;
	Lratio = (int)(100*DipoleLength_meters/wavelength)+1;
	if(Lratio < 51){Lratio = 51;}
	Nsections = Lratio;
	//NsectionsLarge = Lratio*10+1;
	NsectionsLarge = 501;
	DeltaZ = DipoleLength_meters / Nsections;
	DeltaLength = (a_maximum - a_minimum)/(Numpoints - 1);
	
	distance = point_distance*wavelength;//meters
	current = new Complex[Nsections];
	currentLarge = new Complex[NsectionsLarge];
	area_front = distance * distance * 4.0 * Math.PI;
	etheta = new Complex[361];
	ethetaM = new double[361];
	eradM = new double[361];
	ephigenM = new double[361];
	erad   = new Complex[361];
	ex   = new double[361];
	ey   = new double[361];
	ez   = new double[361];
	
	ephi = new Complex[361];
	ephiM = new double[361];
	ephiradM = new double[361];
	ephiphiM = new double[361];
	ephirad   = new Complex[361];
	ephix   = new double[361];
	ephiy   = new double[361];
	ephiz   = new double[361];
	
	hphigen = new Complex[361];
	hthetaM = new double[361];
	hradM = new double[361];
	hphigenM = new double[361];
	hx   = new double[361];
	hy   = new double[361];
	hz   = new double[361];
	
	hphi = new Complex[361];
	hphiM = new double[361];
	hphiradM = new double[361];
	hphithetaM = new double[361];
	hphiM = new double[361];
	hphix   = new double[361];
	hphiy   = new double[361];
	hphiz   = new double[361];
	
	zpos = new double[Nsections];
	zposLarge = new double[NsectionsLarge];
	zLambda = new double[NsectionsLarge];
	currentM = new double[Nsections];
	currentMLarge = new double[NsectionsLarge];
	
	//vector of currents along the line
	current = new Complex [Nsections];
	dz = DipoleLength_meters / Nsections;
	
	scanCurrent();
	
	if(DipoleLength_lambda<0.5){
		currentscale=1.0/Math.sin(Math.PI*(DipoleLength_lambda));
	}
	else{
		currentscale=1.0;
	}
	
	angular_frequency = 2.0 * Math.PI * frequency;
	light_velocity = 1.0/(Math.sqrt(epsilon0*epsilon_r*mu0*mu_r));
	light_velocity0 = 1.0/(Math.sqrt(epsilon0*mu0));
	lambda_0 = light_velocity0/frequency;
	lambda = light_velocity/frequency;
	
	beta = 2.0*Math.PI/lambda;
	medium_impedance = Math.sqrt(mu0*mu_r/(epsilon0*epsilon_r));
		
	// Obtain Directivity, Radiation Resistance and Time-Average Power  (Far Field assumption)
	double Func[], Func2[], Func2Max, angle, betafactor, FuncInt, Delta,theta_angle_radians;
	int imax, Nmax;
	Nmax = 1800;
	Func   = new double[Nmax+1];
	Func2   = new double[Nmax+1];
	Func2Max = 0.0;
	imax = 0;
	Delta = 0.5*Math.PI/Nmax;
	betafactor = beta*DipoleLength_meters*0.5;
	theta_angle_radians = theta_angle*Math.PI/180.0;
	Func[0] = 0.0;
	Func2[0] = 0.0;
	//Func[Nmax] = 0.0;
	//Func2[Nmax] = 0.0;
	
	if(theta_angle == 0.0 || theta_angle == 180.0){
	    Funcfar = 0.0;
	}
	else{
	    Funcfar = (Math.cos(betafactor*Math.cos(theta_angle_radians))-Math.cos(betafactor))/Math.sin(theta_angle_radians);
	}
	
	Hfar = currentin*currentscale * Funcfar / (2.0 *Math.PI*distance);
	Efar = medium_impedance * Hfar;
	Pfar = 0.5 * Hfar * Efar;
	//if(point_distance == distance/wavelength){
	  //  EfarC = new Complex(0.0,Efar*Math.cos(2.0*Math.PI*point_distance));
	  //  HfarC = new Complex(0.0,Hfar*Math.cos(2.0*Math.PI*point_distance));
	//}
	//else
	{
	    EfarC = new Complex(Efar*Math.sin(2.0*Math.PI*point_distance),Efar*Math.cos(2.0*Math.PI*point_distance));
	    HfarC = new Complex(Hfar*Math.sin(2.0*Math.PI*point_distance),Hfar*Math.cos(2.0*Math.PI*point_distance));
	}
						  
	Func2Max=0.0;
	TotalPower=0.0;
	
	if(DipoleLength_lambda >= 1.0e-4){
	    for(int i=1;i<Nmax;i++){
		angle=i*Math.PI/Nmax;
		
		{
		   Func2[i]= (medium_impedance*current_magnitude*current_magnitude*currentscale*currentscale*
		   Math.pow((Math.cos(Math.PI*DipoleLength_lambda*Math.cos(angle))-Math.cos(Math.PI*DipoleLength_lambda))/Math.sin(angle),2.0)
		   /(8.0*Math.PI*Math.PI));
		   if(Func2Max<Math.abs(Func2[i])){Func2Max=Math.abs(Func2[i]);}
		   TotalPower+=(float)(Func2[i]*Math.sin(angle)*2.0*Math.PI*Math.PI/Nmax);
		}
	    }
	
	    Directivity=(float)(4.0*Math.PI*Func2Max/TotalPower);
	    RadiationResistance = TotalPower * 2 /(current_magnitude * current_magnitude);
	}
	else{
	    Directivity=1.5;
	    TotalPower = (4.0*Math.PI*medium_impedance/3)*Math.pow(current_magnitude*DipoleLength_lambda*0.25,2.0); 
	    RadiationResistance = 2.0*TotalPower/Math.pow(current_magnitude,2);
	}
	
	seno = Math.pow(Math.sin(Math.PI*DipoleLength_lambda),2);
	
	if((int)DipoleLength_lambda == DipoleLength_lambda){
	    InputResistance = 2.0E230;
	}
	else{
	    if(DipoleLength_lambda <= 0.5){
		InputResistance = RadiationResistance;
	    }
	    else{
		InputResistance = RadiationResistance/seno;
	    }
	}
	
	int indice;
	double var1, var2, var3, Sint1, Sint2, Cint1, Cint2, Cint3, seg1, seg2, seg3 , radius;
	double v8, v6, v4, v2, fut, gut;
	radius = wire_radius;
	if(DipoleLength_lambda == 0.0){
	    RadiationReactance = 0.0;
	}	
	else{
	    indice = 0;
	    Sint1 = 0.0; Sint2 = 0.0; Cint1 = 0.0; Cint2 = 0.0; Cint3 = 0.0;
	    var1 = 2.0*Math.PI*DipoleLength_lambda;
	    var2 = 4.0*Math.PI*DipoleLength_lambda;
	    var3 = 4.0*Math.PI*radius*radius/DipoleLength_lambda;
	    seg1 = 0.0; seg2 = 0.0 ; seg3 = 0.0;
	    	
	    if(var1 < 2.0 && var1>0.0){
		indice = (int)(var1 *100.0); 
		seg1 = (var1*100.0 - indice);
		Sint1 = (1-seg1)*Si[indice] + seg1*Si[indice+1];
		Cint1 = (1-seg1)*Ci[indice] + seg1*Ci[indice+1];
	    }
	    else if(var1 >= 2.0 && var1 < 10.0){
		indice = 10*(int)(var1 *10.0); 
		seg1 = (var1*100.0 - indice)/10;
		Sint1 = (1-seg1)*Si[indice] + seg1*Si[indice+10];
		Cint1 = (1-seg1)*Ci[indice] + seg1*Ci[indice+10];
	    }
	    else{
		v2 = var1 * var1;
		v4 = v2 * v2;
		v6 = v2 * v4;
		v8 = v4 * v4;
		
		fut = (v8 + FA1 * v6 + FA2 * v4 + FA3 * v2 + FA4)/(var1 * (v8 + FB1 * v6 + FB2 * v4 + FB3 * v2 + FB4));
		gut = (v8 + GA1 * v6 + GA2 * v4 + GA3 * v2 + GA4)/(var1 * (v8 + GB1 * v6 + GB2 * v4 + GB3 * v2 + GB4));
		Sint1 = 0.5*Math.PI - fut * Math.cos(var1) - gut * Math.sin(var1);
		Cint1 = fut * Math.sin(var1) - gut * Math.cos(var1);
	    }
	    
	    
	
	    if(var2 < 2.0 && var2>0.0){
		indice = (int)(var2 *100.0); 
		seg2 = (var2*100.0 - indice);
		Sint2 = (1-seg2)*Si[indice] + seg2*Si[indice+1];
		Cint2 = (1-seg2)*Ci[indice] + seg2*Ci[indice+1];
	    }
	    else if(var2 >= 2.0 && var2 < 10.0){
		indice = 10*(int)(var2 *10.0); 
		seg2 = (var2*100.0 - indice)/10;
		Sint2 = (1-seg2)*Si[indice] + seg2*Si[indice+10];
		Cint2 = (1-seg2)*Ci[indice] + seg2*Ci[indice+10];
	    }
	    else{
		v2 = var2 * var2;
		v4 = v2 * v2;
		v6 = v2 * v4;
		v8 = v4 * v4;
		
		fut = (v8 + FA1 * v6 + FA2 * v4 + FA3 * v2 + FA4)/(var1 * (v8 + FB1 * v6 + FB2 * v4 + FB3 * v2 + FB4));
		gut = (v8 + GA1 * v6 + GA2 * v4 + GA3 * v2 + GA4)/(var1 * (v8 + GB1 * v6 + GB2 * v4 + GB3 * v2 + GB4));
		Sint2 = 0.5*Math.PI - fut * Math.cos(var2) - gut * Math.sin(var2);
		Cint2 = fut * Math.sin(var2) - gut * Math.cos(var2);
		
	    }
	
	    if(var3 < 0.1 && var3>0.0){
		Cint3 = -0.25*var3*var3 + Math.log(var3)+0.5772156649;
	    }
	    else if(var3 >= 0.1 && var3 < 2.0){
		indice = (int)(var3 *100.0); 
		seg3 = (var3*100.0 - indice);
		Cint3 = (1-seg3)*Ci[indice] + seg3*Ci[indice+1];
	    }
	    else if(var3 >= 2.0 && var3 < 10.0){
		indice = 10*(int)(var3 *10.0); 
		seg3 = (var3*100.0 - indice)/10;
		Cint3 = (1-seg3)*Ci[indice] + seg3*Ci[indice+10];
	    }
	    else{
		v2 = var3 * var3;
		v4 = v2 * v2;
		v6 = v2 * v4;
		v8 = v4 * v4;
		
		fut = (v8 + FA1 * v6 + FA2 * v4 + FA3 * v2 + FA4)/(var1 * (v8 + FB1 * v6 + FB2 * v4 + FB3 * v2 + FB4));
		gut = (v8 + GA1 * v6 + GA2 * v4 + GA3 * v2 + GA4)/(var1 * (v8 + GB1 * v6 + GB2 * v4 + GB3 * v2 + GB4));
		
		Cint3 = fut * Math.sin(var3) - gut * Math.cos(var3);
	    }
	      
	    
	    double fac1, fac2;
	    fac2 = (0.25/Math.PI) * medium_impedance 
			     *(- Math.sin(2.0*Math.PI*DipoleLength_lambda)*(2.0*Cint1 - Cint2 - Cint3));
	
	    fac1 = (0.25/Math.PI) * medium_impedance 
			     *(2.0*Sint1 + Math.cos(2.0*Math.PI*DipoleLength_lambda)*(2.0*Sint1 - Sint2));
	         
		RadiationReactance = (0.25/Math.PI) * medium_impedance 
			     *((2.0*Sint1 + Math.cos(2.0*Math.PI*DipoleLength_lambda)*(2.0*Sint1 - Sint2))
			     - Math.sin(2.0*Math.PI*DipoleLength_lambda)*(2.0*Cint1 - Cint2 - Cint3));
			     
		InputReactance = RadiationReactance /Math.pow(Math.sin(Math.PI*DipoleLength_lambda),2.0);
	    
	    //System.out.println("Xrad = "+RadiationReactance);
	    //System.out.println("   ");
	}
	/*
	for(int i=1;i<Nmax+1;i++){
	    angle = i*Delta;
	    Func[i] = (Math.cos(betafactor*Math.cos(angle))-Math.cos(betafactor))/Math.sin(angle);
	    Func2[i] = Func[i] * Func[i] * Math.sin(angle);
	    if(Func2[i]/Math.sin(angle) > Func2Max){Func2Max = Func2[i]/Math.sin(angle); imax = i;}
	}
	
	FuncInt = Func2[0]+Func2[Nmax]+4.0*(Func2[1]+Func2[Nmax-1]);
	for(int i=1;i<Nmax/2;i++){
	   FuncInt=FuncInt+4.0*Func2[i*2]+2.0*Func2[i*2+1]; 
	}
	FuncInt = Delta * FuncInt/3.0;
	RadiationResistance = FuncInt * medium_impedance / Math.PI * currentscale * currentscale;
	Directivity = Func2Max / FuncInt;
	TotalPower = 0.5 * RadiationResistance * current_magnitude * current_magnitude;
	System.out.println(" currentscale = "+currentscale+"   FuncInt = "+FuncInt);
	*/
	
	//scanCurrent();
	scanField();
}

public void scanCurrent(){
    //Compute currents along transmission line
	Complex expo0, expo1, expo2, expo3, expo4, expo5, expo6, expo7, expo8, expo9, expo10, 
		field_factor1, field_factor2, field_factor3, field_factor4;
	double factorc, zstart, zstart_lambda, z, Deltaz, Delta_lambda;
	
	currentMAX = 0.0;
	//Note: z=0 at middle of transmission line
	//initial value of z
	zstart = - DipoleLength_meters * 0.5;
	zstart_lambda = -DipoleLength_lambda *0.5;
	Deltaz = DipoleLength_meters / (NsectionsLarge-1);
	Delta_lambda = DipoleLength_lambda / (NsectionsLarge-1);
	
	//current contributions along z direction
	if(a < 0.5){
	    for(int i=0;i<NsectionsLarge;i++){
		z = zstart + Deltaz * (i);
		currentLarge[i] = new Complex(current_magnitude * Math.sin(beta*(0.5*DipoleLength_meters - Math.abs(z))), 0.0);
		zposLarge[i] = z;
		zLambda[i] = zstart_lambda + Delta_lambda * i;
		currentMLarge[i] = Complex.Magnitude(currentLarge[i]);
		//currentMLarge[i] = Complex.Real(currentLarge[i]);
		if(currentMLarge[i] > currentMAX){currentMAX = currentMLarge[i];};
	    }
	    
	    currentscale = currentin/currentMAX;
	    
	    currentMAX = 0.0;
	    for(int i=0;i<NsectionsLarge;i++){
		currentLarge[i] = Complex.Multiply(currentLarge[i],new Complex(currentscale,0));
		//currentMLarge[i] = Complex.Magnitude(currentLarge[i]);
		currentMLarge[i] = Complex.Real(currentLarge[i]);
		if(currentMLarge[i] > currentMAX){currentMAX = currentMLarge[i];};
	    }
		
	}
	else{
	    for(int i=0;i<NsectionsLarge;i++){
		z = zstart + Deltaz * (i);
		currentLarge[i] = new Complex(current_magnitude * Math.sin(beta*(0.5*DipoleLength_meters - Math.abs(z))), 0.0);
		zposLarge[i] = z;
		zLambda[i] = zstart_lambda + Delta_lambda * i;
		//currentMLarge[i] = Complex.Magnitude(currentLarge[i]);
		currentMLarge[i] = Complex.Real(currentLarge[i]);
		if(currentMLarge[i] > currentMAX){currentMAX = currentMLarge[i];};
	    }
	}
	currentscale = 1.0;
	//Calculate minimum of current standing wave pattern
	currentMIN = currentMAX;
	for(int i=0;i<NsectionsLarge;i++){
	    if(currentMLarge[i] < currentMIN){currentMIN = currentMLarge[i];};
	}
}
//----------------------------

public void scanField(){
    //Compute currents along transmission line
	Complex expo0, expo1, expo2, expo3, expo4, expo5, expo6, expo7, expo8, expo9, expo10, 
		field_factor1, field_factor2, field_factor1h, field_factor2h, field_factor3, field_factor4;
	double factorc, zstart, z, Deltaz;
	
	currentMAX = 0.0;
		
	//Note: z=0 at middle of transmission line
	//initial value of z
	zstart = - DipoleLength_meters * 0.5;
	Deltaz = DipoleLength_meters / Nsections;
	
	if(DipoleLength_lambda<0.5){
		currentscale=1.0/Math.sin(Math.PI*(DipoleLength_lambda));
	}
	else{
		currentscale=1.0;
	}
	
	//current contributions along z direction
	for(int i=0;i<Nsections;i++){
	    z = zstart + Deltaz * (i + 0.5);
	    expo4 = Complex.Exp(Complex.Multiply(minusjay,(beta*z)));
	    expo5 = Complex.Exp(Complex.Multiply(jay,(beta*z)));
	    current[i] = new Complex(current_magnitude * currentscale * Math.sin(beta*(0.5*DipoleLength_meters - Math.abs(z))), 0.0);
	    zpos[i] = z;
	    currentM[i] = Complex.Magnitude(current[i]);
	    
	    if(currentM[i] > currentMAX){currentMAX = currentM[i];};
	}
	expo6 = Complex.Exp(Complex.Multiply(minusjay,(beta*0.5*(DipoleLength_meters - Deltaz))));
	expo7 = Complex.Exp(Complex.Multiply(jay,(beta*0.5*(DipoleLength_meters - Deltaz))));
	expo8 = Complex.Exp(Complex.Multiply(minusjay,(beta*0.5*(Deltaz - DipoleLength_meters))));
	expo9 = Complex.Exp(Complex.Multiply(jay,(beta*0.5*(Deltaz - DipoleLength_meters))));
		
	double x0, y0, z0, x1, y1, z1, r1, theta1, theta2, phi1, phi2;
	Complex e_theta, e_theta2, e_rad, e_rad2, e_phi, e_x, e_y, e_z, sum_theta, sum_rad, sum_phi, sum_x, sum_y, sum_z;
	Complex h_phi, h_x, h_y, h_z, h_rad, h_theta, sum_htheta, sum_hrad, sum_hphi, sum_hx, sum_hy, sum_hz;
	
	//double etheta0, erad0, ephigen0, ex0, ey0, ez0, htheta0, hrad0, hphigen0, hx0, hy0, hz0;
	
	double cosphi, sinphi, cosphi2, sinphi2;
	double angle_factor = Math.PI/180.0;
	cosphi = 0.0;
	sinphi = 0.0;
	cosphi2 = 0.0;
	sinphi2 = 0.0;
	
	if(phi_angle == 360.0){phi = 0.0;}
		
	    phi = phi_angle*angle_factor;
	    theta = theta_angle*angle_factor; 
		
	    sinphi2 = Math.sin(phi);
	    cosphi2 = Math.cos(phi);
		    
	    x0 = distance * Math.sin(theta) * Math.cos(phi);
	    y0 = distance * Math.sin(theta) * Math.sin(phi);
	    z0 = distance * Math.cos(theta);
		
	    sum_theta = new Complex(0.0,0.0);
	    sum_rad = new Complex(0.0,0.0);
	    sum_phi = new Complex(0.0,0.0);
	    sum_x = new Complex(0.0,0.0);
	    sum_y = new Complex(0.0,0.0);
	    sum_z = new Complex(0.0,0.0);
		
	    sum_htheta = new Complex(0.0,0.0);
	    sum_hrad = new Complex(0.0,0.0);
	    sum_hphi = new Complex(0.0,0.0);
	    sum_hx = new Complex(0.0,0.0);
	    sum_hy = new Complex(0.0,0.0);
	    sum_hz = new Complex(0.0,0.0);
				
	    for(int k=0;k<Nsections;k++){
	    
		//cartesian coordinates of running point
		x1 = x0;
		y1 = y0;
		z1 = z0 - zpos[k];
		//spherical coordinates of running point
		r1 = Math.sqrt(x1*x1 + y1*y1 + z1*z1);
		theta1 = Math.atan2(Math.sqrt(x1*x1 + y1*y1),z1);
		    
		phi1 = Math.atan2(y1,x1);

		sinphi = Math.sin(phi1);
		cosphi = Math.cos(phi1);
		    
		expo10 = Complex.Exp(Complex.Multiply(minusjay,(beta*r1)));
		field_factor1 = Complex.Multiply((2.0*Math.PI*1.0e-7*frequency*Deltaz*Math.sin(theta1)/r1),
						  Complex.Multiply(expo10,Complex.Multiply(jay,current[k])));
		field_factor2 = Complex.Add(1.0-1.0/((beta*r1)*(beta*r1)),Complex.Multiply(minusjay,1.0/(beta*r1)));
		    
		field_factor1h = Complex.Multiply((beta*Deltaz*Math.sin(theta1)/(4.0*Math.PI*r1)),
						  Complex.Multiply(expo10,Complex.Multiply(jay,current[k])));
		field_factor2h = Complex.Add(1.0,Complex.Multiply(minusjay,1.0/(beta*r1)));
		    
		//get electric field
		e_theta = Complex.Multiply(field_factor1,field_factor2);
		    
		field_factor3 = Complex.Multiply((4.0*Math.PI*1.0e-7*frequency*Deltaz*Math.cos(theta1)/r1),
						  Complex.Multiply(expo10,Complex.Multiply(jay,current[k])));
		field_factor4 = Complex.Subtract(field_factor2,1.0);
		    
		e_rad = Complex.Multiply(field_factor3,field_factor4);
		    
		//get magnetic field
		h_phi = Complex.Multiply(field_factor1h,field_factor2h);
		h_x = Complex.Multiply(h_phi,-sinphi);
		h_y = Complex.Multiply(h_phi,cosphi);
		h_z = new Complex(0.0,0.0);
		    
		e_x = Complex.Add(Complex.Multiply(e_rad,Math.sin(theta1)*cosphi),
				  Complex.Multiply(e_theta,Math.cos(theta1)*cosphi));
				      		    
		e_y = Complex.Add(Complex.Multiply(e_rad,Math.sin(theta1)*sinphi),
				  Complex.Multiply(e_theta,Math.cos(theta1)*sinphi));
		    
		e_z = Complex.Subtract(Complex.Multiply(e_rad,Math.cos(theta1)),
				       Complex.Multiply(e_theta,Math.sin(theta1)));
				      
		//get spherical components in the reference system of coordinates  
		e_rad = Complex.Add(Complex.Add(Complex.Multiply(e_x,Math.sin(theta)*cosphi2),
						Complex.Multiply(e_y,Math.sin(theta)*sinphi2)
					  ),Complex.Multiply(e_z,Math.cos(theta)));
		e_theta = Complex.Subtract(Complex.Add(Complex.Multiply(e_x,Math.cos(theta)*cosphi2),
					   Complex.Multiply(e_y,Math.cos(theta)*sinphi2)),Complex.Multiply(e_z,Math.sin(theta)));
					  
		e_phi = Complex.Subtract(Complex.Multiply(e_y,cosphi2),Complex.Multiply(e_x,sinphi2));
		    
		h_rad = Complex.Add(Complex.Add(Complex.Multiply(h_x,Math.sin(theta)*cosphi2),
						Complex.Multiply(h_y,Math.sin(theta)*sinphi2)),Complex.Multiply(h_z,Math.cos(theta)));
		h_theta = Complex.Subtract(Complex.Add(Complex.Multiply(h_x,Math.cos(theta)*cosphi2),
						      Complex.Multiply(h_y,Math.cos(theta)*sinphi2)),Complex.Multiply(h_z,Math.sin(theta)));		  
		h_phi = Complex.Subtract(Complex.Multiply(h_y,cosphi2),Complex.Multiply(h_x,sinphi2));
		    
		sum_theta = Complex.Add(sum_theta,e_theta);
		sum_rad   = Complex.Add(sum_rad,e_rad);
		sum_phi   = Complex.Add(sum_phi,e_phi);
		    
		sum_x     = Complex.Add(sum_x,e_x);
		sum_y     = Complex.Add(sum_y,e_y);
		sum_z     = Complex.Add(sum_z,e_z);
		    
		sum_htheta = Complex.Add(sum_htheta,h_theta);
		sum_hrad   = Complex.Add(sum_hrad,h_rad);
		sum_hphi   = Complex.Add(sum_hphi,h_phi);
		    
		sum_hx     = Complex.Add(sum_hx,h_x);
		sum_hy     = Complex.Add(sum_hy,h_y);
		sum_hz     = Complex.Add(sum_hz,h_z);
		}
		// Electric Field
		ethetaC = sum_theta;
		eradC = sum_rad;
		hphigenC = sum_hphi;
		
		etheta0 = Complex.Magnitude(sum_theta);
		erad0 = Complex.Magnitude(sum_rad);
		ephigen0 = Complex.Magnitude(sum_phi);
		
		ex0 = Complex.Magnitude(sum_x);
		ey0 = Complex.Magnitude(sum_y);
		ez0 = Complex.Magnitude(sum_z);
		
		// Magnetic Field
		
		htheta0 = Complex.Magnitude(sum_htheta);
		hrad0 = Complex.Magnitude(sum_hrad);
		hphigen0 = Complex.Magnitude(sum_hphi);
		
		hx0 = Complex.Magnitude(sum_hx);
		hy0 = Complex.Magnitude(sum_hy);
		hz0 = Complex.Magnitude(sum_hz);
		
		//System.out.println("Etheta = "+sum_theta+"   Erad = "+sum_rad);
		//System.out.println("Hphi = "+sum_hphi);
		//System.out.println("Etheta = "+etheta0+"   Erad = "+erad0+"   Ephigen0 = "+ephigen0);
		//System.out.println("Ex0 = "+ex0+"   Ey0 = "+ey0+"   Ez0 = "+ez0);
		//System.out.println("Htheta = "+htheta0+"   Hrad = "+hrad0+"   Hphigen0 = "+hphigen0);
		//System.out.println("Hx0 = "+hx0+"   Hy0 = "+hy0+"   Hz0 = "+hz0);
}

//---------------------------


public void scan3Dfield(){
    //Compute currents along transmission line
	Complex expo0, expo1, expo2, expo3, expo4, expo5, expo6, expo7, expo8, expo9, expo10, 
		field_factor1, field_factor2, field_factor1h, field_factor2h, field_factor3, field_factor4;
	double factorc, zstart, z, Deltaz;
	
	EfieldMax = 0.0;
	EfieldRadMax = 0.0;
	EfieldPhigenMax = 0.0;
	EfieldCartxMax = 0.0;
	EfieldCartyMax = 0.0;
	EfieldCartzMax = 0.0;
	
	HfieldMax = 0.0;
	HfieldRadMax = 0.0;
	HfieldThetaMax = 0.0;
	HfieldCartxMax = 0.0;
	HfieldCartyMax = 0.0;
	HfieldCartzMax = 0.0;
	
	currentMAX = 0.0;
		
	//Note: z=0 at middle of transmission line
	//initial value of z
	zstart = - DipoleLength_meters * 0.5;
	Deltaz = DipoleLength_meters / Nsections;
	
	if(DipoleLength_lambda<0.5){
		currentscale=1.0/Math.sin(Math.PI*(DipoleLength_lambda));
	}
	else{
		currentscale=1.0;
	}
	
	//current contributions along z direction
	for(int i=0;i<Nsections;i++){
	    z = zstart + Deltaz * (i + 0.5);
	    expo4 = Complex.Exp(Complex.Multiply(minusjay,(beta*z)));
	    expo5 = Complex.Exp(Complex.Multiply(jay,(beta*z)));
	    current[i] = new Complex(current_magnitude * currentscale * Math.sin(beta*(0.5*DipoleLength_meters - Math.abs(z))), 0.0);
	    zpos[i] = z;
	    currentM[i] = Complex.Magnitude(current[i]);
	    
	    if(currentM[i] > currentMAX){currentMAX = currentM[i];};
	}
	expo6 = Complex.Exp(Complex.Multiply(minusjay,(beta*0.5*(DipoleLength_meters - Deltaz))));
	expo7 = Complex.Exp(Complex.Multiply(jay,(beta*0.5*(DipoleLength_meters - Deltaz))));
	expo8 = Complex.Exp(Complex.Multiply(minusjay,(beta*0.5*(Deltaz - DipoleLength_meters))));
	expo9 = Complex.Exp(Complex.Multiply(jay,(beta*0.5*(Deltaz - DipoleLength_meters))));
		
	double x0, y0, z0, x1, y1, z1, r1, theta1, theta2, phi1, phi2;
	Complex e_theta, e_theta2, e_rad, e_rad2, e_phi, e_x, e_y, e_z, sum_theta, sum_rad, sum_phi, sum_x, sum_y, sum_z;
	Complex h_phi, h_x, h_y, h_z, h_rad, h_theta, sum_htheta, sum_hrad, sum_hphi, sum_hx, sum_hy, sum_hz;
	double cosphi, sinphi, cosphi2, sinphi2;
	cosphi = 0.0;
	sinphi = 0.0;
	cosphi2 = 0.0;
	sinphi2 = 0.0;
	
	//for(int j=0;j<360;j++){
	    //phi = angle_factor * j;
	    
	    // ***
		if(phi/angle_factor == 360.0){phi = 0.0;}
	    
	    for(int i=0;i<361;i++){
		theta = angle_factor * i; 
		
			sinphi2 = Math.sin(phi);
			cosphi2 = Math.cos(phi);
		    
		x0 = distance * Math.sin(theta) * Math.cos(phi);
		y0 = distance * Math.sin(theta) * Math.sin(phi);
		z0 = distance * Math.cos(theta);
		
		sum_theta = new Complex(0.0,0.0);
		sum_rad = new Complex(0.0,0.0);
		sum_phi = new Complex(0.0,0.0);
		sum_x = new Complex(0.0,0.0);
		sum_y = new Complex(0.0,0.0);
		sum_z = new Complex(0.0,0.0);
		
		sum_htheta = new Complex(0.0,0.0);
		sum_hrad = new Complex(0.0,0.0);
		sum_hphi = new Complex(0.0,0.0);
		sum_hx = new Complex(0.0,0.0);
		sum_hy = new Complex(0.0,0.0);
		sum_hz = new Complex(0.0,0.0);
		
		for(int k=0;k<Nsections;k++){
		  //cartesian coordinates of running point
		    x1 = x0;
		    y1 = y0;
		    z1 = z0 - zpos[k];
		  //spherical coordinates of running point
		    r1 = Math.sqrt(x1*x1 + y1*y1 + z1*z1);
		    theta1 = Math.atan2(Math.sqrt(x1*x1 + y1*y1),z1);
		    
		    phi1 = Math.atan2(y1,x1);

		    sinphi = Math.sin(phi1);
		    cosphi = Math.cos(phi1);
		    
		    expo10 = Complex.Exp(Complex.Multiply(minusjay,(beta*r1)));
		    field_factor1 = Complex.Multiply((2.0*Math.PI*1.0e-7*frequency*Deltaz*Math.sin(theta1)/r1),
						   Complex.Multiply(expo10,Complex.Multiply(jay,current[k])));
		    field_factor2 = Complex.Add(1.0-1.0/((beta*r1)*(beta*r1)),Complex.Multiply(minusjay,1.0/(beta*r1)));
		    
		    field_factor1h = Complex.Multiply((beta*Deltaz*Math.sin(theta1)/(4.0*Math.PI*r1)),
						   Complex.Multiply(expo10,Complex.Multiply(jay,current[k])));
		    field_factor2h = Complex.Add(1.0,Complex.Multiply(minusjay,1.0/(beta*r1)));
		    
		    //get electric field
		    e_theta = Complex.Multiply(field_factor1,field_factor2);
		    
		    field_factor3 = Complex.Multiply((4.0*Math.PI*1.0e-7*frequency*Deltaz*Math.cos(theta1)/r1),
						   Complex.Multiply(expo10,Complex.Multiply(jay,current[k])));
		    field_factor4 = Complex.Subtract(field_factor2,1.0);
		    
		    e_rad = Complex.Multiply(field_factor3,field_factor4);
		    
		    //get magnetic field
		    h_phi = Complex.Multiply(field_factor1h,field_factor2h);
		    h_x = Complex.Multiply(h_phi,-sinphi);
		    h_y = Complex.Multiply(h_phi,cosphi);;
		    h_z = new Complex(0.0,0.0);
		    
		    e_x = Complex.Add(Complex.Multiply(e_rad,Math.sin(theta1)*cosphi),
				      Complex.Multiply(e_theta,Math.cos(theta1)*cosphi));
				      		    
		    e_y = Complex.Add(Complex.Multiply(e_rad,Math.sin(theta1)*sinphi),
				      Complex.Multiply(e_theta,Math.cos(theta1)*sinphi));
		    
		    e_z = Complex.Subtract(Complex.Multiply(e_rad,Math.cos(theta1)),
				      Complex.Multiply(e_theta,Math.sin(theta1)));
				      
		    //get spherical components in the reference system of coordinates  
		    e_rad = Complex.Add(Complex.Add(Complex.Multiply(e_x,Math.sin(theta)*cosphi2),
						      Complex.Multiply(e_y,Math.sin(theta)*sinphi2)
					  ),Complex.Multiply(e_z,Math.cos(theta)));
		    e_theta = Complex.Subtract(Complex.Add(Complex.Multiply(e_x,Math.cos(theta)*cosphi2),
						      Complex.Multiply(e_y,Math.cos(theta)*sinphi2)
					  ),Complex.Multiply(e_z,Math.sin(theta)));
					  
		    e_phi = Complex.Subtract(Complex.Multiply(e_y,cosphi2),Complex.Multiply(e_x,sinphi2));
		    
		    h_rad = Complex.Add(Complex.Add(Complex.Multiply(h_x,Math.sin(theta)*cosphi2),
						      Complex.Multiply(h_y,Math.sin(theta)*sinphi2)
					  ),Complex.Multiply(h_z,Math.cos(theta)));
		    h_theta = Complex.Subtract(Complex.Add(Complex.Multiply(h_x,Math.cos(theta)*cosphi2),
						      Complex.Multiply(h_y,Math.cos(theta)*sinphi2)
					  ),Complex.Multiply(h_z,Math.sin(theta)));
					  
		    h_phi = Complex.Subtract(Complex.Multiply(h_y,cosphi2),Complex.Multiply(h_x,sinphi2));
		    
		    sum_theta = Complex.Add(sum_theta,e_theta);
		    sum_rad   = Complex.Add(sum_rad,e_rad);
		    sum_phi   = Complex.Add(sum_phi,e_phi);
		    
		    sum_x     = Complex.Add(sum_x,e_x);
		    sum_y     = Complex.Add(sum_y,e_y);
		    sum_z     = Complex.Add(sum_z,e_z);
		    
		    sum_htheta = Complex.Add(sum_htheta,h_theta);
		    sum_hrad   = Complex.Add(sum_hrad,h_rad);
		    sum_hphi   = Complex.Add(sum_hphi,h_phi);
		    
		    sum_hx     = Complex.Add(sum_hx,h_x);
		    sum_hy     = Complex.Add(sum_hy,h_y);
		    sum_hz     = Complex.Add(sum_hz,h_z);
		    
		    
		}
	    
	    //---------------------------------------------------------
		// Electric Field
		//etheta[i]  = sum_theta;
		
		ethetaM[i] = Complex.Magnitude(sum_theta);
		eradM[i] = Complex.Magnitude(sum_rad);
		ephigenM[i] = Complex.Magnitude(sum_phi);
		
		if(ephigenM[i] > EfieldPhigenMax){EfieldPhigenMax = ephigenM[i];}
		if(ethetaM[i] > EfieldMax){EfieldMax = ethetaM[i];}
		if(eradM[i] > EfieldRadMax){EfieldRadMax = eradM[i];}
		
		ex[i] = Complex.Magnitude(sum_x);
		ey[i] = Complex.Magnitude(sum_y);
		ez[i] = Complex.Magnitude(sum_z);
		
		if(ex[i] > EfieldCartxMax){EfieldCartxMax = ex[i];}
		if(ey[i] > EfieldCartyMax){EfieldCartyMax = ey[i];}
		if(ez[i] > EfieldCartzMax){EfieldCartzMax = ez[i];}
		
		// Magnetic Field
		
		hthetaM[i] = Complex.Magnitude(sum_htheta);
		hradM[i] = Complex.Magnitude(sum_hrad);
		hphigenM[i] = Complex.Magnitude(sum_hphi);
		
		if(hphigenM[i] > HfieldMax){HfieldMax = hphigenM[i];}
		if(hthetaM[i] > HfieldMax){HfieldMax = hthetaM[i];}
		if(hradM[i] > HfieldRadMax){HfieldRadMax = hradM[i];}
		
		hx[i] = Complex.Magnitude(sum_hx);
		hy[i] = Complex.Magnitude(sum_hy);
		hz[i] = Complex.Magnitude(sum_hz);
		
		if(hx[i] > HfieldCartxMax){HfieldCartxMax = hx[i];}
		if(hy[i] > HfieldCartyMax){HfieldCartyMax = hy[i];}
		if(hz[i] > HfieldCartzMax){HfieldCartzMax = hz[i];}
	    }
	    
	//}
	
	//==============================================================================================================
	//calculation of azimuthal plot
	//==============================================================================================================
	theta = Math.PI/2.0;
	EfieldphiMax = 0.0;
	EfieldphiRadMax = 0.0;
	EfieldphiPhiMax = 0.0;
	EfieldCart2xMax = 0.0;
	EfieldCart2yMax = 0.0;
	EfieldCart2zMax = 0.0;
	
	HfieldphiMax = 0.0;
	HfieldphiRadMax = 0.0;
	HfieldphiThetaMax = 0.0;
	HfieldCart2xMax = 0.0;
	HfieldCart2yMax = 0.0;
	HfieldCart2zMax = 0.0;
	
	double phivar;
	for(int i=0;i<361;i++){
	    phivar = angle_factor * i;
	    
		x0 = distance * Math.sin(theta) * Math.cos(phivar);
		y0 = distance * Math.sin(theta) * Math.sin(phivar);
		z0 = distance * Math.cos(theta);
	    
		sum_theta = new Complex(0.0,0.0);
		sum_rad = new Complex(0.0,0.0);
		sum_phi = new Complex(0.0,0.0);
		sum_x = new Complex(0.0,0.0);
		sum_y = new Complex(0.0,0.0);
		sum_z = new Complex(0.0,0.0);
		
		sum_htheta = new Complex(0.0,0.0);
		sum_hrad = new Complex(0.0,0.0);
		sum_hphi = new Complex(0.0,0.0);
		sum_hx = new Complex(0.0,0.0);
		sum_hy = new Complex(0.0,0.0);
		sum_hz = new Complex(0.0,0.0);
		
		//Calculations for first wire
		for(int k=0;k<Nsections;k++){
		  //cartesian coordinates of running point
		    x1 = x0;
		    y1 = y0;
		    z1 = z0 - zpos[k];
		  //spherical coordinates of running point
		    r1 = Math.sqrt(x1*x1 + y1*y1 + z1*z1);
		    theta1 = Math.atan2(Math.sqrt(x1*x1 + y1*y1),z1);
		    phi1 = Math.atan2(y1,x1);
		    
		    expo10 = Complex.Exp(Complex.Multiply(minusjay,(beta*r1)));
		    field_factor1 = Complex.Multiply((2.0*Math.PI*1.0e-7*frequency*Deltaz*Math.sin(theta1)/r1),
						   Complex.Multiply(expo10,Complex.Multiply(jay,current[k])));
		    field_factor2 = Complex.Add(1.0-1.0/((beta*r1)*(beta*r1)),Complex.Multiply(minusjay,1.0/(beta*r1)));
		    field_factor1h = Complex.Multiply((beta*Deltaz*Math.sin(theta1)/(4.0*Math.PI*r1)),
						   Complex.Multiply(expo10,Complex.Multiply(jay,current[k])));
		    field_factor2h = Complex.Add(1.0,Complex.Multiply(minusjay,1.0/(beta*r1)));
		    
		    e_theta = Complex.Multiply(field_factor1,field_factor2);
		    
		    field_factor3 = Complex.Multiply((4.0*Math.PI*1.0e-7*frequency*Deltaz*Math.cos(theta1)/r1),
						   Complex.Multiply(expo10,Complex.Multiply(jay,current[k])));
		    field_factor4 = Complex.Subtract(field_factor2,1.0);
		    
		    e_rad = Complex.Multiply(field_factor3,field_factor4);
		    
		    e_x = Complex.Add(Complex.Multiply(e_rad,Math.sin(theta1)*Math.cos(phi1)),
				      Complex.Multiply(e_theta,Math.cos(theta1)*Math.cos(phi1)));
		    e_y = Complex.Add(Complex.Multiply(e_rad,Math.sin(theta1)*Math.sin(phi1)),
				      Complex.Multiply(e_theta,Math.cos(theta1)*Math.sin(phi1)));
		    e_z = Complex.Subtract(Complex.Multiply(e_rad,Math.cos(theta1)),
				      Complex.Multiply(e_theta,Math.sin(theta1)));
				      
		    h_phi = Complex.Multiply(field_factor1h,field_factor2h);
		    h_x = Complex.Multiply(h_phi,-Math.sin(phi1));
		    h_y = Complex.Multiply(h_phi,Math.cos(phi1));
		    h_z = new Complex(0.0,0.0);
				      
		    //get spherical components in the reference system of coordinates 
		    e_rad = Complex.Add(Complex.Add(Complex.Multiply(e_x,Math.sin(theta)*Math.cos(phivar)),
						      Complex.Multiply(e_y,Math.sin(theta)*Math.sin(phivar))
					  ),Complex.Multiply(e_z,Math.cos(theta)));
		    e_theta = Complex.Subtract(Complex.Add(Complex.Multiply(e_x,Math.cos(theta)*Math.cos(phivar)),
						      Complex.Multiply(e_y,Math.cos(theta)*Math.sin(phivar))
					  ),Complex.Multiply(e_z,Math.sin(theta)));
		    e_phi = Complex.Subtract(Complex.Multiply(e_y,Math.cos(phivar)),Complex.Multiply(e_x,Math.sin(phivar)));
		    
		    h_rad = Complex.Add(Complex.Add(Complex.Multiply(h_x,Math.sin(theta)*Math.cos(phivar)),
						      Complex.Multiply(h_y,Math.sin(theta)*Math.sin(phivar))
					  ),Complex.Multiply(h_z,Math.cos(theta)));
		    h_theta = Complex.Subtract(Complex.Add(Complex.Multiply(h_x,Math.cos(theta)*Math.cos(phivar)),
						      Complex.Multiply(h_y,Math.cos(theta)*Math.sin(phivar))
					  ),Complex.Multiply(h_z,Math.sin(theta)));
		    h_phi = Complex.Subtract(Complex.Multiply(h_y,Math.cos(phivar)),Complex.Multiply(h_x,Math.sin(phivar)));
		   		      
		    sum_theta = Complex.Add(sum_theta,e_theta);
		    sum_rad   = Complex.Add(sum_rad,e_rad);
		    sum_phi   = Complex.Add(sum_phi,e_phi);
		    
		    sum_x     = Complex.Add(sum_x,e_x);
		    sum_y     = Complex.Add(sum_y,e_y);
		    sum_z     = Complex.Add(sum_z,e_z);
		    
		    sum_htheta = Complex.Add(sum_htheta,h_theta);
		    sum_hrad   = Complex.Add(sum_hrad,h_rad);
		    sum_hphi   = Complex.Add(sum_hphi,h_phi);
		    
		    sum_hx     = Complex.Add(sum_hx,h_x);
		    sum_hy     = Complex.Add(sum_hy,h_y);
		    sum_hz     = Complex.Add(sum_hz,h_z);
		    
		}
		
	    //---------------------------------------------------------
		//ephi[i]  = sum_theta;
		ephiM[i] = Complex.Magnitude(sum_theta);
		ephiradM[i] = Complex.Magnitude(sum_rad);
		ephiphiM[i] = Complex.Magnitude(sum_phi);
		ephix[i] = Complex.Magnitude(sum_x);
		ephiy[i] = Complex.Magnitude(sum_y);
		ephiz[i] = Complex.Magnitude(sum_z);
		
		if(ephiM[i] > EfieldphiMax){EfieldphiMax = ephiM[i];}
		if(ephiradM[i] > EfieldphiRadMax){EfieldphiRadMax = ephiradM[i];}
		if(ephiphiM[i] > EfieldphiPhiMax){EfieldphiPhiMax = ephiphiM[i];}
		if(ephix[i] > EfieldCart2xMax){EfieldCart2xMax = ephix[i];}
		if(ephiy[i] > EfieldCart2yMax){EfieldCart2yMax = ephiy[i];}
		if(ephiz[i] > EfieldCart2zMax){EfieldCart2zMax = ephiz[i];}
		
		// Magnetic Field
		
		hphithetaM[i] = Complex.Magnitude(sum_htheta);
		hphiradM[i] = Complex.Magnitude(sum_hrad);
		hphiM[i] = Complex.Magnitude(sum_hphi);
		
		if(hphiM[i] > HfieldphiMax){HfieldphiMax = hphiM[i];}
		if(hphithetaM[i] > HfieldphiThetaMax){HfieldphiThetaMax = hphithetaM[i];}
		if(hphiradM[i] > HfieldphiRadMax){HfieldphiRadMax = hphiradM[i];}
		
		hphix[i] = Complex.Magnitude(sum_hx);
		hphiy[i] = Complex.Magnitude(sum_hy);
		hphiz[i] = Complex.Magnitude(sum_hz);
		
		if(hphix[i] > HfieldCart2xMax){HfieldCart2xMax = hphix[i];}
		if(hphiy[i] > HfieldCart2yMax){HfieldCart2yMax = hphiy[i];}
		if(hphiz[i] > HfieldCart2zMax){HfieldCart2zMax = hphiz[i];}
	    }
	//}
	
	/*
	//get absolute maximum
	double maxcart = 0.0;
	double threshold = 1.0e-10;
	
	if(EfieldCart2xMax > maxcart){maxcart = EfieldCart2xMax;}
	if(EfieldCart2yMax > maxcart){maxcart = EfieldCart2yMax;}
	if(EfieldCart2zMax > maxcart){maxcart = EfieldCart2zMax;}
	if(EfieldCartxMax > maxcart){maxcart = EfieldCartxMax;}
	if(EfieldCartyMax > maxcart){maxcart = EfieldCartyMax;}
	if(EfieldCartzMax > maxcart){maxcart = EfieldCartzMax;}
	if(EfieldphiMax > maxcart){maxcart = EfieldphiMax;}
	if(EfieldphiRadMax > maxcart){maxcart = EfieldphiRadMax;}
	if(EfieldphiPhiMax > maxcart){maxcart = EfieldphiPhiMax;}
	if(EfieldPhigenMax > maxcart){maxcart = EfieldPhigenMax;}
	if(EfieldMax > maxcart){maxcart = EfieldMax;}
	if(EfieldRadMax > maxcart){maxcart = EfieldRadMax;}
	
	double normthreshold = maxcart*threshold;
	
	//if plots are below 1.0E-10 of absolute maximum, they are set to zero.
	if(EfieldCartxMax < maxcart*normthreshold){
	    for(int i=0;i<361;i++){
		ex[i] = 0.0;
	    }
	}
	
	if(EfieldCartyMax < maxcart*normthreshold){
	    for(int i=0;i<361;i++){
		ey[i] = 0.0;
	    }
	}
	
	if(EfieldCartzMax < maxcart*normthreshold){
	    for(int i=0;i<361;i++){
		ez[i] = 0.0;
	    }
	}
	
	if(EfieldCart2xMax < maxcart*normthreshold){
	    for(int i=0;i<361;i++){
		ephix[i] = 0.0;
	    }
	}
	
	if(EfieldCart2yMax < maxcart*normthreshold){
	    for(int i=0;i<361;i++){
		ephiy[i] = 0.0;
	    }
	}
	
	if(EfieldCart2zMax < maxcart*normthreshold){
	    for(int i=0;i<361;i++){
		ephiz[i] = 0.0;
	    }
	}
	
	if(EfieldMax < maxcart*normthreshold){
	    for(int i=0;i<361;i++){
		ethetaM[i] = 0.0;
	    }
	}
	
	if(EfieldRadMax < maxcart*normthreshold){
	    for(int i=0;i<361;i++){
		eradM[i] = 0.0;
	    }
	}
	
	if(EfieldPhigenMax < maxcart*normthreshold){
	    for(int i=0;i<361;i++){
		ephigenM[i] = 0.0;
	    }
	}
		
	if(EfieldphiMax < maxcart*normthreshold){
	    for(int i=0;i<361;i++){
		ephiM[i] = 0.0;
	    }
	}
	
	if(EfieldphiRadMax < maxcart*normthreshold){
	    for(int i=0;i<361;i++){
		ephiradM[i] = 0.0;
	    }
	}
	
	if(EfieldphiPhiMax < maxcart*normthreshold){
	    for(int i=0;i<361;i++){
		ephiphiM[i] = 0.0;
	    }
	}
	*/
	
	double rescale;
	rescale = Math.max(EfieldMax,EfieldphiMax);
	EfieldMax = rescale;
	EfieldphiMax = rescale;
	
	rescale = Math.max(EfieldRadMax,EfieldphiRadMax);
	EfieldRadMax = rescale;
	EfieldphiRadMax = rescale;
	
	rescale = Math.max(EfieldphiMax,EfieldphiPhiMax);
	EfieldphiMax = rescale;
	EfieldphiPhiMax = rescale;
	
	rescale = Math.max(EfieldCartxMax,EfieldCart2xMax);
	EfieldCartxMax = rescale;
	EfieldCart2xMax = rescale;
	
	rescale = Math.max(EfieldCartyMax,EfieldCart2yMax);
	EfieldCartyMax = rescale;
	EfieldCart2yMax = rescale;
	
	rescale = Math.max(EfieldCartzMax,EfieldCart2zMax);
	EfieldCartzMax = rescale;
	EfieldCart2zMax = rescale;
	
	rescale = Math.max(HfieldCartxMax,HfieldCart2xMax);
	HfieldCartxMax = rescale;
	HfieldCart2xMax = rescale;
	
	rescale = Math.max(HfieldCartyMax,HfieldCart2yMax);
	HfieldCartyMax = rescale;
	HfieldCart2yMax = rescale;
	
	rescale = Math.max(HfieldMax,HfieldphiMax);
	HfieldMax = rescale;
	HfieldphiMax = rescale;
}
public void scan_reactance(){
	
}


//Gets array for plot of Field as function of frequency    
public void scan_coefficients(){
	
	double len;
	double Func[], Func2[], Func2Max, angle, seno, totpow;
	int Nmax;
	Nmax = 1800;
	
	Func   = new double[Nmax+1];
	Func2   = new double[Nmax+1];
	
	DVMax = 0.0;
	RVMax = 0.0;
	RinVMax = 0.0;
	XVMax = 0.0;
	XVMin = 0.0;
	XinVMin = 0.0;
	
	for(int iL=0;iL<Numpoints;iL++){
	    //-----------------------------------------------------
	    len = a_minimum + DeltaLength * iL;	    
	    leng[iL] = len;
	    if(len == 0.0){
		DVector[0] = 1.5;
		RVector[0] = 0.0;
		RinVector[0] = 0.0;
		XVector[0] = 0.0;
		XinVector[0] = -1.0e-230;
	    }
	    else{
		Func2Max=0.0;
		totpow=0.0;
	
		if(len >= 1.0e-4){
		    for(int i=1;i<Nmax;i++){
			angle=i*Math.PI/Nmax;
			{
			    //Func2[i]= (medium_impedance*current_magnitude*current_magnitude*currentscale*currentscale*
			    Func2[i]= (medium_impedance*
					Math.pow((Math.cos(Math.PI*len*Math.cos(angle))-Math.cos(Math.PI*len))/Math.sin(angle),2.0)
					/(8.0*Math.PI*Math.PI));
			    if(Func2Max<Math.abs(Func2[i])){Func2Max=Math.abs(Func2[i]);}
			    totpow+=(float)(Func2[i]*Math.sin(angle)*2.0*Math.PI*Math.PI/Nmax);
			}
		    }
	
		    DVector[iL] =(float)(4.0*Math.PI*Func2Max/totpow);
		    RVector[iL] = totpow * 2 ;
		}
		else{
		    DVector[iL] = 1.5;
		    //totpow = (4.0*Math.PI*medium_impedance/3)*Math.pow(current_magnitude*DipoleLength_lambda*0.25,2.0); 
		    totpow = (4.0*Math.PI*medium_impedance/3)*Math.pow(DipoleLength_lambda*0.25,2.0); 
		    RVector[iL] = 2.0*totpow;
		}
		
		seno = Math.pow(Math.sin(Math.PI*len),2.0);
		if((int)len == len){
		    RinVector[iL] = 2.0E230;
		}
		else{
		    RinVector[iL] = RVector[iL]/seno;
		}
	
		if(DVector[iL] > DVMax){DVMax = DVector[iL];}
		if(RVector[iL] > RVMax){RVMax = RVector[iL];}
		//if(RinVector[iL] > RinVMax){RinVMax = RinVector[iL];}
		
		
		// calculate reactance --------
		int indice;
		double var1, var2, var3, Sint1, Sint2, Cint1, Cint2, Cint3, seg1, seg2, seg3, radius;
		double v8, v6, v4, v2, fut, gut;
		radius = wire_radius;
		Sint1 = 0.0; Sint2 = 0.0; Cint1 = 0.0; Cint2 = 0.0; Cint3 = 0.0;
		
		if(len == 0.0){
		    XVector[iL] = 0.0;
		}	
		else{
		    indice = 0;
		
		    var1 = 2.0*Math.PI*len;
		    var2 = 4.0*Math.PI*len;
		    var3 = 4.0*Math.PI*radius*radius/len;
		    seg1 = 0.0; seg2 = 0.0 ; seg3 = 0.0;
	    	
		    if(var1 < 2.0 && var1>0.0){
			indice = (int)(var1 *100.0); 
			seg1 = (var1*100.0 - indice);
			Sint1 = (1-seg1)*Si[indice] + seg1*Si[indice+1];
			Cint1 = (1-seg1)*Ci[indice] + seg1*Ci[indice+1];
		    }
		    else if(var1 >= 2.0 && var1 < 10.0){
			indice = 10*(int)(var1 *10.0); 
			seg1 = (var1*100.0 - indice)/10;
			Sint1 = (1-seg1)*Si[indice] + seg1*Si[indice+10];
			Cint1 = (1-seg1)*Ci[indice] + seg1*Ci[indice+10];
		    }
		    else{
			v2 = var1 * var1;
			v4 = v2 * v2;
			v6 = v2 * v4;
			v8 = v4 * v4;
		
			fut = (v8 + FA1 * v6 + FA2 * v4 + FA3 * v2 + FA4)/(var1 * (v8 + FB1 * v6 + FB2 * v4 + FB3 * v2 + FB4));
			gut = (v8 + GA1 * v6 + GA2 * v4 + GA3 * v2 + GA4)/(var1 * (v8 + GB1 * v6 + GB2 * v4 + GB3 * v2 + GB4));
			Sint1 = 0.5*Math.PI - fut * Math.cos(var1) - gut * Math.sin(var1);
			Cint1 = fut * Math.sin(var1) - gut * Math.cos(var1);
		    }
	    
		    if(var2 < 2.0 && var2>0.0){
			indice = (int)(var2 *100.0); 
			seg2 = (var2*100.0 - indice);
			Sint2 = (1-seg2)*Si[indice] + seg2*Si[indice+1];
			Cint2 = (1-seg2)*Ci[indice] + seg2*Ci[indice+1];
		    }
		    else if(var2 >= 2.0 && var2 < 10.0){
			indice = 10*(int)(var2 *10.0); 
			seg2 = (var2*100.0 - indice)/10;
			Sint2 = (1-seg2)*Si[indice] + seg2*Si[indice+10];
			Cint2 = (1-seg2)*Ci[indice] + seg2*Ci[indice+10];
		    }
		    else{
			v2 = var2 * var2;
			v4 = v2 * v2;
			v6 = v2 * v4;
			v8 = v4 * v4;
		
			fut = (v8 + FA1 * v6 + FA2 * v4 + FA3 * v2 + FA4)/(var1 * (v8 + FB1 * v6 + FB2 * v4 + FB3 * v2 + FB4));
			gut = (v8 + GA1 * v6 + GA2 * v4 + GA3 * v2 + GA4)/(var1 * (v8 + GB1 * v6 + GB2 * v4 + GB3 * v2 + GB4));
			Sint2 = 0.5*Math.PI - fut * Math.cos(var2) - gut * Math.sin(var2);
			Cint2 = fut * Math.sin(var2) - gut * Math.cos(var2);
		    }
	
		    if(var3 < 0.01 && var3>0.0){
			//approximation for small values of argument of Cos integral 
			//In Abramowitz-Stegun, one notices that for small values 
			//(Ci(x) - ln x - 0.5772156649) is approximately -0.25 for all values of x below 0.01
			Cint3 = -0.25*var3*var3 + Math.log(var3)+0.5772156649;
		    }
		    else if(var3 >= 0.01 && var3 < 2.0){
			indice = (int)(var3 *100.0); 
			seg3 = (var3*100.0 - indice);
			Cint3 = (1-seg3)*Ci[indice] + seg3*Ci[indice+1];
		    }
		    else if(var3 >= 2.0 && var3 < 10.0){
			indice = 10*(int)(var3 *10.0); 
			seg3 = (var3*100.0 - indice)/10;
			Cint3 = (1-seg3)*Ci[indice] + seg3*Ci[indice+10];
		    }
		    else{
			v2 = var3 * var3;
			v4 = v2 * v2;
			v6 = v2 * v4;
			v8 = v4 * v4;
			//Rational approximation for Cos integral
			fut = (v8 + FA1 * v6 + FA2 * v4 + FA3 * v2 + FA4)/(var1 * (v8 + FB1 * v6 + FB2 * v4 + FB3 * v2 + FB4));
			gut = (v8 + GA1 * v6 + GA2 * v4 + GA3 * v2 + GA4)/(var1 * (v8 + GB1 * v6 + GB2 * v4 + GB3 * v2 + GB4));
		
			Cint3 = fut * Math.sin(var3) - gut * Math.cos(var3);
		    }
	      
		    XVector[iL] = (0.25/Math.PI) * medium_impedance 
			     *((2.0*Sint1 + Math.cos(2.0*Math.PI*len)*(2.0*Sint1 - Sint2))
			     - Math.sin(2.0*Math.PI*len)*(2.0*Cint1 - Cint2 - Cint3));
		    XinVector[iL] = XVector[iL] /Math.pow(Math.sin(Math.PI*len),2.0);
		}
		//-------------------------------------------------------- end reactance calculation
		if(XVector[iL] > XVMax){XVMax = XVector[iL];}
		if(XVector[iL] < XVMin){XVMin = XVector[iL];}
		if(iL > Numpoints/10){
		    if(XinVector[iL] < XinVMin){XinVMin = XinVector[iL]; }
		}
	    }
	    
	    RinVMax = 2000.0;
	    XinVMax = 2000.0;
	    //XinVMin = -2000.0;
	    
	    //-----------------------------------------------------------------
	}
   } 
}
