ASMB,R,L,C * * **************************************************************** * * (C) COPYRIGHT HEWLETT-PACKARD COMPANY 1979. ALL RIGHTS * * * RESERVED. NO PART OF THIS PROGRAM MAY BE PHOTOCOPIED, * * * REPRODUCED OR TRANSLATED TO ANOTHER PROGRAM LANGUAGE WITHOUT * * * THE PRIOR WRITTEN CONSENT OF HEWLETT-PACKARD COMPANY. * * **************************************************************** * * NAME: PART OF MATH LIBRARY * SOURCE: 24998-18XXX SEE NAM FOR LAST THREE DIGITS * RELOC: PART OF 24998-12001 * PGMR: BG & JTS * HED "DATN2" ARCTANGENT OF (X1/X2). DOUBLE PRECISION NAM DATN2,6 24998-1X093 REV.2001 770518 ENT DATN2 ENT DATA2 EXT .ZRNT,.ENTP,DSIGN,DATAN EXT .XADD,.XDIV EXT .DFER XADD EQU .XADD XDIV EQU .XDIV SPC 2 * * CALLING SEQUENCE: Y = ARCTAN(X1/X2) * JSB DATN2 * DEF *+4 * DEF Y * DEF X1 * DEF X2 SPC 2 TDB NOP DEC 13 NOP T REP 3 NOP ARG NOP ADDRESS FOR DSIGN Z REP 3 Z = DATAN(X1/X2) NOP Y NOP X1 NOP X2 NOP DATA2 EQU * DATN2 NOP JSB .ZRNT DEF LIBX JSB .ENTP DEF Y STA TDB+2 JSB XDIV Z = X1 / X2 DEF Z DEF X1,I DEF X2,I LDA Z SOC OVERFLOW ? SZA,RSS YES. Z TOO BIG? JMP ARGOK NO. Z IS OKAY. JSB DSIGN YES. X2 = 0 OR Z TOO BIG. DEF *+4 DEF T Y = SIGN(X1) * PI/2 DEF PI2 DEF X1,I JMP EXIT ARGOK JSB DATAN Y = ARCTAN(X1/X2) DEF *+3 DEF T DEF Z LDA X2,I X2 < 0 ? SSA,RSS JMP EXIT LDA X1 YES. LDB X1,I IF X1 = 0, Y = PI, SZB,RSS ELSE Y = ARCTAN(X1/X2) + LDA ADPI SIGN(X1) * PI STA ARG STORE X1 OR PI JSB DSIGN DEF *+4 DEF Z ADPI DEF PI DEF ARG,I JSB XADD DEF T DEF T DEF Z EXIT JSB .DFER TRANSFER RESULT DEF Y,I DEF T LIBX JMP TDB+2,I DEF TDB DEC 0 SPC 2 PI OCT 062207,166521,010404 PI PI2 OCT 062207,166521,010402 PI/2 END *