Fix the cproj family to not return garbage on finite arguments.
authorguenther <guenther@openbsd.org>
Mon, 19 Jul 2010 00:04:07 +0000 (00:04 +0000)
committerguenther <guenther@openbsd.org>
Mon, 19 Jul 2010 00:04:07 +0000 (00:04 +0000)
ok millert@

lib/libm/noieee_src/n_cproj.c
lib/libm/noieee_src/n_cprojf.c
lib/libm/src/s_cproj.c
lib/libm/src/s_cprojf.c

index 373cef8..b177b35 100644 (file)
@@ -1,4 +1,4 @@
-/*     $OpenBSD: n_cproj.c,v 1.1 2008/10/07 22:25:53 martynas Exp $    */
+/*     $OpenBSD: n_cproj.c,v 1.2 2010/07/19 00:04:07 guenther Exp $    */
 /*
  * Copyright (c) 2008 Martynas Venckus <martynas@openbsd.org>
  *
@@ -26,6 +26,8 @@ cproj(double complex z)
        if (isinf(__real__ z) || isinf(__imag__ z)) {
                __real__ res = INFINITY;
                __imag__ res = copysign(0.0, __imag__ z);
+       } else {
+               res = z;
        }
 
        return res;
index 978d36f..3b948e8 100644 (file)
@@ -1,4 +1,4 @@
-/*     $OpenBSD: n_cprojf.c,v 1.1 2008/10/07 22:25:53 martynas Exp $   */
+/*     $OpenBSD: n_cprojf.c,v 1.2 2010/07/19 00:04:07 guenther Exp $   */
 /*
  * Copyright (c) 2008 Martynas Venckus <martynas@openbsd.org>
  *
@@ -26,6 +26,8 @@ cprojf(float complex z)
        if (isinf(__real__ z) || isinf(__imag__ z)) {
                __real__ res = INFINITY;
                __imag__ res = copysign(0.0, __imag__ z);
+       } else {
+               res = z;
        }
 
        return res;
index 7064e92..e4fc50f 100644 (file)
@@ -1,4 +1,4 @@
-/*     $OpenBSD: s_cproj.c,v 1.1 2008/09/07 20:36:09 martynas Exp $    */
+/*     $OpenBSD: s_cproj.c,v 1.2 2010/07/19 00:04:07 guenther Exp $    */
 /*
  * Copyright (c) 2008 Martynas Venckus <martynas@openbsd.org>
  *
@@ -26,6 +26,8 @@ cproj(double complex z)
        if (isinf(__real__ z) || isinf(__imag__ z)) {
                __real__ res = INFINITY;
                __imag__ res = copysign(0.0, __imag__ z);
+       } else {
+               res = z;
        }
 
        return res;
index af754ed..74df084 100644 (file)
@@ -1,4 +1,4 @@
-/*     $OpenBSD: s_cprojf.c,v 1.1 2008/09/07 20:36:09 martynas Exp $   */
+/*     $OpenBSD: s_cprojf.c,v 1.2 2010/07/19 00:04:07 guenther Exp $   */
 /*
  * Copyright (c) 2008 Martynas Venckus <martynas@openbsd.org>
  *
@@ -26,6 +26,8 @@ cprojf(float complex z)
        if (isinf(__real__ z) || isinf(__imag__ z)) {
                __real__ res = INFINITY;
                __imag__ res = copysign(0.0, __imag__ z);
+       } else {
+               res = z;
        }
 
        return res;