Importing cprojl.c from NetBSD.
This commit is contained in:
		
				
					committed by
					
						 Corinna Vinschen
						Corinna Vinschen
					
				
			
			
				
	
			
			
			
						parent
						
							3f1f3a2299
						
					
				
				
					commit
					4c2556e935
				
			| @@ -11,7 +11,7 @@ src = cabs.c cacos.c cacosh.c carg.c casin.c casinh.c \ | |||||||
|       csin.c csinh.c csqrt.c ctan.c ctanh.c |       csin.c csinh.c csqrt.c ctan.c ctanh.c | ||||||
|  |  | ||||||
| lsrc = cabsl.c creall.c cimagl.c ccoshl.c cacoshl.c \ | lsrc = cabsl.c creall.c cimagl.c ccoshl.c cacoshl.c \ | ||||||
|        clogl.c csqrtl.c cargl.c |        clogl.c csqrtl.c cargl.c cprojl.c | ||||||
|  |  | ||||||
| fsrc =	cabsf.c casinf.c ccosf.c cimagf.c cprojf.c  \ | fsrc =	cabsf.c casinf.c ccosf.c cimagf.c cprojf.c  \ | ||||||
|         csqrtf.c cacosf.c casinhf.c ccoshf.c clogf.c clog10f.c \ |         csqrtf.c cacosf.c casinhf.c ccoshf.c clogf.c clog10f.c \ | ||||||
|   | |||||||
							
								
								
									
										64
									
								
								newlib/libm/complex/cprojl.c
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										64
									
								
								newlib/libm/complex/cprojl.c
									
									
									
									
									
										Executable file
									
								
							| @@ -0,0 +1,64 @@ | |||||||
|  | /*	$NetBSD: cprojl.c,v 1.7 2014/10/10 00:48:18 christos Exp $	*/ | ||||||
|  |  | ||||||
|  | /*- | ||||||
|  |  * Copyright (c) 2010 The NetBSD Foundation, Inc. | ||||||
|  |  * All rights reserved. | ||||||
|  |  * | ||||||
|  |  * Redistribution and use in source and binary forms, with or without | ||||||
|  |  * modification, are permitted provided that the following conditions | ||||||
|  |  * are met: | ||||||
|  |  * 1. Redistributions of source code must retain the above copyright | ||||||
|  |  *    notice, this list of conditions and the following disclaimer. | ||||||
|  |  * 2. Redistributions in binary form must reproduce the above copyright | ||||||
|  |  *    notice, this list of conditions and the following disclaimer in the | ||||||
|  |  *    documentation and/or other materials provided with the distribution. | ||||||
|  |  * | ||||||
|  |  * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS | ||||||
|  |  * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED | ||||||
|  |  * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR | ||||||
|  |  * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS | ||||||
|  |  * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR | ||||||
|  |  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF | ||||||
|  |  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS | ||||||
|  |  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN | ||||||
|  |  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) | ||||||
|  |  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE | ||||||
|  |  * POSSIBILITY OF SUCH DAMAGE. | ||||||
|  |  */ | ||||||
|  | #include <sys/cdefs.h> | ||||||
|  | __RCSID("$NetBSD: cprojl.c,v 1.7 2014/10/10 00:48:18 christos Exp $"); | ||||||
|  |  | ||||||
|  | #include <complex.h> | ||||||
|  | #include <math.h> | ||||||
|  |  | ||||||
|  | #include "../common/fdlibm.h" | ||||||
|  |  | ||||||
|  | /* | ||||||
|  |  * cprojl(long double complex z) | ||||||
|  |  * | ||||||
|  |  * These functions return the value of the projection (not stereographic!) | ||||||
|  |  * onto the Riemann sphere. | ||||||
|  |  * | ||||||
|  |  * z projects to z, except that all complex infinities (even those with one | ||||||
|  |  * infinite part and one NaN part) project to positive infinity on the real axis. | ||||||
|  |  * If z has an infinite part, then cproj(z) shall be equivalent to: | ||||||
|  |  * | ||||||
|  |  * INFINITY + I * copysign(0.0, cimag(z)) | ||||||
|  |  */ | ||||||
|  | long double complex | ||||||
|  | cprojl(long double complex z) | ||||||
|  | { | ||||||
|  | 	long_double_complex w = { .z = z }; | ||||||
|  |  | ||||||
|  | 	/*CONSTCOND*/ | ||||||
|  | 	if (isinf(creall(z)) || isinf(cimagl(z))) { | ||||||
|  | #ifdef __INFINITY | ||||||
|  | 		REAL_PART(w) = HUGE_VAL; | ||||||
|  | #else | ||||||
|  | 		REAL_PART(w) = INFINITY; | ||||||
|  | #endif | ||||||
|  | 		IMAG_PART(w) = copysignl(0.0L, cimagl(z)); | ||||||
|  | 	} | ||||||
|  |  | ||||||
|  | 	return (w.z); | ||||||
|  | } | ||||||
		Reference in New Issue
	
	Block a user