1*20008Sdist# 2*20008Sdist# Copyright (c) 1980 Regents of the University of California. 3*20008Sdist# All rights reserved. The Berkeley software License Agreement 4*20008Sdist# specifies the terms and conditions for redistribution. 5*20008Sdist# 6*20008Sdist# @(#)log.s 5.1 (Berkeley) 05/08/85 7*20008Sdist# 8*20008Sdist# 919997Sdist# double log(arg) ; natural logarithm 1019997Sdist# double log10(arg); base 10 log 1119997Sdist# double arg 1219997Sdist# if(arg<=0){ errno=EDOM; return(-1.7e+38); } 1319997Sdist# nat. log computed from Hart&Cheney LOGE 2706 D=22.1 1419997Sdist# J F Jarvis August 3, 1978 1519997Sdist.set EDOM,33 1619997Sdist.globl _log 1719997Sdist.globl _log10 1819997Sdist.globl _errno 1919997Sdist.text 2019997Sdist.align 1 2119997Sdist_log10: 2219997Sdist .word 0x0 2319997Sdist bispsw $0xe0 2419997Sdist movd 4(ap),-(sp) 2519997Sdist calls $2,_log 2619997Sdist muld2 log10e,r0 2719997Sdist ret 2819997Sdist.align 1 2919997Sdist_log: 3019997Sdist .word 0x07c0 3119997Sdist bispsw $0xe0 3219997Sdist movd 4(ap),r0 3319997Sdist jgtr range 3419997Sdist movl $EDOM,_errno 3519997Sdist movd $0d-1.7e+38,r0 # machine dept max neg 3619997Sdist ret 3719997Sdistrange: 3819997Sdist extzv $7,$8,r0,r10 # r10 = exp(arg)+128 3919997Sdist insv $128,$7,$8,r0 # r0,r1: 0.5<=frac(arg)<1.0 4019997Sdist cmpd r0,sqrt2d2 4119997Sdist jgeq comp 4219997Sdist insv $129,$7,$8,r0 # frac *= 2 4319997Sdist decl r10 # exp -= 1 4419997Sdistcomp: 4519997Sdist subl2 $128,r10 # signed exp for scaled arg 4619997Sdist subd3 $0d1.0e+0,r0,r6 # Hart&cheney LOGE 2706 4719997Sdist addd2 $0d1.0e+0,r0 4819997Sdist divd2 r0,r6 # r6,r7= (frac-1)/(frac+1) 4919997Sdist muld3 r6,r6,r8 5019997Sdist polyd r8,$3,pcoef 5119997Sdist muld2 r0,r6 5219997Sdist polyd r8,$4,qcoef 5319997Sdist divd3 r0,r6,r0 5419997Sdist cvtld r10,r2 5519997Sdist muld2 log2,r2 # r2,r3= loge(2**exp) 5619997Sdist addd2 r2,r0 5719997Sdist ret 5819997Sdist.data 5919997Sdist.align 2 6019997Sdistpcoef: 6119997Sdist .double 0d-0.24550691103445385056e+2 6219997Sdist .double 0d0.23616053565907671809e+3 6319997Sdist .double 0d-0.54904361859132995001e+3 6419997Sdist .double 0d0.35621151669903912407e+3 6519997Sdistqcoef: 6619997Sdist .double 0d0.10e+1 6719997Sdist .double 0d-0.35526251110400238735e+2 6819997Sdist .double 0d0.19375591463035879517e+3 6919997Sdist .double 0d-0.33389039541217149928e+3 7019997Sdist .double 0d0.17810575834951956204e+3 7119997Sdistlog10e: 7219997Sdist .double 0d0.43429448190325182765e+0 7319997Sdistsqrt2d2: 7419997Sdist .double 0d0.70710678118654752440e+0 7519997Sdistlog2: 7619997Sdist .double 0d0.69314718055994530941e+0 77