Commit | Line | Data |
---|---|---|
7af5ad59 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 + | |
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 |