📄 tan.s
字号:
# double tan(arg)# double arg;#method: range reduction to [0,pi/4] followed by polynomial# approximation: Hart&Cheney TAN 4285 D=19.74.globl _tan.text.align 1_tan: .word 0x07c0 bispsw $0xe0 clrl r10 # sign flag, !=0 negate result movd 4(ap),r0 jgeq c1 xorw2 $0x8000,r10 mnegd r0,r0c1: emodd fopi,fopix,r0,r2,r6 bicl2 $~3,r2 caseb r2,$0,$3a0: .word a1-a0,a2-a0,a3-a0,a4-a0a2: subd3 r6,$0d1.0e+0,r6 jbr b1a3: xorw2 $0x8000,r10b1: bsbb rtan jneq b2 # tests final result cmptd in rtan movd funy,r0 jbr b3b2: divd3 r0,$0d1.0e+0,r0b3: xorw2 r10,r0 # negate result if flag != 0 reta4: subd3 r6,$0d1.0e+0,r6 xorw2 $0x8000,r10a1: bsbb rtan xorw2 r10,r0 retrtan: muld3 r6,r6,r8 polyd r8,$4,pcoef muld2 r0,r6 polyd r8,$3,qcoef divd3 r0,r6,r0 rsb.data.align 2funy: .double 0d1.7e+38pcoef: .double 0d0.33866386426771720960e-4 .double 0d0.34225543872410034353e-1 .double 0d-0.15506856534832663769e+2 .double 0d0.10559709017149531936e+4 .double 0d-0.13068202647548256682e+5qcoef: .double 0d1.0e+0 .double 0d-0.15550331640317099669e+3 .double 0d0.47657513629164836989e+4 .double 0d-0.16638952389471190018e+5fopi: .double 0d1.27323954473516268e+0fopix: .byte 0x29
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -