|
|
1.1 ! root 1: # ! 2: # Copyright (c) 1980 Regents of the University of California. ! 3: # All rights reserved. The Berkeley software License Agreement ! 4: # specifies the terms and conditions for redistribution. ! 5: # ! 6: # @(#)exp.s 5.1 (Berkeley) 5/8/85 ! 7: # ! 8: # ! 9: # double exp(arg) ! 10: # double arg; 0<= arg< 88 ! 11: # double exp10(arg) ! 12: # method: range reduction to [-0.5,0.5], Hart&Chenet EXPB 1067 ! 13: # J F Jarvis, August 5, 1978 ! 14: .set ERANGE,34 ! 15: .globl _exp ! 16: .globl _exp10 ! 17: .globl _errno ! 18: .text ! 19: .align 1 ! 20: _exp10: ! 21: .word 0x07c0 ! 22: bispsw $0xe0 ! 23: muld3 4(ap),loge10,r0 ! 24: jbr argtst ! 25: .align 1 ! 26: _exp: ! 27: .word 0x07c0 ! 28: bispsw $0xe0 ! 29: movd 4(ap),r0 ! 30: argtst: ! 31: jnequ smlarg ! 32: movd $0d1.0e+0,r0 ! 33: ret ! 34: smlarg: ! 35: cmpd r0,minarg ! 36: jgeq lrgarg ! 37: mnegd huge,r0 ! 38: ret ! 39: lrgarg: ! 40: cmpd r0,maxarg ! 41: jleq range ! 42: movl $ERANGE,_errno ! 43: movd huge,r0 ! 44: ret ! 45: range: ! 46: emodd log2e,log2ex,r0,r10,r6 # r10=int(arg), r6=frac(arg) ! 47: tstd r0 ! 48: jgtr l1 ! 49: addd2 $0d0.5e+0,r6 ! 50: subw2 $1,r10 ! 51: jbr l2 ! 52: l1: subd2 $0d0.5e+0,r6 ! 53: l2: # Hart&Cheney EXPB 1067 ! 54: muld3 r6,r6,r8 # range [-.5,.5] D=18.1 ! 55: polyd r8,$2,pcoef ! 56: muld2 r0,r6 ! 57: polyd r8,$2,qcoef ! 58: subd3 r6,r0,r2 ! 59: addd2 r6,r0 ! 60: divd2 r2,r0 ! 61: muld2 sqrt2,r0 ! 62: extzv $7,$8,r0,r2 ! 63: addl2 r2,r10 ! 64: insv r10,$7,$8,r0 # load correct exponent ! 65: ret ! 66: .data ! 67: .align 2 ! 68: pcoef: ! 69: .double 0d0.23093347753750233624e-1 ! 70: .double 0d0.20202065651286927227886e+2 ! 71: .double 0d0.15139067990543389159e+4 ! 72: qcoef: ! 73: .double 0d0.1e+1 ! 74: .double 0d0.23318421142748162379e+3 ! 75: .double 0d0.43682116627275584985e+4 ! 76: minarg: ! 77: .double 0d-88.028e+0 ! 78: maxarg: ! 79: .double 0d88.028e+0 ! 80: huge: .double 0d1.7e+38 ! 81: loge10: ! 82: .double 0d2.30258509299404568401e+0 ! 83: sqrt2: ! 84: .double 0d1.41421356237309504880e+0 ! 85: log2e: ! 86: .double 0d1.44269504088896340735e+0 ! 87: log2ex: ! 88: .byte 0xbb
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.