|
|
1.1 root 1: SUBROUTINE MATLAB(INIT)
2: C INIT = 0 FOR ORDINARY FIRST ENTRY
3: C = POSITIVE FOR SUBSEQUENT ENTRIES
4: C = NEGATIVE FOR SILENT INITIALIZATION (SEE MATZ)
5: C
6: DOUBLE PRECISION STKR(50005),STKI(50005)
7: INTEGER IDSTK(4,48),LSTK(48),MSTK(48),NSTK(48),VSIZE,LSIZE,BOT,TOP
8: INTEGER ALFA(52),ALFB(52),ALFL,CASE
9: INTEGER IDS(4,32),PSTK(32),RSTK(32),PSIZE,PT,PTZ
10: INTEGER DDT,ERR,FMT,LCT(4),LIN(1024),LPT(6),RIO,WIO,RTE,WTE,HIO
11: INTEGER SYM,SYN(4),BUF(256),CHAR,FLP(2),FIN,FUN,LHS,RHS,RAN(2)
12: COMMON /VSTK/ STKR,STKI,IDSTK,LSTK,MSTK,NSTK,VSIZE,LSIZE,BOT,TOP
13: COMMON /ALFS/ ALFA,ALFB,ALFL,CASE
14: COMMON /RECU/ IDS,PSTK,RSTK,PSIZE,PT,PTZ
15: COMMON /IOP/ DDT,ERR,FMT,LCT,LIN,LPT,RIO,WIO,RTE,WTE,HIO
16: COMMON /COM/ SYM,SYN,BUF,CHAR,FLP,FIN,FUN,LHS,RHS,RAN
17: C
18: DOUBLE PRECISION S,T
19: INTEGER EPS(4),FLOPS(4),EYE(4),RAND(4)
20: C
21: C CHARACTER SET
22: C 0 10 20 30 40 50
23: C
24: C 0 0 A K U COLON : LESS <
25: C 1 1 B L V PLUS + GREAT >
26: C 2 2 C M W MINUS -
27: C 3 3 D N X STAR *
28: C 4 4 E O Y SLASH /
29: C 5 5 F P Z BSLASH \\
30: C 6 6 G Q BLANK EQUAL =
31: C 7 7 H R LPAREN ( DOT .
32: C 8 8 I S RPAREN ) COMMA ,
33: C 9 9 J T SEMI ; QUOTE '
34: C
35: INTEGER ALPHA(52),ALPHB(52)
36: DATA ALPHA /1H0,1H1,1H2,1H3,1H4,1H5,1H6,1H7,1H8,1H9,
37: $ 1HA,1HB,1HC,1HD,1HE,1HF,1HG,1HH,1HI,1HJ,
38: $ 1HK,1HL,1HM,1HN,1HO,1HP,1HQ,1HR,1HS,1HT,
39: $ 1HU,1HV,1HW,1HX,1HY,1HZ,1H ,1H(,1H),1H;,
40: $ 1H:,1H+,1H-,1H*,1H/,1H\\,1H=,1H.,1H,,1H',
41: $ 1H<,1H>/
42: C
43: C ALTERNATE CHARACTER SET
44: C
45: DATA ALPHB /1H0,1H1,1H2,1H3,1H4,1H5,1H6,1H7,1H8,1H9,
46: $ 1Ha,1Hb,1Hc,1Hd,1He,1Hf,1Hg,1Hh,1Hi,1Hj,
47: $ 1Hk,1Hl,1Hm,1Hn,1Ho,1Hp,1Hq,1Hr,1Hs,1Ht,
48: $ 1Hu,1Hv,1Hw,1Hx,1Hy,1Hz,1H ,1H(,1H),1H;,
49: $ 1H|,1H+,1H-,1H*,1H/,1H$,1H=,1H.,1H,,1H",
50: $ 1H[,1H]/
51: C
52: DATA EPS/14,25,28,36/,FLOPS/15,21,24,25/
53: DATA EYE/14,34,14,36/,RAND/27,10,23,13/
54: C
55: IF (INIT .GT. 0) GO TO 90
56: C
57: C RTE = UNIT NUMBER FOR TERMINAL INPUT
58: C WTE = UNIT NUMBER FOR TERMINAL OUTPUT
59: C HIO = UNIT NUMBER FOR HELP FILE
60: C
61: RTE = 5
62: WTE = 6
63: HIO = 9
64: RIO = RTE
65: WIO = 0
66: C
67: IF (INIT .GE. 0) WRITE(WTE,100)
68: 100 FORMAT(//0X,' < M A T L A B >'
69: $ /0X,' Version of 11/01/83')
70: C
71: C ASK HELPER TO OPEN HELP FILE
72: BUF(1) = 0
73: CALL HELPER(BUF)
74: C
75: C RANDOM NUMBER SEED
76: RAN(1) = 0
77: C
78: C INITIAL LINE LIMIT
79: LCT(2) = 25000
80: C
81: ALFL = 52
82: CASE = 1
83: C CASE = 1 for file names in lower case
84: DO 20 I = 1, ALFL
85: ALFA(I) = ALPHA(I)
86: ALFB(I) = ALPHB(I)
87: 20 CONTINUE
88: C
89: VSIZE = 50005
90: LSIZE = 48
91: PSIZE = 32
92: BOT = LSIZE-3
93: CALL WSET(5,0.0D0,0.0D0,STKR(VSIZE-4),STKI(VSIZE-4),1)
94: CALL PUTID(IDSTK(1,LSIZE-3),EPS)
95: LSTK(LSIZE-3) = VSIZE-4
96: MSTK(LSIZE-3) = 1
97: NSTK(LSIZE-3) = 1
98: S = 1.0D0
99: 30 S = S/2.0D0
100: T = 1.0D0 + S
101: IF (T .GT. 1.0D0) GO TO 30
102: STKR(VSIZE-4) = 2.0D0*S
103: CALL PUTID(IDSTK(1,LSIZE-2),FLOPS)
104: LSTK(LSIZE-2) = VSIZE-3
105: MSTK(LSIZE-2) = 1
106: NSTK(LSIZE-2) = 2
107: CALL PUTID(IDSTK(1,LSIZE-1), EYE)
108: LSTK(LSIZE-1) = VSIZE-1
109: MSTK(LSIZE-1) = -1
110: NSTK(LSIZE-1) = -1
111: STKR(VSIZE-1) = 1.0D0
112: CALL PUTID(IDSTK(1,LSIZE), RAND)
113: LSTK(LSIZE) = VSIZE
114: MSTK(LSIZE) = 1
115: NSTK(LSIZE) = 1
116: FMT = 1
117: FLP(1) = 0
118: FLP(2) = 0
119: DDT = 0
120: RAN(2) = 0
121: PTZ = 0
122: PT = PTZ
123: ERR = 0
124: IF (INIT .LT. 0) RETURN
125: C
126: 90 CALL PARSE
127: IF (FUN .EQ. 1) CALL MATFN1
128: IF (FUN .EQ. 2) CALL MATFN2
129: IF (FUN .EQ. 3) CALL MATFN3
130: IF (FUN .EQ. 4) CALL MATFN4
131: IF (FUN .EQ. 5) CALL MATFN5
132: IF (FUN .EQ. 6) CALL MATFN6
133: IF (FUN .EQ. 21) CALL MATFN1
134: IF (FUN .NE. 99) GO TO 90
135: RETURN
136: END
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.