| 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 |