# HG changeset patch # User jwe # Date 815412138 0 # Node ID da72f1fae389ec746defe19a93fa632c1c4ff203 # Parent 1c39163722ceac9b8c409db582a9b124441528e3 [project @ 1995-11-03 15:22:18 by jwe] diff -r 1c39163722ce -r da72f1fae389 src/pt-const.cc --- a/src/pt-const.cc Fri Nov 03 12:53:35 1995 +0000 +++ b/src/pt-const.cc Fri Nov 03 15:22:18 1995 +0000 @@ -503,8 +503,16 @@ TC_REP::tree_constant_rep (const Complex& c) { - complex_scalar = new Complex (c); - type_tag = complex_scalar_constant; + if (::imag (c) == 0.0) + { + scalar = ::real (c); + type_tag = scalar_constant; + } + else + { + complex_scalar = new Complex (c); + type_tag = complex_scalar_constant; + } orig_text = 0; } @@ -512,8 +520,18 @@ { if (m.rows () == 1 && m.columns () == 1) { - complex_scalar = new Complex (m.elem (0, 0)); - type_tag = complex_scalar_constant; + Complex c = m.elem (0, 0); + + if (::imag (c) == 0.0) + { + scalar = ::real (c); + type_tag = scalar_constant; + } + else + { + complex_scalar = new Complex (c); + type_tag = complex_scalar_constant; + } } else { @@ -527,8 +545,18 @@ { if (d.rows () == 1 && d.columns () == 1) { - complex_scalar = new Complex (d.elem (0, 0)); - type_tag = complex_scalar_constant; + Complex c = d.elem (0, 0); + + if (::imag (c) == 0.0) + { + scalar = ::real (c); + type_tag = scalar_constant; + } + else + { + complex_scalar = new Complex (c); + type_tag = complex_scalar_constant; + } } else { @@ -544,8 +572,18 @@ int len = v.capacity (); if (len == 1) { - complex_scalar = new Complex (v.elem (0)); - type_tag = complex_scalar_constant; + Complex c = v.elem (0); + + if (::imag (c) == 0.0) + { + scalar = ::real (c); + type_tag = scalar_constant; + } + else + { + complex_scalar = new Complex (c); + type_tag = complex_scalar_constant; + } } else { @@ -579,8 +617,18 @@ int len = v.capacity (); if (len == 1) { - complex_scalar = new Complex (v.elem (0)); - type_tag = complex_scalar_constant; + Complex c = v.elem (0); + + if (::imag (c) == 0.0) + { + scalar = ::real (c); + type_tag = scalar_constant; + } + else + { + complex_scalar = new Complex (c); + type_tag = complex_scalar_constant; + } } else { @@ -2837,11 +2885,6 @@ break; } } - -// This is a fairly expensive operation. - - if (originally_scalar_type) - maybe_mutate (); } return retval;