📄 tanh.s
字号:
# double tanh(arg)# double arg# method: tanh(arg)=sinh(arg)/cosh(arg); if |arg|<0.5 sinh(9 is computed from# a polynomial approx otherwise from exp().# Only 1 call to exp() is made.# J F Jarvis, August 17, 1978.globl _tanh.globl _exp.text.align 1_tanh: .word 0x07c0 bispsw $0xe0 clrl r10 # sign bit movd 4(ap),r6 jgeq t1 movw $0x8000,r10 xorw2 r10,r6 # co|arg|t1: cmpd r6,$0d2.0e+1 jleq t2 movd $0d1.0e+0,r0 xorw2 r10,r0 rett2: movd r6,-(sp) calls $2,_exp movd r0,r8 divd3 r8,$0d1.0e+0,-(sp) # exp(-|arg|) cmpd r6,$0d0.5e+0 jgeq t3 muld3 r6,r6,r0 # |arg|<0.5, sinh() from poly approx polyd r0,$5,pcoef muld2 r6,r0 muld2 $0d2.0e+0,r0 jbr t4t3: subd3 (sp),r8,r0t4: # r0,1 = 2*sinh(|arg|) addd3 (sp),r8,r2 # r2,3 = cosh(|arg|); divd2 r2,r0 # r0,1 = tanh(|arg|) xorw2 r10,r0 # r0,1 = tanh(arg) ret.data.align 2pcoef: .double 0d0.251726188251e-7 .double 0d0.275569807356154e-5 .double 0d0.1984127027907999e-3 .double 0d0.833333333307759961e-2 .double 0d0.16666666666667212324e+0 .double 0d0.99999999999999998116e+0
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -