	.TITLE	.CXPAK
/
/ CONTAINS
	.GLOBL	CONJG,DCONJG
/
/ COMPLEX FUNCTION SUPPORTING ROUTINES
/
	.GLOBL	.CHKMD,.CHKMS,.MODCN,.SPBAI
	.GLOBL	.FLOAT,.ZROIA
	.GLOBL	.MODEA,.MOSTA,.A3,.A4,.SGNIA,.EXPIA,.MSTIA,.LSTIA,.AI3,.AI4
	.GLOBL	.SIGNB,.EXPB,.MOSTB,.LESTB,.B3,.B4,.ILMDE
	.GLOBL	.GRAB
/
.CHKMS	XX		/MODE CHECKING ROUTINE FOR SINGLE
	SMA!RCL		/PRECISION COMPLEX FUNCTIONS
	JMP	RORI	/REAL OR INTEGER ARGUMENT
	SPA
	JMP*	.ILMDE	/LOGICAL OR CHARACTER
EXITS	LAC	(200000
	DAC*	.MODEA	/SET MODE TO SINGLE REAL
	JMP*	.CHKMS
RORI	JMS*	.ZROIA	/REAL OR INTEGER, ZERO IMAGINARY PART
	LAC*	.MODEA
	JMS*	.FLOAT	/FLOAT IF INTEGER
	JMP	EXITS
/
.CHKMD	XX		/MODE CHECKING ROUTINE FOR DOUBLE
	SMA!RCL		/PRECISION COMPLEX FUNCTIONS
	JMP	DORI	/REAL OR INTEGER
	SPA!RAL
	JMP*	.ILMDE	/LOGICAL OR CHARACTER
	SPA
	JMP	DCX	/DOUBLE COMPLEX
	DZM*	.AI3	/SINGLE COMPLEX, ZERO EXTENSIONS
	DZM*	.AI4
EXITD	DZM*	.A3
	DZM*	.A4
DCX	LAC	(300000
	DAC*	.MODEA	/SET MODE TO DOUBLE REAL
	JMP*	.CHKMD
DORI	JMS*	.ZROIA	/REAL OR INTEGER, ZERO IMAG. PART
	LAC*	.MODEA
	JMS*	.FLOAT	/FLOAT IF INTEGER
	SAD	(300000
	JMP*	.CHKMD
	JMP	EXITD	/ZERO EXTENSION IF SINGLE REAL
/
.MODCN	XX		/ROUTINE TO CONVERT REAL TO COMPLEX
	LAC*	.MODEA	/AND COMPLEX TO REAL
	XOR	(600000
	DAC*	.MODEA
	JMP*	.MODCN
/
.SPBAI	XX		/ROUTINE TO MOVE B TO AI
	LAC*	.SIGNB
	DAC*	.SGNIA
	LAC*	.EXPB
	DAC*	.EXPIA
	LAC*	.MOSTB
	DAC*	.MSTIA
	LAC*	.LESTB
	DAC*	.LSTIA
	LAC*	.B3
	DAC*	.AI3
	LAC*	.B4
	DAC*	.AI4
	JMP*	.SPBAI
/
/ DOUBLE AND SINGLE PRECISION CONJUGATE
CONJG	XX
	JMS*	.GRAB	/ FETCH THE ARGUMENT
	SMA!RAL
	JMP*	.ILMDE	/REAL OR INTEGER ARGUMENT
	SPA!RAR
	JMP*	.ILMDE	/LOGICAL OR CHARACTER ARGUMENT
	LAC*	.MSTIA	/ IF ARGUMENT IS ZERO, DO NOT GENERATE A MINUS ZERO
	SNA
	JMP*	CONJG
	LAC*	.SGNIA
	XOR	(400000
	DAC*	.SGNIA
	JMP*	CONJG
DCONJG=CONJG
/
	.END
