|
|
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.