# HG changeset patch # User jwe # Date 749721970 0 # Node ID 6beb84c3320ea8e7ad7d78ae8b23393f63c3bc2a # Parent 29a6bd3d88a2c65d3c6d5854c3bcfe409432a202 [project @ 1993-10-04 08:06:10 by jwe] (tree_constant_rep::eval ()): Avoid calling rows() and columns() for things like magic_colon. diff -r 29a6bd3d88a2 -r 6beb84c3320e src/pt-const.cc --- a/src/pt-const.cc Mon Oct 04 03:32:15 1993 +0000 +++ b/src/pt-const.cc Mon Oct 04 08:06:10 1993 +0000 @@ -1152,40 +1152,49 @@ break; } - int nr = rows (); - int nc = columns (); +// Avoid calling rows() and columns() for things like magic_colon. - if (nr == 1 && nc == 1) + int nr = 1; + int nc = 1; + if (type_tag == matrix_constant + || type_tag == complex_matrix_constant + || type_tag == range_constant) { - switch (type_tag) + nr = rows (); + nc = columns (); + } + + switch (type_tag) + { + case matrix_constant: + if (nr == 1 && nc == 1) { - case matrix_constant: - { - double d = matrix->elem (0, 0); - delete matrix; - scalar = d; - type_tag = scalar_constant; - } - break; - case complex_matrix_constant: - { - Complex c = complex_matrix->elem (0, 0); - delete complex_matrix; - complex_scalar = new Complex (c); - type_tag = complex_scalar_constant; - } - break; - case range_constant: - { - double d = range->base (); - delete range; - scalar = d; - type_tag = scalar_constant; - } - break; - default: - break; + double d = matrix->elem (0, 0); + delete matrix; + scalar = d; + type_tag = scalar_constant; } + break; + case complex_matrix_constant: + if (nr == 1 && nc == 1) + { + Complex c = complex_matrix->elem (0, 0); + delete complex_matrix; + complex_scalar = new Complex (c); + type_tag = complex_scalar_constant; + } + break; + case range_constant: + if (nr == 1 && nc == 1) + { + double d = range->base (); + delete range; + scalar = d; + type_tag = scalar_constant; + } + break; + default: + break; } if (print)