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