A large commit.
[pdp8.git] / sw / os8 / v3d / sources / fortran / all / csqrt.ra
1 /
2 / C S Q R T
3 / - - - - -
4 /
5 / VERSION 5A 4-27-77 PT
6 /
7 /COMPLEX SQUARE ROOT ROUTINE
8 /ENTER+ EXIT IN COMPLEX
9 /Z=X+IX
10 /
11 /SQRT(Z)=SQRT(R)*COS(THETA)+SIN(THETA))
12 /
13 /R=SQRT(X*X+Y*Y)
14 /THETA=ATAN2(Y/X)/2
15 /
16 /CALLS SQRT,ATAN2,SIN,COS
17 /
18 SECT CSQRT
19 JA #CSQRT
20 DPCHK
21 TEXT +CSQRT +
22 CSQRTX, SETX XR
23 SETB BP
24 JA .+3
25 BP, F 0.0
26 XR, F 0.0
27 ARG, F 0.0
28 F 0.0
29 THETA, F 0.0
30 FP2, F 2.0
31 ORG 10*3+BP
32 FNOP
33 JA CSQRTX
34 0
35 RT, JA .
36 BASE 0
37 #CSQRT, STARTD
38 FLDA 10*3
39 FSTA RT
40 FLDA 0
41 SETB BP
42 SETX XR
43 BASE BP
44 LDX 1,1
45 FSTA BP
46 FLDA% BP,1
47 FSTA BP
48 STARTE
49 FLDA% BP
50 FSTA ARG
51 STARTF
52 EXTERN ATAN2
53 JSR ATAN2 /ATAN(Y/X)
54 JA CSA
55 JA ARG+3
56 JA ARG
57 CSA, FDIV FP2 /ATAN/2
58 FSTA THETA
59 FLDA ARG
60 FMULM ARG /X*X
61 FLDA ARG+3
62 FMUL ARG+3 /Y*Y
63 FADD ARG /X*X+Y*Y
64 FSTA ARG
65 EXTERN SQRT /SQRT(X*X+Y*Y)
66 JSR SQRT
67 JA CSB
68 JA ARG
69 CSB, FSTA ARG /R
70 EXTERN SQRT
71 JSR SQRT
72 JA CSC
73 JA ARG /SQRT(R)
74 CSC, FSTA ARG /SQRT(R)
75 EXTERN SIN
76 JSR SIN /SIN(THETA/2)
77 JA CSD
78 JA THETA
79 CSD, FMUL ARG /*SQRT(X)
80 FSTA ARG+3
81 EXTERN COS
82 JSR COS /COS(THETA/2)*SQRT(R)
83 JA CSE
84 JA THETA
85 CSE, FMUL ARG
86 FSTA ARG
87 STARTE
88 FLDA ARG
89 FSTA #CAC
90 JA RT
91 EXTERN #CAC
92 \f