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 
* 
                                                                                                                                                                                                        