diff src/pr-output.cc @ 3248:68259f410026

[project @ 1999-07-13 03:34:54 by jwe]
author jwe
date Tue, 13 Jul 1999 03:40:17 +0000
parents bc3fdfe311a3
children 4964d5391acc
line wrap: on
line diff
--- a/src/pr-output.cc
+++ b/src/pr-output.cc
@@ -1154,15 +1154,23 @@
     }
 }
 
+static inline void
+do_plus_format (ostream& os, double d)
+{
+  if (d == 0.0)
+    os << " ";
+  else if (d < 0.0)
+    os << "-";
+  else
+    os << "+";
+}
+
 void
 octave_print_internal (ostream& os, double d, bool pr_as_read_syntax)
 {
   if (plus_format)
     {
-      if (d == 0.0)
-	os << " ";
-      else
-	os << "+";
+      do_plus_format (os, d);
     }
   else
     {
@@ -1192,10 +1200,7 @@
 	      if (j == 0)
 		os << "  ";
 
-	      if (m (i, j) == 0.0)
-		os << " ";
-	      else
-		os << "+";
+	      do_plus_format (os, m (i, j));
 	    }
 
 	  if (i < nr - 1)
@@ -1311,16 +1316,32 @@
     }
 }
 
+static inline void
+do_plus_format (ostream& os, const Complex& c)
+{
+  double rp = c.real ();
+  double ip = c.imag ();
+
+  if (rp == 0.0)
+    {
+      if (ip == 0.0)
+	os << " ";
+      else
+	os << "i";
+    }
+  else if (ip == 0.0)
+    do_plus_format (os, rp);
+  else
+    os << "c";
+}
+
 void
 octave_print_internal (ostream& os, const Complex& c,
 		       bool pr_as_read_syntax)
 {
   if (plus_format)
     {
-      if (c == 0.0)
-	os << " ";
-      else
-	os << "+";
+      do_plus_format (os, c);
     }
   else
     {
@@ -1350,10 +1371,7 @@
 	      if (j == 0)
 		os << "  ";
 
-	      if (cm (i, j) == 0.0)
-		os << " ";
-	      else
-		os << "+";
+	      do_plus_format (os, cm (i, j));
 	    }
 
 	  if (i < nr - 1)