#!/bin/sh # To unpack, sh this message. For more explanation, read the next few lines. # --This message is a .shar file, i.e., a shell archive. # --To unpack the files it contains into some empty directory DIR, # --first cd (change directory) to DIR. # --Then put this message into a file in DIR. # --(Use a FILENAME which differs from those to be created!) # --Remove from file FILENAME the lines prior to the "#!/bin/sh" line above. # --Finally execute "sh FILENAME". PATH=/bin:/usr/bin echo processing file mapclus.f 1>&2 cat > mapclus.f <<'CUT HERE------------ mapclus.f' C mapclus.f C The authors of this software are Phipps Arabie and J Douglas Carroll C Copyright (c) 1993 by AT&T. C Permission to use, copy, modify, and distribute this software for any C purpose without fee is hereby granted, provided that this entire C notice is included in all copies of any software which is or includes C a copy or modification of this software and in all copies of the C supporting documentation for such software. C THIS SOFTWARE IS BEING PROVIDED "AS IS", WITHOUT ANY EXPRESS OR IMP- C LIED WARRANTY. IN PARTICULAR, NEITHER THE AUTHORS NOR AT&T MAKE ANY C REPRESENTATION OR WARRANTY OF ANY KIND CONCERNING THE MERCHANTABILITY C OF THIS SOFTWARE OR ITS FITNESS FOR ANY PARTICULAR PURPOSE. C This software comes from the SECOND MDS Package of AT&T Bell Laboratories C For explanation of the method this software implements, see C "Three-Way Scaling and Clustering" by P Arabie, J D Carroll, and C W DeSarbo, a monograph published by Sage Publications, Beverly Hills, C Calif. in 1987 as series 07, item 065, in the Sage University Papers C Arabie,P., & Carroll,J.D. (1980). MAPCLUS: A mathematical programming C approach to fitting the ADCLUS model. Psychometrika, 45, 211-235. C----+----@----+----@----+----@----+----@----+----@----+----@----+----@ C$ FORTY FORM,XREF MAPC 5 C MAPCLUS, JULY, 1980 (SOME OUTPUT FORMATS UPDATED 7/82) MAPC 10 C PROGRAM MAPCLS(PARAM,OUTPUT,PNCH,MATRIX,INIC,TAPE5=PARAM, MAPC 15 C 2 TAPE6=OUTPUT,TAPE7=PNCH,TAPE41=MATRIX,TAPE16=INIC) MAPC 20 C MAPC 25 C THE FOLLOWING NON-ANSI STANDARD FORTRAN CHARACTERS (: ;) ARE USED MAPC 30 C FOR COLON AND SEMICOLON, RESPECTIVELY. IF YOUR COMPILER OR MAPC 35 C OPERATING SYSTEM CANNOT DIGEST THESE CHARACTERS, SUBSTITUTING MAPC 40 C A BLANK IS THE BEST REMEDY. MAPC 45 C MAPC 50 DOUBLE PRECISION DCON MAPC 55 INTEGER FMT, TITL MAPC 60 DIMENSION FMT(72), SVAF(050), IDAT(2), IDIG(10), GL(030,2), MAPC 65 * GRLEN(2), GRMEN(2), OBSLF(2), ASTEP(2) MAPC 70 COMMON /A1/ P(030,025), DENS(050), NW(050), MP(050), BLMX(050), MAPC 75 * BLMN(050), KP(050), AB, WCON, BIN, N2, N, LD2, N1, AN1, LOUT, MAPC 80 * VARSIM, VAF, ABNV, NDO, RISE(025), LD1, IFLOP, KMOD, KC MAPC 85 COMMON /A2/ G(030), KT1(10), KT2(10), TK(10), LP(15), IPUN, IERR, MAPC 90 * LPUNCH, LPUN7, ICOUN, TVAF, ICON, TITL(72), TRISE(025) MAPC 95 COMMON /A4/ DAPI(030), BCONST, TM, U, V MAPC 100 COMMON /A5/ AK, ALFRAY(025), BETRAY(025), IADJ(050), JADJ MAPC 105 COMMON /A6/ DCON, DATA(030,030), ALOS, IXV MAPC 110 C MAPC 115 C BOTH ARRAYS IN COMMON /A7/ MUST BE DIMENSIONED FOR MAX(N30,N2). MAPC 120 C IN THE ORIGINAL SOURCE VERSION OF THIS PROGRAM, THOSE MAPC 125 C RESPECTIVE VALUES ARE (30,25); BOTH ARE PRECEDED BY A LEAD ZERO MAPC 130 C (TO CREATE A UNIQUE STRING IN COL. 1-72) AND CORRESPOND TO MAPC 135 C (MAXIMUM POSSIBLE NUMBER OF STIMULI, MAXIMUM POSSIBLE NUMBER OF MAPC 140 C SUBSETS INCLUDING THE COMPLETE SUBSET FOR THE ADDITIVE CONSTANT). MAPC 145 C MAPC 150 C MAPC 155 COMMON /A7/ A(030), IZ(030) MAPC 160 COMMON /A8/ W(025), IPRE, ITPRE MAPC 165 COMMON /A9/ ILAB(030,6), ALD1 MAPC 170 DATA IDIG(1), IDIG(2), IDIG(3), IDIG(4), IDIG(5), IDIG(6), MAPC 175 * IDIG(7), IDIG(8), IDIG(9), IDIG(10), IBL, IL, IR /1H0,1H1,1H2, MAPC 180 * 1H3,1H4,1H5,1H6,1H7,1H8,1H9,1H ,1H(,1H)/ MAPC 185 C IDAT(1) = IDATEZ(0) MAPC 190 C MAPC 195 C MAPC 200 C ASSUME CARD INPUT STREAM AS LOGICAL DEVICE FOR READING PROGRAM MAPC 205 C CONTROL PARAMETERS. MAPC 210 C MAPC 215 L5 = 5 MAPC 220 C MAPC 225 C MAPC 230 LOUT = 6 MAPC 235 C MAPC 240 C THE NEXT STATEMENT ASSUMES THAT THE DEFAULT DEVICE FOR PUNCHED MAPC 245 C OUTPUT IS 7. THERE IS NO PROVISION FOR REWINDING. MAPC 250 C MAPC 255 LPUN7 = 7 MAPC 260 C MAPC 265 C N2 IS THE MAXIMUM NUMBER OF CLUSTERS (INCLUDING COMPLETE MAPC 270 C SUBSET FOR ADDITIVE CONSTANT) ALLOWED BY CURRENT DIMENSION MAPC 275 C STATEMENTS. MAPC 280 C MAPC 285 N2 = (025) MAPC 290 N3 = N2 - 1 MAPC 295 N5 = (050) MAPC 300 C MAPC 305 C N30 IS THE MAXIMUM NUMBER OF STIMULI ALLOWED BY CURRENT MAPC 310 C DIMENSION STATEMENTS. MAPC 315 C MAPC 320 N30 = (030) MAPC 325 BCRIT = 1.0E-5 MAPC 330 JTPRE = 6 MAPC 335 C MAPC 340 C FOR INSTALLATIONS OTHER THAN BTL, LREAD SHOULD BE 5 MAPC 345 C MAPC 350 5 LREAD = 5 MAPC 355 IPRE = 0 MAPC 360 VAF = 0.0 MAPC 365 ICON = 0 MAPC 370 ISWIT = 0 MAPC 375 IPRN = 0 MAPC 380 IXV = 0 MAPC 385 DO 10 I=1,15 MAPC 390 LP(I) = 0 MAPC 395 10 CONTINUE MAPC 400 C MAPC 405 C MAPC 410 WRITE (LOUT,99999) MAPC 415 99999 FORMAT (1H1///11X, 28HRUN OF MAPCLUS VERSION 1 , 7X, 7H A MATH,MAPC 420 * 30HEMATICAL PROGRAMMING APPROACH , 26HBY P. ARABIE AND J. D. CAR,MAPC 425 * 4HROLL/46X, 43H TO FITTING THE SHEPARD-ARABIE ADCLUS MODEL//) MAPC 430 C WRITE (LOUT,8) IDAT(1) MAPC 435 C 8 FORMAT(30X,A6) MAPC 440 C WRITE (LOUT,8) IDAT(1) MAPC 445 C 8 FORMAT(30X,A10) MAPC 450 C MAPC 455 C MAPC 460 C MAPC 465 C MAPC 470 READ (L5,99998,END=551) LD1,ICON,KREAD,IREWIN,M15,IPRN,IPUN, MAPC 475 * LPUNCH ,(LP(I), I = 1, 15) MAPC 480 99998 FORMAT (8I3, 1X, 15I1) MAPC 485 WRITE (LOUT,99997) LD1, ICON, KREAD, IREWIN, M15, IPRN, IPUN, MAPC 490 * LPUNCH, (I,LP(I),I=1,15) MAPC 495 99997 FORMAT (//4X, 48H LD1 ICON KREAD IREWIN M15 IPRN IPUN LPU,MAPC 500 * 3HNCH, 54H ABBREVIATED -0- AND FULL-LENGTH -1- PRINTING DUR,MAPC 505 * 6HING 15/2X, 3I6, 2X, I6, 1X, I5, 3I6, 13X, 14H ITERATIONS OF, MAPC 510 * 27H COMBINATORIAL OPTIMIZATION//50X, 15(1X, I2, 1H:, I1)) MAPC 515 C MAPC 520 C LD1 IS THE NUMBER OF CLUSTERS TO BE FITTED, AS SPECIFIED BY MAPC 525 C THE USER, AND DOES NOT INCLUDE THE COMPLETE SET ASSOCIATED MAPC 530 C WITH THE ADDITIVE CONSTANT. MAPC 535 C MAPC 540 WRITE (LOUT,99996) LD1 MAPC 545 99996 FORMAT (//10X, 36HNUMBER OF CLUSTERS (LD1) SPECIFIED =, I3, MAPC 550 * 60H (NOT INCLUDING THE COMPLETE SET FOR THE ADDITIVE CONSTANT).) MAPC 555 IF (LD1.GT.0) GO TO 15 MAPC 560 WRITE (LOUT,99995) MAPC 565 99995 FORMAT (///46H THIS PROGRAM WILL NOT WORK CORRECTLY IF LD1, , MAPC 570 * 51HTHE NUMBER OF SUBSETS IS NOT DECLARED AS A POSITIVE, 6H INTEG,MAPC 575 * 3HER./22H EXECUTION TERMINATES.) MAPC 580 STOP MAPC 585 15 IF (LD1.LE.N3) GO TO 20 MAPC 590 WRITE (LOUT,99994) LD1, N3 MAPC 595 99994 FORMAT (///20H YOU HAVE SPECIFIED , I3, 19H CLUSTERS, BUT THIS, MAPC 600 * 36H VERSION OF THE PROGRAM ONLY ALLOWS , I3, 9H CLUSTERS/ MAPC 605 * 52H (PLUS ONE FOR THE ADDITIVE CONSTANT). INCREASE THE, MAPC 610 * 34H DIMENSION STATEMENTS ACCORDINGLY.) MAPC 615 STOP MAPC 620 C MAPC 625 C MAPC 630 C IF ICON IS NEGATIVE, A RANDOM INITIAL CONFIGURATION MAPC 635 C WILL BE GENERATED, AND THE FIRST (-ICON) NUMBERS MAPC 640 C FROM THE RANDOM NUMBER GENERATOR WILL BE DISCARDED. MAPC 645 C IF ICON IS ZERO, A RATIONAL INITIAL CONFIGURATION MAPC 650 C WILL BE PRODUCED BY THE PROGRAM. MAPC 655 C IF ICON IS POSITIVE, A USER-SUPPLIED INITIAL MAPC 660 C CONFIGURATION WILL BE READ FROM LOGICAL DEVICE MAPC 665 C NUMBER (ICON). MAPC 670 C MAPC 675 20 IF (LD1.LE.N30) GO TO 25 MAPC 680 WRITE (LOUT,99993) MAPC 685 99993 FORMAT (/////37H WARNING: WHENEVER NUMBER OF DECLARED, 8H CLUSTER,MAPC 690 * 28HS EXCEEDS NUMBER OF STIMULI,, 28H MAKE SURE THAT THE DIMENSIO,MAPC 695 * 26HN STATEMENTS IN COMMON/A7//31H CORRESPOND TO MAX(N30, N2) (TH,MAPC 700 * 23HAT STATEMENT --MAY-- BE, 19H CORRECT AS IT IS.)///) MAPC 705 25 IF (KREAD.GT.0) GO TO 30 MAPC 710 C MAPC 715 C KREAD IS THE LOGICAL DEVICE NUMBER FOR THE NUMERICAL MAPC 720 C PROXIMITIES DATA AND THE (OPTIONAL) LABELS. THE DEFAULT VALUE MAPC 725 C IS 5. MAPC 730 C MAPC 735 WRITE (LOUT,99992) KREAD, LREAD MAPC 740 99992 FORMAT (//10X, 40HSINCE THE DATA SET WAS DECLARED TO BE ON, MAPC 745 * 15H DEVICE NUMBER , I4, 30H (KREAD) THE DEFAULT VALUE OF , I3, MAPC 750 * 22H WILL INSTEAD BE USED.) MAPC 755 GO TO 35 MAPC 760 30 LREAD = KREAD MAPC 765 35 WRITE (LOUT,99991) LREAD MAPC 770 99991 FORMAT (//9X, 46H DATA WILL BE READ FROM LOGICAL DEVICE NUMBER , MAPC 775 * I3) MAPC 780 IF (IREWIN.EQ.1 .AND. LREAD.NE.L5) GO TO 40 MAPC 785 C MAPC 790 C IREWIN ALLOWS THE USER THE OPTION OF HAVING THE LOGICAL DEVICE MAPC 795 C ASSOCIATED WITH KREAD REWOUND, UNLESS LREAD .EQ. L5 MAPC 800 C MAPC 805 WRITE (LOUT,99990) MAPC 810 99990 FORMAT (9X, 27H WHICH WILL NOT BE REWOUND.) MAPC 815 GO TO 45 MAPC 820 40 REWIND LREAD MAPC 825 WRITE (LOUT,99989) MAPC 830 99989 FORMAT (9X, 24H WHICH HAS BEEN REWOUND.) MAPC 835 45 WRITE (LOUT,99988) LREAD, LOUT MAPC 840 99988 FORMAT (//9X, 43H I/O CHANNELS FOR READING DATA AND PRINTING, MAPC 845 * 31H OUTPUT: READ PRINT/58X, 12H LREAD =, I3, MAPC 850 * 9H LOUT =, I3) MAPC 855 C MAPC 860 C IF M15, THE NUMBER OF MAJOR ITERATIONS, IS ZERO, ONLY (GLOBAL) MAPC 865 C REGRESSION WILL BE PERFORMED ON AN INITIAL CONFIGURATION, MAPC 870 C PRESUMABLY SUPPLIED BY THE USER ON CHANNEL ICON. MAPC 875 C MAPC 880 C IF M15 IS NEGATIVE, GLOBAL REGRESSION IS PERFORMED (AS WHEN M15 MAPC 885 C .EQ. 0), FOLLOWED IMMEDIATELY BY COMBINATORIAL OPTIMIZATION, MAPC 890 C UP TO A MAXIMUM OF 15 ITERATIONS. MAPC 895 C MAPC 900 C IF M15 IS POSITIVE, THEN IT DEFINES THE MAXIMUM POSSIBLE MAPC 905 C NUMBER OF MAJOR ITERATIONS (TOTAL OF PRE-POLISHING AND MAPC 910 C POLISHING). MAPC 915 C MAPC 920 C MAPC 925 WRITE (LOUT,99987) M15 MAPC 930 99987 FORMAT (//10X, 47HMAXIMUM NUMBER OF MAJOR ITERATIONS (M15) SPECIF,MAPC 935 * 3HIED, 5H IS =, I3, 1H.) MAPC 940 IF (M15.LE.N5) GO TO 50 MAPC 945 WRITE (LOUT,99986) M15, N5 MAPC 950 99986 FORMAT (//20H YOU HAVE SPECIFIED , I4, 23H ITERATIONS, BUT THIS V,MAPC 955 * 6HERSION, 40H OF THE PROGRAM ALLOWS FOR AT MOST ONLY , I4, MAPC 960 * 14H ITERATIONS. /43H THE DIMENSION STATEMENT COVERING ARRAY KP ,MAPC 965 * 12HIN THE MAIN , 44H PROGRAM WILL HAVE TO BE INCREASED. EXECUTI,MAPC 970 * 14HON TERMINATES.) MAPC 975 STOP MAPC 980 C MAPC 985 C MAPC 990 C IF IPRN .EQ. 1 THE INPUT DATA WILL BE LISTED (A GOOD IDEA ON MAPC 995 C THE FIRST TIME A GIVEN DATA SET IS ENTERED). MAPC1000 C MAPC1005 C IF IPUN .EQ. 1, THE FINAL CONFIGURATION WILL BE WRITTEN ON MAPC1010 C DISK (OR PUNCHED), USING LOGIAL DEVICE (LPUNCH). MAPC1015 C MAPC1020 50 IF (IPUN.EQ.0) GO TO 55 MAPC1025 IF (LPUNCH.EQ.0) LPUNCH = LPUN7 MAPC1030 WRITE (LOUT,99985) LPUNCH MAPC1035 99985 FORMAT (/10X, 48HCONFIGURATION OF SUBSETS WILL BE WRITTEN TO DISK,MAPC1040 * 12H ON CHANNEL , I3, 35H AT END OF (MAJOR) POST-ITERATIONS.) MAPC1045 C MAPC1050 C MAPC1055 C GET THE INITIAL CONFIGURATION OF P(I). MAPC1060 C MAPC1065 55 IF (ICON) 60, 70, 75 MAPC1070 60 IX = -ICON MAPC1075 WRITE (LOUT,99984) IX MAPC1080 99984 FORMAT (//10X, 41HSINCE ICON IS NEGATIVE, A RANDOM INITIAL , MAPC1085 * 31HCONFIGURATION WILL BE GENERATED/10X, 13HAND THE FIRST, I5, MAPC1090 * 34H RANDOM NUMBERS WILL BE DISCARDED.//) MAPC1095 DO 65 I=1,IX MAPC1100 AMN = RUNIFV(0) MAPC1105 65 CONTINUE MAPC1110 GO TO 80 MAPC1115 70 WRITE (LOUT,99983) MAPC1120 99983 FORMAT (//10X, 47HSINCE ICON = 0, A RATIONAL INITIAL CONFIGURATIO,MAPC1125 * 1HN, 37H WILL BE GENERATED (DEFAULT OPTION).//) MAPC1130 GO TO 80 MAPC1135 75 WRITE (LOUT,99982) ICON MAPC1140 99982 FORMAT (//10X, 47HSINCE ICON IS POSITIVE, A USER-SUPPLIED INITIAL,MAPC1145 * 51H CONFIGURATION WILL BE READ FROM LOGICAL DEVICE NO., I4, 1H.//MAPC1150 * ) MAPC1155 80 IF (M15.GT.0) GO TO 90 MAPC1160 IF (ICON.GT.0) GO TO 85 MAPC1165 WRITE (LOUT,99981) M15, ICON MAPC1170 99981 FORMAT (//51H USER HAS SPECIFIED INCOMPATIBLE OPTIONS. ALTHOUGH, MAPC1175 * 47H COMPUTATION IS TO START WITH REGRESSION (M15 =, I3, 2H),/ MAPC1180 * 61H NO USER-SUPPLIED INITIAL CONFIGUATION HAS BEEN GIVEN (ICON =,MAPC1185 * I3, 25H). EXECUTION TERMINATES.) MAPC1190 STOP MAPC1195 85 IF (M15.EQ.0) GO TO 100 MAPC1200 WRITE (LOUT,99980) MAPC1205 99980 FORMAT (//10X, 40HSINCE M15 IS NEGATIVE, THERE WILL BE NO , MAPC1210 * 45HITERATIVE COMPUTATION OF WEIGHTS AND SUBSETS,/10X, 8HAND THE ,MAPC1215 * 41HPROGRAM WILL PROCEED TO DO COMBINATORIAL , 15HOPTIMIZATION IM,MAPC1220 * 27HMEDIATELY AFTER REGRESSION.) MAPC1225 GO TO 100 MAPC1230 C MAPC1235 C IF THERE ARE TO BE NO ITERATIONS OF THE MATHEMATICAL PROGRAMMING MAPC1240 C ALGORITHM, THEN DON"T READ IN THE REMAINING (IRRELEVANT) VARIABLESMAPC1245 C MAPC1250 C MAPC1255 C MAPC1260 C MAPC1265 C MAPC1270 90 READ (L5,99979) (KP(I),I=1,M15) MAPC1275 99979 FORMAT (72I1) MAPC1280 C MAPC1285 C KP IS A BINARY VECTOR THAT CONTROLS THE AMOUNT OF MAPC1290 C PRINTED OUTPUT FOR EACH MAJOR ITERATION. WHEN M15 .LE. 0, KP IS MAPC1295 C IRRELEVANT AND IS THEREFORE NOT READ IN. MAPC1300 C MAPC1305 WRITE (LOUT,99978) MAPC1310 99978 FORMAT (///6X, 47HABBREVIATED (0) AND FULL-LENGTH (1) PRINTOUT FO,MAPC1315 * 2HR , 17HMAJOR ITERATIONS:) MAPC1320 WRITE (LOUT,99977) (I, I = 1, M15) MAPC1325 99977 FORMAT (/6X, 35I3) MAPC1330 WRITE (LOUT,99977) (KP(I),I=1,M15) MAPC1335 C MAPC1340 C MAPC1345 C MAPC1350 C MAPC1355 C MAPC1360 C MAPC1365 READ (L5,99998) ITPRE, IUPPER, JLIM, JPOST MAPC1370 WRITE (LOUT,99976) ITPRE, IUPPER, JLIM, JPOST MAPC1375 99976 FORMAT (//6X, 26HITPRE IUPPER JLIM JPOST/5X, 2I6, 1X, I6, 1X, MAPC1380 * I6) MAPC1385 C MAPC1390 C ITPRE IS THE MAXIMUM NUMBER OF MAJOR ITERATIONS ALLOWED PRIOR TO MAPC1395 C POLISHING. (I. E., PRE-POLISHING ITERATIONS.) IF ITPRE IS MAPC1400 C NEGATIVE, ITERATIVE COMPUTATION BEGINS WITH DE NOVO MAJOR MAPC1405 C ITERATIONS. MAPC1410 C MAPC1415 C IF ITPRE IS ZERO, THE DEFAULT VALUE OF 6 IS SUPPLIED. MAPC1420 C THERE IS NO OPTION TO BEGIN COMPUTATION WITH THE FIRST MAPC1425 C POLISHING ITERATION, BUT ITPRE.LT.0 STARTS COMPUTATION WITH MAPC1430 C DE NOVO ITERATIONS. MAPC1435 C MAPC1440 C MAPC1445 C IUPPER IS THE MAXIMUM NUMBER OF INNER ITERATIONS IN THE OUTER MAPC1450 C ITERATIONS OF THE PRE-POLISHING MAJOR ITERATIONS. MAPC1455 C MAPC1460 C JLIM IS THE MAXIMUM NUMBER OF TIMES ALPHA AND BETA CAN BE MAPC1465 C ADJUSTED DURING AN OUTER ITERATION OF A PRE-POLISHING MAJOR MAPC1470 C ITERATION. MAPC1475 C MAPC1480 C JPOST IS THE MAXIMUM NUMBER OF INNER ITERATIONS OF AN OUTER MAPC1485 C ITERATION OF A POLISHING MAJOR ITERATION. MAPC1490 C MAPC1495 C MAPC1500 C MAPC1505 C THE NEXT STATEMENT ALLOWS THE OPTION OF STARTING A RUN WITH MAPC1510 C DE NOVO MAJOR ITERATIONS, AND PROBABLY SHOULD BE USED ONLY MAPC1515 C FOR RESUMING AN EARLIER ANALYSIS. MAPC1520 C MAPC1525 KTPRE = ITPRE MAPC1530 IF (ITPRE.GE.0) GO TO 95 MAPC1535 IPRE = 1 MAPC1540 WRITE (LOUT,99975) ITPRE MAPC1545 99975 FORMAT (//10X, 42HUSER HAS DECLARED THAT ITPRE IS NEGATIVE (, I3, MAPC1550 * 52H), SO THAT COMPUTATION WILL BEGIN WITH DE NOVO MAJOR, MAPC1555 * 12H ITERATIONS.) MAPC1560 IF (ICON.LT.0) WRITE (LOUT,99974) ICON MAPC1565 99974 FORMAT (//10X, 47HUSER HAS SPECIFIED RANDOM INITIAL CONFIGURATION,MAPC1570 * 8H (ICON =, I3, 45H) WHICH IS INCONSISTENT WITH A DE NOVO START;/MAPC1575 * 10X, 47HINITIAL CONFIGURATION WILL INSTEAD BE RATIONAL.) MAPC1580 95 IF (ITPRE.EQ.0) ITPRE = JTPRE MAPC1585 ITPRE1 = ITPRE + 1 MAPC1590 IF (IUPPER.LE.0) IUPPER = 50 MAPC1595 IF (ITPRE.GT.0) WRITE (LOUT,99973) ITPRE, IUPPER MAPC1600 99973 FORMAT (//10X, 34HMAXIMUM NUMBER OF MAJOR ITERATIONS, 9H PRIOR TO,MAPC1605 * 20H POLISHING (ITPRE) =, I4, 1H,/10X, 17HWITH A MAXIMUM OF, I5, MAPC1610 * 26H INNER ITERATIONS (IUPPER), 21H PER OUTER ITERATION.) MAPC1615 C MAPC1620 IF (JLIM.LE.0) JLIM = 4 MAPC1625 KLIM = JLIM MAPC1630 IF (JPOST.LE.0) JPOST = 75 MAPC1635 IF (ITPRE.GT.0) WRITE (LOUT,99972) KLIM MAPC1640 99972 FORMAT (//9X, 20H USER HAS SPECIFIED , 18HA LIMIT (JLIM) OF , I3, MAPC1645 * 28H CALL(S) TO ADJUST PER OUTER, 28H ITERATION PRIOR TO POLISHIN,MAPC1650 * 3HG. ) MAPC1655 WRITE (LOUT,99971) JPOST MAPC1660 99971 FORMAT (//10X, 14HTHERE WILL BE , I3, 24H INNER ITERATIONS (JPOST,MAPC1665 * 2H) , 37HPER OUTER ITERATION DURING POLISHING.) MAPC1670 C MAPC1675 C MAPC1680 C MAPC1685 C MAPC1690 READ (L5,99968) ALF0 MAPC1695 C MAPC1700 C ALF0 IS THE INITIAL ESTIMATE OF THE STEP SIZE (DEFAULT =1.0) MAPC1705 C MAPC1710 IF (ALF0.LE.0.0) ALF0 = 1.0 MAPC1715 WRITE (LOUT,99970) ALF0 MAPC1720 99970 FORMAT (//6X, 6HALF0 =, F12.8, 31H (INTERVAL FOR INITIAL ESTIMATE,MAPC1725 * 15H OF STEP SIZE).) MAPC1730 C MAPC1735 C MAPC1740 C MAPC1745 C MAPC1750 READ (L5,99968) ALPHAI, AK, ACRIT, BLCRIT MAPC1755 C MAPC1760 WRITE (LOUT,99969) ALPHAI, AK, ACRIT, BLCRIT MAPC1765 99969 FORMAT (//6X, 39HALPHAI AK ACRIT BLCRIT/3X, MAPC1770 * 4F11.8) MAPC1775 C MAPC1780 C ALPHAI IS THE WEIGHT FOR THE A-PART OF THE LOSS FUNCTION. MAPC1785 C MAPC1790 C AK IS THE CONSTANT IN THE FORMULA FOR ADJUSTING ALPHA AND BETA. MAPC1795 C MAPC1800 C ACRIT IS THE CRITERION OF CONVERGENCE FOR THE RELATIVE GRADIENT. MAPC1805 C MAPC1810 C BLCRIT IS THE CRITERION OF CONVERGENCE FOR THE B-PART OF THE MAPC1815 C LOSS FUNCTION. MAPC1820 C MAPC1825 99968 FORMAT (4F10.6) MAPC1830 C MAPC1835 C ESTABLISHING A DEFAULT VALUE FOR ALPHAI: MAPC1840 C MAPC1845 IF (ALPHAI.LE.0.0) ALPHAI = .40 MAPC1850 BETAI = 1.0 - ALPHAI MAPC1855 IF (AK.LE.0.0) AK = 2.0 MAPC1860 IF (ACRIT.LE.0.0) ACRIT = 0.005 MAPC1865 IF (BLCRIT.LE.0.0) BLCRIT = .05 MAPC1870 WRITE (LOUT,99967) ALPHAI, AK, ACRIT, BLCRIT MAPC1875 99967 FORMAT (//10X, 8HALPHAI =, F12.5, 28H (FOR WEIGHTING A-PART OF LO,MAPC1880 * 13HSS FUNCTION).//10X, 5HAK = , F12.5, 22H (FOR ADJUSTING ALPHA ,MAPC1885 * 10HAND BETA).//10X, 7HACRIT =, F12.5, 23H (CRITERION FOR CONVERG,MAPC1890 * 27HENCE OF RELATIVE GRADIENT).//10X, 8HBLCRIT =, F12.5, 6H (CRIT,MAPC1895 * 20HERION FOR B-PART OF , 15HLOSS FUNCTION).//) MAPC1900 C MAPC1905 C MAPC1910 C MAPC1915 C MAPC1920 C MAPC1925 100 READ (LREAD,99965) TITL MAPC1930 C MAPC1935 C MAPC1940 READ (LREAD,99966) N, ISWIT, LABL MAPC1945 99966 FORMAT (3I2) MAPC1950 C MAPC1955 C MAPC1960 READ (LREAD,99965) FMT MAPC1965 99965 FORMAT (72A1) MAPC1970 C MAPC1975 C N IS THE NUMBER OF STIMULI. MAPC1980 C MAPC1985 C ISWIT = 1 FOR DISSIMILARITIES DATA. MAPC1990 C ISWIT .LE. 0 FOR SIMILARITIES DATA. MAPC1995 C MAPC2000 C IF ILAB .EQ. 1, THE PROGRAM EXPECTS TO FIND 6-CHARACTER LABELS MAPC2005 C (12 TO A CARD, IN COLUMNS 1 - 72) IMMEDIATELY FOLLOWING THE MAPC2010 C NUMERICAL DATA; OTHERWISE, INTERNALLY GENERATED LABELS OF 1,...,N MAPC2015 C WILL BE USED FOR THE STIMULI. MAPC2020 C MAPC2025 C MAPC2030 IF (N.LE.N30) GO TO 105 MAPC2035 WRITE (LOUT,99964) N30, N MAPC2040 99964 FORMAT (47H IN THIS VERSION OF MAPCLUS, THE MAXIMUM NUMBER, MAPC2045 * 14H OF STIMULI IS, I3, 24H, BUT YOU HAVE SPECIFIED, I3, 1H.// MAPC2050 * 22H EXECUTION TERMINATES.) MAPC2055 STOP MAPC2060 105 WRITE (LOUT,99963) TITL, N, ISWIT, IPRN, FMT MAPC2065 99963 FORMAT (//1H1, 25HTITLE OF INPUT DATA SET: , 72A1///10H N ISWI,MAPC2070 * 6HT LABL/1X, I3, 2X, I3, 5X, I1//28H SPECIFIED FORMAT OF THE INP,MAPC2075 * 11HUT DATA IS://1X, 72A1/) MAPC2080 IF (LABL.EQ.0) WRITE (LOUT,99962) MAPC2085 99962 FORMAT (//1X, 46HTHE PROGRAM WILL GENERATE NUMERICAL LABELS FOR, MAPC2090 * 13H THE STIMULI.) MAPC2095 IF (LABL.EQ.1) WRITE (LOUT,99961) MAPC2100 99961 FORMAT (//1X, 48HUSER HAS DECLARED THAT LABELS ARE TO BE READ IN ,MAPC2105 * 33HIMMEDIATELY AFTER NUMERICAL DATA.) MAPC2110 LD2 = LD1 + 1 MAPC2115 ALD1 = LD1 MAPC2120 BN = N MAPC2125 BIN = 1.0/BN MAPC2130 N1 = N - 1 MAPC2135 AN1 = N1 MAPC2140 NDO = N*N1/2 MAPC2145 AB = NDO MAPC2150 ABNV = 1.0/AB MAPC2155 AMN = 1.0E20 MAPC2160 AMX = -1.0E20 MAPC2165 C MAPC2170 C READ IN LOWERHALFMATRIX BY ROWS MAPC2175 C MAPC2180 DO 115 I=2,N MAPC2185 I1 = I - 1 MAPC2190 READ (LREAD,FMT) (DATA(IV,I),IV=1,I1) MAPC2195 DO 110 IV=1,I1 MAPC2200 DT = DATA(IV,I) MAPC2205 IF (DT.GT.AMX) AMX = DT MAPC2210 IF (DT.LT.AMN) AMN = DT MAPC2215 110 CONTINUE MAPC2220 115 CONTINUE MAPC2225 C MAPC2230 C MAPC2235 C SET UP STIMULUS LABELS OF THE INTEGERS 1,...,N. THESE LABELS MAPC2240 C ARE CONSTRUCTED EVEN IF THE USER SUPPLIES LABELS, SO THAT IN MAPC2245 C THE EVENT OF AN END OF FILE WHILE ATTEMPTING TO READ THE LATTER MAPC2250 C LABELS, THE PROGRAM STILL HAS USABLE LABELS. MAPC2255 C MAPC2260 DO 120 I=1,N MAPC2265 ILAB(I,1) = IBL MAPC2270 ILAB(I,6) = IBL MAPC2275 ILAB(I,2) = IL MAPC2280 ILAB(I,5) = IR MAPC2285 K4 = MOD(I,10) MAPC2290 ILAB(I,4) = IDIG(K4+1) MAPC2295 K4 = 1 + (I-K4)/10 MAPC2300 ILAB(I,3) = IDIG(K4) MAPC2305 120 CONTINUE MAPC2310 C MAPC2315 C THE DATA WILL SOON BE IN THE LOWER TRIANGULAR HALF OF THE ARRAY MAPC2320 C DATA(I,J). THE UPPER HALF WILL BE USED FOR RESIDUALS. MAPC2325 C MAPC2330 C NOW TRANSFORM THEM TO BE SIMILARITIES (NOT DISSIMILARITIES) MAPC2335 C ON THE INTERVAL [0,1]. MAPC2340 C MAPC2345 IF (LABL.NE.1) GO TO 125 MAPC2350 READ (LREAD,99960,END=493) ((ILAB(I,J), J = 1, 6), I= 1, N) MAPC2355 99960 FORMAT (72A1) MAPC2360 GO TO 125 MAPC2365 493 WRITE (LOUT,99959) MAPC2370 99959 FORMAT (///42H ********PROGRAM READ AN END-OF-FILE WHILE, MAPC2375 * 40H ATTEMPTING TO READ USER-SUPPLIED LABELS/9X, 12HWILL INSTEAD, MAPC2380 * 44H USE INTEGER LABELING. EXECUTION CONTINUES.//) MAPC2385 125 IF (ISWIT.GT.0) GO TO 130 MAPC2390 BMN = AMN MAPC2395 C3 = -1.0 MAPC2400 GO TO 135 MAPC2405 130 BMN = AMX MAPC2410 C3 = 1.0 MAPC2415 135 BMX = AMX - AMN MAPC2420 IF (BMX.LT.1.0E-6) GO TO 530 MAPC2425 C1 = 1.0/BMX MAPC2430 C2 = BMN*C1 MAPC2435 DO 145 I=2,N MAPC2440 I1 = I - 1 MAPC2445 DO 140 J=1,I1 MAPC2450 DATA(I,J) = C3*C1*(BMN-DATA(J,I)) MAPC2455 140 CONTINUE MAPC2460 145 CONTINUE MAPC2465 IF (ISWIT.LE.0) GO TO 150 MAPC2470 WRITE (LOUT,99958) C2, C1 MAPC2475 99958 FORMAT (/42H THE INPUT DATA ARE DISSIMILARITIES WHICH , 7HHAVE BE,MAPC2480 * 35HEN LINEARLY TRANSFORMED AS FOLLOWS://40X, 10HY =, MAPC2485 * F10.5, 3H - , F10.5, 13H(Y )/41X, 7HNEW SIM, 27X, MAPC2490 * 10HRAW DISSIM) MAPC2495 GO TO 155 MAPC2500 150 WRITE (LOUT,99957) C1, C2 MAPC2505 99957 FORMAT (/39H THE INPUT DATA ARE SIMILARITIES WHICH , 9HHAVE BEEN, MAPC2510 * 33H LINEARLY TRANSFORMED AS FOLLOWS://40X, 10HY =, F10.5, MAPC2515 * 10H(Y ), 3H - , F10.5/41X, 7HNEW SIM, 14X, 7HRAW SIM) MAPC2520 155 IF (IPRN.NE.1) GO TO 170 MAPC2525 WRITE (LOUT,99956) MAPC2530 99956 FORMAT (44H1 NO TRANSFORMED RAW SUBSCRIPTS, 6H ,MAPC2535 * 9H LABELS/49H VALUES DATA OF STIMULI ,MAPC2540 * 12H OF STIMULI/44H I J//MAPC2545 * ) MAPC2550 K = 0 MAPC2555 DO 165 I=2,N MAPC2560 I1 = I - 1 MAPC2565 DO 160 J=1,I1 MAPC2570 K = K + 1 MAPC2575 IF (MOD(K,53).EQ.0) WRITE (LOUT,99956) MAPC2580 WRITE (LOUT,99955) K, DATA(I,J), DATA(J,I), I, J, MAPC2585 * (ILAB(I,L),L=1,6), (ILAB(J,L),L=1,6) MAPC2590 160 CONTINUE MAPC2595 165 CONTINUE MAPC2600 99955 FORMAT (1X, I5, F12.4, F14.4, 2I6, 4X, 6A1, 4X, 6A1) MAPC2605 C MAPC2610 170 DO 180 I=1,N MAPC2615 DO 175 IW=1,LD1 MAPC2620 P(I,IW) = 0.0 MAPC2625 175 CONTINUE MAPC2630 P(I,LD2) = 1.0 MAPC2635 180 CONTINUE MAPC2640 VARSIM = 0.0 MAPC2645 STOT = 0.0 MAPC2650 DO 190 I=2,N MAPC2655 I1 = I - 1 MAPC2660 DO 185 J=1,I1 MAPC2665 STOT = STOT + DATA(I,J) MAPC2670 185 CONTINUE MAPC2675 190 CONTINUE MAPC2680 STOTAV = STOT*ABNV MAPC2685 DO 200 I=2,N MAPC2690 I1 = I - 1 MAPC2695 DO 195 J=1,I1 MAPC2700 VARSIM = VARSIM + (STOTAV-DATA(I,J))**2 MAPC2705 195 CONTINUE MAPC2710 200 CONTINUE MAPC2715 DO 205 IW=1,LD2 MAPC2720 RISE(IW) = 0.0 MAPC2725 205 CONTINUE MAPC2730 IF (ICON.GT.0) CALL INICON(0, 0, ICON) MAPC2735 IF (ICON.LE.0 .AND. M15.GT.0) GO TO 215 MAPC2740 IF (ICON.GT.0 .OR. M15.NE.0) GO TO 210 MAPC2745 WRITE (LOUT,99954) ICON MAPC2750 99954 FORMAT (//45H YOU HAVE SPECIFIED THE OPTION FOR REGRESSION, MAPC2755 * 27H ONLY (M15 = 0 ITERATIONS),/30H BUT YOU HAVE DECLARED AN INFE,MAPC2760 * 23HASIBLE LOGICAL DEVICE #, 1H(, I3, 23H) AS THE VALUE OF ICON MAPC2765 * /46H ON THE PARAMETER CARD. EXECUTION TERMINATES.//) MAPC2770 STOP MAPC2775 C MAPC2780 C MAPC2785 C MAPC2790 C MAPC2795 C MAPC2800 C THIS IS THE OPTION FOR CALLING THE REGRESSION ROUTINE FOR A MAPC2805 C USER-SUPPLIED INIT. CONF., WHILE BYPASSING THE ITERATIVE MAPC2810 C FITTING PROCEDURE. MAPC2815 C MAPC2820 210 WRITE (LOUT,99944) TITL MAPC2825 NST = 1 MAPC2830 DENS(1) = 0.0 MAPC2835 KC = 1 MAPC2840 CALL REGR(0, 0, 0) MAPC2845 C MAPC2850 C THE FIRST ARGUMENT IN THE FOLLOWING CALL TO PRINTD IS 1 SO THAT MAPC2855 C DENSITY CAN BE COMPUTED AND PRINTED. MAPC2860 C MAPC2865 WRITE (LOUT,99942) MAPC2870 CALL PRINTD(1, 0) MAPC2875 C MAPC2880 C POSSIBLE BRANCH TO COMBINATORIAL OPTIMIZATION MAPC2885 C MAPC2890 IF (M15) 465, 520, 215 MAPC2895 215 DLAM = ALF0 MAPC2900 DO 220 IW=1,LD1 MAPC2905 ALFRAY(IW) = ALPHAI MAPC2910 BETRAY(IW) = BETAI MAPC2915 220 CONTINUE MAPC2920 C MAPC2925 C MAPC2930 C MAPC2935 C MAPC2940 C DO LOOP FOR "MAJOR" ITERATIONS MAPC2945 C MAPC2950 DO 450 MST=1,M15 MAPC2955 C MAPC2960 C MAPC2965 M24 = MST MAPC2970 BLMX(MST) = -1.0E20 MAPC2975 BLMN(MST) = 1.0E20 MAPC2980 IADJ(MST) = 0 MAPC2985 DENS(MST) = 0. MAPC2990 MP(MST) = 0 MAPC2995 NW(MST) = 0 MAPC3000 SVAF(MST) = 0.0 MAPC3005 MST1 = MST - 1 MAPC3010 KMOD = MOD(MST,2) MAPC3015 IF (IPRE.NE.1) GO TO 225 MAPC3020 C MAPC3025 C MECHANISM TO ALLOW A RESTART WITH DE NOVO ITERATIONS: MAPC3030 C MAPC3035 I = 0 MAPC3040 IF (ITPRE.LE.0) I = 1 MAPC3045 ITPRE1 = MST - I MAPC3050 ITPRE = ITPRE1 - 1 MAPC3055 C MAPC3060 C NO MORE PRE-ITERATIONS MAPC3065 C MAPC3070 IF (IPRE.EQ.1 .AND. KTPRE.GE.0 .AND. MST1.GT.0) WRITE MAPC3075 * (LOUT,99953) BLMX(MST1), BCRIT MAPC3080 99953 FORMAT (///40H SINCE THE MAXIMUM BLOS ACROSS SUBSETS (, F10.8, MAPC3085 * 53H) IS LESS THAN OR EQUAL TO THE STOPPING CRITERION OF , MAPC3090 * 8HBLCRIT =, F12.8/14H THERE WILL BE, 24H NO MORE PRE-POLISHING I,MAPC3095 * 10HTERATIONS.///) MAPC3100 C MAPC3105 C TAKING CARE OF NUMBER OF INNER ITERATIONS CONSTITUTING AN OUTER MAPC3110 C ITERATION, DEPENDING ON THE NATURE OF CURRENT MAJOR ITERATION. MAPC3115 C MAPC3120 225 IF (MST-ITPRE1) 230, 235, 240 MAPC3125 230 L15 = IUPPER MAPC3130 K15 = IUPPER MAPC3135 GO TO 250 MAPC3140 235 L15 = JPOST + 30 MAPC3145 WRITE (LOUT,99952) MST MAPC3150 99952 FORMAT (/49H 30 EXTRA INNER ITERATIONS FOR THE FIRST MAJOR, MAPC3155 * 12H ITERATION (, I3, 29H) WITH POLISHING (BETA = 1.0)//) MAPC3160 GO TO 245 MAPC3165 240 L15 = JPOST MAPC3170 245 K15 = JPOST MAPC3175 C MAPC3180 C NO EFFECTIVE LIMIT ON ADJUST CALLS FOR POST-POLISHING ITERATIONS MAPC3185 JLIM = 1000 MAPC3190 C MAPC3195 C MAPC3200 C MAPC3205 C THE FOLLOWING DO LOOP SETS UP THE OUTER ITERATIONS. MAPC3210 C MAPC3215 250 DO 440 IIW=1,LD1 MAPC3220 C MAPC3225 C KC DETERMINES PRINTING AT THE END OF A MAJOR ITERATION MAPC3230 C MAPC3235 KC = 0 MAPC3240 IF (IIW.EQ.LD1) KC = 1 MAPC3245 C MAPC3250 C PROCEDURE FOR REVERSING THE ORDER IN WHICH SUBSETS MAPC3255 C (AND THEIR WEIGHTS) ARE COMPUTED, FOR EVEN-NUMBERED MAPC3260 C MAJOR ITERATIONS. (ALSO USED BELOW IN COMBINATORIAL MAPC3265 C OPTIMIZATION ITERATIONS). MAPC3270 C MAPC3275 IF (KMOD.EQ.1) GO TO 255 MAPC3280 IW = LD2 - IIW MAPC3285 GO TO 260 MAPC3290 255 IW = IIW MAPC3295 C MAPC3300 C USER-SUPPLIED TRIAL STEP SIZE FOR FIRST INNER ITERATION MAPC3305 260 ALF0 = DLAM MAPC3310 IFLOP = 2 MAPC3315 OBSLF(2) = 1.0E20 MAPC3320 ASTEP(2) = 1.0E20 MAPC3325 RCORR = 0.0 MAPC3330 C MAPC3335 C GET THE RESIDUALS AND CENTER THEM AT THE BEGINNING OF OUTER IT. MAPC3340 C MAPC3345 CALL RESID(IW) MAPC3350 JADJ = 0 MAPC3355 C MAPC3360 C MAPC3365 C MAPC3370 C NOW SET UP THE INNER ITERATIONS. MAPC3375 C MAPC3380 C MAPC3385 C MAPC3390 DO 380 KL1=1,L15 MAPC3395 KL = KL1 MAPC3400 IFLIP = IFLOP MAPC3405 IFLOP = 3 - IFLOP MAPC3410 GRSUM = 0.0 MAPC3415 GRMEN(IFLOP) = 0.0 MAPC3420 C MAPC3425 C ON THE VERY FIRST POLISHING ITERATION, CALL ADJUST MAPC3430 C ON EVERY THIRD INNER ITERATION DURING THE EXTRA MAPC3435 C INNER ITERATIONS MAPC3440 C MAPC3445 IF (KL.GT.K15 .AND. MOD(KL,3).EQ.0 .AND. ALFRAY(IW).GT.1.0E-6) MAPC3450 * CALL ADJUST(MST, IW) MAPC3455 C MAPC3460 C NOW GET THE INITIAL CONFIGURATION FOR (ONLY) THE VERY FIRST MAPC3465 C INNER ITERATION OF SUBSET IW (DURING THE FIRST MAJOR ITERATION). MAPC3470 C MAPC3475 IF (KL+MST.EQ.2 .AND. ICON.LE.0 .AND. ITPRE.GT.0) CALL MAPC3480 * INICON(MST, IW, ICON) MAPC3485 IF (MST.LE.ITPRE .OR. KL.NE.1) GO TO 265 MAPC3490 C MAPC3495 C MAPC3500 C THE "DE NOVO" APPROACH TO COMPUTING P(I) AFTER INITIAL POLISHING MAPC3505 C MAPC3510 CALL INICON(MST, IW, 0) MAPC3515 ALFRAY(IW) = ALPHAI MAPC3520 BETRAY(IW) = BETAI MAPC3525 C MAPC3530 C MAPC3535 C MAPC3540 265 BCONST = BSUM(IW) MAPC3545 C MAPC3550 C MAPC3555 C NOW ESTIMATE THE VALUE OF RISE(IW) AND THE MAPC3560 C REGRESSION CONSTANT, AND THEN TRANSLATE THE RESIDUALS. MAPC3565 C MAPC3570 CALL COMPW(IW, 0) MAPC3575 C MAPC3580 C MAPC3585 C COMPUTE THE A PART OF THE LOSS FUNCTION (USED IN ESTIMATION MAPC3590 C OF OPTIMAL LAMBDA) AND THE B PART (EARLIER) VIA FUNCTION CALLS. MAPC3595 C (THE LATTER GIVES COEFFICIENT C FOR THE QUADRATIC INTERPOLATION MAPC3600 C FUNCTION.) MAPC3605 C MAPC3610 IF (KL.GT.1) GO TO 270 MAPC3615 CONST = ALFRAY(IW)*ASUM(IW) + BETRAY(IW)*BCONST MAPC3620 GO TO 275 MAPC3625 270 CONST = OBSLF(IFLIP) MAPC3630 C MAPC3635 C THEN EVALUATE THE PART OF THE EXPRESSIONS FOR EACH I = 1, N MAPC3640 C MAPC3645 275 CALL CDAPI(IW) MAPC3650 C MAPC3655 C MAPC3660 C NOTE THAT DB IS AVAILABLE AS A FUNCTION CALL MAPC3665 C MAPC3670 DO 280 KLM=1,N MAPC3675 GL(KLM,IFLOP) = BETRAY(IW)*DB(KLM,IW) + ALFRAY(IW)*DAPI(KLM) MAPC3680 GLA = GL(KLM,IFLOP) MAPC3685 IF (ABS(GLA).LE.1.0E-12) GO TO 280 MAPC3690 GRMEN(IFLOP) = GRMEN(IFLOP) + GLA MAPC3695 GRSUM = GRSUM + GLA**2 MAPC3700 280 CONTINUE MAPC3705 GRLEN(IFLOP) = GRSUM MAPC3710 GRSUM = SQRT(GRSUM) MAPC3715 IF (GRSUM.LE.1.0E-12) GO TO 385 MAPC3720 IF (KL.LE.1) GO TO 290 MAPC3725 RCORR = 0.0 MAPC3730 C = 0. MAPC3735 D = 0. MAPC3740 DO 285 I=1,N MAPC3745 C = C + GL(I,1) MAPC3750 D = D + GL(I,2) MAPC3755 RCORR = RCORR + GL(I,1)*GL(I,2) MAPC3760 285 CONTINUE MAPC3765 RCORR = (BN*RCORR-C*D)/(SQRT((BN*GRLEN(1)-GRMEN(1)**2)*(BN* MAPC3770 * GRLEN(2)-GRMEN(2)**2))) MAPC3775 290 CLAM = ALF0/GRSUM MAPC3780 ILOOP = 0 MAPC3785 DO 295 KLM=1,N MAPC3790 P(KLM,IW) = P(KLM,IW) - CLAM*GL(KLM,IFLOP) MAPC3795 295 CONTINUE MAPC3800 IF (KP(MST).EQ.1 .AND. KL.EQ.1) WRITE (LOUT,99951) MST, KL, IW, MAPC3805 * RISE(IW), ALFRAY(IW), BETRAY(IW), CLAM, ACRIT, GRSUM, RCORR MAPC3810 99951 FORMAT (6H MAJOR, I3, 7H, INNER, I4, 4H; W(, I2, 2H)=, F9.5, MAPC3815 * 7H ALPHA=, F6.4, 6H BETA=, F6.4, 8H LAMBDA=, F12.4, 7H ACRIT=, MAPC3820 * F9.7, 7H GRSUM=, F11.5, 5H COR=, F8.4) MAPC3825 C MAPC3830 C EVALUATE THE LOSS FUNCTION NOW THAT A STEP OF LENGTH ALF0 HAS MAPC3835 C BEEN TAKEN (USED FOR OPTIMAL LAMBDA). MAPC3840 C MAPC3845 FALPHA = ALFRAY(IW)*ASUM(IW) + BETRAY(IW)*BSUM(IW) MAPC3850 C MAPC3855 C THE FOLLOWING TWO STATEMENTS GIVE RISE TO BENIGN UNDERFLOW AND MAPC3860 C EXP DIAGNOSTICS MAPC3865 C MAPC3870 300 IF (ABS(ALF0).LE.1.0E-12) GO TO 305 MAPC3875 AA = (FALPHA-CONST+ALF0*GRSUM)/ALF0**2 MAPC3880 ALFMIN = GRSUM*0.5/AA MAPC3885 IF (AA.GT.0.001) GO TO 315 MAPC3890 305 IF (ABS(RCORR).GT.1.0E-12) GO TO 310 MAPC3895 ALFMIN = ALF0 MAPC3900 GO TO 315 MAPC3905 310 ALFMIN = ALF0*2.0**RCORR MAPC3910 315 ASTEP(IFLOP) = (ALFMIN-ALF0)/GRSUM MAPC3915 IF (AA.GT.0.001) GO TO 320 MAPC3920 IF (KP(MST).EQ.1) WRITE (LOUT,99950) AA, ALF0 MAPC3925 99950 FORMAT (27H QUADRATIC COEFFICIENT A =, F16.5, 15H; SUBSTITUTED V,MAPC3930 * 14HALUE OF ALF0 =, F11.5) MAPC3935 IF (KL.EQ.1) GO TO 330 MAPC3940 IF (KP(MST).EQ.1) WRITE (LOUT,99949) ALF0, ASTEP(IFLOP), ALFMIN MAPC3945 99949 FORMAT (34H USED COS MULTIPLIER OF OLD ALF0 =, F10.5, 9H TO GET N,MAPC3950 * 17HORMALIZED ASTEP =, F10.5, 4X, 13H NEW ALFMIN =, F10.5) MAPC3955 C MAPC3960 C IN CASE OVERFLOW CAUSES HAVOC ... MAPC3965 C MAPC3970 320 IF (ASTEP(IFLOP).GT.1.0E10) GO TO 385 MAPC3975 C MAPC3980 C MAPC3985 C NOW USE INTERMEDIATE STEP SIZE THAT SHOULD MINIMIZE THE LOSS MAPC3990 C FUNCTION. MAPC3995 C MAPC4000 DO 325 KLM=1,N MAPC4005 P(KLM,IW) = P(KLM,IW) - ASTEP(IFLOP)*GL(KLM,IFLOP) MAPC4010 325 CONTINUE MAPC4015 C MAPC4020 C COMPUTE THE OBSERVED VALUE OF THE LOSS FUNCTION MAPC4025 C MAPC4030 330 ALOS = ASUM(IW) MAPC4035 BCONST = BSUM(IW) MAPC4040 OBSLF(IFLOP) = ALFRAY(IW)*ALOS + BETRAY(IW)*BCONST MAPC4045 C MAPC4050 C GET THE ESTIMATED VALUE OF THE LOSS FUNCTION AT ALPHA MIN MAPC4055 C MAPC4060 PRELF = ALFMIN*(AA*ALFMIN-GRSUM) + CONST MAPC4065 C MAPC4070 C STRATEGY WHEN OBSLF IS GETTING WORSE: MAPC4075 C MAPC4080 IF (OBSLF(IFLOP).LE.OBSLF(IFLIP)) GO TO 335 MAPC4085 C CHECK TO SEE THAT PROCEDURE IS NOT CAUGHT IN A LOOP MAPC4090 ILOOP = ILOOP + 1 MAPC4095 IF (ILOOP.GT.3) GO TO 335 MAPC4100 ALF0 = ALFMIN MAPC4105 FALPHA = OBSLF(IFLOP) MAPC4110 GO TO 300 MAPC4115 C MAPC4120 C MAPC4125 C GET LENGTH OF "RELATIVE GRADIENT", WHICH IS THE PRODUCT OF MAPC4130 C LENGTH OF GRADIENT TIMES LENGTH OF P VECTOR. MAPC4135 C MAPC4140 335 RELGR = 0.0 MAPC4145 DO 340 KLM=1,N MAPC4150 RELGR = RELGR + P(KLM,IW)**2 MAPC4155 340 CONTINUE MAPC4160 RELGR = GRSUM*SQRT(RELGR) MAPC4165 IF (KP(MST).EQ.1 .AND. KL.EQ.1) WRITE (LOUT,99948) PRELF, MAPC4170 * OBSLF(IFLOP), ASTEP(IFLOP), RELGR, DCON, ALOS, BCONST MAPC4175 99948 FORMAT (14H F(ALPHA MIN)=, F11.5, 7H OBSLF=, F11.5, 7H ASTEP=, MAPC4180 * F12.5, 8H RELGR =, F11.4, 7H DCON =, F11.4, 7H ALOS =, F10.4, MAPC4185 * 6H BLOS=, F10.6) MAPC4190 C MAPC4195 C PUT IN NEW VALUE FOR LIMIT OF OPTIMAL STEP SIZE FOR MAPC4200 C NEXT INNER ITERATION. MAPC4205 C MAPC4210 ALF0 = ALFMIN MAPC4215 C MAPC4220 C CHECK FOR CONVERGENCE, UNLESS THIS IS THE LAST INNER ITERATION. MAPC4225 C MAPC4230 C IF THIS IS THE LAST (L15-TH) INNER ITERATION, NO TESTS ARE MAPC4235 C NECESSARY. MAPC4240 C MAPC4245 C MAPC4250 C MAPC4255 IF (KL.GT.K15) GO TO 360 MAPC4260 C MAPC4265 C MAPC4270 C IF THE "RELATIVE" GRADIENT IS NOT SHORT ENOUGH, DO NOT MAKE ANY MAPC4275 C CHANGES. MAPC4280 C MAPC4285 IF (RELGR.GT.ACRIT) GO TO 345 MAPC4290 C MAPC4295 C IF BLOS IS SMALL ENOUGH, AND THIS IS A PRE-ITERATION, MAPC4300 C TERMINATE THIS OUTER ITERATION. MAPC4305 C MAPC4310 IF (BCONST.GT.BLCRIT) GO TO 355 MAPC4315 C MAPC4320 IF (MST.GT.ITPRE) GO TO 350 MAPC4325 IF (KP(MST).EQ.1) WRITE (LOUT,99947) KL MAPC4330 99947 FORMAT (46H RELGR AND BCONST CRITERIA ARE BOTH SATISFIED., MAPC4335 * 46H THIS OUTER ITERATION OF A MAJOR PRE-ITERATION, 10H TERMINATE,MAPC4340 * 7HS AFTER, I3, 11H INNER ITS.) MAPC4345 GO TO 385 MAPC4350 C MAPC4355 345 IF (ABS(ASTEP(1)).LE.1.0E-5 .AND. ABS(ASTEP(2)).LE.1.0E-5) GO TO MAPC4360 * 355 MAPC4365 GO TO 365 MAPC4370 C MAPC4375 C MAPC4380 C SINCE THIS IS NOT A PRE-ITERATION, POSSIBLY CALL ADJUST AND MAPC4385 C CONTINUE THE INNER ITERATIONS. MAPC4390 C MAPC4395 350 IF (KP(MST).EQ.1 .AND. ALFRAY(IW).GT.1.0E-6) WRITE (LOUT,99946) MAPC4400 * RELGR, ACRIT, ALFRAY(IW), BETRAY(IW), BCONST, BLCRIT MAPC4405 99946 FORMAT (7H RELGR=, F10.8, 10H.LE.ACRIT=, F10.8, 2X, 10H CALLED AD,MAPC4410 * 12HJUST: ALPHA=, F9.6, 6H BETA=, F9.6, 8H BCONST=, F10.8, MAPC4415 * 8H BLCRIT=, F10.8) MAPC4420 355 IF (JADJ.EQ.JLIM) GO TO 385 MAPC4425 IF (ALFRAY(IW).GT.1.0E-6) CALL ADJUST(MST, IW) MAPC4430 C MAPC4435 C MAPC4440 C RETURN TO THE ORIGINAL (USER-SUPPLIED) ALPHA STEP SIZE AFTER MAPC4445 C CONVERGENCE HAS OCCURRED. MAPC4450 C MAPC4455 360 ALF0 = DLAM MAPC4460 C MAPC4465 C RE-CENTER THE RESIDUALS. MAPC4470 C MAPC4475 365 DO 375 I=2,N MAPC4480 I1 = I - 1 MAPC4485 DO 370 J=1,I1 MAPC4490 DATA(J,I) = DATA(J,I) + WCON MAPC4495 370 CONTINUE MAPC4500 375 CONTINUE MAPC4505 380 CONTINUE MAPC4510 C MAPC4515 385 IF (KP(MST).EQ.0) GO TO 390 MAPC4520 WRITE (LOUT,99951) MST, KL, IW, RISE(IW), ALFRAY(IW), BETRAY(IW), MAPC4525 * CLAM, ACRIT, GRSUM, RCORR MAPC4530 WRITE (LOUT,99948) PRELF, OBSLF(IFLOP), ASTEP(IFLOP), RELGR, MAPC4535 * DCON, ALOS, BCONST MAPC4540 C MAPC4545 C GET THE VAF BEFORE AS WELL AS AFTER POLISHING AT END OF OUTER MAPC4550 C ITERATION. MAPC4555 C MAPC4560 390 IF (KP(MST).EQ.1) CALL VARIAN(MST, 1, IW) MAPC4565 IF (BCONST.GT.BLMX(MST)) BLMX(MST) = BCONST MAPC4570 IF (BCONST.LT.BLMN(MST)) BLMN(MST) = BCONST MAPC4575 C MAPC4580 C MAPC4585 C SINCE BLOS IS USING PAIRWISE PRODUCTS OF THE P(I), THE SIGNS MAPC4590 C ARE POTENTIALLY REVERSED. SET THE SIGN OF THE LARGEST MAPC4595 C OF THE ABS(P(I)) TO BE POSITIVE, AND MULTIPLY THE REST BY MAPC4600 C THE SAME SIGN USED TO MAKE THE LARGEST POSITIVE. MAPC4605 C MAPC4610 I3 = 1 MAPC4615 AM = ABS(P(1,IW)) MAPC4620 DO 395 I=2,N MAPC4625 AN = ABS(P(I,IW)) MAPC4630 IF (AN.LE.AM) GO TO 395 MAPC4635 AM = AN MAPC4640 I3 = I MAPC4645 395 CONTINUE MAPC4650 IF (P(I3,IW).GE.0.0) GO TO 410 MAPC4655 DO 400 I=1,N MAPC4660 P(I,IW) = -P(I,IW) MAPC4665 400 CONTINUE MAPC4670 B3 = 0.0 MAPC4675 DO 405 KLM=1,N MAPC4680 B3 = B3 + P(KLM,IW) MAPC4685 405 CONTINUE MAPC4690 B3 = B3*BIN MAPC4695 B4 = TM/B3 MAPC4700 410 IF (MST.LE.ITPRE) GO TO 415 MAPC4705 IF (KP(MST).EQ.1) WRITE (LOUT,99945) IW, B3, TM, B4, MAPC4710 * (P(KLM,IW),KLM=1,N) MAPC4715 99945 FORMAT (17H PRE-POLISHED P (, I2, 15H): (MEAN P(J) =, F12.6, 1H), MAPC4720 * 17H MEAN(P(I)P(J)) =, F12.6, 8H RATIO =, F12.6, 11H; USED .707/ MAPC4725 * 64(1X, 16F8.4/)) MAPC4730 C MAPC4735 C FORCE THE T VECTOR TO BE BINARY. MAPC4740 C MAPC4745 CALL POLISH(MST, IW) MAPC4750 C MAPC4755 C IF SOME OF THE FOLLOWING WRITE STATEMENTS WERE DELETED, MAPC4760 C THE FOLLOWING CALL TO COMPW COULD BE ELIMINATED, SINCE MAPC4765 C THE SUBSEQUENT CALL TO REGR TAKES CARE OF ESTIMATING ALL MAPC4770 C THE WEIGHTS SIMULTANEOUSLY. MAPC4775 C MAPC4780 CALL COMPW(IW, 1) MAPC4785 C MAPC4790 C MAPC4795 C MAPC4800 415 IF (MST+IW.GT.2) CALL REGR(MST, IW, MST) MAPC4805 IF (MST.GT.ITPRE) GO TO 420 MAPC4810 IF (KP(MST).NE.1) GO TO 440 MAPC4815 IF (KC.EQ.1) WRITE (LOUT,99944) TITL MAPC4820 99944 FORMAT (/1X, 72A1) MAPC4825 WRITE (LOUT,99943) MST, IW, RISE(IW), IW, B3, TM, B4, MAPC4830 * (P(KLM,IW),KLM=1,N) MAPC4835 99943 FORMAT (/5H IT #, I3, 3H W(, I2, 2H)=, F12.6, 12H P MATRIX (, MAPC4840 * I2, 2H):, 6X, 13H( MEAN P(J) =, F12.6, 1H), 17H MEAN(P(I)P(J)) =,MAPC4845 * F12.6, 8H RATIO =, F12.6/64(1X, 16F8.4/)) MAPC4850 GO TO 440 MAPC4855 420 IF (KC.NE.1) GO TO 425 MAPC4860 99942 FORMAT (////) MAPC4865 GO TO 430 MAPC4870 425 IF (KP(MST).NE.1) GO TO 435 MAPC4875 430 CALL PRINTD(MST, IW) MAPC4880 435 IF (IPUN.EQ.1 .AND. KC.EQ.1) CALL PUN(MST) MAPC4885 440 CONTINUE MAPC4890 DO 445 IW=1,LD1 MAPC4895 IF (RISE(IW).LT.0.0) NW(MST) = NW(MST) + 1 MAPC4900 445 CONTINUE MAPC4905 WRITE (LOUT,99941) MST, IADJ(MST), NW(MST) MAPC4910 99941 FORMAT (/24H DURING MAJOR ITERATION , I4, 19H ADJUST WAS CALLED , MAPC4915 * I4, 22H TIMES AND THERE WERE , I4, 18H NEGATIVE WEIGHTS./////) MAPC4920 IF (IERR.NE.4) SVAF(MST) = VAF MAPC4925 C MAPC4930 C OPTION TO TERMINATE PRE-ITERATIONS, BASED ON VAF FROM MAPC4935 C ITERATIVE REGRESSION. MAPC4940 C MAPC4945 IF (BLMX(MST).LE.BCRIT .AND. MST.LE.ITPRE .AND. IPRE.NE.1) IPRE = MAPC4950 * 1 MAPC4955 C MAPC4960 IF (MST.LT.ITPRE1 .OR. MST1.LE.0) GO TO 450 MAPC4965 IF (SVAF(MST)-SVAF(MST1).GE.0.001 .OR. SVAF(MST)-SVAF(MST1) MAPC4970 * .LT.0.0 .OR. ABS(DENS(MST)-DENS(MST1)).GE.0.005) GO TO 450 MAPC4975 WRITE (LOUT,99940) MAPC4980 99940 FORMAT (///43H TERMINATED THIS SERIES OF MAJOR ITERATIONS, MAPC4985 * 34H BECAUSE OF NEGLIGIBLE IMPROVEMENT///) MAPC4990 GO TO 455 MAPC4995 450 CONTINUE MAPC5000 C MAPC5005 C MAPC5010 C MAPC5015 C MAPC5020 455 IF (M24.EQ.M15) WRITE (LOUT,99939) M24 MAPC5025 99939 FORMAT (//49H TERMINATED MAJOR ITERATIONS AFTER REACHING USER-, MAPC5030 * 19HSPECIFIED LIMIT OF , I3//) MAPC5035 WRITE (LOUT,99938) MAPC5040 99938 FORMAT (1H1) MAPC5045 WRITE (LOUT,99937) MAPC5050 99937 FORMAT (//50H SUMMARY OF ALTERNATING LEAST SQUARES COMPUTATION , MAPC5055 * 35HPRIOR TO COMBINATORIAL OPTIMIZATION//) MAPC5060 WRITE (LOUT,99944) TITL MAPC5065 M15 = MIN0(M24,M15) MAPC5070 WRITE (LOUT,99936) MAPC5075 99936 FORMAT (//20H VAF BY ITERATION, 19X, 13H DENSITY OF, 13X, MAPC5080 * 57HB-PART OF LOSS FUNCTION NUMBER OF PREMATURE/43X,MAPC5085 * 8H SUBSETS, 41H AT END OF OUTER ITS. , MAPC5090 * 30H ADJUSTMENTS POLISHING/41X, 13H(=0. PRIOR TO, 58X, MAPC5095 * 12H(=0 PRIOR TO/42X, 10HPOLISHING), 61X, 10HPOLISHING)) MAPC5100 WRITE (LOUT,99935) (MST,SVAF(MST),NW(MST),DENS(MST),BLMX(MST), MAPC5105 * BLMN(MST),IADJ(MST),MP(MST),MST=1,M15) MAPC5110 99935 FORMAT (//(2X, 4HVAF(, I3, 2H)=, F12.6, 2X, I3, 14H NEG WTS DEN,MAPC5115 * 3HS =, F10.5, 12H MAX BLOS =, F10.5, 12H MIN BLOS =, F10.7, MAPC5120 * 6H ADJ =, I4, 11H MID POL =, I5/)) MAPC5125 C MAPC5130 IF (IPRE.EQ.1 .OR. M24.GE.ITPRE1) GO TO 465 MAPC5135 WRITE (LOUT,99934) MAPC5140 99934 FORMAT (//47H SINCE THE SUBSETS HAVE NOT YET BEEN POLISHED, , MAPC5145 * 32HTHE P MATRIX IS NOT BINARY, AND /18H THERE WILL BE NO , MAPC5150 * 28H COMBINATORIAL OPTIMIZATION./////) MAPC5155 DO 460 IW=1,LD1 MAPC5160 WRITE (LOUT,99943) M24, IW, RISE(IW), IW, B3, TM, B4, MAPC5165 * (P(KLM,IW),KLM=1,N) MAPC5170 460 CONTINUE MAPC5175 GO TO 5 MAPC5180 C MAPC5185 C TIME FOR COMBINATORIAL OPTIMIZATION MAPC5190 C MAPC5195 465 IF (IERR.EQ.4) GO TO 470 MAPC5200 IF (M15.LE.0) GO TO 475 MAPC5205 IF (SVAF(M15).GT.0.0 .AND. SVAF(M15).LE.1.0) GO TO 475 MAPC5210 470 WRITE (LOUT,99933) MAPC5215 99933 FORMAT (///49H ******** SINCE LINEAR DEPENDENCY WAS PRESENT IN, MAPC5220 * 59H THE SOLUTION FROM THE ALTERNATING LEAST SQUARES PROCEDURE,/ MAPC5225 * 11X, 48HCOMBINATORIAL OPTIMIZATION WILL NOT BE EXECUTED.///) MAPC5230 GO TO 5 MAPC5235 475 KC = 1 MAPC5240 IXV = 1 MAPC5245 IC1 = 0 MAPC5250 DO 510 MST=1,15 MAPC5255 NST = MST MAPC5260 KMOD = MOD(NST,2) MAPC5265 IC0 = 0 MAPC5270 WRITE (LOUT,99932) NST MAPC5275 99932 FORMAT (///22H THIS IS ITERATION, I3, 18H OF COMBINATORIAL , MAPC5280 * 36HOPTIMIZATION, PHASE ONE (DOUBLETONS)///) MAPC5285 DO 490 IIW=1,LD1 MAPC5290 IF (KMOD.EQ.1) GO TO 480 MAPC5295 IW = LD2 - IIW MAPC5300 GO TO 485 MAPC5305 480 IW = IIW MAPC5310 485 CALL COMDUB(NST, IW) MAPC5315 IC0 = IC0 + ICOUN MAPC5320 490 CONTINUE MAPC5325 DENS(NST) = 0.0 MAPC5330 CALL PRINTD(NST, 0) MAPC5335 IF (IC0.EQ.LD1 .AND. IC1.EQ.LD1) GO TO 515 MAPC5340 IC1 = 0 MAPC5345 WRITE (LOUT,99931) NST MAPC5350 99931 FORMAT (///22H THIS IS ITERATION, I3, 18H OF COMBINATORIAL , MAPC5355 * 36HOPTIMIZATION, PHASE TWO (SINGLETONS)///) MAPC5360 DO 505 IIW=1,LD1 MAPC5365 IF (KMOD.EQ.1) GO TO 495 MAPC5370 IW = LD2 - IIW MAPC5375 GO TO 500 MAPC5380 495 IW = IIW MAPC5385 500 CALL COMSIN(NST, IW) MAPC5390 IC1 = IC1 + ICOUN MAPC5395 505 CONTINUE MAPC5400 DENS(NST) = 0.0 MAPC5405 CALL PRINTD(NST, 0) MAPC5410 IF (IC0.EQ.LD1 .AND. IC1.EQ.LD1) GO TO 515 MAPC5415 IXV = 0 MAPC5420 CALL REGR(0, 0, NST) MAPC5425 IXV = 1 MAPC5430 510 CONTINUE MAPC5435 515 IXV = 0 MAPC5440 CALL REGR(0, 0, NST) MAPC5445 IF (NST.EQ.15) WRITE (LOUT,99930) MAPC5450 99930 FORMAT (///42H PROGRAM REACHED LIMIT OF 15 ITERATIONS OF, MAPC5455 * 28H COMBINATORIAL OPTIMIZATION.///) MAPC5460 IF (NST.LT.15) WRITE (LOUT,99929) MAPC5465 99929 FORMAT (///42H SINCE THE PRECEDING ITERATION PRODUCED NO, MAPC5470 * 50H IMPROVEMENT IN VAF, COMBINATORIAL OPTIMIZATION IS, 7H TERMIN,MAPC5475 * 5HATED.///) MAPC5480 IF (IPUN.EQ.1) CALL PUN(NST) MAPC5485 C MAPC5490 C SORT THE SUBSETS BY WEIGHT AND PRINT THEM OUT. MAPC5495 C MAPC5500 520 DO 525 IW=1,LD1 MAPC5505 IZ(IW) = IW MAPC5510 A(IW) = RISE(IW) MAPC5515 525 CONTINUE MAPC5520 CALL SORT(LD1) MAPC5525 KC = 2 MAPC5530 WRITE (LOUT,99928) MAPC5535 99928 FORMAT (////45H1SUBSETS RANKED ACCORDING TO NUMERICAL WEIGHT///) MAPC5540 WRITE (LOUT,99944) TITL MAPC5545 CALL PRINTD(NST, IW) MAPC5550 CALL FINIS(BMN, C3, C1) MAPC5555 GO TO 5 MAPC5560 530 WRITE (LOUT,99927) MAPC5565 99927 FORMAT (///34H ******** TROUBLE EXIT **********//9X, 9H CHECK F,MAPC5570 * 21HORMAT OF INPUT DATA. ///) MAPC5575 551 CONTINUE MAPC5578 STOP MAPC5580 END MAPC5585 C FUNCTION IDATEZ(DUMMY) FINI 5 C CALL DATE(IDATEZ) FINI 10 C RETURN FINI 15 C END FINI 20 C$ FORTY FORM,XREF FINI 25 SUBROUTINE FINIS(BMN, C3, C1) FINI 30 DOUBLE PRECISION DCON FINI 35 COMMON /A1/ P(030,025), DENS(050), NW(050), MP(050), BLMX(050), FINI 40 * BLMN(050), KP(050), AB, WCON, BIN, N2, N, LD2, N1, AN1, LOUT, FINI 45 * VARSIM, VAF, ABNV, NDO, RISE(025), LD1, IFLOP, KMOD, KC FINI 50 COMMON /A6/ DCON, DATA(030,030), ALOS, IXV FINI 55 COMMON /A9/ ILAB(030,6), ALD1 FINI 60 WK = RISE(LD2) FINI 65 DO 15 I=1,N FINI 70 DO 10 J=1,I FINI 75 DATA(J,I) = 0. FINI 80 DO 5 K=1,LD1 FINI 85 DATA(J,I) = DATA(J,I) + RISE(K)*P(I,K)*P(J,K) FINI 90 5 CONTINUE FINI 95 DATA(J,I) = DATA(J,I) + WK FINI 100 10 CONTINUE FINI 105 15 CONTINUE FINI 110 WRITE (LOUT,99999) FINI 115 99999 FORMAT (1H1, 26H TRANSFORMED TRANSFORMED, 9X, 14HRAW UNTRANS,FINI 120 * 6HFORMED, 39H RESIDUAL SUBSCRIPTS LABELS/9H OBSE,FINI 125 * 17HRVED ESTIMATED, 36H OBSERVED ESTIMATED , FINI 130 * 35H OF STIMULI OF STIMULI/22H SIMILARITY SIMILA,FINI 135 * 32HRITY PROXIMITY PROXIMITY, 20X, 1HI, 5X, 1HJ, 6X, 1HI, FINI 140 * 8X, 1HJ//) FINI 145 C4 = 1.0/(C3*C1) FINI 150 K = 0 FINI 155 DO 30 I=1,N FINI 160 DO 25 J=1,I FINI 165 K = K + 1 FINI 170 IF (MOD(K,49).NE.0) GO TO 20 FINI 175 WRITE (LOUT,99997) FINI 180 WRITE (LOUT,99999) FINI 185 20 D1 = BMN - DATA(I,J)*C4 FINI 190 D2 = BMN - DATA(J,I)*C4 FINI 195 D3 = D1 - D2 FINI 200 IF (I.EQ.J) D1 = 0.0 FINI 205 WRITE (LOUT,99998) DATA(I,J), DATA(J,I), D1, D2, D3, I, J, FINI 210 * (ILAB(I,L),L=1,6), (ILAB(J,L),L=1,6) FINI 215 25 CONTINUE FINI 220 30 CONTINUE FINI 225 99998 FORMAT (2F12.4, 4X, 3F12.4, 5X, 2I6, 3X, 6A1, 3X, 6A1) FINI 230 WRITE (LOUT,99997) FINI 235 99997 FORMAT (//49H NOTE: SELF-SIMILARITY AND SELF-PROXIMITY VALUES, FINI 240 * 60H ARE ONLY PREDICTED BY, BUT NOT OBSERVED IN, THE INPUT DATA.) FINI 245 RETURN FINI 250 END FINI 255 C$ FORTY FORM HF00 5 FUNCTION HF(X) HF00 10 COMMON /A1/ P(030,025), DENS(050), NW(050), MP(050), BLMX(050), HF00 15 * BLMN(050), KP(050), AB, WCON, BIN, N2, N, LD2, N1, AN1, LOUT, HF00 20 * VARSIM, VAF, ABNV, NDO, RISE(025), LD1, IFLOP, KMOD, KC HF00 25 HF = X - ABNV*X*X HF00 30 RETURN HF00 35 END HF00 40 C$ FORTY FORM,XREF COMS 5 SUBROUTINE COMSIN(MST, IW) COMS 10 DOUBLE PRECISION DCON COMS 15 INTEGER TITL COMS 20 COMMON /A1/ P(030,025), DENS(050), NW(050), MP(050), BLMX(050), COMS 25 * BLMN(050), KP(050), AB, WCON, BIN, N2, N, LD2, N1, AN1, LOUT, COMS 30 * VARSIM, VAF, ABNV, NDO, RISE(025), LD1, IFLOP, KMOD, KC COMS 35 COMMON /A2/ G(030), KT1(10), KT2(10), TK(10), LP(15), IPUN, IERR, COMS 40 * LPUNCH, LPUN7, ICOUN, TVAF, ICON, TITL(72), TRISE(025) COMS 45 COMMON /A6/ DCON, DATA(030,030), ALOS, IXV COMS 50 COMMON /A9/ ILAB(030,6), ALD1 COMS 55 ICOUN = 1 COMS 60 5 CALL RESID(IW) COMS 65 C COMS 70 C THAT GOT THE CENTERED RESIDUALS; NOW COMPUTE NUMERATOR (E) AND COMS 75 C DENOMINATOR (F) FOR V**2 COMS 80 C COMS 85 E = 0.0 COMS 90 F = 0.0 COMS 95 DO 15 I=2,N COMS 100 I1 = I - 1 COMS 105 PI = P(I,IW) COMS 110 DO 10 J=1,I1 COMS 115 PIJ = P(J,IW)*PI COMS 120 E = E + DATA(J,I)*PIJ COMS 125 F = F + PIJ COMS 130 10 CONTINUE COMS 135 15 CONTINUE COMS 140 VK2 = E*E/HF(F) COMS 145 99999 FORMAT (//47H VARIANCE IN THE RESIDUALS CURRENTLY ACCOUNTED , COMS 150 * 15H FOR BY SUBSET , I3, 2H =, F10.5) COMS 155 HTOT = 0.0 COMS 160 DO 20 I=1,N COMS 165 G(I) = 0. COMS 170 HTOT = HTOT + P(I,IW) COMS 175 20 CONTINUE COMS 180 IF (LP(MST).EQ.1) WRITE (LOUT,99999) IW, VK2 COMS 185 DO 30 I=1,N COMS 190 DO 25 J=1,N COMS 195 IF (J.EQ.I) GO TO 25 COMS 200 K1 = MIN0(I,J) COMS 205 K2 = MAX0(I,J) COMS 210 G(I) = G(I) + P(J,IW)*DATA(K1,K2) COMS 215 25 CONTINUE COMS 220 30 CONTINUE COMS 225 DO 35 K=1,LD2 COMS 230 TRISE(K) = RISE(K) COMS 235 35 CONTINUE COMS 240 IC10 = 0 COMS 245 RMAX = -1.0E20 COMS 250 DO 45 I=1,N COMS 255 PI2 = 2.0*P(I,IW) - 1.0 COMS 260 HT2 = HTOT - PI2 COMS 265 C COMS 270 C DO NOT CONSIDER DROPPING EITHER MEMBER OF A DYAD SUBSET COMS 275 C OR FORMING THE COMPLETE SUBSET. COMS 280 C COMS 285 IF (HT2.LT.1.98 .OR. HT2.GT.AN1) GO TO 45 COMS 290 R2 = 0.0 COMS 295 ANUM = E - PI2*G(I) COMS 300 IF (ABS(ANUM).LE.1.0E-12) GO TO 40 COMS 305 R2 = (ANUM**2)/HF(F-PI2*(HTOT-P(I,IW))) COMS 310 IF (R2.LE.RMAX) GO TO 40 COMS 315 C COMS 320 C UPDATE BEST V**2 COMS 325 C COMS 330 MR2 = I COMS 335 RMAX = R2 COMS 340 C COMS 345 C PRINT OUT (10 AT A TIME) THE ALLOWABLE SINGLETON CHANGES COMS 350 C AND RESULTING V**2 COMS 355 C COMS 360 40 CONTINUE COMS 365 IF (LP(MST).NE.1) GO TO 45 COMS 370 IC10 = IC10 + 1 COMS 375 KT1(IC10) = -FLOAT(I)*PI2 COMS 380 TK(IC10) = R2 COMS 385 IF ((IC10.LT.10 .AND. I.LT.N) .OR. (I.EQ.N .AND. IC10.EQ.0)) GO COMS 390 * TO 45 COMS 395 WRITE (LOUT,99998) (KT1(K),TK(K),K=1,IC10) COMS 400 99998 FORMAT (1X, 10(1X, 1H(, I3, F7.2, 1H))) COMS 405 IC10 = 0 COMS 410 45 CONTINUE COMS 415 IF (IC10.NE.0) WRITE (LOUT,99998) (KT1(K),TK(K),K=1,IC10) COMS 420 IF (RMAX.LE.VK2) RETURN COMS 425 P(MR2,IW) = 1.0 - P(MR2,IW) COMS 430 UVAF = TVAF COMS 435 CALL REGR(0, 0, MST) COMS 440 IF (IERR.EQ.4) GO TO 60 COMS 445 C COMS 450 C FIRST CHECK TO SEE IF THE WEIGHT OF ANY SUBSET WOULD COMS 455 C BECOME NEGATIVE. COMS 460 C COMS 465 DO 50 IK=1,LD1 COMS 470 LK = IK COMS 475 IF (RISE(IK).LE.0.0 .AND. TRISE(IK).GT.0.0) GO TO 55 COMS 480 50 CONTINUE COMS 485 GO TO 70 COMS 490 55 WRITE (LOUT,99997) (ILAB(MR2,I),I=1,6), IW, TVAF, UVAF, LK, COMS 495 * RISE(LK) COMS 500 99997 FORMAT (//19H REVERSING ELEMENT , 1X, 6A1, 11H OF SUBSET , I3, COMS 505 * 31H WOULD INCREASE OVERALL VAF TO , F10.6, 12H, REPLACING , COMS 510 * F10.6/55H BUT WAS NOT DONE SINCE THE CURRENTLY POSITIVE WEIGHT F,COMS 515 * 2HOR, 7H SUBSET, I3, 30H WOULD HAVE BECOME NEGATIVE (, F12.7, COMS 520 * 2H).) COMS 525 C COMS 530 C UNSUCCESSFUL CHANGE COMS 535 C COMS 540 60 P(MR2,IW) = 1.0 - P(MR2,IW) COMS 545 TVAF = UVAF COMS 550 DO 65 K=1,LD2 COMS 555 RISE(K) = TRISE(K) COMS 560 65 CONTINUE COMS 565 RETURN COMS 570 C COMS 575 C FOR A SUCCESSFUL CHANGE COMS 580 C COMS 585 70 ICOUN = 2 COMS 590 WRITE (LOUT,99996) (ILAB(MR2,I),I=1,6), IW, TVAF, UVAF COMS 595 99996 FORMAT (//19H REVERSING ELEMENT , 1X, 6A1, 11H OF SUBSET , I3, COMS 600 * 33H GAVE AN IMPROVED OVERALL VAF OF , F10.6, 11H REPLACING , COMS 605 * F10.6//) COMS 610 UVAF = TVAF COMS 615 C COMS 620 C NOW GO BACK AND LOOK FOR ANY OTHER SUCCESSFUL CHANGES WITHIN COMS 625 C SUBSET IW. COMS 630 C COMS 635 GO TO 5 COMS 640 END COMS 645 C$ FORTY FORM,XREF COMD 5 SUBROUTINE COMDUB(MST, IW) COMD 10 DOUBLE PRECISION DCON COMD 15 INTEGER TITL COMD 20 COMMON /A1/ P(030,025), DENS(050), NW(050), MP(050), BLMX(050), COMD 25 * BLMN(050), KP(050), AB, WCON, BIN, N2, N, LD2, N1, AN1, LOUT, COMD 30 * VARSIM, VAF, ABNV, NDO, RISE(025), LD1, IFLOP, KMOD, KC COMD 35 COMMON /A2/ G(030), KT1(10), KT2(10), TK(10), LP(15), IPUN, IERR, COMD 40 * LPUNCH, LPUN7, ICOUN, TVAF, ICON, TITL(72), TRISE(025) COMD 45 COMMON /A6/ DCON, DATA(030,030), ALOS, IXV COMD 50 COMMON /A9/ ILAB(030,6), ALD1 COMD 55 ICOUN = 1 COMD 60 5 CALL RESID(IW) COMD 65 C COMD 70 C THAT GOT THE CENTERED RESIDUALS; NOW COMPUTE NUMERATOR (E) AND COMD 75 C DENOMINATOR (F) FOR V**2 COMD 80 C COMD 85 E = 0.0 COMD 90 F = 0.0 COMD 95 DO 15 I=2,N COMD 100 I1 = I - 1 COMD 105 PI = P(I,IW) COMD 110 DO 10 J=1,I1 COMD 115 PIJ = P(J,IW)*PI COMD 120 E = E + DATA(J,I)*PIJ COMD 125 F = F + PIJ COMD 130 10 CONTINUE COMD 135 15 CONTINUE COMD 140 VK2 = E*E/HF(F) COMD 145 99999 FORMAT (//51H VARIANCE IN THE RESIDUALS CURRENTLY ACCOUNTED FOR , COMD 150 * 10HBY SUBSET , I3, 2H =, F10.5) COMD 155 HTOT = 0.0 COMD 160 DO 20 I=1,N COMD 165 G(I) = 0. COMD 170 HTOT = HTOT + P(I,IW) COMD 175 20 CONTINUE COMD 180 IF (LP(MST).EQ.1) WRITE (LOUT,99999) IW, VK2 COMD 185 DO 30 I=1,N COMD 190 DO 25 J=1,N COMD 195 IF (J.EQ.I) GO TO 25 COMD 200 K1 = MIN0(I,J) COMD 205 K2 = MAX0(I,J) COMD 210 G(I) = G(I) + P(J,IW)*DATA(K1,K2) COMD 215 25 CONTINUE COMD 220 30 CONTINUE COMD 225 DO 35 K=1,LD2 COMD 230 TRISE(K) = RISE(K) COMD 235 35 CONTINUE COMD 240 IC10 = 0 COMD 245 RMAX = -1.0E20 COMD 250 DO 50 I=2,N COMD 255 I1 = I - 1 COMD 260 PI = P(I,IW) COMD 265 PI2 = 2.0*PI - 1.0 COMD 270 DO 45 J=1,I1 COMD 275 PJ = P(J,IW) COMD 280 PJ2 = 2.0*PJ - 1.0 COMD 285 C COMD 290 C DO NOT CONSIDER DROPPING EITHER MEMBER OF A DYAD SUBSET COMD 295 C OR FORMING THE COMPLETE SUBSET. COMD 300 C COMD 305 HT2 = HTOT - PI2 - PJ2 COMD 310 IF (HT2.LT.1.98 .OR. HT2.GT.AN1) GO TO 45 COMD 315 C COMD 320 C COMPUTE VARIANCE ACCOUNTED FOR BY SUBSET IW, WHEN A COMD 325 C DOUBLETON CHANGE IS MADE, REVERSING ELEMENTS I AND J OF SUBSET COMD 330 C IW. COMD 335 C COMD 340 R3 = 0. COMD 345 ANUM = E - PI2*G(I) - PJ2*G(J) + DATA(J,I)*PI2*PJ2 COMD 350 IF (ABS(ANUM).LE.1.0E-12) GO TO 40 COMD 355 R3 = (ANUM**2)/HF(F-PI2*(HTOT-PI)-PJ2*(HTOT-PJ)+PI2*PJ2) COMD 360 IF (R3.LE.RMAX) GO TO 40 COMD 365 C COMD 370 C UPDATE BEST V**2 COMD 375 C COMD 380 MR2 = I COMD 385 MR3 = J COMD 390 RMAX = R3 COMD 395 C COMD 400 C PRINT OUT (8 AT A TIME) THE PERMISSIBLE DOUBLETON CHANGES AND COMD 405 C RESULTING V**2. COMD 410 C COMD 415 40 CONTINUE COMD 420 IF (LP(MST).NE.1) GO TO 45 COMD 425 IC10 = IC10 + 1 COMD 430 KT2(IC10) = -FLOAT(J)*PJ2 COMD 435 KT1(IC10) = -FLOAT(I)*PI2 COMD 440 TK(IC10) = R3 COMD 445 IF ((IC10.LT.8 .AND. (I.LT.N .OR. J.LT.N1)) .OR. (I.EQ.N .AND. COMD 450 * J.EQ.N1 .AND. IC10.EQ.0)) GO TO 45 COMD 455 WRITE (LOUT,99998) (KT1(K),KT2(K),TK(K),K=1,IC10) COMD 460 99998 FORMAT (1X, 8(1X, 1H(, 2I3, F7.2, 1H))) COMD 465 IC10 = 0 COMD 470 45 CONTINUE COMD 475 50 CONTINUE COMD 480 IF (IC10.NE.0) WRITE (LOUT,99998) (KT1(K),KT2(K),TK(K),K=1,IC10) COMD 485 IF (RMAX.LE.VK2) RETURN COMD 490 P(MR3,IW) = 1.0 - P(MR3,IW) COMD 495 P(MR2,IW) = 1.0 - P(MR2,IW) COMD 500 UVAF = TVAF COMD 505 CALL REGR(0, 0, MST) COMD 510 IF (IERR.EQ.4) GO TO 65 COMD 515 C COMD 520 C FIRST CHECK TO SEE IF THE WEIGHT OF ANY SUBSET WOULD COMD 525 C BECOME NEGATIVE. COMD 530 C COMD 535 DO 55 IK=1,LD1 COMD 540 LK = IK COMD 545 IF (RISE(IK).LE.0.0 .AND. TRISE(IK).GT.0.0) GO TO 60 COMD 550 55 CONTINUE COMD 555 GO TO 75 COMD 560 60 WRITE (LOUT,99997) (ILAB(MR2,I),I=1,6), (ILAB(MR3,I),I=1,6), IW, COMD 565 * TVAF, UVAF, LK, RISE(LK) COMD 570 99997 FORMAT (/20H REVERSING ELEMENTS , 1X, 6A1, 1X, 6A1, 10H OF SUBSET,COMD 575 * 1H , I3, 31H WOULD INCREASE OVERALL VAF TO , F10.6, 9H, REPLACI, COMD 580 * 3HNG , F10.6/48H BUT WAS NOT DONE SINCE THE CURRENTLY POSITIVE W,COMD 585 * 9HEIGHT FOR, 7H SUBSET, I3, 29H WOULD HAVE BECOME NEGATIVE (, COMD 590 * F12.7, 2H).) COMD 595 C COMD 600 C UNSUCCESSFUL CHANGE COMD 605 C COMD 610 65 P(MR2,IW) = 1.0 - P(MR2,IW) COMD 615 P(MR3,IW) = 1.0 - P(MR3,IW) COMD 620 TVAF = UVAF COMD 625 DO 70 K=1,LD2 COMD 630 RISE(K) = TRISE(K) COMD 635 70 CONTINUE COMD 640 RETURN COMD 645 C COMD 650 C FOR A SUCCESSFUL CHANGE COMD 655 C COMD 660 75 ICOUN = 2 COMD 665 WRITE (LOUT,99996) (ILAB(MR2,I),I=1,6), (ILAB(MR3,I),I=1,6), IW, COMD 670 * TVAF, UVAF COMD 675 99996 FORMAT (/20H REVERSING ELEMENTS , 6A1, 1X, 6A1, 11H OF SUBSET , COMD 680 * I3, 33H GAVE AN IMPROVED OVERALL VAF OF , F10.6, 11H REPLACING , COMD 685 * F10.6//) COMD 690 UVAF = TVAF COMD 695 C COMD 700 C NOW GO BACK AND LOOK FOR ANY OTHER SUCCESSFUL CHANGES WITHIN COMD 705 C SUBSET IW. COMD 710 C COMD 715 GO TO 5 COMD 720 END COMD 725 C$ FORTY FORM PUN0 5 SUBROUTINE PUN(MST) PUN0 10 INTEGER FMT4 PUN0 15 DIMENSION LIST(030), FMT4(12) PUN0 20 COMMON /A1/ P(030,025), DENS(050), NW(050), MP(050), BLMX(050), PUN0 25 * BLMN(050), KP(050), AB, WCON, BIN, N2, N, LD2, N1, AN1, LOUT, PUN0 30 * VARSIM, VAF, ABNV, NDO, RISE(025), LD1, IFLOP, KMOD, KC PUN0 35 COMMON /A2/ G(030), KT1(10), KT2(10), TK(10), LP(15), IPUN, IERR, PUN0 40 * LPUNCH, LPUN7, ICOUN, TVAF, ICON, TITL(72), TRISE(025) PUN0 45 DATA FMT4(1), FMT4(2), FMT4(3), FMT4(4), FMT4(5), FMT4(6), PUN0 50 * FMT4(7), FMT4(8), FMT4(9), FMT4(10), FMT4(11), FMT4(12) /1H(,1H1,PUN0 55 * 1H4,1HX,1H,,1H5,1H8,1HF,1H1,1H.,1H0,1H)/ PUN0 60 C PUN0 65 C SUBROUTINE TO PUNCH (TO DISK) POST-POLISHED SUBSETS PUN0 70 C PUN0 75 C PUN0 80 C NOTE THAT IF THE NUMBER OF STIMULI EVER EXCEEDS 58, OR IF PUN0 85 C CHANGES ARE MADE IN OUTPUT FORMAT STATEMENT 2, THEN FORMAT PUN0 90 C STATEMENT 1 AND ARRAY FMT4 MUST BE MODIFIED. PUN0 95 C PUN0 100 WRITE (LPUNCH,99999) MST, (TITL(I),I=1,61) PUN0 105 99999 FORMAT (4H IT., I3, 12H CONFIG FOR , 61A1) PUN0 110 WRITE (LPUNCH,99998) FMT4 PUN0 115 99998 FORMAT (1X, 12A1) PUN0 120 DO 10 I=1,LD1 PUN0 125 DO 5 J=1,N PUN0 130 LIST(J) = 0 PUN0 135 IF (P(J,I).GT.0.98 .AND. P(J,I).LT.1.02) LIST(J) = 1 PUN0 140 5 CONTINUE PUN0 145 WRITE (LPUNCH,99997) I, RISE(I), (LIST(J),J=1,N) PUN0 150 10 CONTINUE PUN0 155 99997 FORMAT (1X, I3, 1X, F8.5, 1X, 58I1) PUN0 160 RETURN PUN0 165 END PUN0 170 C$ FORTY FORM,XREF REGR 5 SUBROUTINE REGR(MST, IW, MRT) REGR 10 DOUBLE PRECISION DCON, Y REGR 15 DIMENSION IPVT(025), B(025,025), R(025,025) REGR 20 DIMENSION Y(025) REGR 25 COMMON /A1/ P(030,025), DENS(050), NW(050), MP(050), BLMX(050), REGR 30 * BLMN(050), KP(050), AB, WCON, BIN, N2, N, LD2, N1, AN1, LOUT, REGR 35 * VARSIM, VAF, ABNV, NDO, RISE(025), LD1, IFLOP, KMOD, KC REGR 40 COMMON /A2/ G(030), KT1(10), KT2(10), TK(10), LP(15), IPUN, IERR, REGR 45 * LPUNCH, LPUN7, ICOUN, TVAF, ICON, TITL(72), TRISE(025) REGR 50 COMMON /A6/ DCON, DATA(030,030), ALOS, IXV REGR 55 COMMON /A8/ W(025), IPRE, ITPRE REGR 60 C REGR 65 C REGR 70 C REGR 75 C NOTE THAT SUBROUTINE REGR USES THE TRANSFORMED DATA REGR 80 C (LOWERHALF OF ARRAY DATA), UNLIKE MOST OF THE OTHER REGR 85 C SUBROUTINES, WHICH USE THE RESIDUALS (UPPERHALF). REGR 90 C REGR 95 IF (MST.NE.1 .OR. IW.EQ.LD1 .OR. ICON.GT.0) GO TO 10 REGR 100 C REGR 105 C FOR GLOBAL REGRESSION DURING THE FIRST PRE-POLISHING REGR 110 C MAJOR ITERATION WHEN LESS THAN ALL LD1 SUBSETS HAVE BEEN REGR 115 C FORMED, THE ADDITIVE CONSTANT HAS TO BE TACKED ON AS SUBSET REGR 120 C (IW + 1), UNLESS A USER-SUPPLIED INITIAL CONFIGURATION WAS GIVEN. REGR 125 C REGR 130 C REGR 135 C REGR 140 LD0 = IW + 1 REGR 145 DO 5 J=1,N REGR 150 P(J,LD0) = 1.0 REGR 155 5 CONTINUE REGR 160 GO TO 15 REGR 165 10 LD0 = LD2 REGR 170 15 DO 30 I=1,LD0 REGR 175 Y(I) = 0.0D0 REGR 180 DO 25 J=2,N REGR 185 PJI = P(J,I) REGR 190 J1 = J - 1 REGR 195 DO 20 L=1,J1 REGR 200 Y(I) = Y(I) + PJI*P(L,I)*DATA(J,L) REGR 205 20 CONTINUE REGR 210 25 CONTINUE REGR 215 30 CONTINUE REGR 220 DO 40 I=1,N2 REGR 225 DO 35 J=1,N2 REGR 230 B(I,J) = 0. REGR 235 R(I,J) = 0. REGR 240 35 CONTINUE REGR 245 40 CONTINUE REGR 250 DO 60 I=1,LD0 REGR 255 DO 55 J=1,I REGR 260 DO 50 L=2,N REGR 265 PLI = P(L,I) REGR 270 PLJ = P(L,J) REGR 275 L1 = L - 1 REGR 280 DO 45 M1=1,L1 REGR 285 R(I,J) = R(I,J) + PLI*PLJ*P(M1,I)*P(M1,J) REGR 290 45 CONTINUE REGR 295 50 CONTINUE REGR 300 55 CONTINUE REGR 305 60 CONTINUE REGR 310 CALL INVS2(LD0, R, N2, B, N2, IPVT, IERR) REGR 315 IF (IERR.EQ.0) GO TO 65 REGR 320 WRITE (LOUT,99999) REGR 325 99999 FORMAT (///51H ******** TROUBLE ENCOUNTERED WHILE INVERTING MATRI,REGR 330 * 1HX, 24H FOR REGRESSION ********/10X, 23HLINEAR DEPENDENCIES LIK,REGR 335 * 18HELY TO BE PRESENT.//) REGR 340 IF (LD0.NE.LD2) GO TO 105 REGR 345 RETURN REGR 350 65 DO 75 I=1,LD0 REGR 355 W(I) = 0.0 REGR 360 DO 70 J=1,LD0 REGR 365 W(I) = W(I) + Y(J)*B(J,I) REGR 370 70 CONTINUE REGR 375 75 CONTINUE REGR 380 JB = LD1 REGR 385 IF (LD0.NE.LD2) JB = IW REGR 390 IF (MRT.EQ.0) GO TO 85 REGR 395 IF (IXV.EQ.1) GO TO 80 REGR 400 IF ((KP(MRT).EQ.1 .OR. KC.EQ.1) .AND. MST.LE.ITPRE) WRITE REGR 405 * (LOUT,99998) W(LD0), (I,W(I),I=1,JB) REGR 410 99998 FORMAT (/50H WEIGHTS FOR SUBSETS, FITTED BY GLOBAL REGRESSION:, REGR 415 * 10X, 31H( PLUS AN ADDITIVE CONSTANT OF , F12.6, 1H)/64(2H (, I2, REGR 420 * 1H), F9.5, 2H (, I2, 1H), F9.5, 2H (, I2, 1H), F9.5, 2H (, I2, REGR 425 * 1H), F9.5, 2H (, I2, 1H), F9.5, 2H (, I2, 1H), F9.5, 2H (, I2, REGR 430 * 1H), F9.5, 2H (, I2, 1H), F9.5, 2H (, I2, 1H), F9.5/)) REGR 435 GO TO 85 REGR 440 80 IF (LP(MRT).EQ.1) WRITE (LOUT,99997) W(LD0), (I,W(I),I=1,JB) REGR 445 99997 FORMAT (47H -- TENTATIVE -- WEIGHTS FOR SUBSETS, FITTED BY, REGR 450 * 19H GLOBAL REGRESSION:, 10X, 31H( PLUS AN ADDITIVE CONSTANT OF , REGR 455 * F12.6, 1H)/64(2H (, I2, 1H), F9.6, 2H (, I2, 1H), F9.6, 2H (, REGR 460 * I2, 1H), F9.5, 2H (, I2, 1H), F9.5, 2H (, I2, 1H), F9.5, 2H (, REGR 465 * I2, 1H), F9.5, 2H (, I2, 1H), F9.5, 2H (, I2, 1H), F9.5, 2H (, REGR 470 * I2, 1H), F9.5/)) REGR 475 85 DO 90 I=1,JB REGR 480 RISE(I) = W(I) REGR 485 90 CONTINUE REGR 490 RISE(LD2) = W(LD0) REGR 495 IF (LD0.EQ.LD2) GO TO 100 REGR 500 DO 95 J=LD0,LD1 REGR 505 RISE(J) = 0.0 REGR 510 95 CONTINUE REGR 515 100 MRT1 = MST REGR 520 IF (MRT1.EQ.0) MRT1 = MRT REGR 525 IF (LD0.NE.LD2) GO TO 105 REGR 530 CALL VARIAN(MRT1, 2, IW) REGR 535 RETURN REGR 540 105 DO 110 J=1,N REGR 545 P(J,LD0) = 0. REGR 550 110 CONTINUE REGR 555 RETURN REGR 560 END REGR 565 C$ FORTY FORM,XREF INVS 5 SUBROUTINE INVS2(N, A, IA, B, IB, IPVT, IERR) INVS 10 INTEGER N, IA, IB, IPVT(N), IERR INVS 15 LOGICAL FAIL INVS 20 REAL A(IA,IA), B(IA,IA) INVS 25 C INVS 30 C THIS SUBROUTINE INVERTS THE MATRIX A WHERE A IS A SYMMETRIC INVS 35 C MATRIX STORED IN A 2 DIMENSIONAL ARRAY INVS 40 C INVS 45 C INVS 50 C INPUT PARAMETERS INVS 55 C INVS 60 C N THE ORDER OF THE PROBLEM INVS 65 C A A 2 DIMENSIONAL ARRAY CONTAINING INVS 70 C THE COEFFICIENT MATRIX. ONLY THE INVS 75 C LOWER TRIANGULAR PORTION NEED BE INVS 80 C SPECIFIED INVS 85 C IA THE ROW DIMENSION OF THE A MATRIX INVS 90 C IB THE ROW DIMENSION OF THE B MATRIX,INTO INVS 95 C WHICH THE INVERSE OF A WILL BE PLACED INVS 100 C INVS 105 C OUTPUT PARAMETERS INVS 110 C B AN ARRAY CONTAINING THE INVERSE OF A INVS 115 C IERR INTEGER VARIABLE GIVING ERROR CONDITION INVS 120 C 0 NO ERROR INVS 125 C 1 N.LT.1 INVS 130 C 2 IA.LT.N INVS 135 C 3 IB .LT.N INVS 140 C 4 SINGULAR MATRIX INVS 145 C INVS 150 C SCRATCH SPACE INVS 155 C IPVT INTEGER,LENGTH N INVS 160 IERR = 0 INVS 165 IF (N.LT.1) IERR = 1 INVS 170 IF (IA.LT.N) IERR = 2 INVS 175 IF (IB.LT.N) IERR = 3 INVS 180 IF (IERR.NE.0) RETURN INVS 185 DO 10 I=1,N INVS 190 DO 5 J=1,N INVS 195 B(I,J) = 0.0 INVS 200 5 CONTINUE INVS 205 B(I,I) = 1.0 INVS 210 10 CONTINUE INVS 215 C CALL LEQS2(N,A,IA,B,IB,N) INVS 220 CALL DSP2(N, A, IA, IPVT) INVS 225 DO 15 I=1,N INVS 230 CALL SSP2(N, A, IA, B(1,I), IPVT, FAIL) INVS 235 IF (.NOT.FAIL) GO TO 15 INVS 240 IERR = 4 INVS 245 RETURN INVS 250 15 CONTINUE INVS 255 RETURN INVS 260 END INVS 265 C$ FORTY FORM,XREF DSP2 5 SUBROUTINE DSP2(N, A, IA, INTER) DSP2 10 C DSP2 15 C GIVEN A REAL SYMMETRIC MATRIX OF ORDER N,THIS SUBROUTINE DSP2 20 C DETERMINES ITS DECOMPOSITION INTO PMDM(TRANSPOSE)P(TRANSPOSE) DSP2 25 C WHERE P IS A PERMUTATION MATRIX,M IS A UNIT LOWER TRIANGULAR DSP2 30 C MATRIX, AND D IS A BLOCK DIAGONAL MATRIX WITH BLOCKS OF ORDER DSP2 35 C 1 OR 2 WHERE D(I+1,I) IS NONZERO WHENEVER M(I+1,I) IS ZERO. DSP2 40 C ONLY THE LOWER TRIANGULAR PORTION OF A IS USED. THE DECOMPOSITION DSP2 45 C IS PLACED IN THE LOWER TRIANGULAR PORTION. THUS IF ALL THE ELEMENTS DSP2 50 C OF A ARE SPECIFIED,THE STRICT UPPER TRIANGLE IS NOT DESTROYED BUT DSP2 55 C THE DIAGONAL IS DESTROYED. ON OUTPUT THE VECTOR INTER OF DSP2 60 C LENGTH N WILL CONTAIN A RECORD OF THE PERMUTATIONS GENERATED. THE DSP2 65 C INTEGER VARIABLE IA GIVES THE ROW DIMENSION OF THE A MATRIX. DSP2 70 C DSP2 75 REAL A(IA,IA), TEMP, SAVE, DENOM, AII, AIP1I, AIP1 DSP2 80 REAL ALPHA, AAII, SIGMA, ALFLAM, LAMBDA DSP2 85 INTEGER INTER(N) DSP2 90 INTER(N) = N DSP2 95 ALPHA = (1.0+SQRT(17.0))/8. DSP2 100 I = 1 DSP2 105 5 IF (I.GE.N) RETURN DSP2 110 AAII = ABS(A(I,I)) DSP2 115 INTER(I) = I DSP2 120 C DSP2 125 C FIND THE LARGEST OFF DIAGONAL ELEMENT IN THE I-TH COLUMN DSP2 130 C DSP2 135 J = I + 1 DSP2 140 IP1 = I + 1 DSP2 145 LAMBDA = ABS(A(IP1,I)) DSP2 150 IP2 = I + 2 DSP2 155 IF (IP2.GT.N) GO TO 15 DSP2 160 DO 10 K=IP2,N DSP2 165 IF (ABS(A(K,I)).LE.LAMBDA) GO TO 10 DSP2 170 LAMBDA = ABS(A(K,I)) DSP2 175 J = K DSP2 180 10 CONTINUE DSP2 185 15 ALFLAM = ALPHA*LAMBDA DSP2 190 IF (AAII.GE.ALFLAM) GO TO 65 DSP2 195 C DSP2 200 C FIND THE LARGEST OFF DIAGONAL ELEMENT IN THE J-TH COLUMN DSP2 205 C DSP2 210 SIGMA = LAMBDA DSP2 215 JM1 = J - 1 DSP2 220 IF (IP1.GT.JM1) GO TO 25 DSP2 225 DO 20 K=IP1,JM1 DSP2 230 IF (ABS(A(J,K)).GT.SIGMA) SIGMA = ABS(A(J,K)) DSP2 235 20 CONTINUE DSP2 240 25 JP1 = J + 1 DSP2 245 IF (JP1.GT.N) GO TO 35 DSP2 250 DO 30 K=JP1,N DSP2 255 IF (ABS(A(K,J)).GT.SIGMA) SIGMA = ABS(A(K,J)) DSP2 260 30 CONTINUE DSP2 265 35 IF (AAII*SIGMA.GE.ALFLAM*LAMBDA) GO TO 65 DSP2 270 IF (ABS(A(J,J)).GE.ALPHA*SIGMA) GO TO 60 DSP2 275 C DSP2 280 C PERFORM A 2 BY 2 PIVOT STEP DSP2 285 C DSP2 290 INTER(I) = J DSP2 295 IF (IP2.GT.N) GO TO 55 DSP2 300 IF (J.EQ.IP1) GO TO 40 DSP2 305 CALL ISP2(A, IA, N, J, IP1) DSP2 310 TEMP = A(J,I) DSP2 315 A(J,I) = A(IP1,I) DSP2 320 A(IP1,I) = TEMP DSP2 325 40 AIP1I = A(IP1,I) DSP2 330 AII = A(I,I)/AIP1I DSP2 335 AIP1 = A(IP1,IP1) DSP2 340 DENOM = AII*AIP1 - AIP1I DSP2 345 DO 50 J=IP2,N DSP2 350 TEMP = (A(J,I)-AII*A(J,IP1))/DENOM DSP2 355 SAVE = -(AIP1*TEMP+A(J,IP1))/AIP1I DSP2 360 DO 45 K=J,N DSP2 365 A(K,J) = A(K,J) + A(K,I)*SAVE + A(K,IP1)*TEMP DSP2 370 45 CONTINUE DSP2 375 A(J,I) = SAVE DSP2 380 A(J,IP1) = TEMP DSP2 385 50 CONTINUE DSP2 390 55 INTER(IP1) = -1 DSP2 395 I = IP2 DSP2 400 GO TO 5 DSP2 405 C DSP2 410 C INTERCHANGE THE I-TH AND J-TH ROWS AND COLUMNS DSP2 415 C DSP2 420 60 INTER(I) = J DSP2 425 CALL ISP2(A, IA, N, J, I) DSP2 430 C DSP2 435 C PERFORM A 1 X 1 PIVOT DSP2 440 C DSP2 445 65 IF (A(I,I).EQ.0.0) GO TO 80 DSP2 450 AII = A(I,I) DSP2 455 DO 75 J=IP1,N DSP2 460 SAVE = -A(J,I)/AII DSP2 465 IF (SAVE.EQ.0.0) GO TO 75 DSP2 470 DO 70 K=J,N DSP2 475 A(K,J) = A(K,J) + A(K,I)*SAVE DSP2 480 70 CONTINUE DSP2 485 A(J,I) = SAVE DSP2 490 75 CONTINUE DSP2 495 80 I = IP1 DSP2 500 GO TO 5 DSP2 505 END DSP2 510 C$ FORTY FORM,XREF ISP2 5 SUBROUTINE ISP2(A, IA, N, J, I) ISP2 10 REAL A(IA,IA), TEMP ISP2 15 C INTERCHANGE THE ELEMENTS BELOW BOTH DIAGONALS ISP2 20 JP1 = J + 1 ISP2 25 IF (JP1.GT.N) GO TO 10 ISP2 30 DO 5 K=JP1,N ISP2 35 TEMP = A(K,J) ISP2 40 A(K,J) = A(K,I) ISP2 45 A(K,I) = TEMP ISP2 50 5 CONTINUE ISP2 55 10 IF (I+1.GT.J-1) GO TO 20 ISP2 60 IP1 = I + 1 ISP2 65 JM1 = J - 1 ISP2 70 DO 15 K=IP1,JM1 ISP2 75 TEMP = A(K,I) ISP2 80 A(K,I) = A(J,K) ISP2 85 A(J,K) = TEMP ISP2 90 15 CONTINUE ISP2 95 C INTERCHANGE THE DIAGONAL ELEMENTS ISP2 100 20 TEMP = A(I,I) ISP2 105 A(I,I) = A(J,J) ISP2 110 A(J,J) = TEMP ISP2 115 RETURN ISP2 120 END ISP2 125 C$ FORTY FORM,XREF SSP2 5 SUBROUTINE SSP2(N, A, IA, B, INTER, FAIL) SSP2 10 C SSP2 15 C THIS SUBROUTINE SOLVES THE LINEAR SYSTEM AX=B WHERE A IS A SSP2 20 C REAL SYMMETRIC MATRIX OF ORDER N AND ROW DIMENSION IA SSP2 25 C WHOSE DECOMPOSITION HAS BEEN COMPUTED BY THE SUBROUTINE SSP2 30 C DSP2 AND LEFT IN THE LOWER TRIANGULAR PORTION OF A AND B SSP2 35 C IS AN N VECTOR. THE SOLUTION X IS RETURNED IN THE VECTOR B. SSP2 40 C THE VECTOR INTER OF LENGTH N IS GENERATED BY DSP2 AND CONTAINS SSP2 45 C INFORMATION ABOUT THE PERMUTATIONS PERFORMED ON THE A MATRIX SSP2 50 C IN DSP2. SSP2 55 C SSP2 60 C IF THE MATRIX IS SINGULAR,THE LOGICAL VARIABLE FAIL WILL SSP2 65 C BE TRUE, AND THE SOLUTION WILL NOT BE FOUND. SSP2 70 REAL A(IA,IA), B(IA), SAVE, TEMP, DENOM SSP2 75 INTEGER INTER(N) SSP2 80 LOGICAL FAIL SSP2 85 FAIL = .FALSE. SSP2 90 I = 1 SSP2 95 C SSP2 100 C SOLVE M D Y=B FOR Y AND STORE Y IN B SSP2 105 C SSP2 110 5 IF (I.GE.N) GO TO 50 SSP2 115 IP1 = I + 1 SSP2 120 ICH = INTER(I) SSP2 125 SAVE = B(ICH) SSP2 130 IF (INTER(IP1).LT.0) GO TO 35 SSP2 135 B(ICH) = B(I) SSP2 140 C SSP2 145 C SSP2 150 C IN THE STATEMENTS THAT FOLLOW, THE NORM OF A() MULTIPLIED SSP2 155 C BY 1.0E-20 IS USED FOR A TEST OF A ZERO PIVOTAL ELEMENT. SSP2 160 C THIS CRITERION IS FAIRLY CONSERVATIVE AND SOMEWHAT MACHINE- SSP2 165 C DEPENDENT. SSP2 170 C SSP2 175 EPS = 0.0 SSP2 180 DO 15 L=1,N SSP2 185 DO 10 M=1,N SSP2 190 EPS = EPS + A(L,M)**2 SSP2 195 10 CONTINUE SSP2 200 15 CONTINUE SSP2 205 EPS = SQRT(EPS)*1.0E-20 SSP2 210 IF (ABS(A(I,I)).GE.EPS) GO TO 20 SSP2 215 FAIL = .TRUE. SSP2 220 RETURN SSP2 225 20 B(I) = SAVE/A(I,I) SSP2 230 IF (SAVE.EQ.0.0) GO TO 30 SSP2 235 DO 25 J=IP1,N SSP2 240 B(J) = B(J) + A(J,I)*SAVE SSP2 245 25 CONTINUE SSP2 250 30 I = IP1 SSP2 255 GO TO 5 SSP2 260 35 TEMP = B(I) SSP2 265 B(ICH) = B(IP1) SSP2 270 DENOM = A(I,I)*A(IP1,IP1)/A(IP1,I) - A(IP1,I) SSP2 275 B(IP1) = (SAVE*A(I,I)/A(IP1,I)-TEMP)/DENOM SSP2 280 B(I) = (SAVE-A(IP1,IP1)*B(IP1))/A(IP1,I) SSP2 285 IP2 = I + 2 SSP2 290 IF (IP2.GT.N) GO TO 45 SSP2 295 DO 40 J=IP2,N SSP2 300 B(J) = B(J) + A(J,I)*TEMP + A(J,IP1)*SAVE SSP2 305 40 CONTINUE SSP2 310 45 I = IP2 SSP2 315 GO TO 5 SSP2 320 C SSP2 325 C SSP2 330 50 IF (I.NE.N) GO TO 60 SSP2 335 IF (ABS(A(I,I)).GE.EPS) GO TO 55 SSP2 340 FAIL = .TRUE. SSP2 345 RETURN SSP2 350 55 B(I) = B(I)/A(I,I) SSP2 355 C NOW SOLVE M(TRANSPOSE) X = Y FOR X, WHERE Y IS STORED SSP2 360 C IN THE VECTOR B, AND STORE X IN B SSP2 365 C SSP2 370 60 I = N - 1 SSP2 375 IF (INTER(N).LT.0) I = N - 2 SSP2 380 65 IF (I.LE.0) RETURN SSP2 385 I1 = I SSP2 390 IF (INTER(I).LT.0) I1 = I - 1 SSP2 395 IP1 = I + 1 SSP2 400 DO 75 K=I1,I SSP2 405 SAVE = B(K) SSP2 410 DO 70 J=IP1,N SSP2 415 SAVE = SAVE + A(J,K)*B(J) SSP2 420 70 CONTINUE SSP2 425 B(K) = SAVE SSP2 430 75 CONTINUE SSP2 435 ICH = INTER(I1) SSP2 440 B(I) = B(ICH) SSP2 445 B(ICH) = SAVE SSP2 450 I = I1 - 1 SSP2 455 GO TO 65 SSP2 460 END SSP2 465 C$ FORTY FORM ASUM 5 FUNCTION ASUM(IW) ASUM 10 DOUBLE PRECISION DCON ASUM 15 COMMON /A1/ P(030,025), DENS(050), NW(050), MP(050), BLMX(050), ASUM 20 * BLMN(050), KP(050), AB, WCON, BIN, N2, N, LD2, N1, AN1, LOUT, ASUM 25 * VARSIM, VAF, ABNV, NDO, RISE(025), LD1, IFLOP, KMOD, KC ASUM 30 COMMON /A6/ DCON, DATA(030,030), ALOS, IXV ASUM 35 C ASUM 40 C COMPUTE THE A PART OF THE LOSS FUNCTION, WHICH IS A CONSTANT ASUM 45 C FOR ALL I. ASUM 50 C ASUM 55 ASUM = 0.0 ASUM 60 WIW = RISE(IW) ASUM 65 DO 10 I=2,N ASUM 70 PI = P(I,IW) ASUM 75 I1 = I - 1 ASUM 80 DO 5 J=1,I1 ASUM 85 TEST1 = DATA(J,I) - WIW*PI*P(J,IW) ASUM 90 IF (ABS(TEST1).LE.1.0E-12) GO TO 5 ASUM 95 ASUM = ASUM + TEST1**2 ASUM 100 5 CONTINUE ASUM 105 10 CONTINUE ASUM 110 ASUM = ASUM*DCON ASUM 115 RETURN ASUM 120 END ASUM 125 C$ FORTY FORM,XREF BSUM 5 FUNCTION BSUM(IW) BSUM 10 COMMON /A1/ P(030,025), DENS(050), NW(050), MP(050), BLMX(050), BSUM 15 * BLMN(050), KP(050), AB, WCON, BIN, N2, N, LD2, N1, AN1, LOUT, BSUM 20 * VARSIM, VAF, ABNV, NDO, RISE(025), LD1, IFLOP, KMOD, KC BSUM 25 COMMON /A4/ DAPI(030), BCONST, TM, U, V BSUM 30 C BSUM 35 C COMPUTE THE B PART OF THE LOSS FUNCTION, WHICH IS A CONSTANT BSUM 40 C FOR ALL I. BSUM 45 C BSUM 50 TM = 0.0 BSUM 55 DO 10 I=2,N BSUM 60 PI = P(I,IW) BSUM 65 I1 = I - 1 BSUM 70 DO 5 J=1,I1 BSUM 75 TM = TM + PI*P(J,IW) BSUM 80 5 CONTINUE BSUM 85 10 CONTINUE BSUM 90 TM = TM*ABNV BSUM 95 C BSUM 100 C TM IS THE MEAN (P(I,IW)*P(J,IW)) I .GT. J BSUM 105 C BSUM 110 U = 0.0 BSUM 115 V = 0.0 BSUM 120 DO 25 I=2,N BSUM 125 PI = P(I,IW) BSUM 130 I1 = I - 1 BSUM 135 DO 20 J=1,I1 BSUM 140 PIPJ = PI*P(J,IW) BSUM 145 TEST1 = (PIPJ-1.0)*PIPJ BSUM 150 IF (ABS(TEST1).LE.1.0E-12) GO TO 15 BSUM 155 U = U + TEST1**2 BSUM 160 15 CONTINUE BSUM 165 TEST2 = PIPJ - TM BSUM 170 IF (ABS(TEST2).LE.1.0E-12) GO TO 20 BSUM 175 V = V + TEST2**2 BSUM 180 20 CONTINUE BSUM 185 25 CONTINUE BSUM 190 C NOW ADD THE DIAGONAL ELEMENTS TO U BSUM 195 DO 30 I=1,N BSUM 200 PI2 = P(I,IW)**2 BSUM 205 TEST3 = (PI2-1.0)*PI2 BSUM 210 IF (ABS(TEST3).LE.1.0E-12) GO TO 30 BSUM 215 U = U + 0.5*TEST3**2 BSUM 220 30 CONTINUE BSUM 225 BSUM = U/V BSUM 230 RETURN BSUM 235 END BSUM 240 C$ FORTY FORM,XREF VARI 5 SUBROUTINE VARIAN(MST, IND, IW) VARI 10 DOUBLE PRECISION DCON VARI 15 COMMON /A1/ P(030,025), DENS(050), NW(050), MP(050), BLMX(050), VARI 20 * BLMN(050), KP(050), AB, WCON, BIN, N2, N, LD2, N1, AN1, LOUT, VARI 25 * VARSIM, VAF, ABNV, NDO, RISE(025), LD1, IFLOP, KMOD, KC VARI 30 COMMON /A2/ G(030), KT1(10), KT2(10), TK(10), LP(15), IPUN, IERR, VARI 35 * LPUNCH, LPUN7, ICOUN, TVAF, ICON, TITL(72), TRISE(025) VARI 40 COMMON /A6/ DCON, DATA(030,030), ALOS, IXV VARI 45 COMMON /A8/ W(025), IPRE, ITPRE VARI 50 C VARI 55 C VARI 60 C VARI 65 C VARI 70 IF (IND.NE.1) GO TO 5 VARI 75 VAF = 1.0 - 4.0*ALOS*ABNV VARI 80 WRITE (LOUT,99999) MST, VAF, IW VARI 85 99999 FORMAT (/17H DURING MAJOR IT., I4, 25H VARIANCE ACCOUNTED FOR =, VARI 90 * F12.6, 29H IN THE RESIDUALS BY SUBSET (, I2, 16H), WITHOUT POLIS,VARI 95 * 4HHING) VARI 100 RETURN VARI 105 C VARI 110 C IF REGRESSION HAS JUST FAILED, THE FOLLOWING DEFINITION VARI 115 C IS INVALID. VARI 120 C VARI 125 5 CONS = RISE(LD2) VARI 130 SSQ = 0.0 VARI 135 DO 20 I=2,N VARI 140 I1 = I - 1 VARI 145 DO 15 J=1,I1 VARI 150 DATAJI = 0.0 VARI 155 DO 10 K=1,LD1 VARI 160 DATAJI = DATAJI + P(I,K)*P(J,K)*RISE(K) VARI 165 10 CONTINUE VARI 170 SSQ = SSQ + (DATA(I,J)-CONS-DATAJI)**2 VARI 175 15 CONTINUE VARI 180 20 CONTINUE VARI 185 VAF = (VARSIM-SSQ)/VARSIM VARI 190 TVAF = VAF VARI 195 IF (IXV.EQ.1) GO TO 30 VARI 200 IF (MST.LE.0) GO TO 25 VARI 205 IF (KP(MST).NE.1 .AND. KC.NE.1) RETURN VARI 210 25 WRITE (LOUT,99998) MST, VAF VARI 215 99998 FORMAT (/24H DURING MAJOR ITERATION , I4, 19H, OVERALL VARIANCE , VARI 220 * 15HACCOUNTED FOR =, F12.6, 31H AFTER USING REGRESSION WEIGHTS) VARI 225 RETURN VARI 230 30 WRITE (LOUT,99997) MST, VAF VARI 235 99997 FORMAT (17H DURING ITERATION, I4, 19H, OVERALL VARIANCE , VARI 240 * 31H--TENTATIVELY-- ACCOUNTED FOR =, F12.6, 18H AFTER USING REGRE,VARI 245 * 13HSSION WEIGHTS) VARI 250 RETURN VARI 255 END VARI 260 C$ FORTY FORM POLI 5 SUBROUTINE POLISH(MST, IW) POLI 10 COMMON /A1/ P(030,025), DENS(050), NW(050), MP(050), BLMX(050), POLI 15 * BLMN(050), KP(050), AB, WCON, BIN, N2, N, LD2, N1, AN1, LOUT, POLI 20 * VARSIM, VAF, ABNV, NDO, RISE(025), LD1, IFLOP, KMOD, KC POLI 25 COMMON /A4/ DAPI(030), BCONST, TM, U, V POLI 30 COMMON /A7/ A(030), IZ(030) POLI 35 C POLI 40 C SUBROUTINE TO FORCE P(,IW) TO BE ZEROES AND ONES. POLI 45 C POLI 50 C POLI 55 M1 = 0 POLI 60 DO 10 KLM=1,N POLI 65 A(KLM) = P(KLM,IW) POLI 70 IF (A(KLM).GE.0.25 .AND. A(KLM).LE.0.75) MP(MST) = MP(MST) + 1 POLI 75 IF (A(KLM).GE.0.707) GO TO 5 POLI 80 P(KLM,IW) = 0.0 POLI 85 GO TO 10 POLI 90 5 M1 = M1 + 1 POLI 95 P(KLM,IW) = 1.0 POLI 100 10 CONTINUE POLI 105 IF (M1.LE.1 .OR. M1.EQ.N) GO TO 15 POLI 110 RETURN POLI 115 C POLI 120 C IF A VECTOR OF ALL ONES OR ZEROES HAS BEEN GENERATED, PRINT POLI 125 C A DIAGNOSTIC. POLI 130 C POLI 135 15 IF (KP(MST).EQ.1) WRITE (LOUT,99999) IW, M1 POLI 140 99999 FORMAT (/49H ******** WARNING FROM SUBROUTINE POLISH ********/ POLI 145 * 7H SUBSET, I3, 24H IS TRIVIAL SINCE IT HAS, I3, 7H ONE(S), POLI 150 * 39H ON THE PRESENT POLISHING; FIX-UP TAKEN//) POLI 155 DO 20 KLM=1,N POLI 160 IZ(KLM) = KLM POLI 165 20 CONTINUE POLI 170 CALL SORT(N) POLI 175 IF (M1.EQ.N) GO TO 25 POLI 180 C POLI 185 C FOR A NULL SUBSET, CHANGE THE TWO LARGEST ENTRIES TO UNITIES. POLI 190 C POLI 195 IZ1 = IZ(1) POLI 200 P(IZ1,IW) = 1.0 POLI 205 IZ2 = IZ(2) POLI 210 P(IZ2,IW) = 1.0 POLI 215 RETURN POLI 220 C POLI 225 C OR IF THE SUBSET CONTAINS THE WHOLE SET OF STIMULI, CHANGE THE POLI 230 C SMALLEST ENTRY IN THE VECTOR TO ZERO. POLI 235 C POLI 240 25 IZN = IZ(N) POLI 245 P(IZN,IW) = 0.0 POLI 250 RETURN POLI 255 END POLI 260 C$ FORTY FORM SORT 5 SUBROUTINE SORT(N) SORT 10 COMMON /A7/ A(030), IZ(030) SORT 15 C SORT 20 C PUTS ELEMENTS OF VECTOR IN DESCENDING ORDER SORT 25 C SORT 30 C SORT 35 M = 1 SORT 40 5 M = M + M SORT 45 IF (M.LE.N) GO TO 5 SORT 50 M = M - 1 SORT 55 10 M = M/2 SORT 60 IF (M.EQ.0) GO TO 35 SORT 65 KK = N - M SORT 70 J = 1 SORT 75 15 I = J SORT 80 20 IM = I + M SORT 85 IF (A(I).LT.A(IM)) GO TO 30 SORT 90 25 J = J + 1 SORT 95 IF (J.GT.KK) GO TO 10 SORT 100 GO TO 15 SORT 105 30 TEMP = A(I) SORT 110 A(I) = A(IM) SORT 115 A(IM) = TEMP SORT 120 ITEMP = IZ(I) SORT 125 IZ(I) = IZ(IM) SORT 130 IZ(IM) = ITEMP SORT 135 I = I - M SORT 140 IF (I.LT.1) GO TO 25 SORT 145 GO TO 20 SORT 150 35 RETURN SORT 155 END SORT 160 C$ FORTY FORM,XREF INIC 5 SUBROUTINE INICON(MST, IW, ICON) INIC 10 DOUBLE PRECISION DCON INIC 15 DIMENSION U(030), FMT2(72) INIC 20 COMMON /A1/ P(030,025), DENS(050), NW(050), MP(050), BLMX(050), INIC 25 * BLMN(050), KP(050), AB, WCON, BIN, N2, N, LD2, N1, AN1, LOUT, INIC 30 * VARSIM, VAF, ABNV, NDO, RISE(025), LD1, IFLOP, KMOD, KC INIC 35 COMMON /A6/ DCON, DATA(030,030), ALOS, IXV INIC 40 COMMON /A8/ W(025), IPRE, ITPRE INIC 45 C INIC 50 C INIC 55 IF (ICON) 80, 5, 55 INIC 60 C INIC 65 C FOR A RATIONAL INITIAL CONFIGURATION INIC 70 C INIC 75 5 NP = 0 INIC 80 NN = 0 INIC 85 SUM = 0.0 INIC 90 SUMP = 0.0 INIC 95 SUMN = 0.0 INIC 100 DO 15 I=1,N INIC 105 U(I) = 0.0 INIC 110 DO 10 J=1,N INIC 115 IF (I.EQ.J) GO TO 10 INIC 120 K1 = MIN0(I,J) INIC 125 K2 = MAX0(I,J) INIC 130 U(I) = U(I) + DATA(K1,K2) INIC 135 10 CONTINUE INIC 140 15 CONTINUE INIC 145 DO 20 J=1,N INIC 150 SUM = SUM + U(J) INIC 155 20 CONTINUE INIC 160 SUM = SUM*BIN INIC 165 DO 35 J=1,N INIC 170 U(J) = U(J) - SUM INIC 175 IF (U(J)) 25, 35, 30 INIC 180 25 NN = NN + 1 INIC 185 SUMN = SUMN + U(J) INIC 190 GO TO 35 INIC 195 30 NP = NP + 1 INIC 200 SUMP = SUMP + U(J) INIC 205 35 CONTINUE INIC 210 IF (NN*NP.EQ.0) GO TO 45 INIC 215 SUMP = SUMP/FLOAT(NP) INIC 220 SUMN = SUMN/FLOAT(NN) INIC 225 BB = 1.0/(SUMP-SUMN) INIC 230 A = -SUMN/(SUMP-SUMN) INIC 235 C WRITE (LOUT,200) NN,NP,SUMP,SUMN,A,BB,(U(K),K=1, N) INIC 240 C 200 FORMAT(" NN =",I3," NP =",I3," SUMP =",F12.6," SUMN =",F12.6, INIC 245 C 2" A =",F12.6," BB =",F12.6/(1X,10F12.6/)) INIC 250 DO 40 J=1,N INIC 255 P(J,IW) = A + BB*U(J) INIC 260 40 CONTINUE INIC 265 C INIC 270 IF (MST.EQ.0) RETURN INIC 275 IF (MST.EQ.1 .OR. KP(MST).EQ.1) WRITE (LOUT,99999) IW, INIC 280 * (P(KLM,IW),KLM=1,N) INIC 285 99999 FORMAT (/53H RATIONAL INITIAL CONFIGURATION P VECTOR FOR SUBSET ,INIC 290 * 1H(, I2, 2H):/64(1X, 16F8.4/)) INIC 295 RETURN INIC 300 C INIC 305 C INIC 310 C ISSUE DIAGNOSTIC IF NN (NUMBER OF NEG. U(J)) OR NP (POS.) INIC 315 C IS ZERO. THAT IS, DATA(J,I) WAS A DOUBLE-CENTERED MATRIX. INIC 320 C INIC 325 45 WRITE (LOUT,99998) NN, NP INIC 330 99998 FORMAT (///50H ********DIAGNOSTIC FROM SUBROUTINE INICON********//INIC 335 * 19H NO. OF NEG U(J) =, I3, 15H AND POS U(J) =, I3//20X, INIC 340 * 30HLISTING OF MATRIX OF RESIDUALS//) INIC 345 DO 50 I=2,N INIC 350 I1 = I - 1 INIC 355 WRITE (LOUT,99997) (I,J,DATA(J,I),J=1,I1) INIC 360 50 CONTINUE INIC 365 99997 FORMAT (2H (, 2I3, 1H), F9.4, 2H (, 2I3, 1H), F9.4, 2H (, 2I3, INIC 370 * 1H), F9.4, 2H (, 2I3, 1H), F9.4, 2H (, 2I3, 1H), F9.4, 2H (, INIC 375 * 2I3, 1H), F9.4/) INIC 380 STOP INIC 385 C INIC 390 C INIC 395 C INIC 400 C IF (ICON .GT.0) READ IN A USER-SUPPLIED INITIAL CONFIGURATION FOR INIC 405 C P(,IW) VIA CHANNEL ICON. INIC 410 C INIC 415 55 WRITE (LOUT,99996) LD1, ICON INIC 420 99996 FORMAT (/////49H USER HAS SPECIFIED THAT INITIAL CONFIGURATION OF,INIC 425 * I4, 44H CLUSTERS IS TO BE READ FROM LOGICAL DEVICE , I3/6H WITH ,INIC 430 * 32HTHE TITLE AND FORMAT AS FOLLOWS:///) INIC 435 C INIC 440 C READ THE TITLE CARD AND PRINT IT; THEN DO THE SAME FOR THE FORMAT.INIC 445 C INIC 450 READ (ICON,99995) FMT2 INIC 455 WRITE (LOUT,99994) FMT2 INIC 460 99995 FORMAT (72A1) INIC 465 99994 FORMAT (//1X, 46HTITLE FOR USER-SUPPLIED INITIAL CONFIGUATION: , INIC 470 * 72A1//) INIC 475 99993 FORMAT (//1X, 33HUSER-SPECIFIED FORMAT OF INITIAL , 10HCONFIGURAT,INIC 480 * 8HION IS: , 72A1//) INIC 485 READ (ICON,99995) FMT2 INIC 490 WRITE (LOUT,99993) FMT2 INIC 495 WRITE (LOUT,99992) (I, I = 1, N) INIC 500 99992 FORMAT (///64(1X, I6, 15I8/)) INIC 505 DO 60 IX=1,LD1 INIC 510 READ (ICON,FMT2,END=67) (P(KLM,IX), KLM = 1, N) INIC 515 WRITE (LOUT,99991) IX, (P(KLM,IX),KLM=1,N) INIC 520 60 CONTINUE INIC 525 99991 FORMAT (//34H INITIAL CONFIGURATION P VECTOR (, I2, 2H):/64(1X, INIC 530 * 16F8.4/)) INIC 535 C INIC 540 C INIC 545 C THIS CHECK SPOTS SINGLETONS AND LUMPER, AND ALSO LOOKS INIC 550 C TO SEE IF USER-SUPPLIED P MATRIX WERE 0,1. INIC 555 C INIC 560 IDANG = 0 INIC 565 DO 75 J=1,LD1 INIC 570 IK = 0 INIC 575 DO 70 I=1,N INIC 580 PIJ = P(I,J) INIC 585 IF (PIJ.LT.1.01 .AND. PIJ.GT.0.99) GO TO 65 INIC 590 IF (-1.0E-04.LE.PIJ .AND. PIJ.LT.1.0E-04) GO TO 70 INIC 595 WRITE (LOUT,99990) I, J, P(I,J) INIC 600 99990 FORMAT (/35H WARNING: IN USER-SUPPLIED INITIAL , 13HCONFIGURATION,INIC 605 * 4H, P(, I3, 1H,, I3, 4H) = , F10.5, 25H INSTEAD OF BEING A BINAR,INIC 610 * 14HY COEFFICIENT.) INIC 615 65 IK = IK + 1 INIC 620 70 CONTINUE INIC 625 IF (IK.GT.1 .AND. IK.LT.N) GO TO 75 INIC 630 IDANG = 1 INIC 635 WRITE (LOUT,99989) J, IK INIC 640 99989 FORMAT (///17H ******** SUBSET , I3, 24H HAS TOO FEW (0 OR 1) OR, INIC 645 * 30H TOO MANY (N) ELEMENTS, NAMELY, I3, 15H AND WILL CAUSE/10X, INIC 650 * 47HTHE MULTIPLE LINEAR REGRESSION TO FAIL ********//) INIC 655 75 CONTINUE INIC 660 IF (IDANG.NE.0) STOP INIC 665 RETURN INIC 670 67 WRITE (LOUT,99988) ICON INIC 675 99988 FORMAT (///49H ******** READ AN END OF FILE WHILE ATTEMPTING TO, INIC 680 * 26H READ INIT. CONF. FOR T(J)/10X, 26HIN SUBROUTINE INICON, USIN,INIC 685 * 1HG, 13H CHANNEL NO. , I3, 9H ********) INIC 690 RETURN INIC 695 C INIC 700 C FOR A RANDOM INITIAL CONFIGURATION INIC 705 C INIC 710 80 DO 85 KLM=1,N INIC 715 P(KLM,IW) = RUNIFV(0) INIC 720 85 CONTINUE INIC 725 WRITE (LOUT,99987) IW, (P(KLM,IW),KLM=1,N) INIC 730 99987 FORMAT (//33H RANDOM INITIAL CONFIGURATION P (, I2, 2H):/64(1X, INIC 735 * 16F8.4/)) INIC 740 RETURN INIC 745 END INIC 750 C$ FORTY FORM RUNI 5 FUNCTION RUNIFV(L) RUNI 10 DATA MODULO, FLMOD, K /8192,8192.0,1/ RUNI 15 C RUNI 20 C RANDOM NUMBERS MODULO 2**13 RUNI 25 C BASED ON A MODIFICATION OF A ROUTINE SUGGESTED BY J. B. KRUSKAL RUNI 30 C (CACM, 1969, 12, 93-94), THIS SUBROUTINE IS SIMILAR TO THE ONE RUNI 35 C USED IN THE MULTIDIMENSIONAL SCALING PROGRAM KYST. RUNI 40 C RUNI 45 DO 5 I=1,3 RUNI 50 K = MOD(5*K,MODULO) RUNI 55 5 CONTINUE RUNI 60 RUNIFV = FLOAT(K)/FLMOD RUNI 65 RETURN RUNI 70 END RUNI 75 C$ FORTY FORM,XREF RESI 5 SUBROUTINE RESID(IW) RESI 10 DOUBLE PRECISION DCON, SUMA RESI 15 COMMON /A1/ P(030,025), DENS(050), NW(050), MP(050), BLMX(050), RESI 20 * BLMN(050), KP(050), AB, WCON, BIN, N2, N, LD2, N1, AN1, LOUT, RESI 25 * VARSIM, VAF, ABNV, NDO, RISE(025), LD1, IFLOP, KMOD, KC RESI 30 COMMON /A6/ DCON, DATA(030,030), ALOS, IXV RESI 35 C RESI 40 C RESI 45 C IN THE ALTERNATING LEAST SQUARES PROCEDURE, COMPUTE RESI 50 C THE RESIDUALS FOR SUBSET IW, AND CENTER THEM RESI 55 C RESI 60 C RESI 65 DO 10 I=2,N RESI 70 I1 = I - 1 RESI 75 DO 5 J=1,I1 RESI 80 DATA(J,I) = 0.0 RESI 85 5 CONTINUE RESI 90 10 CONTINUE RESI 95 DO 25 K=1,LD1 RESI 100 IF (K.EQ.IW) GO TO 25 RESI 105 WIW = RISE(K) RESI 110 DO 20 I=2,N RESI 115 I1 = I - 1 RESI 120 PIK = P(I,K) RESI 125 DO 15 J=1,I1 RESI 130 DATA(J,I) = DATA(J,I) + PIK*P(J,K)*WIW RESI 135 15 CONTINUE RESI 140 20 CONTINUE RESI 145 25 CONTINUE RESI 150 SUM = 0.0 RESI 155 DO 35 I=2,N RESI 160 I1 = I - 1 RESI 165 DO 30 J=1,I1 RESI 170 DATA(J,I) = DATA(I,J) - DATA(J,I) RESI 175 SUM = SUM + DATA(J,I) RESI 180 30 CONTINUE RESI 185 35 CONTINUE RESI 190 SUM = SUM*ABNV RESI 195 SUMA = 0.0 RESI 200 DO 45 I=2,N RESI 205 I1 = I - 1 RESI 210 DO 40 J=1,I1 RESI 215 DATA(J,I) = DATA(J,I) - SUM RESI 220 C RESI 225 C SINCE THE UPPER TRIANGULAR HALF OF DATA CONSISTS OF CENTERED RESI 230 C RESIDUALS, RESI 235 C THE SUM OF SQUARES EQUALS THE NUMERATOR OF THE VARIANCE. RESI 240 C RESI 245 SUMA = SUMA + DATA(J,I)**2 RESI 250 40 CONTINUE RESI 255 45 CONTINUE RESI 260 C RESI 265 C COMPUTE THE CONSTANT THAT NORMALIZES THE SUM OF SQUARED ERROR. RESI 270 C RESI 275 DCON = 0.25*AB/SUMA RESI 280 RETURN RESI 285 END RESI 290 C$ FORTY FORM ADJU 5 SUBROUTINE ADJUST(MST, IW) ADJU 10 COMMON /A5/ AK, ALFRAY(025), BETRAY(025), IADJ(050), JADJ ADJU 15 IADJ(MST) = IADJ(MST) + 1 ADJU 20 JADJ = JADJ + 1 ADJU 25 ALFRAY(IW) = AMAX1(0.000001,ALFRAY(IW)/(ALFRAY(IW)+AK*BETRAY(IW)))ADJU 30 BETRAY(IW) = 1.0 - ALFRAY(IW) ADJU 35 RETURN ADJU 40 END ADJU 45 C$ FORTY FORM,XREF CDAP 5 SUBROUTINE CDAPI(IW) CDAP 10 DOUBLE PRECISION DCON CDAP 15 COMMON /A1/ P(030,025), DENS(050), NW(050), MP(050), BLMX(050), CDAP 20 * BLMN(050), KP(050), AB, WCON, BIN, N2, N, LD2, N1, AN1, LOUT, CDAP 25 * VARSIM, VAF, ABNV, NDO, RISE(025), LD1, IFLOP, KMOD, KC CDAP 30 COMMON /A4/ DAPI(030), BCONST, TM, U, V CDAP 35 COMMON /A6/ DCON, DATA(030,030), ALOS, IXV CDAP 40 C CDAP 45 C COMPUTE THE PARTIAL OF A WITH RESPECT TO P(I,IW) CDAP 50 C CDAP 55 DO 10 I=1,N CDAP 60 WIW = RISE(IW) CDAP 65 PI = P(I,IW) CDAP 70 AS = 0. CDAP 75 DO 5 J=1,N CDAP 80 IF (J.EQ.I) GO TO 5 CDAP 85 PJ = P(J,IW) CDAP 90 K1 = MIN0(I,J) CDAP 95 K2 = MAX0(I,J) CDAP 100 AS = AS + PJ*(DATA(K1,K2)-WIW*PJ*PI) CDAP 105 5 CONTINUE CDAP 110 DAPI(I) = -2.0*WIW*AS*DCON CDAP 115 10 CONTINUE CDAP 120 RETURN CDAP 125 END CDAP 130 C$ FORTY FORM,XREF DB00 5 FUNCTION DB(KLM, IW) DB00 10 COMMON /A1/ P(030,025), DENS(050), NW(050), MP(050), BLMX(050), DB00 15 * BLMN(050), KP(050), AB, WCON, BIN, N2, N, LD2, N1, AN1, LOUT, DB00 20 * VARSIM, VAF, ABNV, NDO, RISE(025), LD1, IFLOP, KMOD, KC DB00 25 COMMON /A4/ DAPI(030), BCONST, TM, U, V DB00 30 C DB00 35 C FUNCTION TO ASSEMBLE ALL THE EXPRESSIONS FOR DB00 40 C EVALUATING DB/DP(I) DB00 45 C DB00 50 B1 = 0.0 DB00 55 B2 = 0.0 DB00 60 DO 5 I=1,N DB00 65 PI = P(I,IW) DB00 70 B1 = B1 + PI DB00 75 B2 = B2 + PI*PI DB00 80 5 CONTINUE DB00 85 EIK = ABNV*(B1-P(KLM,IW)) DB00 90 C DB00 95 C TM IS THE MEAN (P(I,IW)*P(J,IW)) I .GT. J DB00 100 C DB00 105 TM = ABNV*0.5*(B1*B1-B2) DB00 110 DUDPI = 0.0 DB00 115 DVDPI = 0.0 DB00 120 PI = P(KLM,IW) DB00 125 DO 15 J=1,N DB00 130 PJ = P(J,IW) DB00 135 PIPJ = PI*PJ DB00 140 IF (J.EQ.KLM) GO TO 10 DB00 145 DVDPI = DVDPI + (PJ-EIK)*(PIPJ-TM) DB00 150 10 DUDPI = DUDPI + PJ*PJ*(PIPJ*(2.0*PIPJ-3.0)+1.0) DB00 155 15 CONTINUE DB00 160 DUDPI = 2.0*PI*DUDPI DB00 165 DVDPI = 2.0*DVDPI DB00 170 DB = (V*DUDPI-U*DVDPI)/(V*V) DB00 175 RETURN DB00 180 END DB00 185 C$ FORTY FORM,XREF COMP 5 SUBROUTINE COMPW(IW, IAV) COMP 10 DOUBLE PRECISION DCON, DELBAR COMP 15 COMMON /A1/ P(030,025), DENS(050), NW(050), MP(050), BLMX(050), COMP 20 * BLMN(050), KP(050), AB, WCON, BIN, N2, N, LD2, N1, AN1, LOUT, COMP 25 * VARSIM, VAF, ABNV, NDO, RISE(025), LD1, IFLOP, KMOD, KC COMP 30 COMMON /A4/ DAPI(030), BCONST, TM, U, V COMP 35 COMMON /A6/ DCON, DATA(030,030), ALOS, IXV COMP 40 C COMP 45 C THIS SUBROUTINE COMPUTES THE ESTIMATE OF THE WEIGHT FOR COMP 50 C SUBSET IW AS WELL AS THE INNER ITERATION CONSTANT. THEN COMP 55 C TRANSLATE THE RESIDUALS BY THE CONSTANT FOR THE FIRST COMP 60 C CALL WHEN IAV = 0 COMP 65 C COMP 70 C COMP 75 C TM IS THE MEAN (P(I,IW)*P(J,IW)) I .GT. J COMP 80 C COMP 85 C COMP 90 C COMPUTE THE MEAN AND SQUARIANCE OF PAIRWISE PRODUCTS COMP 95 C IN STRAIGHTFORWARD MANNER TO AVOID TRUNCATION. COMP 100 C COMP 105 TM = 0.0 COMP 110 AW = 0.0 COMP 115 DO 10 I=2,N COMP 120 TA = P(I,IW) COMP 125 I1 = I - 1 COMP 130 DO 5 J=1,I1 COMP 135 TN = TA*P(J,IW) COMP 140 TM = TM + TN COMP 145 AW = AW + DATA(J,I)*TN COMP 150 5 CONTINUE COMP 155 10 CONTINUE COMP 160 C COMP 165 C DENOMINATOR OF RISE(IW) IS THE SUM OF SQUARES ABOUT TM. COMP 170 C COMP 175 TM = TM*ABNV COMP 180 SQA = 0.0 COMP 185 DO 20 I=2,N COMP 190 PI = P(I,IW) COMP 195 I1 = I - 1 COMP 200 DO 15 J=1,I1 COMP 205 SQA = SQA + (TM-PI*P(J,IW))**2 COMP 210 15 CONTINUE COMP 215 20 CONTINUE COMP 220 RISE(IW) = AW/SQA COMP 225 C COMP 230 C THE REST OF THE COMPUTATION IS NOT NECESSARY FOR THE COMP 235 C CLEANUP CALL TO COMPW. COMP 240 C COMP 245 IF (IAV.EQ.1) RETURN COMP 250 C COMP 255 C COMP 260 C NOW FOR COMPUTING THE REGRESSION CONSTANT FOR SUBSET IW. COMP 265 C COMP 270 DELBAR = 0.0D0 COMP 275 DO 30 I=2,N COMP 280 I1 = I - 1 COMP 285 DO 25 J=1,I1 COMP 290 DELBAR = DELBAR + DATA(J,I) COMP 295 25 CONTINUE COMP 300 30 CONTINUE COMP 305 DELBAR = ABNV*DELBAR COMP 310 WCON = -RISE(IW)*TM + DELBAR COMP 315 C COMP 320 C TRANSLATE THE RESIDUALS. COMP 325 C COMP 330 DO 40 I=2,N COMP 335 I1 = I - 1 COMP 340 DO 35 J=1,I1 COMP 345 DATA(J,I) = DATA(J,I) - WCON COMP 350 35 CONTINUE COMP 355 40 CONTINUE COMP 360 RETURN COMP 365 END COMP 370 C$ FORTY FORM,XREF PRIN 5 SUBROUTINE PRINTD(MST, IW) PRIN 10 COMMON /A1/ P(030,025), DENS(050), NW(050), MP(050), BLMX(050), PRIN 15 * BLMN(050), KP(050), AB, WCON, BIN, N2, N, LD2, N1, AN1, LOUT, PRIN 20 * VARSIM, VAF, ABNV, NDO, RISE(025), LD1, IFLOP, KMOD, KC PRIN 25 COMMON /A7/ A(030), IZ(030) PRIN 30 COMMON /A9/ ILAB(030,6), ALD1 PRIN 35 DIMENSION LSTIM(030) PRIN 40 C PRIN 45 C THIS SUBROUTINE PRINTS OUT THE STIMULI CONTAINED IN SUBSETS. PRIN 50 C PRIN 55 C IF KC .EQ. 0, SUBSET IW IS PRINTED. IF KC .EQ. 1, SUBSETS 1,...NPRIN 60 C ARE PRINTED. IF KC .EQ. 2, THE SUBSETS ARE PRINTED AFTER PRIN 65 C BEING RANKED ACCORDING TO WEIGHT. PRIN 70 C PRIN 75 WRITE (LOUT,99999) PRIN 80 99999 FORMAT (/1X, 6HSUBSET, 4X, 6HWEIGHT, 3X, 21HSTIMULI CONTAINED IN ,PRIN 85 * 6HSUBSET) PRIN 90 IF (KC.NE.0) GO TO 5 PRIN 95 IA = IW PRIN 100 IB = IW PRIN 105 IZ(IW) = IW PRIN 110 GO TO 15 PRIN 115 5 IA = 1 PRIN 120 IB = LD1 PRIN 125 IF (KC.EQ.2) GO TO 15 PRIN 130 DO 10 KX=1,LD1 PRIN 135 IZ(KX) = KX PRIN 140 10 CONTINUE PRIN 145 15 DO 25 KX=IA,IB PRIN 150 LX = IZ(KX) PRIN 155 LCNT = 0 PRIN 160 DO 20 I=1,N PRIN 165 IF (P(I,LX).LE.0.00001) GO TO 20 PRIN 170 LCNT = LCNT + 1 PRIN 175 LSTIM(LCNT) = I PRIN 180 20 CONTINUE PRIN 185 C PRIN 190 C IF YOUR COMPILER CANNOT HANDLE THE ILAB PART OF THE FOLLOWING PRIN 195 C WRITE STATEMENT, THEN WRITING PRIN 200 C PRIN 205 C (LSTIM(KK), KK = 1, LCNT) PRIN 210 C PRIN 215 C IN I FORMAT WILL LIST THE ORDINAL NUMBERS (1, ..., N) OF THE PRIN 220 C STIMULI (INSTEAD OF THEIR USER-SUPPLIED LABELS) FOR EACH PRIN 225 C SUBSET. ALTERNATIVELY, A SCRATCH ARRAY COULD BE CREATED FOR PRIN 230 C THE LINE OF LABELS BEING PRINTED IN THE PRESENT ARRANGEMENT. PRIN 235 C PRIN 240 WRITE (LOUT,99998) LX,RISE(LX), PRIN 245 * ((ILAB(LSTIM(KK),L), L = 1, 6), KK = 1, LCNT) PRIN 250 99998 FORMAT (/1X, 1H(, I4, 1H), F10.5, 2X, 13(6A1, 1X)/(19X, 6A1, 1X, PRIN 255 * 6A1, 1X, 6A1, 1X, 6A1, 1X, 6A1, 1X, 6A1, 1X, 6A1, 1X, 6A1, 1X, PRIN 260 * 6A1, 1X, 6A1, 1X, 6A1, 1X, 6A1, 1X, 6A1/)) PRIN 265 IF (KC.EQ.1 .AND. MST.GT.0) DENS(MST) = DENS(MST) + FLOAT(LCNT) PRIN 270 25 CONTINUE PRIN 275 IF (KC.EQ.0) RETURN PRIN 280 IF (MST.GT.0) GO TO 30 PRIN 285 WRITE (LOUT,99997) RISE(LD2) PRIN 290 99997 FORMAT (/31H PLUS AN ADDITIVE CONSTANT OF , F10.5) PRIN 295 RETURN PRIN 300 30 IF (KC.EQ.1) DENS(MST) = DENS(MST)*BIN/ALD1 PRIN 305 WRITE (LOUT,99996) RISE(LD2), DENS(MST) PRIN 310 99996 FORMAT (/30H PLUS AN ADDITIVE CONSTANT OF , F10.5, 15X, 7HDENSITY,PRIN 315 * 2H =, F10.5) PRIN 320 RETURN PRIN 325 END PRIN 330 CUT HERE------------ mapclus.f echo processing file mapclus.data 1>&2 cat > mapclus.data <<'CUT HERE------------ mapclus.data' # mapclus.data Sample data. C The authors of this software are Phipps Arabie and J Douglas Carroll C Copyright (c) 1993 by AT&T. C Permission to use, copy, modify, and distribute this software for any C purpose without fee is hereby granted, provided that this entire C notice is included in all copies of any software which is or includes C a copy or modification of this software and in all copies of the C supporting documentation for such software. C THIS SOFTWARE IS BEING PROVIDED "AS IS", WITHOUT ANY EXPRESS OR IMP- C LIED WARRANTY. IN PARTICULAR, NEITHER THE AUTHORS NOR AT&T MAKE ANY C REPRESENTATION OR WARRANTY OF ANY KIND CONCERNING THE MERCHANTABILITY C OF THIS SOFTWARE OR ITS FITNESS FOR ANY PARTICULAR PURPOSE. C This software comes from the SECOND MDS Package of AT&T Bell Laboratories C Remove up to and including the following line before use. C----+----@----+----@----+----@----+----@----+----@----+----@----+----@ 012 16 41 0 0 1 0 0 BLANK CONFUSION FREQUENCIES, ADAPTED FROM GIBSON, ET AL. (1963) 26 1 (25F3.0) 0. 0. 1. 0. 0. 1. 0. 4. 0. 0. 0. 1. 2. 1.15. 0. 6.16. 1. 1. 2. 2. 1. 1. 4. 8. 2. 0. 0. 0. 0. 0. 0. 1. 0. 0. 0. 0. 5. 1. 2. 1. 4. 0. 1. 0. 0. 0. 1. 0. 2. 0. 3. 0. 0. 0. 0. 1. 0. 2. 2. 0. 0.10. 1. 2. 0. 1. 0. 1. 1. 0. 0. 5. 0. 0. 1. 0. 1. 0. 1. 2. 1. 3. 2. 3. 0. 2. 6. 0.21. 1. 1. 6. 8. 0. 0. 2. 0. 0. 0. 0. 0. 0. 0. 0. 1. 1. 2. 2. 2. 1. 1. 2. 0. 0. 0. 0. 0. 0. 0. 0. 3. 5. 1. 1. 4. 1. 0. 4. 1. 0. 0. 0.14. 5. 1. 6. 1. 0. 1. 3. 5. 3. 0. 0. 2. 1. 1. 0. 1.11. 0. 2. 1. 3. 0. 1. 1. 4. 1. 0. 3. 1. 1. 0. 1. 0. 1. 0. 1. 0. 0. 0. 1. 1. 0. 1. 1. 5. 0. 0. 9. 0. 1. 0. 1. 0. 0. 0. 0. 0. 7. 0. 0. 0. 0. 1. 0. 5. 0. 1. 1. 0. 2. 0. 0. 0. 1. 2. 4. 1. 1. 0. 0. 0. 0. 1. 0. 1. 3. 1. 0. 1. 0. 0. 2. 0. 1. 1. 5. 0. 0. 0. 0. 2. 0. 0. 1. 0. 0. 2. 0.21.12. 0. 1. 1. 0. 0. 0. 0. 1. 1. 0. 0. 0. 0. 0. 0. 1. 0. 0.15. 1. 2. 2. 0. 1. 0. 0. 1. 0. 0. 6. 3. 1. 0. 0. 0. 0. 1. 0. 1. 0. 0. 5. 0. 0. 0. 2. 1. 0. 2. 0. 3. 2.14. 0.10. 2. 1. 1. 1. 0. 0. 1. 1. 0. 2. 1. 4. 2. 0. 1. 0. 0. 0. 2. 0. 1. 0. 0. 4. 3. A B C D E F G H I J K L M N O P Q R S T U V W X Y Z E. J. GIBSON'S PROPOSED FEATURES FOR UPPER CASE LETTERS (26F1.0) X 1 1111 1 1 1 HORIZONTAL 1 111 11 1111 1 1 1 1 VERTICAL 1 1 1 11111 DIAGONAL (FORWARD) 1 1 11 11 1111 DIAGONAL (BACK) 1 1 1111 CLOSED CURVE 1 1 OPEN-VERTICAL 1 1 1 1 OPEN-HORIZONTAL 11 11 1 1 111 1 1 INTERSECTION 1 1 1 1 1 CYCLIC CHANGE 11111 11 1 1 1 111111 SYMMETRY 1 1 11 1 11 1 1 1 1 VERTICAL 11 1 1 1 HORIZONTAL 08 41 35 1 1 17 000000000000000000000000000000000000000000000000000000000000000000000000000000 .60 MILLER-NICELY DATA FOR CONFUSIONS BETWEEN 16 CONSONANTS 160001 (15F5.3) X .229 01 .432 .241 02 .101 .057 .077 03 .124 .079 .084 .423 04 .052 .050 .063 .066 .157 05 .038 .050 .047 .030 .048 .115 06 .022 .013 .018 .046 .045 .024 .012 07 .025 .022 .020 .025 .041 .031 .033 .058 08 .013 .016 .030 .015 .039 .033 .021 .069 .342 09 .016 .022 .020 .035 .040 .023 .020 .210 .059 .054 10 .028 .016 .018 .032 .031 .026 .018 .145 .094 .120 .338 11 .025 .023 .025 .018 .033 .035 .017 .055 .106 .139 .080 .161 12 .019 .017 .019 .007 .017 .022 .012 .027 .089 .125 .029 .033 .136 13 .025 .022 .021 .016 .019 .017 .012 .038 .024 .032 .030 .034 .021 .016 14 .017 .018 .020 .012 .018 .013 .011 .024 .032 .030 .022 .028 .016 .030 .151 15 PA TA KA FA THETA SA SHA BA DA GA VA THAT ZA ZHA MA NA CUT HERE------------ mapclus.data #define END .