ASMB,R,L,C
      NAM CLOG,6 24998-1X137 REV.2013 791016
      ENT CLOG
      EXT .ZRNT,.ENTP,CABS,ALOG,ATAN2 
*********************************************************************** 
*                                                                     * 
*     NAME: CLOG                                                      * 
*   SOURCE: 24998-18137                                               * 
*    RELOC: PART OF 24998-12002                                       * 
*     PGMR: CRG                                                       * 
*                                                                     * 
*********************************************************************** 
*                                                                     * 
*     (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.           * 
*                                                                     * 
*********************************************************************** 
* 
*     COMPLEX LOGARITHM 
* 
*     CALLING SEQUENCE:  Y=CLOG(X)
* 
*                        JSB CLOG 
*                        DEF *+3
*                        DEF Y
*                        DEF X
*                        <ERROR RTN>
*                        <NORMAL RTN> 
* 
*********************************************************************** 
* 
TDB   NOP 
      ABS CLOG-TDB
TDBP2 NOP 
RYTMP BSS 2 
ADIX  BSS 1 
ADIY  BSS 1 
Y     BSS 1 
X     BSS 1 
* 
CLOG  NOP           ENTRY POINT 
      JSB .ZRNT 
      DEF LIBX
      JSB .ENTP     GET ADDRESSES 
      DEF Y 
      STA TDBP2     SAVE RETURN ADDR
* 
*********************************************************************** 
      SKP 
*********************************************************************** 
* 
*     CALCULATE REAL(Y) = ALOG(CABS(X)) 
* 
*     CHECK FOR ERROR CONDITION  (X = 0)
* 
      JSB CABS      COMPLEX ABS VALUE 
      DEF *+2 
      DEF X,I 
* 
      JSB ALOG
      JMP LIBX      ERROR RTN 
      DST RYTMP     SAVE IN RYTMP 
* 
*********************************************************************** 
* 
*     CALCULATE ADDRESSES OF IMAG(X) AND IMAG(Y)
* 
      LDA X 
      ADA .2
      STA ADIX
* 
      LDA Y 
      ADA .2
      STA ADIY
* 
*********************************************************************** 
* 
*     CALCULATE IMAG(Y) = ATAN2(IMAG(X)/REAL(X))
* 
      JSB ATAN2 
      DEF *+3 
      DEF ADIX,I    IMAG(X) 
      DEF X,I       REAL(X) 
* 
      DST ADIY,I    STORE IN IMAG(Y)
* 
*********************************************************************** 
* 
*     STORE REAL(Y), BUMP TO NORMAL RETURN, AND EXIT
* 
      DLD RYTMP 
      DST Y,I 
* 
      ISZ TDBP2     SET NORMAL RETURN 
LIBX  JMP TDBP2,I   RETURN
      DEF TDB 
      DEC 0 
* 
*********************************************************************** 
      SKP 
*********************************************************************** 
* 
.2    DEC 2 
* 
*********************************************************************** 
      END 
                                                                                                                                                                                                                                                          