A large commit.
[pdp8.git] / sw / os8 / v3d / sources / fortran / all / csqrt.ra
CommitLineData
81e70d48
PH
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 +
22CSQRTX, SETX XR
23 SETB BP
24 JA .+3
25BP, F 0.0
26XR, F 0.0
27ARG, F 0.0
28 F 0.0
29THETA, F 0.0
30FP2, F 2.0
31 ORG 10*3+BP
32 FNOP
33 JA CSQRTX
34 0
35RT, 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
57CSA, 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
69CSB, FSTA ARG /R
70 EXTERN SQRT
71 JSR SQRT
72 JA CSC
73 JA ARG /SQRT(R)
74CSC, FSTA ARG /SQRT(R)
75 EXTERN SIN
76 JSR SIN /SIN(THETA/2)
77 JA CSD
78 JA THETA
79CSD, 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
85CSE, FMUL ARG
86 FSTA ARG
87 STARTE
88 FLDA ARG
89 FSTA #CAC
90 JA RT
91 EXTERN #CAC
92\f