      TITLE F_ALOG
      MODULE F_ALOG
      EXPORTC F_ALOG
      IMPORTC F_ZSTE,F_HANDLER
      AREADEF PROG,[PIC,READ,SHARED,CODE],DOUBLE
      AREADEF DATA,[WRITE,DATA],DOUBLE
      DEFSB   DATA
      AREA    PROG
      DCS     'F_ALOG      '
F_ALOG
      SPRD    FP,TOS
      LPRD    FP,12(SP)
      MOVD    0(0(FP)),ans
      CMPQD   0,ans
      BGE     bad
      EXTSB   ans+2,R0,7,8
      INSSB   =126,ans+2,7,8
      SUBB    =126,R0
      MOVF    ans,F0
      MOVF    =1.0,F1
      CMPF    =.70710678,F0
      BLE     l1
      MOVF    =0.5,F1
      ADDQB   -1,R0
l1    MOVF    F1,F2
      ADDF    F0,F2
      SUBF    F1,F0
      DIVF    F2,F0
      MOVF    F0,F1
      MULF    F1,F1
      MOVF    =.4151774,F2
      MULF    F1,F2
      ADDF    =.6664408,F2
      MULF    F1,F2
      ADDF    =2.0000008,F2
      MULF    F0,F2
      MOVBF   R0,F0
      MULF    =.69314718,F0
      ADDF    F2,F0
      MOVF    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 ALOG'
lgt   EQU     *
      AREA    DATA
ans   ALLOCD  1
mess  ADDRESS mm
mm    ADDRESS txt
      DCD     lgt-txt
      END
