V10/libj/norm.c

Compare this file to the similar file:
Show the results in this format:

norm(x,y,z)
{
	return (sqrt(x*x + y*y + z*z));
}

sqrtryz(x,y,z)
{
	register long sumsq;

	sumsq = x*x - y*y - z*z;
	if (sumsq <= 0)
		return 0;
	return ( sqrt(sumsq) );
}

#define MAXROOT 0xb504
sqrt(x)
	register long x;
{
	register long high=MAXROOT;
	register long low=0;
	register long current=MAXROOT/2;
	if(x<=0)
		return 0;
	if(x>=MAXROOT*MAXROOT)
		return(MAXROOT);
	while(high>low+1){
		if(current*current==x)
			return (current);
		if(current*current>x)
			high=current;
		else
			low=current;
		current=(high+low)>>1;
	}
	return(current);
}