changeset 101:6f35b150c579

[project @ 1993-09-13 03:07:36 by jwe] (complex_matrix_value): Make it work even if the internal representation is really a real or complex scalar or a real matrix. (complex_scalar_value): Make it work even if the internal representation is really a real scalar.
author jwe
date Mon, 13 Sep 1993 03:07:36 +0000
parents 197bd6c63baa
children c9a2dd0150af
files src/pt-const.cc
diffstat 1 files changed, 42 insertions(+), 4 deletions(-) [+]
line wrap: on
line diff
--- a/src/pt-const.cc	Mon Sep 13 03:06:15 1993 +0000
+++ b/src/pt-const.cc	Mon Sep 13 03:07:36 1993 +0000
@@ -1535,15 +1535,53 @@
 Complex
 tree_constant_rep::complex_value (void)
 {
-  assert (type_tag == complex_scalar_constant);
-  return *complex_scalar;
+  Complex retval;
+  switch (type_tag)
+    {
+    case complex_scalar_constant:
+      retval = *complex_scalar;
+      break;
+    case scalar_constant:
+      retval = Complex (scalar);
+      break;
+    default:
+      panic_impossible ();
+      break;
+    }
+  return retval;
 }
 
 ComplexMatrix
 tree_constant_rep::complex_matrix_value (void)
 {
-  assert (type_tag == complex_matrix_constant);
-  return *complex_matrix;
+  ComplexMatrix retval;
+  switch (arg.const_type ())
+    {
+    case scalar_constant:
+      {
+	retval.resize (1, 1);
+	double tmp =  arg.double_value ();
+        retval.elem (0, 0) = Complex (tmp);
+      }
+      break;
+    case complex_scalar_constant:
+      retval.resize (1, 1);
+      retval.elem (0, 0) = arg.complex_value ();
+      break;
+    case matrix_constant:
+      {
+        Matrix tmp = arg.matrix_value ();
+        retval = ComplexMatrix (tmp);
+      }
+      break;
+    case complex_matrix_constant:
+      retval = arg.complex_matrix_value ();
+      break;
+    default:
+      panic_impossible ();
+      break;
+    }
+  return retval;
 }
 
 char *