File:  [Research Unix] / researchv9 / libc / math / hypot.c
Revision 1.1.1.1 (vendor branch): download - view: text, annotated - select for diffs
Tue Apr 24 17:22:00 2018 UTC (8 years, 1 month ago) by root
Branches: belllabs, MAIN
CVS tags: researchv9-SUN3_old, researchv9-SUN3, HEAD
researchv9-SUN3(old)

/*
 * hypot -- sqrt(p*p+q*q), but overflows only if the result does.
 * See Cleve Moler and Donald Morrison,
 * ``Replacing Square Roots by Pythagorean Sums,''
 * IBM Journal of Research and Development,
 * Vol. 27, Number 6, pp. 577-581, Nov. 1983
 */
double hypot(p, q)
double p, q;
{
	double r, s;
	if(p<0) p = -p;
	if(q<0) q = -q;
	if(p<q){ r=p; p=q; q=r; }
	if(p==0) return 0;
	for(;;){
		r=q/p;
		r*=r;
		s=r+4;
		if(s==4)
			return p;
		r/=s;
		p+=2*r*p;
		q*=r;
	}
}

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.