1*de3697aaSmartynas /* $OpenBSD: s_cprojl.c,v 1.1 2011/07/08 19:25:31 martynas Exp $ */
2*de3697aaSmartynas
3*de3697aaSmartynas /*
4*de3697aaSmartynas * Copyright (c) 2011 Martynas Venckus <martynas@openbsd.org>
5*de3697aaSmartynas *
6*de3697aaSmartynas * Permission to use, copy, modify, and distribute this software for any
7*de3697aaSmartynas * purpose with or without fee is hereby granted, provided that the above
8*de3697aaSmartynas * copyright notice and this permission notice appear in all copies.
9*de3697aaSmartynas *
10*de3697aaSmartynas * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
11*de3697aaSmartynas * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
12*de3697aaSmartynas * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
13*de3697aaSmartynas * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
14*de3697aaSmartynas * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
15*de3697aaSmartynas * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
16*de3697aaSmartynas * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
17*de3697aaSmartynas */
18*de3697aaSmartynas
19*de3697aaSmartynas #include <complex.h>
20*de3697aaSmartynas #include <math.h>
21*de3697aaSmartynas
22*de3697aaSmartynas long double complex
cprojl(long double complex z)23*de3697aaSmartynas cprojl(long double complex z)
24*de3697aaSmartynas {
25*de3697aaSmartynas long double complex res;
26*de3697aaSmartynas
27*de3697aaSmartynas if (isinf(__real__ z) || isinf(__imag__ z)) {
28*de3697aaSmartynas __real__ res = INFINITY;
29*de3697aaSmartynas __imag__ res = copysignl(0.0, __imag__ z);
30*de3697aaSmartynas } else {
31*de3697aaSmartynas res = z;
32*de3697aaSmartynas }
33*de3697aaSmartynas
34*de3697aaSmartynas return res;
35*de3697aaSmartynas }
36