software: Added more and more
[pdp8.git] / sw / f4 / FRTSRC / expci.ra
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
83 A, F 0.0
84 B, F 0.0
85 EXPON, F 0.0
86 R, F 0.0
87 LOWLIM, F 0.000009 /NUMBERS >= 1.E-5 OK
88 \f