      TITLE F_DLOG
      MODULE F_DLOG
      EXPORTC F_DLOG
      IMPORTC F_ZSTE,F_HANDLER
      AREADEF PROG,[PIC,READ,SHARED,CODE],DOUBLE
      AREADEF DATA,[WRITE,DATA],DOUBLE
      DEFSB   DATA
      AREA    PROG
      DCS     'F_DLOG      '
F_DLOG
      SPRD    FP,TOS
      LPRD    FP,12(SP)
      MOVMD   0(0(FP)),ans,2
      CMPQW   0,ans+6
      BGE     bad
      EXTSW   ans+6,R0,4,11
      INSSW   =1022,ans+6,4,11
      SUBW    =1022,R0
      MOVL    ans,F0
      MOVL    =1.0,F2
      CMPL    =.70710678118654755,F0
      BLE     l1
      MOVL    =0.5,F2
      ADDQW   -1,R0
l1    MOVL    F2,F4
      ADDL    F0,F4
      SUBL    F2,F0
      DIVL    F4,F0
      MOVL    F0,F2
      MULL    F2,F2
      MOVL    =.16948212488,F4
      MULL    F2,F4
      ADDL    =.1811136267967,F4
      MULL    F2,F4
      ADDL    =.22223823332791,F4
      MULL    F2,F4
      ADDL    =.28571409159048891,F4
      MULL    F2,F4
      ADDL    =.40000000120604531,F4
      MULL    F2,F4
      ADDL    =.66666666666336605,F4
      MULL    F2,F4
      ADDL    =2.0000000000000027,F4
      MULL    F0,F4
      MOVWL   R0,F0
      MULL    =.69314718055994531,F0
      ADDL    F4,F0
      MOVL    F0,ans
      ADDR    ans,R0
      LPRD    FP,TOS
      RXP     4
bad   ADDR    mess,TOS
      CXP     F_ZSTE
      HANDLER
      CXP     F_HANDLER
txt   DCS     'bad argument in DLOG'
lgt   EQU     *
      AREA    DATA
ans   ALLOCD  2
mess  ADDRESS mm
mm    ADDRESS txt
      DCD     lgt-txt
      END
