⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 sqrt.s.old

📁 <B>Digital的Unix操作系统VAX 4.2源码</B>
💻 OLD
字号:
# double sqrt(arg)# double arg# if(arg<0.0) { _errno=EDOM; return(0.0) }# J. F. Jarvis August 2, 1978.set	EDOM,98.text.align	1.globl	_sqrt.globl	_errno_sqrt:	.word	0x0c0	bispsw	$0xe0	movd	4(ap),r4	jgtr	range	jeql	retz	movl	$EDOM,_errnoretz:	clrd	r0	ret#range:	extzv	$7,$8,r4,r6	# r6 is exponent of arg	insv	$128,$7,$8,r4	# r2: 0.5<=fraction(arg)<1.0	incl	r6	clrl	r7	ediv	$2,r6,r6,r7	# r6=(exp+1)/2; r7=(exp+1)%2	addb2	$64,r6	# r6 is correct exponent for result	polyf	r4,$4,pcoef	# init estimate of sqrt(frac)						# Hart&Cheney SQRT 0132 D=5.1	divd3	r0,r4,r2	# Newtons method, 2 iterations	addd2	r2,r0	muld2	$0d0.5e+0,r0	divd3	r0,r4,r2	# Hart&Cheney 6.1.7	addd2	r2,r0	#d=21 at exit	muld2	hc[r7],r0	# *sqrt(2) requ for even org exp.	insv	r6,$7,$8,r0	# insert correct exp.	ret.data.align	2pcoef:	.float 0f-0.1214683825e+0	.float 0f0.5010420763e+0	.float 0f-0.9093210498e+0	.float 0f0.1300669049e+1	.float 0f0.2290699453e+0hc:		.double 0d0.35355339059327376220e+0	# sqrt(2)/4		.double 0d0.5e+0

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -