|
|
1.1 ! root 1: C PROGRAM MAIN ! 2: CALL MATLAB(0) ! 3: STOP ! 4: END ! 5: SUBROUTINE FILES(LUNIT,NAME,IOSTAT) ! 6: INTEGER LUNIT,NAME(32) ! 7: C ! 8: C SYSTEM DEPENDENT ROUTINE TO ALLOCATE FILES ! 9: C LUNIT = LOGICAL UNIT NUMBER ! 10: C NAME = FILE NAME, 1 CHARACTER PER WORD ! 11: C ! 12: DOUBLE PRECISION NAM8 ! 13: C ! 14: L = -LUNIT ! 15: IF (LUNIT .LT. 0) REWIND L ! 16: IF (LUNIT .LT. 0) RETURN ! 17: C ! 18: ENCODE(8,10,NAM8) (NAME(I),I=1,8) ! 19: 10 FORMAT(8A1) ! 20: OPEN (UNIT=LUNIT, DEVICE='DSK:', FILE=NAM8) ! 21: RETURN ! 22: END ! 23: SUBROUTINE SAVLOD(LUNIT,ID,M,N,IMG,JOB,XREAL,XIMAG) ! 24: INTEGER LUNIT,ID(4),M,N,IMG,JOB ! 25: DOUBLE PRECISION XREAL(1),XIMAG(1) ! 26: C ! 27: C IMPLEMENT SAVE AND LOAD ! 28: C LUNIT = LOGICAL UNIT NUMBER ! 29: C ID = NAME, FORMAT 4A1 ! 30: C M, N = DIMENSIONS ! 31: C IMG = NONZERO IF XIMAG IS NONZERO ! 32: C JOB = 0 FOR SAVE ! 33: C = SPACE AVAILABLE FOR LOAD ! 34: C XREAL, XIMAG = REAL AND OPTIONAL IMAGINARY PARTS ! 35: C ! 36: C SYSTEM DEPENDENT FORMATS ! 37: 101 FORMAT(4A1,3I4) ! 38: 102 FORMAT(4O25) ! 39: C ! 40: IF (JOB .GT. 0) GO TO 20 ! 41: C ! 42: C SAVE ! 43: 10 WRITE(LUNIT,101) ID,M,N,IMG ! 44: DO 15 J = 1, N ! 45: K = (J-1)*M+1 ! 46: L = J*M ! 47: WRITE(LUNIT,102) (XREAL(I),I=K,L) ! 48: IF (IMG .NE. 0) WRITE(LUNIT,102) (XIMAG(I),I=K,L) ! 49: 15 CONTINUE ! 50: RETURN ! 51: C ! 52: C LOAD ! 53: 20 READ(LUNIT,101,END=30) ID,M,N,IMG ! 54: IF (M*N .GT. JOB) GO TO 30 ! 55: DO 25 J = 1, N ! 56: K = (J-1)*M+1 ! 57: L = J*M ! 58: READ(LUNIT,102,END=30) (XREAL(I),I=K,L) ! 59: IF (IMG .NE. 0) READ(LUNIT,102,END=30) (XIMAG(I),I=K,L) ! 60: 25 CONTINUE ! 61: RETURN ! 62: C ! 63: C END OF FILE ! 64: 30 M = 0 ! 65: N = 0 ! 66: RETURN ! 67: END ! 68: SUBROUTINE FORMZ(LUNIT,X,Y) ! 69: DOUBLE PRECISION X,Y ! 70: C ! 71: C SYSTEM DEPENDENT ROUTINE TO PRINT WITH Z FORMAT ! 72: C ! 73: IF (Y .NE. 0.0D0) WRITE(LUNIT,10) X,Y ! 74: IF (Y .EQ. 0.0D0) WRITE(LUNIT,10) X ! 75: 10 FORMAT(2O25) ! 76: RETURN ! 77: END ! 78: DOUBLE PRECISION FUNCTION FLOP(X) ! 79: DOUBLE PRECISION X ! 80: C SYSTEM DEPENDENT FUNCTION ! 81: C COUNT AND POSSIBLY CHOP EACH FLOATING POINT OPERATION ! 82: C FLP(1) IS FLOP COUNTER ! 83: C FLP(2) IS NUMBER OF PLACES TO BE CHOPPED ! 84: C ! 85: INTEGER SYM,SYN(4),BUF(256),CHAR,FLP(2),FIN,FUN,LHS,RHS,RAN(2) ! 86: COMMON /COM/ SYM,SYN,BUF,CHAR,FLP,FIN,FUN,LHS,RHS,RAN ! 87: C ! 88: DOUBLE PRECISION MASK(21),XX,MM ! 89: LOGICAL LX(2),LM(2) ! 90: EQUIVALENCE (LX(1),XX),(LM(1),MM) ! 91: DATA MASK /"777777777777777777777770, ! 92: $ "777777777777777777777700, ! 93: $ "777777777777777777777000, ! 94: $ "777777777777777777770000, ! 95: $ "777777777777777777700000, ! 96: $ "777777777777777777000000, ! 97: $ "777777777777777770000000, ! 98: $ "777777777777777700000000, ! 99: $ "777777777777777000000000, ! 100: $ "777777777777770000000000, ! 101: $ "777777777777700000000000, ! 102: $ "777777777777000000000000, ! 103: $ "777777777770000000000000, ! 104: $ "777777777700000000000000, ! 105: $ "777777777000000000000000, ! 106: $ "777777770000000000000000, ! 107: $ "777777700000000000000000, ! 108: $ "777777000000000000000000, ! 109: $ "777770000000000000000000, ! 110: $ "777700000000000000000000, ! 111: $ "777000000000000000000000/ ! 112: C ! 113: FLP(1) = FLP(1) + 1 ! 114: K = FLP(2) ! 115: FLOP = X ! 116: IF (K .LE. 0) RETURN ! 117: FLOP = 0.0D0 ! 118: IF (K .GE. 22) RETURN ! 119: XX = X ! 120: MM = MASK(K) ! 121: LX(1) = LX(1) .AND. LM(1) ! 122: LX(2) = LX(2) .AND. LM(2) ! 123: FLOP = XX ! 124: RETURN ! 125: END ! 126: SUBROUTINE XCHAR(BUF,K) ! 127: INTEGER BUF(1),K ! 128: C ! 129: C SYSTEM DEPENDENT ROUTINE TO HANDLE SPECIAL CHARACTERS ! 130: C ! 131: WRITE(6,10) BUF(1) ! 132: 10 FORMAT(1X,A1,' is not a MATLAB character.') ! 133: RETURN ! 134: END ! 135: SUBROUTINE USER(A,M,N,S,T) ! 136: DOUBLE PRECISION A(M,N),S,T ! 137: C ! 138: INTEGER A3(9) ! 139: DATA A3 /-149,537,-27,-50,180,-9,-154,546,-25/ ! 140: IF (A(1,1) .NE. 3.0D0) RETURN ! 141: DO 10 I = 1, 9 ! 142: A(I,1) = A3(I) ! 143: 10 CONTINUE ! 144: M = 3 ! 145: N = 3 ! 146: RETURN ! 147: END ! 148: SUBROUTINE PROMPT(PAUSE) ! 149: INTEGER PAUSE ! 150: C ! 151: C ISSUE MATLAB PROMPT WITH OPTIONAL PAUSE ! 152: C ! 153: INTEGER DDT,ERR,FMT,LCT(4),LIN(1024),LPT(6),RIO,WIO,RTE,WTE,HIO ! 154: COMMON /IOP/ DDT,ERR,FMT,LCT,LIN,LPT,RIO,WIO,RTE,WTE,HIO ! 155: WRITE(WTE,10) ! 156: IF (WIO .NE. 0) WRITE(WIO,10) ! 157: 10 FORMAT(/1X,'<>') ! 158: IF (PAUSE .EQ. 1) READ(RTE,20) DUMMY ! 159: 20 FORMAT(A1) ! 160: RETURN ! 161: END ! 162: SUBROUTINE PLOT(LUNIT,X,Y,N,P,K,BUF) ! 163: DOUBLE PRECISION X(N),Y(N),P(1) ! 164: INTEGER BUF(79) ! 165: C ! 166: C PLOT X VS. Y ON LUNIT ! 167: C IF K IS NONZERO, THEN P(1),...,P(K) ARE EXTRA PARAMETERS ! 168: C BUF IS WORK SPACE ! 169: C ! 170: DOUBLE PRECISION XMIN,YMIN,XMAX,YMAX,DY,DX,Y1,Y0 ! 171: INTEGER AST,BLANK,H,W ! 172: DATA AST/1H*/,BLANK/1H /,H/20/,W/79/ ! 173: C ! 174: C H = HEIGHT, W = WIDTH ! 175: C ! 176: XMIN = X(1) ! 177: XMAX = X(1) ! 178: YMIN = Y(1) ! 179: YMAX = Y(1) ! 180: DO 10 I = 1, N ! 181: XMIN = DMIN1(XMIN,X(I)) ! 182: XMAX = DMAX1(XMAX,X(I)) ! 183: YMIN = DMIN1(YMIN,Y(I)) ! 184: YMAX = DMAX1(YMAX,Y(I)) ! 185: 10 CONTINUE ! 186: DX = XMAX - XMIN ! 187: IF (DX .EQ. 0.0D0) DX = 1.0D0 ! 188: DY = YMAX - YMIN ! 189: WRITE(LUNIT,35) ! 190: DO 40 L = 1, H ! 191: DO 20 J = 1, W ! 192: BUF(J) = BLANK ! 193: 20 CONTINUE ! 194: Y1 = YMIN + (H-L+1)*DY/H ! 195: Y0 = YMIN + (H-L)*DY/H ! 196: JMAX = 1 ! 197: DO 30 I = 1, N ! 198: IF (Y(I) .GT. Y1) GO TO 30 ! 199: IF (L.NE.H .AND. Y(I).LE.Y0) GO TO 30 ! 200: J = 1 + (W-1)*(X(I) - XMIN)/DX ! 201: BUF(J) = AST ! 202: JMAX = MAX0(JMAX,J) ! 203: 30 CONTINUE ! 204: WRITE(LUNIT,35) (BUF(J),J=1,JMAX) ! 205: 35 FORMAT(1X,79A1) ! 206: 40 CONTINUE ! 207: RETURN ! 208: END ! 209: SUBROUTINE EDIT(BUF,N) ! 210: INTEGER BUF(N) ! 211: C ! 212: C CALLED AFTER INPUT OF A SINGLE BACKSLASH ! 213: C BUF CONTAINS PREVIOUS INPUT LINE, ONE CHAR PER WORD ! 214: C ENTER LOCAL EDITOR IF AVAILABLE ! 215: C OTHERWISE JUST ! 216: RETURN ! 217: END ! 218: DOUBLE PRECISION FUNCTION DSINH(X) ! 219: IMPLICIT DOUBLE PRECISION (A-Z) ! 220: DATA A0/-.139005324307231D6/, ! 221: $ A1/-.180697428204813D5/, ! 222: $ A2/-.404150536907816D3/, ! 223: $ B0/-.139005324307231D6/, ! 224: $ B1/+.509781123072247D4/, ! 225: $ B2/-.954080394016126D2/ ! 226: IF (DABS(X) .LT. 0.5D0) GO TO 10 ! 227: E = DEXP(X) ! 228: DSINH = 0.5D0*(E-1.0D0/E) ! 229: RETURN ! 230: 10 Y = X*X ! 231: P = ((A2*Y)+A1)*Y+A0 ! 232: Q = ((Y+B2)*Y+B1)*Y+B0 ! 233: DSINH = X*P/Q ! 234: RETURN ! 235: END ! 236: DOUBLE PRECISION FUNCTION DCOSH(X) ! 237: IMPLICIT DOUBLE PRECISION (A-Z) ! 238: E = DEXP(X) ! 239: DCOSH = 0.5D0*(E+1.0D0/E) ! 240: RETURN ! 241: END
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.