changeset 5450:6b42c78c77d3

[project @ 2005-09-15 15:36:26 by jwe]
author jwe
date Thu, 15 Sep 2005 15:36:26 +0000
parents 7332a98b6de7
children ed08548b9054
files src/ChangeLog src/ov-complex.cc src/ov-cx-mat.cc
diffstat 3 files changed, 13 insertions(+), 2 deletions(-) [+]
line wrap: on
line diff
--- a/src/ChangeLog	Wed Sep 14 19:12:50 2005 +0000
+++ b/src/ChangeLog	Thu Sep 15 15:36:26 2005 +0000
@@ -1,3 +1,10 @@
+2005-09-14  John W. Eaton  <jwe@octave.org>
+
+	* ov-complex.cc (octave_complex::try_narrowing_conversion):
+	Don't drop -0i.
+	* ov-cx-mat.cc (octave_complex_matrix::try_narrowing_conversion):
+	Likewise.
+
 2005-09-14  Daniel  <durbano@shbano.com>
 
 	* DLD-FUNCTIONS/besselj.cc, DLD-FUNCTIONS/chol.cc,
--- a/src/ov-complex.cc	Wed Sep 14 19:12:50 2005 +0000
+++ b/src/ov-complex.cc	Thu Sep 15 15:36:26 2005 +0000
@@ -56,7 +56,9 @@
 {
   octave_value *retval = 0;
 
-  if (imag (scalar) == 0.0)
+  double im = std::imag (scalar);
+
+  if (im == 0.0 && ! lo_ieee_signbit (im))
     retval = new octave_scalar (real (scalar));
 
   return retval;
--- a/src/ov-cx-mat.cc	Wed Sep 14 19:12:50 2005 +0000
+++ b/src/ov-cx-mat.cc	Thu Sep 15 15:36:26 2005 +0000
@@ -74,7 +74,9 @@
 	{
 	  Complex c = matrix (0, 0);
 
-	  if (std::imag (c) == 0.0)
+	  double im = std::imag (c);
+
+	  if (im == 0.0 && ! lo_ieee_signbit (im))
 	    retval = new octave_scalar (std::real (c));
 	  else
 	    retval = new octave_complex (c);