software: Added more and more
[pdp8.git] / sw / f4 / FRTSRC / expci.ra
CommitLineData
7af5ad59
PH
1/
2/EXPCI
3/COMPLEX RAISED TO INTEGER OR REAL
4/
5/ VERSION 5A 4-26-77 MH
6/
7/
8/C=A+I*B
9/C^D=R^D*EXP(D*I*THETA)
10/
11/C IS IN #BASE
12/D IS IN AC
13/
14/ENTER IN STARTF,EXIT IN STARTE
15/
16 SECT #EXPCI
17 ENTRY #EXPCR
18 DPCHK
19 EXTERN SQRT
20 EXTERN ATAN2
21 EXTERN SIN
22 EXTERN COS
23 EXTERN EXP3
24 EXTERN #CAC
25 BASE 0
26#EXPCR, JA .
27 FSTA EXPON,0
28 FLDA 0 /REAL
29 FSTA A,0
30 FLDA 3 /IMAG
31 FSTA B,0
32/SET DUMMY BASE PAGE
33 BASE .+2000
34/
35/R=SQRT(A*A+B*B)
36 FLDA A
37 FMUL A
38 FSTA R
39 FLDA B
40 FMUL B
41 FADDM R
42 JSR SQRT
43 JA .+4
44 JA R
45 FSTA R
46/R^EXPON
47 JSR EXP3
48 JA .+6
49 JA R
50 JA EXPON
51 FSTA R
52/THETA=ATAN(B/A)
53 JSR ATAN2
54 JA .+6
55 JA B
56 JA A
57/THETA*EXPON
58 FMUL EXPON
59 FSTA A /PHASE ANGLE
60/IMAG=R*SIN(PHASE)
61 JSR SIN
62 JA .+4
63 JA A
64 FMUL R
65 FSTA B
66/REAL=R*COS(PHASE)
67 JSR COS
68 JA .+4
69 JA A
70 FMUL R
71 FSTA A
72 JGE .+3 /SKIP IF RESULT IS POS
73 FNEG /IF NOT,MAKE IT POS
74 FSUB LOWLIM /TEST FOR ZERO
75 JGE .+5 /JUMP IF NOT 0
76 FCLA /ASSUME RESULT SHOULD BE 0
77 FSTA A /AND STORE A 0
78/RETURN RESULT IN #CAC AND STARTE
79 STARTE
80 FLDA A
81 FSTA #CAC
82 JA #EXPCR
83A, F 0.0
84B, F 0.0
85EXPON, F 0.0
86R, F 0.0
87LOWLIM, F 0.000009 /NUMBERS >= 1.E-5 OK
88\f