Module Name:    src
Committed By:   maya
Date:           Sat Dec 31 15:33:03 UTC 2016

Modified Files:
        src/lib/libm/complex: csqrt.c

Log Message:
Spare ourselves a fabs call. We already check the sign later.
w = r + y*I is the same as w = r because this is the y == 0 case.

no functional change.


To generate a diff of this commit:
cvs rdiff -u -r1.1 -r1.2 src/lib/libm/complex/csqrt.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/lib/libm/complex/csqrt.c
diff -u src/lib/libm/complex/csqrt.c:1.1 src/lib/libm/complex/csqrt.c:1.2
--- src/lib/libm/complex/csqrt.c:1.1	Mon Aug 20 16:01:37 2007
+++ src/lib/libm/complex/csqrt.c	Sat Dec 31 15:33:03 2016
@@ -1,4 +1,4 @@
-/* $NetBSD: csqrt.c,v 1.1 2007/08/20 16:01:37 drochner Exp $ */
+/* $NetBSD: csqrt.c,v 1.2 2016/12/31 15:33:03 maya Exp $ */
 
 /*-
  * Copyright (c) 2007 The NetBSD Foundation, Inc.
@@ -45,23 +45,24 @@ csqrt(double complex z)
 		if (x == 0.0) {
 			w = 0.0 + y * I;
 		} else {
-			r = fabs(x);
-			r = sqrt(r);
 			if (x < 0.0) {
+				r = sqrt(-x);
 				w = 0.0 + r * I;
 			} else {
-				w = r + y * I;
+				r = sqrt(x);
+				w = r;
 			}
 		}
 		return w;
 	}
 	if (x == 0.0) {
-		r = fabs(y);
-		r = sqrt(0.5 * r);
-		if (y > 0)
+		if (y > 0) {
+			r = sqrt(0.5 * y);
 			w = r + r * I;
-		else
+		} else {
+			r = sqrt(-0.5 * y);
 			w = r - r * I;
+		}
 		return w;
 	}
 	/* Rescale to avoid internal overflow or underflow.  */

Reply via email to