1: .globl log, _log
   2: ldfps = 170100^tst
   3: stfps = 170200^tst
   4: ldexp = 176400^movif
   5: stexp = 175000^movfi
   6: /
   7: /	log accepts its argument and returns its result
   8: /	in fr0.  The carry bit is set if the argument is
   9: /	zero or negative.
  10: /	The coefficients are #2705 from Hart & Cheney.
  11: /
  12: /	movf	arg,fr0
  13: /	jsr	pc,log
  14: /	movf	fr0,...
  15: /
  16: _log:
  17:         mov     r5,-(sp)
  18:         mov     sp,r5
  19:         movf    4(r5),fr0
  20:         jsr     pc,log
  21:         mov     (sp)+,r5
  22:         rts     pc
  23: 
  24: log:
  25:         tstf    fr0
  26:         cfcc
  27:         bgt     1f
  28:         movf    $bigneg,fr0     /return -(big) on error
  29:         sec
  30:         rts     pc
  31: 1:
  32:         stfps   -(sp)
  33:         ldfps   $200            /di mode
  34:         movf    fr2,-(sp)
  35:         movf    fr1,-(sp)
  36: /
  37:         stexp   fr0,-(sp)       /scale
  38:         ldexp   $0,fr0
  39:         cmpf    sqrt2o2,fr0
  40:         cfcc
  41:         blt     1f
  42:         ldexp   $1,fr0
  43:         dec     (sp)
  44: 1:
  45:         movf    fr0,fr1         /(1/2)^(1/2) < x < 2^(1/2)
  46:         subf    $one,fr0
  47:         addf    $one,fr1
  48:         divf    fr1,fr0         /z = (x-1)/(x+1)
  49:         movf    fr0,fr1
  50:         mulf    fr0,fr1         /z^2
  51: /
  52:         movf    p3,fr2
  53:         mulf    fr1,fr2
  54:         addf    p2,fr2
  55:         mulf    fr1,fr2
  56:         addf    p1,fr2
  57:         mulf    fr1,fr2
  58:         addf    p0,fr2
  59:         mulf    fr2,fr0         /zP(z)
  60: /
  61:         movf    fr1,fr2
  62:         addf    q2,fr2
  63:         mulf    fr1,fr2
  64:         addf    q1,fr2
  65:         mulf    fr1,fr2
  66:         addf    q0,fr2          /Q(z)
  67: /
  68:         divf    fr2,fr0         /zP(z)/Q(z)
  69:         movif   (sp)+,fr1
  70:         mulf    log2,fr1
  71:         addf    fr1,fr0
  72: /
  73:         movf    (sp)+,fr1
  74:         movf    (sp)+,fr2
  75:         ldfps   (sp)+
  76:         rts     pc
  77: /
  78: /
  79: one     = 40200
  80: bigneg  = 177777
  81: /
  82: .data
  83: sqrt2o2: 40065; 02363; 31771; 157145
  84: log2:    40061; 71027;173721;147572
  85: /
  86: p0:     141300; 16201; 02154; 10216
  87: p1:      41367;124211; 21611;114442
  88: p2:     141032; 31773; 64222; 40261
  89: p3:      37727;114303;110107;114145
  90: /
  91: q0:     141100; 16201; 02154; 10216
  92: q1:      41233;154404;136454; 22153
  93: q2:     141016;111747; 07541; 52530
  94: /
  95: /
  96: /p0 = -.24013 91795 59210 50986 8484  d2
  97: /p1 =  .30957 29282 15376 50062 264   d2
  98: /p2 = -.96376 90933 68686 59324       d1
  99: /p3 =  .42108 73712 17979 7145        d0
 100: /
 101: /q0 = -.12006 95897 79605 25471 7525  d2
 102: /q1 =  .19480 96607 00889 73051 623   d2
 103: /q2 = -.89111 09027 93783 12337       d1
 104: /q3 =  .1                             d1
 105: /

Defined functions

_log declared in line 1; defined in line 16; used 3 times
bigneg defined in line 80; used 1 times
  • in line 28
ldexp defined in line 4; used 2 times
log declared in line 1; defined in line 24; used 16 times
one defined in line 79; used 2 times
stexp defined in line 5; used 1 times
  • in line 37

Defined variables

log2 defined in line 84; used 1 times
  • in line 70
p0 defined in line 86; used 1 times
  • in line 58
p1 defined in line 87; used 1 times
  • in line 56
p2 defined in line 88; used 1 times
  • in line 54
p3 defined in line 89; used 1 times
  • in line 52
q0 defined in line 91; used 1 times
  • in line 66
q1 defined in line 92; used 1 times
  • in line 64
q2 defined in line 93; used 1 times
  • in line 62
sqrt2o2 defined in line 83; used 1 times
  • in line 39
Last modified: 1975-05-14
Generated: 2016-12-26
Generated by src2html V0.67
page hit count: 607
Valid CSS Valid XHTML 1.0 Strict