	.TITLE	.CDPLG
/
/ DOUBLE PRECISION COMPLEX LOGARITHM
/
	.GLOBL	CDLOG
	.GLOBL	.DLOG,.DATAN,.DPRLD,.DPRST,.DPRDV,.ERROR,.LDDBL,.LODBD
	.GLOBL	.CHKMD,.SPBAI,.MODCN,.DPCAB,.SWPIT,.SWPBI,.SPBIA
	.GLOBL	.MODEA,.SIGNA,.MOSTA,.SGNIA,.MSTIA,.ADDR1
/
	.GLOBL	.GRAB
/
CDLOG	XX
	JMS*	.GRAB	/ FETCH THE ARGUMENTS
	JMS*	.CHKMD	/SET MODE
	LAC*	.MOSTA
	SZA
	JMP	CLGANZ
	SAD*	.MSTIA
	JMP	CLOGER	/ERROR, ARGUMENT IS ZERO
	JMS*	.SWPIT	/AI TO A, A WAS ZERO
	LAC	(PIBY2
	JMS*	.DPRLD
	JMS*	.SPBAI	/PI/2 TO AI
	LAC*	.SIGNA
	DAC*	.SGNIA	/SET SIGN OF IMAGINARY PART
	DZM*	.SIGNA
	JMP	CLREL
CLGANZ	JMS*	.SWPBI	/A TO BI
	JMS*	.LODBD	/A TO B
	JMS*	.SWPIT	/AI TO A
	JMS*	.DPRDV	/AI/A
	LAC*	.MODEA
	JMS*	.DATAN	/ATAN(AI/A)
	LAC	.ADDR1
	JMS*	.DPRST	/STORE IMAGINARY PART
	JMS*	.SPBIA	/BI TO A
	JMS*	.DPCAB	/TAKE MAGNITUDE OF A,AI
	LAC	.ADDR1
	JMS*	.DPRLD	/GET IMAGINARY PART
	JMS*	.SPBAI	/B TO AI
CLREL	LAC*	.MODEA
	JMS*	.DLOG	/LOG(ABS(Z))
CLGEXT	JMS*	.MODCN	/RESET MODE
	JMP*	CDLOG
/
CLOGER	LAW	32
	JMS*	.ERROR	/ZERO ARGUMENT , ISSUE ERROR
	JMP	CLGEXT
/
PIBY2	1; 444176; 325042; 055060; 432305
/
	.END
