OSDN Git Service

* mingwex/complex/csqrt.c (csqrt): The sign of real part
authordannysmith <dannysmith>
Wed, 12 Oct 2005 06:46:17 +0000 (06:46 +0000)
committerdannysmith <dannysmith>
Wed, 12 Oct 2005 06:46:17 +0000 (06:46 +0000)
of result is positive when real part of arg == 0;
* mingwex/complex/csqrtf.c (csqrtf): Ditto.
* mingwex/complex/csqrtl.c (csqrtl): Ditto.

winsup/mingw/ChangeLog
winsup/mingw/mingwex/complex/csqrt.c
winsup/mingw/mingwex/complex/csqrtf.c
winsup/mingw/mingwex/complex/csqrtl.c

index 2cdd5c4..896c5b1 100644 (file)
@@ -1,5 +1,12 @@
 2005-10-12  Danny Smith  <dannysmith@users.sourceforge.net>
 
+       * mingwex/complex/csqrt.c (csqrt): The sign of real part
+       of result is positive when real part of arg == 0;
+       * mingwex/complex/csqrtf.c (csqrtf): Ditto.
+       * mingwex/complex/csqrtl.c (csqrtl): Ditto.
+
+2005-10-12  Danny Smith  <dannysmith@users.sourceforge.net>
+
        * include/time.h (_time64): Correct prototype.
 
 2005-10-08  Danny Smith  <dannysmith@users.sourceforge.net>
index 3717939..b5f8868 100644 (file)
@@ -31,22 +31,23 @@ double complex  csqrt (double complex Z)
   else if (x == 0.0)
     {
       t = sqrt(0.5 * fabs (y));
-      __real__ Res = y > 0 ? t : -t;
-      __imag__ Res = t;
+      __real__ Res = t;
+      __imag__ Res = y > 0 ? t : -t;
     }
 
   else
     {
       t = sqrt (2.0  * (_hypot (x, y) + fabs (x)));
+      double u = t / 2.0;
       if ( x > 0.0)
         {      
-          __real__ Res = 0.5 * t;
+          __real__ Res = u;
           __imag__ Res = y / t;
         }
       else
         {
          __real__ Res = fabs ( y / t);
-         __imag__ Res = (y < 0.0 ? -0.5 : 0.5) * t;
+         __imag__ Res = y < 0.0 ? -u : u;
         }
     }
 
index b39cbb4..7c37e99 100755 (executable)
@@ -25,8 +25,8 @@ float complex  csqrtf (float complex Z)
   else if (x == 0.0f)
     {
       r = sqrtf(0.5f * fabsf (y));
-      __real__ Res = y > 0 ? r : -r;
-      __imag__ Res = r;
+      __real__ Res = r;
+      __imag__ Res = y > 0 ? r : -r;
     }
 
   else
index f058b21..1b2ebbe 100755 (executable)
@@ -31,8 +31,8 @@ long double complex  csqrtl (long double complex Z)
   else if (x == 0.0L)
     {
       r = sqrtl(0.5L * fabsl (y));
-      __real__ Res = y > 0 ? r : -r;
-      __imag__ Res = r;
+      __real__ Res = r;
+      __imag__ Res = y > 0 ? r : -r;
     }
 
   else