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 "ATAN2" ARCTANGENT OF (X1/X2). SINGLE PRECISION NAM ATAN2,6 24998-1X163 REV.2001 750701 ENT ATAN2 EXT .ZRNT,.ENTP,SIGN,ATAN SPC 2 * * CALLING SEQUENCE: Y = ARCTAN(X1/X2) * JSB ATAN2 * DEF *+3 * DEF X1 * DEF X2 * (RESULT IN A AND B) SPC 2 TDB NOP DEC 8 NOP ARG NOP ADDRESS FOR SIGN T REP 2 TEMPORARY NOP X1 NOP X2 NOP ATAN2 NOP JSB .ZRNT DEF LIBX JSB .ENTP DEF X1 STA TDB+2 DLD X1,I FDV X2,I COMPUTE X1/X2 SOC ANSWER OUT OF RANGE ? SZA,RSS YES. Z TOO BIG ? JMP ARGOK NO. Z OKAY JSB SIGN YES. ANSWER = SIGN(X1) * PI/2 DEF PI2 DEF X1,I JMP LIBX ARGOK JSB ATAN COMPUTE ARCTAN(X1/X2) STA T LDA X2,I SSA,RSS X2 < 0 ? JMP TAKIT STB T+1 YES LDA X1 IF X1 = 0 , Y = PI, LDB X1,I ELSE Y = ARCTAN(X1/X2) + SZB,RSS SIGN(X1) * PI LDA ADPI STA ARG STORE ADDRESS OF PI OR X1 JSB SIGN ADPI DEF PI DEF ARG,I FAD T RSS TAKIT LDA T LIBX JMP TDB+2,I DEF TDB DEC 0 SPC 2 PI DEC 3.1415926 PI PI2 DEC 1.5707963 PI/2 END *