# HG changeset patch # User jwe # Date 747889656 0 # Node ID 6f35b150c579f267ddb2b7e18f7930962a3c0310 # Parent 197bd6c63baa57075305cd06ba87049b8914b20f [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. diff -r 197bd6c63baa -r 6f35b150c579 src/pt-const.cc --- 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 *