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