home *** CD-ROM | disk | FTP | other *** search
- /* VERSION OF STP SUBROUTINE TCORL: SINGLE PRECISION */
-
- /* PDL VERSION */
-
-
-
- main()
-
- {
-
- int i,j;
-
- int coptr,zlptr;
-
- int iii;
-
- float zcm,tstat,deltim;
-
- float ztc8,ztc4;
-
- float coordx,coordy,coordz;
-
- float coorvx,coorvy,coorvz;
-
- float thee35,thee45;
-
- float cov11,cov13,cov22,cov24;
-
- float cov33,cov35,cov44,cov45;
-
- float sigdz1,sigdz2,sigdz3;
-
- float sigvz1,sigvz2,sigvz3;
-
- float deltdx,deltdy,deltdz;
-
- float deltvx,deltvy,deltvz;
-
- float deltdz1,deltdz2,deltdz3;
-
- float deltvz1,deltvz2,deltvz3;
-
- float sigcz1,sigcz2,sigcz3;
-
- float sigtz1,sigtz2,sigtz3;
-
- float zstm[1][100];
-
- float zsfr[6][100];
-
- float ztacc[3][100];
-
- float zrvo[3][100];
-
- float zdrgx[3][100];
-
- float zrvi[15][100];
-
- float ztmat[9][100];
-
- int phase;
-
-
-
- printf("enter phase prior to halting (1 = initialization only) \n");
-
- scanf ("%6d", &phase);
-
-
-
-
-
- for (i = 0; i < 100; i++)
-
- zstm[0][i] = 3.0;
-
-
-
- for (i = 0; i < 6; i++)
-
- for (j = 0; j < 100; j++)
-
- zsfr[i][j] = 3.0;
-
-
-
- for (i = 0; i < 3; i++)
-
- for (j = 0; j < 100; j++){
-
- ztacc[i][j] = 3.0;
-
- zrvo[i][j] = 3.0;
-
- zdrgx[i][j] = 3.0;
-
- }
-
-
-
- for (i = 0; i < 15; i++)
-
- for (j = 0; j < 100; j++)
-
- zrvi[i][j] = 3.0;
-
-
-
- for (i = 0; i < 9; i++)
-
- for (j = 0; j < 100; j++)
-
- ztmat[i][j] = 3.0;
-
-
-
- /* READ OR INITIALIZE ALL VARIABLES */
-
-
-
- zlptr = 100;
-
- zstm[0][0] = 5.0;
-
-
-
- for (iii = 0; iii < 1; iii++){
-
- /* PASS LABEL TO ASSEMBLY LANGUAGE */
-
-
-
- /* asm("timstr:"); */
-
- for (i = 0; i < 1; i++){
-
- /* START BENCHMARK 1 ********************************************** */
-
-
-
- if (1 == phase)
-
- exit(1);
-
-
-
- /* INITIALIZE THE CANDIDATE OBJECT POINTER */
-
- coptr = 0;
-
-
-
- /* INCREMENT TRTT'S TIMER */
-
- zcm = zcm + ztc8;
-
-
-
- /* SET THE CANDIDATE OBJECT POINTER TO THE NEXT OBJECT */
-
- do {
-
- coptr = coptr + 1;
-
-
-
- /* PROPAGATE CANDIDATE OBJECT'S RADAR FACE CARTESIAN COORDINATE
-
- (RFCC) STATE VECTOR TO THE TIME OF THE TEST OBJECT'S STATE VECTOR */
-
-
-
- deltim = zstm[0][0] - zstm[0][coptr];
-
- coordx = zsfr[0][coptr] +
-
- ( zsfr[3][coptr] + 0.5 * ztacc[0][coptr] * deltim) * deltim;
-
- coordy = zsfr[1][coptr] +
-
- ( zsfr[4][coptr] + 0.5 * ztacc[1][coptr] * deltim) * deltim;
-
- coordz = zsfr[2][coptr] +
-
- ( zsfr[5][coptr] + 0.5 * ztacc[2][coptr] * deltim) * deltim;
-
- coorvx = zsfr[3][coptr] + ztacc[0][coptr] * deltim;
-
- coorvy = zsfr[4][coptr] + ztacc[1][coptr] * deltim;
-
- coorvz = zsfr[5][coptr] + ztacc[2][coptr] * deltim;
-
-
-
- /* PROPAGATE THE RVCC STATE ERROR COVARIANCE ELEMENTS OF THE
-
- CANDIDATE OBJECT */
-
-
-
- thee35 = deltim *
-
- (zdrgx[0][coptr] * ztmat[0][coptr]
-
- +zdrgx[1][coptr] * ztmat[3][coptr]
-
- +zdrgx[2][coptr] * ztmat[6][coptr] );
-
-
-
- thee45 = deltim *
-
- (zdrgx[0][coptr] * ztmat[0][coptr]
-
- +zdrgx[1][coptr] * ztmat[4][coptr]
-
- +zdrgx[2][coptr] * ztmat[7][coptr] );
-
-
-
- cov11 = zrvi[0][coptr] + zrvi[2][coptr] * deltim;
-
- cov13 = zrvi[2][coptr] + zrvi[9][coptr] * deltim;
-
- cov22 = zrvi[5][coptr] + zrvi[7][coptr] * deltim;
-
- cov24 = zrvi[7][coptr] + zrvi[12][coptr] * deltim;
-
- cov33 = zrvi[9][coptr] + zrvi[11][coptr] * thee35;
-
- cov35 = zrvi[11][coptr] + zrvi[14][coptr] * thee35;
-
- cov44 = zrvi[12][coptr] + zrvi[13][coptr] * thee45;
-
- cov45 = zrvi[13][coptr] + zrvi[14][coptr] * thee45;
-
-
-
- sigdz1 = cov11 + cov13 * deltim;
-
- sigdz2 = cov22 + cov24 * deltim;
-
- sigvz1 = cov33 + cov35 * thee35;
-
- sigvz2 = cov44 + cov45 * thee45;
-
- sigdz3 = zrvo[1][coptr] +
-
- (2.0 * zrvo[1][coptr] + zrvo[2][coptr] * deltim) * deltim;
-
- sigvz3 = zrvo[2][coptr];
-
-
-
- /* TAKE THE DIFFERENCE BETWEEN TEST AND CANDIDATE OBJECT STATES */
-
- deltdx = zsfr[0][0] - coordx;
-
- deltdy = zsfr[1][0] - coordy;
-
- deltdz = zsfr[2][0] - coordz;
-
- deltvx = zsfr[3][0] - coorvx;
-
- deltvy = zsfr[4][0] - coorvy;
-
- deltvz = zsfr[5][0] - coorvz;
-
-
-
- /* TRANSFORM THE DIFFERENCE VECTOR FROM RFCC TO RVCC */
-
- deltdz1 = ztmat[0][0] * deltdx
-
- + ztmat[3][0] * deltdy
-
- + ztmat[6][0] * deltdz;
-
- deltdz2 = ztmat[1][0] * deltdx
-
- + ztmat[4][0] * deltdy
-
- + ztmat[7][0] * deltdz;
-
- deltdz3 = ztmat[2][0] * deltdx
-
- + ztmat[5][0] * deltdy
-
- + ztmat[8][0] * deltdz;
-
- deltvz1 = ztmat[0][0] * deltvx
-
- + ztmat[3][0] * deltvy
-
- + ztmat[6][0] * deltvz;
-
- deltvz2 = ztmat[1][0] * deltvx
-
- + ztmat[4][0] * deltvy
-
- + ztmat[7][0] * deltvz;
-
- deltvz3 = ztmat[2][0] * deltvx
-
- + ztmat[5][0] * deltvy
-
- + ztmat[8][0] * deltvz;
-
-
-
- /* COMPUTE THE VARIANCE OF THE STATE VECTOR DIFFERENCES */
-
- sigcz1 = sigdz1 + zrvi[0][0];
-
- sigcz2 = sigdz2 + zrvi[5][0];
-
- sigtz1 = sigvz1 + zrvi[9][0];
-
- sigtz2 = sigvz2 + zrvi[12][0];
-
- sigcz3 = sigdz3 + zrvo[0][0];
-
- sigtz3 = sigvz3 + zrvo[2][0];
-
-
-
- /* COMPUTE THE 6 D.O.F. RVCC TEST STATISTICS */
-
- tstat = (deltdz1*deltdz1)/sigcz1 * (deltdz2*deltdz2)/sigcz2
-
- + (deltdz3*deltdz3)/sigcz3 * (deltvz1*deltvz1)/sigtz1
-
- + (deltvz2*deltvz2)/sigtz2 * (deltvz3*deltvz3)/sigtz3;
-
-
-
- /* INCREMENT TRTT'S TIMER */
-
- zcm = zcm + ztc4;
-
-
-
- /* CONTINUE LOOP. EXIT ROUTINE AFTER LAST CANDIDATE OBJECT */
-
-
-
- } while (coptr < zlptr);
-
- /* EXIT BENCHMARK 1 ********************************************* */
-
- }
-
- /* asm("timend:"); */
-
- }
-
- }
-
-