File: CSQRT.RA of Tape: Sources/Fortran/os8-f4-3
(Source file text)
/C=CSQRT(C) COMPLEX SQUARE ROOT / / / VERSION 40A 27-MAY-80 WVDM / / /ENTER+ EXIT IN COMPLEX: Z=X+IY / /SQRT(Z)=SQRT(R)*(COS(THETA)+I*SIN(THETA)) / /R=SQRT(X*X+Y*Y), THETA=ATAN2(Y/X)/2 / /CALLS SQRT,ATAN2,SIN,COS / SECT CSQRT JA #CSQRT DPCHK TEXT +CSQRT + CSQRTX, SETX XR SETB BP JA .+3 BP, F 0.0 XR, F 0.0 ARG, F 0.0 F 0.0 THETA, F 0.0 FP2, F 2.0 ORG 10*3+BP FNOP JA CSQRTX 0 RT, JA . / BASE 0 #CSQRT, STARTD FLDA 10*3 FSTA RT FLDA 0 SETB BP SETX XR BASE BP LDX 1,1 FSTA BP FLDA% BP,1 FSTA BP STARTE FLDA% BP FSTA ARG STARTF EXTERN ATAN2 JSR ATAN2 /ATAN(Y/X) JA CSA JA ARG+3 JA ARG CSA, FDIV FP2 /ATAN/2 FSTA THETA FLDA ARG FMUL ARG /X*X FSTA ARG FLDA ARG+3 FMUL ARG+3 /Y*Y FADD ARG /X*X+Y*Y FSTA ARG EXTERN SQRT /SQRT(X*X+Y*Y) JSR SQRT JA CSB JA ARG CSB, FSTA ARG /R EXTERN SQRT JSR SQRT JA CSC JA ARG /SQRT(R) CSC, FSTA ARG /SQRT(R) EXTERN SIN JSR SIN /SIN(THETA/2) JA CSD JA THETA CSD, FMUL ARG /*SQRT(X) FSTA ARG+3 EXTERN COS JSR COS /COS(THETA/2)*SQRT(R) JA CSE JA THETA CSE, FMUL ARG FSTA ARG STARTE FLDA ARG FSTA #CAC JA RT EXTERN #CAC