A large commit.
[pdp8.git] / sw / os8 / v3d / sources / fortran / dectapes / dectape2 / expcc.ra
CommitLineData
81e70d48
PH
1/
2/EXPCC
3/COMPLEX RAISED TO COMPLEX
4/
5/ VERSION 5A 4-26-77 MH
6/
7/(A+I*B)^(C+I*D)
8/A+B=0 YIELDS 0
9/B+D=0 MEANS USE EXP3 TO CALCULATTE A^C
10/A+B=0,C+D=0 YIELDS 1.0
11/ENTER + EXIT IN STARTE
12 SECT #EXPCC
13 DPCHK
14 EXTERN #CAC
15 EXTERN EXP
16 EXTERN COS
17 EXTERN SIN
18 EXTERN ALOG
19 EXTERN EXP3
20 EXTERN ATAN2
21 EXTERN SQRT
22 BASE 0
23EXPCC, JA .
24 FSTA C,0
25 FLDA 0
26 FSTA A,0
27 STARTF
28 BASE .+2000
29 XTA 0
30 FSTA T1 /SAVE XR 0
31 FLDA A
32 JNE EX1 /A NOT 0
33 FLDA B
34 JNE EX1
35 STARTE /A=B=0
36 FCLA
37EX, FSTA #CAC /RESULT = 0
38 JA EXPCC
39EX1, FLDA C /C+D=0?
40 JNE EX2
41 FLDA D
42 JNE EX2
43 STARTE
44 FLDA FP1 /RESULT = 1 IF C=D=0
45 JA EX
46EX2, FLDA B
47 JNE EX3 /USE EXP3 IF B=D=0
48 FLDA D
49 JNE EX3
50 STARTF
51 JSR EXP3
52 JA .+6
53 JA A
54 JA C
55 FSTA A
56 STARTE
57 FLDA A /RETURN AS REAL PART
58 JA EX
59EX3, STARTF
60/TH=ATAN(B/A)
61 JSR ATAN2
62 JA .+6
63 JA B
64 JA A
65 FSTA TH
66/
67/LOGR=ALOG(SQRT(A*A+B*B))
68 FLDA A
69 FMUL A
70 FSTA LOGR
71 FLDA B
72 FMUL B
73 FADDM LOGR
74 JSR SQRT
75 JA .+4
76 JA LOGR
77 FSTA LOGR
78 JSR ALOG
79 JA .+4
80 JA LOGR
81 FSTA LOGR
82/ARG=C*TH+D*LOGR
83 FLDA C
84 FMUL TH
85 FSTA ARG
86 FLDA D
87 FMUL LOGR
88 FADDM ARG
89/
90/CALCULATE IN AND COS OF ARG. SAVE SIGN OF EACH
91 JSR SIN
92 JA .+4
93 JA ARG
94 FSTA SINE
95 JSR COS
96 JA .+4
97 JA ARG
98 FSTA CSINE
99/CALL C*LOGR-D*TH
100 FLDA D
101 FMUL TH
102 FSTA REST
103 FLDA C
104 FMUL LOGR
105 FSUB REST
106 FSTA REST
107/REAL = EXP(REST+ALOG(CSINE))
108 FLDA CSINE /REAL
109 JLT .+6
110 LDX 0,1 /=1 IF POSITIVE
111 JA .+3
112 FNEG
113 JSA DO
114 JXN .+3,0 /SKIP IF POS
115 FNEG
116 FSTA A
117 FLDA SINE /IMAG
118 JLT .+6
119 LDX 0,1
120 JA .+5
121 LDX 0,0
122 FNEG
123 JSA DO
124 JXN .+3,0
125 FNEG /RESTORE SIGN
126 FSTA B
127 FLDA T1 /RESTORE XR0
128 ATX 0
129 STARTE
130 FLDA A
131 FSTA #CAC
132 JA EXPCC
133/
134DO, JA .
135 FSTA TH
136 JSR ALOG
137 JA .+4
138 JA TH
139 FADD REST
140 FSTA ARG
141 JSR EXP
142 JA .+4
143 JA ARG
144 FSTA ARG
145 FLDA TH /CHECK SIGN
146 JGE DOX
147 FLDA ARG
148 FNEG
149 FSTA ARG
150DOX, FLDA ARG
151 JA DO
152A, F 0.0
153B, F 0.0
154C, F 0.0
155D, F 0.0
156LOGR, F 0.0
157TH, F 0.0
158ARG, F 0.0
159SINE, F 0.0
160CSINE, F 0.0
161REST, F 0.0
162FP1, F 1.0
163 F 0.0
164T1, F 0.0
165\f