.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