Added hypot.c
This commit is contained in:
		
							parent
							
								
									ee02bfcd82
								
							
						
					
					
						commit
						1d73a4f04e
					
				
					 3 changed files with 40 additions and 0 deletions
				
			
		| 
						 | 
				
			
			@ -21,3 +21,4 @@ sleep.c
 | 
			
		|||
telldir.c
 | 
			
		||||
termcap.c
 | 
			
		||||
mktemp.c
 | 
			
		||||
hypot.c
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -19,3 +19,4 @@ seekdir.c
 | 
			
		|||
telldir.c
 | 
			
		||||
isatty.c
 | 
			
		||||
mktemp.c
 | 
			
		||||
hypot.c
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
							
								
								
									
										38
									
								
								lang/cem/libcc.ansi/misc/hypot.c
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										38
									
								
								lang/cem/libcc.ansi/misc/hypot.c
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,38 @@
 | 
			
		|||
/*
 | 
			
		||||
 * (c) copyright 1988 by the Vrije Universiteit, Amsterdam, The Netherlands.
 | 
			
		||||
 * See the copyright notice in the ACK home directory, in the file "Copyright".
 | 
			
		||||
 *
 | 
			
		||||
 * Author: Ceriel J.H. Jacobs
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
#include <math.h>
 | 
			
		||||
 | 
			
		||||
/* $Header$ */
 | 
			
		||||
 | 
			
		||||
double
 | 
			
		||||
hypot(double x,double y)
 | 
			
		||||
{
 | 
			
		||||
	/*	Computes sqrt(x*x+y*y), avoiding overflow */
 | 
			
		||||
 | 
			
		||||
	if (x < 0) x = -x;
 | 
			
		||||
	if (y < 0) y = -y;
 | 
			
		||||
	if (x > y) {
 | 
			
		||||
		double t = y;
 | 
			
		||||
		y = x;
 | 
			
		||||
		x = t;
 | 
			
		||||
	}
 | 
			
		||||
	/* sqrt(x*x+y*y) = sqrt(y*y*(x*x/(y*y)+1.0)) = y*sqrt(x*x/(y*y)+1.0) */
 | 
			
		||||
	if (y == 0.0) return 0.0;
 | 
			
		||||
	x /= y;
 | 
			
		||||
	return y*sqrt(x*x+1.0);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
struct complex {
 | 
			
		||||
	double r,i;
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
double
 | 
			
		||||
cabs(struct complex p_compl)
 | 
			
		||||
{
 | 
			
		||||
	return hypot(p_compl.r, p_compl.i);
 | 
			
		||||
}
 | 
			
		||||
		Loading…
	
	Add table
		
		Reference in a new issue