mirror of
git://sourceware.org/git/glibc.git
synced 2024-11-21 01:12:26 +08:00
[BZ #1466]
* sysdeps/generic/s_csqrt.c (__csqrt): For zero real part, return principal square root. * sysdeps/generic/s_csqrtf.c (__csqrtf): Likewise. * sysdeps/generic/s_csqrtl.c (__csqrtl): Likewise. * math/libm-test.inc (csqrt_test): Add test for returning principal value.
This commit is contained in:
parent
1676aaeffd
commit
72c7a71de4
@ -1,5 +1,13 @@
|
||||
2005-10-13 Ulrich Drepper <drepper@redhat.com>
|
||||
|
||||
[BZ #1466]
|
||||
* sysdeps/generic/s_csqrt.c (__csqrt): For zero real part, return
|
||||
principal square root.
|
||||
* sysdeps/generic/s_csqrtf.c (__csqrtf): Likewise.
|
||||
* sysdeps/generic/s_csqrtl.c (__csqrtl): Likewise.
|
||||
* math/libm-test.inc (csqrt_test): Add test for returning
|
||||
principal value.
|
||||
|
||||
* include/features.h: Define _POSIX_C_SOURCE to 200112 for
|
||||
_XOPEN_SOURCE == 600.
|
||||
|
||||
|
@ -1,4 +1,4 @@
|
||||
/* Copyright (C) 1997-2002, 2003, 2004 Free Software Foundation, Inc.
|
||||
/* Copyright (C) 1997-2002, 2003, 2004, 2005 Free Software Foundation, Inc.
|
||||
This file is part of the GNU C Library.
|
||||
Contributed by Andreas Jaeger <aj@suse.de>, 1997.
|
||||
|
||||
@ -153,6 +153,7 @@
|
||||
#define M_PI2_LOG10El M_PI_2l * M_LOG10El
|
||||
#define M_PI4_LOG10El M_PI_4l * M_LOG10El
|
||||
#define M_PI_LOG10El M_PIl * M_LOG10El
|
||||
#define M_SQRT_2_2 0.70710678118654752440084436210484903L /* sqrt (2) / 2 */
|
||||
|
||||
static FILE *ulps_file; /* File to document difference. */
|
||||
static int output_ulps; /* Should ulps printed? */
|
||||
@ -2212,6 +2213,9 @@ csqrt_test (void)
|
||||
TEST_c_c (csqrt, 0.75L, 1.25L, 1.05065169626078392338656675760808326L, 0.594868882070379067881984030639932657L);
|
||||
TEST_c_c (csqrt, -2, -3, 0.89597747612983812471573375529004348L, -1.6741492280355400404480393008490519L);
|
||||
TEST_c_c (csqrt, -2, 3, 0.89597747612983812471573375529004348L, 1.6741492280355400404480393008490519L);
|
||||
/* Principal square root should be returned (i.e., non-negative real
|
||||
part). */
|
||||
TEST_c_c (csqrt, 0, -1, M_SQRT_2_2, -M_SQRT_2_2);
|
||||
|
||||
END (csqrt, complex);
|
||||
}
|
||||
|
@ -1,5 +1,5 @@
|
||||
/* Complex square root of double value.
|
||||
Copyright (C) 1997, 1998 Free Software Foundation, Inc.
|
||||
Copyright (C) 1997, 1998, 2005 Free Software Foundation, Inc.
|
||||
This file is part of the GNU C Library.
|
||||
Based on an algorithm by Stephen L. Moshier <moshier@world.std.com>.
|
||||
Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997.
|
||||
@ -79,8 +79,8 @@ __csqrt (__complex__ double x)
|
||||
{
|
||||
double r = __ieee754_sqrt (0.5 * fabs (__imag__ x));
|
||||
|
||||
__real__ res = __copysign (r, __imag__ x);
|
||||
__imag__ res = r;
|
||||
__real__ res = r;
|
||||
__imag__ res = __copysign (r, __imag__ x);
|
||||
}
|
||||
else
|
||||
{
|
||||
|
@ -1,5 +1,5 @@
|
||||
/* Complex square root of float value.
|
||||
Copyright (C) 1997, 1998 Free Software Foundation, Inc.
|
||||
Copyright (C) 1997, 1998, 2005 Free Software Foundation, Inc.
|
||||
This file is part of the GNU C Library.
|
||||
Based on an algorithm by Stephen L. Moshier <moshier@world.std.com>.
|
||||
Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997.
|
||||
@ -79,8 +79,8 @@ __csqrtf (__complex__ float x)
|
||||
{
|
||||
float r = __ieee754_sqrtf (0.5 * fabsf (__imag__ x));
|
||||
|
||||
__real__ res = __copysignf (r, __imag__ x);
|
||||
__imag__ res = r;
|
||||
__real__ res = r;
|
||||
__imag__ res = __copysignf (r, __imag__ x);
|
||||
}
|
||||
else
|
||||
{
|
||||
|
@ -1,5 +1,5 @@
|
||||
/* Complex square root of long double value.
|
||||
Copyright (C) 1997, 1998 Free Software Foundation, Inc.
|
||||
Copyright (C) 1997, 1998, 2005 Free Software Foundation, Inc.
|
||||
This file is part of the GNU C Library.
|
||||
Based on an algorithm by Stephen L. Moshier <moshier@world.std.com>.
|
||||
Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997.
|
||||
@ -79,8 +79,8 @@ __csqrtl (__complex__ long double x)
|
||||
{
|
||||
long double r = __ieee754_sqrtl (0.5 * fabsl (__imag__ x));
|
||||
|
||||
__real__ res = __copysignl (r, __imag__ x);
|
||||
__imag__ res = r;
|
||||
__real__ res = r;
|
||||
__imag__ res = __copysignl (r, __imag__ x);
|
||||
}
|
||||
else
|
||||
{
|
||||
|
Loading…
Reference in New Issue
Block a user