Annotation of researchv10dc/libnm/log.s, revision 1.1

1.1     ! root        1: # double log(arg) ; natural logarithm
        !             2: # double log10(arg); base 10 log
        !             3: # double arg
        !             4: # if(arg<=0){ errno=EDOM; return(-1.7e+38); }
        !             5: # nat. log computed from Hart&Cheney LOGE 2706 D=22.1
        !             6: # J F Jarvis August 3, 1978
        !             7: .set   EDOM,33
        !             8: .globl _log
        !             9: .globl _log10
        !            10: .globl _errno
        !            11: .text
        !            12: .align 1
        !            13: _log10:
        !            14:        .word   0x0
        !            15:        movd    4(ap),-(sp)
        !            16:        calls   $2,_log
        !            17:        muld2   log10e,r0
        !            18:        ret
        !            19: .align 1
        !            20: _log:
        !            21:        .word   0x07c0
        !            22:        movd    4(ap),r0
        !            23:        jgtr    range
        !            24:        movl    $EDOM,_errno
        !            25:        movd    $0d-1.7e+38,r0  # machine dept max neg
        !            26:        ret
        !            27: range:
        !            28:        extzv   $7,$8,r0,r10    # r10 = exp(arg)+128
        !            29:        insv    $128,$7,$8,r0   # r0,r1: 0.5<=frac(arg)<1.0
        !            30:        cmpd    r0,sqrt2d2
        !            31:        jgeq    comp
        !            32:        insv    $129,$7,$8,r0   # frac *= 2
        !            33:        decl    r10                             # exp -= 1
        !            34: comp:
        !            35:        subl2   $128,r10        # signed exp for scaled arg
        !            36:        subd3   $0d1.0e+0,r0,r6 # Hart&cheney LOGE 2706
        !            37:        addd2   $0d1.0e+0,r0
        !            38:        divd2   r0,r6   # r6,r7= (frac-1)/(frac+1)
        !            39:        muld3   r6,r6,r8
        !            40:        polyd   r8,$3,pcoef
        !            41:        muld2   r0,r6
        !            42:        polyd   r8,$4,qcoef
        !            43:        divd3   r0,r6,r0
        !            44:        cvtld   r10,r2
        !            45:        muld2   log2,r2 # r2,r3= loge(2**exp)
        !            46:        addd2   r2,r0
        !            47:        ret
        !            48: .data
        !            49: .align 2
        !            50: pcoef:
        !            51:        .double 0d-0.24550691103445385056e+2
        !            52:        .double 0d0.23616053565907671809e+3
        !            53:        .double 0d-0.54904361859132995001e+3
        !            54:        .double 0d0.35621151669903912407e+3
        !            55: qcoef:
        !            56:        .double 0d0.10e+1
        !            57:        .double 0d-0.35526251110400238735e+2
        !            58:        .double 0d0.19375591463035879517e+3
        !            59:        .double 0d-0.33389039541217149928e+3
        !            60:        .double 0d0.17810575834951956204e+3
        !            61: log10e:
        !            62:        .double 0d0.43429448190325182765e+0
        !            63: sqrt2d2:
        !            64:        .double 0d0.70710678118654752440e+0
        !            65: log2:
        !            66:        .double 0d0.69314718055994530941e+0

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.