changeset 21120:499b851fbfae

Replace pattern if/err_XXX/else/code with if/err_XXX/ code. * schur.cc, ov-complex.h, ov-cx-mat.cc, ov-cx-sparse.cc, ov-float.h, ov-flt-complex.h, ov-flt-cx-mat.cc, ov-flt-re-mat.cc, ov-range.cc, ov-re-mat.cc, ov-re-sparse.cc, ov-scalar.h, ov-str-mat.cc, ops.h, pt-idx.cc, Array.cc, CColVector.cc, CMatrix.cc, CRowVector.cc, MSparse.cc, PermMatrix.cc, Sparse.cc, dColVector.cc, dMatrix.cc, dRowVector.cc, dSparse.cc, fCColVector.cc, fCMatrix.cc, fCRowVector.cc, fColVector.cc, fMatrix.cc, fRowVector.cc: Replace pattern if/err_XXX/else/code with if/err_XXX/ code.
author Rik <rik@octave.org>
date Wed, 20 Jan 2016 16:58:59 -0800
parents 90cd0f9442d5
children f5b17eb2508b
files libinterp/corefcn/schur.cc libinterp/octave-value/ov-complex.h libinterp/octave-value/ov-cx-mat.cc libinterp/octave-value/ov-cx-sparse.cc libinterp/octave-value/ov-float.h libinterp/octave-value/ov-flt-complex.h libinterp/octave-value/ov-flt-cx-mat.cc libinterp/octave-value/ov-flt-re-mat.cc libinterp/octave-value/ov-range.cc libinterp/octave-value/ov-re-mat.cc libinterp/octave-value/ov-re-sparse.cc libinterp/octave-value/ov-scalar.h libinterp/octave-value/ov-str-mat.cc libinterp/operators/ops.h libinterp/parse-tree/pt-idx.cc liboctave/array/Array.cc liboctave/array/CColVector.cc liboctave/array/CMatrix.cc liboctave/array/CRowVector.cc liboctave/array/MSparse.cc liboctave/array/PermMatrix.cc liboctave/array/Sparse.cc liboctave/array/dColVector.cc liboctave/array/dMatrix.cc liboctave/array/dRowVector.cc liboctave/array/dSparse.cc liboctave/array/fCColVector.cc liboctave/array/fCMatrix.cc liboctave/array/fCRowVector.cc liboctave/array/fColVector.cc liboctave/array/fMatrix.cc liboctave/array/fRowVector.cc
diffstat 32 files changed, 574 insertions(+), 610 deletions(-) [+]
line wrap: on
line diff
--- a/libinterp/corefcn/schur.cc	Wed Jan 20 16:10:23 2016 -0800
+++ b/libinterp/corefcn/schur.cc	Wed Jan 20 16:58:59 2016 -0800
@@ -169,11 +169,12 @@
   if (nr != nc)
     err_square_matrix_required ("schur", "A");
 
+  if (! arg.is_numeric_type ())
+    err_wrong_type_arg ("schur", arg);
+
   octave_value_list retval;
 
-  if (! arg.is_numeric_type ())
-    err_wrong_type_arg ("schur", arg);
-  else if (arg.is_single_type ())
+  if (arg.is_single_type ())
     {
       if (! force_complex && arg.is_real_type ())
         {
@@ -291,37 +292,31 @@
   if (args.length () != 2 || nargout > 2)
     print_usage ();
 
-  octave_value_list retval;
-
   if (! args(0).is_numeric_type ())
     err_wrong_type_arg ("rsf2csf", args(0));
-  else if (! args(1).is_numeric_type ())
+  if (! args(1).is_numeric_type ())
     err_wrong_type_arg ("rsf2csf", args(1));
-  else if (args(0).is_complex_type () || args(1).is_complex_type ())
+  if (args(0).is_complex_type () || args(1).is_complex_type ())
     error ("rsf2csf: UR and TR must be real matrices");
+
+  if (args(0).is_single_type () || args(1).is_single_type ())
+    {
+      FloatMatrix u = args(0).float_matrix_value ();
+      FloatMatrix t = args(1).float_matrix_value ();
+
+      FloatComplexSCHUR cs (FloatSCHUR (t, u));
+
+      return ovl (cs.unitary_matrix (), cs.schur_matrix ());
+    }
   else
     {
-      if (args(0).is_single_type () || args(1).is_single_type ())
-        {
-          FloatMatrix u = args(0).float_matrix_value ();
-          FloatMatrix t = args(1).float_matrix_value ();
-
-          FloatComplexSCHUR cs (FloatSCHUR (t, u));
+      Matrix u = args(0).matrix_value ();
+      Matrix t = args(1).matrix_value ();
 
-          retval = ovl (cs.unitary_matrix (), cs.schur_matrix ());
-        }
-      else
-        {
-          Matrix u = args(0).matrix_value ();
-          Matrix t = args(1).matrix_value ();
+      ComplexSCHUR cs (SCHUR (t, u));
 
-          ComplexSCHUR cs (SCHUR (t, u));
-
-          retval = ovl (cs.unitary_matrix (), cs.schur_matrix ());
-        }
+      return ovl (cs.unitary_matrix (), cs.schur_matrix ());
     }
-
-  return retval;
 }
 
 /*
--- a/libinterp/octave-value/ov-complex.h	Wed Jan 20 16:10:23 2016 -0800
+++ b/libinterp/octave-value/ov-complex.h	Wed Jan 20 16:58:59 2016 -0800
@@ -140,7 +140,7 @@
   {
     if (xisnan (scalar))
       err_nan_to_logical_conversion ();
-    else if (warn && scalar != 0.0 && scalar != 1.0)
+    if (warn && scalar != 0.0 && scalar != 1.0)
       warn_logical_conversion ();
 
     return scalar != 0.0;
@@ -150,7 +150,7 @@
   {
     if (xisnan (scalar))
       err_nan_to_logical_conversion ();
-    else if (warn && scalar != 0.0 && scalar != 1.0)
+    if (warn && scalar != 0.0 && scalar != 1.0)
       warn_logical_conversion ();
 
     return boolNDArray (dim_vector (1, 1), scalar != 0.0);
--- a/libinterp/octave-value/ov-cx-mat.cc	Wed Jan 20 16:10:23 2016 -0800
+++ b/libinterp/octave-value/ov-cx-mat.cc	Wed Jan 20 16:58:59 2016 -0800
@@ -234,8 +234,8 @@
 {
   if (matrix.any_element_is_nan ())
     err_nan_to_logical_conversion ();
-  else if (warn && (! matrix.all_elements_are_real ()
-                    || real (matrix).any_element_not_one_or_zero ()))
+  if (warn && (! matrix.all_elements_are_real ()
+               || real (matrix).any_element_not_one_or_zero ()))
     warn_logical_conversion ();
 
   return mx_el_ne (matrix, Complex (0.0));
--- a/libinterp/octave-value/ov-cx-sparse.cc	Wed Jan 20 16:10:23 2016 -0800
+++ b/libinterp/octave-value/ov-cx-sparse.cc	Wed Jan 20 16:58:59 2016 -0800
@@ -214,8 +214,8 @@
 {
   if (matrix.any_element_is_nan ())
     err_nan_to_logical_conversion ();
-  else if (warn && (! matrix.all_elements_are_real ()
-                    || real (matrix).any_element_not_one_or_zero ()))
+  if (warn && (! matrix.all_elements_are_real ()
+               || real (matrix).any_element_not_one_or_zero ()))
     warn_logical_conversion ();
 
   return mx_el_ne (matrix, Complex (0.0));
--- a/libinterp/octave-value/ov-float.h	Wed Jan 20 16:10:23 2016 -0800
+++ b/libinterp/octave-value/ov-float.h	Wed Jan 20 16:58:59 2016 -0800
@@ -198,7 +198,7 @@
   {
     if (xisnan (scalar))
       err_nan_to_logical_conversion ();
-    else if (warn && scalar != 0 && scalar != 1)
+    if (warn && scalar != 0 && scalar != 1)
       warn_logical_conversion ();
 
     return scalar;
@@ -208,7 +208,7 @@
   {
     if (xisnan (scalar))
       err_nan_to_logical_conversion ();
-    else if (warn && scalar != 0 && scalar != 1)
+    if (warn && scalar != 0 && scalar != 1)
       warn_logical_conversion ();
 
     return boolNDArray (dim_vector (1, 1), scalar);
--- a/libinterp/octave-value/ov-flt-complex.h	Wed Jan 20 16:10:23 2016 -0800
+++ b/libinterp/octave-value/ov-flt-complex.h	Wed Jan 20 16:58:59 2016 -0800
@@ -136,7 +136,7 @@
   {
     if (xisnan (scalar))
       err_nan_to_logical_conversion ();
-    else if (warn && scalar != 0.0f && scalar != 1.0f)
+    if (warn && scalar != 0.0f && scalar != 1.0f)
       warn_logical_conversion ();
 
     return scalar != 0.0f;
@@ -146,7 +146,7 @@
   {
     if (xisnan (scalar))
       err_nan_to_logical_conversion ();
-    else if (warn && scalar != 0.0f && scalar != 1.0f)
+    if (warn && scalar != 0.0f && scalar != 1.0f)
       warn_logical_conversion ();
 
     return boolNDArray (dim_vector (1, 1), scalar != 1.0f);
--- a/libinterp/octave-value/ov-flt-cx-mat.cc	Wed Jan 20 16:10:23 2016 -0800
+++ b/libinterp/octave-value/ov-flt-cx-mat.cc	Wed Jan 20 16:58:59 2016 -0800
@@ -208,8 +208,8 @@
 {
   if (matrix.any_element_is_nan ())
     err_nan_to_logical_conversion ();
-  else if (warn && (! matrix.all_elements_are_real ()
-                    || real (matrix).any_element_not_one_or_zero ()))
+  if (warn && (! matrix.all_elements_are_real ()
+               || real (matrix).any_element_not_one_or_zero ()))
     warn_logical_conversion ();
 
   return mx_el_ne (matrix, FloatComplex (0.0));
--- a/libinterp/octave-value/ov-flt-re-mat.cc	Wed Jan 20 16:10:23 2016 -0800
+++ b/libinterp/octave-value/ov-flt-re-mat.cc	Wed Jan 20 16:58:59 2016 -0800
@@ -205,7 +205,7 @@
 {
   if (matrix.any_element_is_nan ())
     err_nan_to_logical_conversion ();
-  else if (warn && matrix.any_element_not_one_or_zero ())
+  if (warn && matrix.any_element_not_one_or_zero ())
     warn_logical_conversion ();
 
   return boolNDArray (matrix);
--- a/libinterp/octave-value/ov-range.cc	Wed Jan 20 16:10:23 2016 -0800
+++ b/libinterp/octave-value/ov-range.cc	Wed Jan 20 16:58:59 2016 -0800
@@ -328,7 +328,7 @@
 
   if (m.any_element_is_nan ())
     err_nan_to_logical_conversion ();
-  else if (warn && m.any_element_not_one_or_zero ())
+  if (warn && m.any_element_not_one_or_zero ())
     warn_logical_conversion ();
 
   return boolNDArray (m);
--- a/libinterp/octave-value/ov-re-mat.cc	Wed Jan 20 16:10:23 2016 -0800
+++ b/libinterp/octave-value/ov-re-mat.cc	Wed Jan 20 16:58:59 2016 -0800
@@ -214,7 +214,7 @@
 {
   if (matrix.any_element_is_nan ())
     err_nan_to_logical_conversion ();
-  else if (warn && matrix.any_element_not_one_or_zero ())
+  if (warn && matrix.any_element_not_one_or_zero ())
     warn_logical_conversion ();
 
   return boolNDArray (matrix);
--- a/libinterp/octave-value/ov-re-sparse.cc	Wed Jan 20 16:10:23 2016 -0800
+++ b/libinterp/octave-value/ov-re-sparse.cc	Wed Jan 20 16:58:59 2016 -0800
@@ -142,7 +142,7 @@
 
   if (m.any_element_is_nan ())
     err_nan_to_logical_conversion ();
-  else if (warn && m.any_element_not_one_or_zero ())
+  if (warn && m.any_element_not_one_or_zero ())
     warn_logical_conversion ();
 
   return boolNDArray (m);
@@ -185,7 +185,7 @@
 {
   if (matrix.any_element_is_nan ())
     err_nan_to_logical_conversion ();
-  else if (warn && matrix.any_element_not_one_or_zero ())
+  if (warn && matrix.any_element_not_one_or_zero ())
     warn_logical_conversion ();
 
   return mx_el_ne (matrix, 0.0);
--- a/libinterp/octave-value/ov-scalar.h	Wed Jan 20 16:10:23 2016 -0800
+++ b/libinterp/octave-value/ov-scalar.h	Wed Jan 20 16:58:59 2016 -0800
@@ -197,7 +197,7 @@
   {
     if (xisnan (scalar))
       err_nan_to_logical_conversion ();
-    else if (warn && scalar != 0 && scalar != 1)
+    if (warn && scalar != 0 && scalar != 1)
       warn_logical_conversion ();
 
     return scalar;
@@ -207,7 +207,7 @@
   {
     if (xisnan (scalar))
       err_nan_to_logical_conversion ();
-    else if (warn && scalar != 0 && scalar != 1)
+    if (warn && scalar != 0 && scalar != 1)
       warn_logical_conversion ();
 
     return boolNDArray (dim_vector (1, 1), scalar);
--- a/libinterp/octave-value/ov-str-mat.cc	Wed Jan 20 16:10:23 2016 -0800
+++ b/libinterp/octave-value/ov-str-mat.cc	Wed Jan 20 16:58:59 2016 -0800
@@ -165,14 +165,12 @@
  \
   if (! force_string_conv) \
     err_invalid_conversion ("string", TNAME); \
-  else \
-    { \
-      warning_with_id ("Octave:str-to-num", \
-                       "implicit conversion from %s to %s", \
-                       "string", TNAME); \
  \
-      retval = octave_char_matrix::FCN (); \
-    } \
+  warning_with_id ("Octave:str-to-num", \
+                   "implicit conversion from %s to %s", \
+                   "string", TNAME); \
+ \
+  retval = octave_char_matrix::FCN (); \
  \
   return retval
 
--- a/libinterp/operators/ops.h	Wed Jan 20 16:10:23 2016 -0800
+++ b/libinterp/operators/ops.h	Wed Jan 20 16:58:59 2016 -0800
@@ -302,9 +302,9 @@
     CAST_BINOP_ARGS (const CONCAT2(octave_, t1)&, const CONCAT2(octave_, t2)&); \
     if (xisnan (v1.CONCAT2(t1, _value) ()) || xisnan (v2.CONCAT2(t2, _value) ())) \
       err_nan_to_logical_conversion (); \
-    else \
-      return octave_value \
-        (v1.CONCAT2(t1, _value) () op v2.CONCAT2(t2, _value) ()); \
+ \
+    return octave_value \
+      (v1.CONCAT2(t1, _value) () op v2.CONCAT2(t2, _value) ()); \
   }
 
 #define DEFNDBINOP_OP(name, t1, t2, e1, e2, op) \
--- a/libinterp/parse-tree/pt-idx.cc	Wed Jan 20 16:10:23 2016 -0800
+++ b/libinterp/parse-tree/pt-idx.cc	Wed Jan 20 16:58:59 2016 -0800
@@ -491,7 +491,8 @@
     {
       if (retval.numel () != 1)
         err_indexed_cs_list ();
-      else if (tmpi < i)
+
+      if (tmpi < i)
         {
           try
             {
--- a/liboctave/array/Array.cc	Wed Jan 20 16:10:23 2016 -0800
+++ b/liboctave/array/Array.cc	Wed Jan 20 16:58:59 2016 -0800
@@ -933,52 +933,50 @@
 
   if (invalid)
     err_invalid_resize ();
-  else
+
+  octave_idx_type nx = numel ();
+  if (n == nx - 1 && n > 0)
     {
-      octave_idx_type nx = numel ();
-      if (n == nx - 1 && n > 0)
+      // Stack "pop" operation.
+      if (rep->count == 1)
+        slice_data[slice_len-1] = T ();
+      slice_len--;
+      dimensions = dv;
+    }
+  else if (n == nx + 1 && nx > 0)
+    {
+      // Stack "push" operation.
+      if (rep->count == 1
+          && slice_data + slice_len < rep->data + rep->len)
         {
-          // Stack "pop" operation.
-          if (rep->count == 1)
-            slice_data[slice_len-1] = T ();
-          slice_len--;
+          slice_data[slice_len++] = rfv;
           dimensions = dv;
         }
-      else if (n == nx + 1 && nx > 0)
+      else
         {
-          // Stack "push" operation.
-          if (rep->count == 1
-              && slice_data + slice_len < rep->data + rep->len)
-            {
-              slice_data[slice_len++] = rfv;
-              dimensions = dv;
-            }
-          else
-            {
-              static const octave_idx_type max_stack_chunk = 1024;
-              octave_idx_type nn = n + std::min (nx, max_stack_chunk);
-              Array<T> tmp (Array<T> (dim_vector (nn, 1)), dv, 0, n);
-              T *dest = tmp.fortran_vec ();
-
-              std::copy (data (), data () + nx, dest);
-              dest[nx] = rfv;
-
-              *this = tmp;
-            }
-        }
-      else if (n != nx)
-        {
-          Array<T> tmp = Array<T> (dv);
+          static const octave_idx_type max_stack_chunk = 1024;
+          octave_idx_type nn = n + std::min (nx, max_stack_chunk);
+          Array<T> tmp (Array<T> (dim_vector (nn, 1)), dv, 0, n);
           T *dest = tmp.fortran_vec ();
 
-          octave_idx_type n0 = std::min (n, nx);
-          octave_idx_type n1 = n - n0;
-          std::copy (data (), data () + n0, dest);
-          std::fill_n (dest + n0, n1, rfv);
+          std::copy (data (), data () + nx, dest);
+          dest[nx] = rfv;
 
           *this = tmp;
         }
     }
+  else if (n != nx)
+    {
+      Array<T> tmp = Array<T> (dv);
+      T *dest = tmp.fortran_vec ();
+
+      octave_idx_type n0 = std::min (n, nx);
+      octave_idx_type n1 = n - n0;
+      std::copy (data (), data () + n0, dest);
+      std::fill_n (dest + n0, n1, rfv);
+
+      *this = tmp;
+    }
 }
 
 template <class T>
--- a/liboctave/array/CColVector.cc	Wed Jan 20 16:10:23 2016 -0800
+++ b/liboctave/array/CColVector.cc	Wed Jan 20 16:58:59 2016 -0800
@@ -341,26 +341,24 @@
 
   if (nc != a_len)
     err_nonconformant ("operator *", nr, nc, a_len, 1);
-  else
+
+  retval.clear (nr);
+
+  if (nr != 0)
     {
-      retval.clear (nr);
-
-      if (nr != 0)
+      if (nc == 0)
+        retval.fill (0.0);
+      else
         {
-          if (nc == 0)
-            retval.fill (0.0);
-          else
-            {
-              Complex *y = retval.fortran_vec ();
+          Complex *y = retval.fortran_vec ();
 
-              F77_XFCN (zgemv, ZGEMV, (F77_CONST_CHAR_ARG2 ("N", 1),
-                                       nr, nc, 1.0, m.data (), nr,
-                                       a.data (), 1, 0.0, y, 1
-                                       F77_CHAR_ARG_LEN (1)));
-            }
+          F77_XFCN (zgemv, ZGEMV, (F77_CONST_CHAR_ARG2 ("N", 1),
+                                   nr, nc, 1.0, m.data (), nr,
+                                   a.data (), 1, 0.0, y, 1
+                                   F77_CHAR_ARG_LEN (1)));
         }
+    }
 
-    }
 
   return retval;
 }
--- a/liboctave/array/CMatrix.cc	Wed Jan 20 16:10:23 2016 -0800
+++ b/liboctave/array/CMatrix.cc	Wed Jan 20 16:58:59 2016 -0800
@@ -3717,102 +3717,100 @@
 
   if (a_nc != b_nr)
     err_nonconformant ("operator *", a_nr, a_nc, b_nr, b_nc);
-  else
+
+  if (a_nr == 0 || a_nc == 0 || b_nc == 0)
+    retval = ComplexMatrix (a_nr, b_nc, 0.0);
+  else if (a.data () == b.data () && a_nr == b_nc && tra != trb)
     {
-      if (a_nr == 0 || a_nc == 0 || b_nc == 0)
-        retval = ComplexMatrix (a_nr, b_nc, 0.0);
-      else if (a.data () == b.data () && a_nr == b_nc && tra != trb)
+      octave_idx_type lda = a.rows ();
+
+      // FIXME: looking at the reference BLAS, it appears that it
+      // should not be necessary to initialize the output matrix if
+      // BETA is 0 in the call to ZHERK, but ATLAS appears to
+      // use the result matrix before zeroing the elements.
+
+      retval = ComplexMatrix (a_nr, b_nc, 0.0);
+      Complex *c = retval.fortran_vec ();
+
+      const char ctra = get_blas_trans_arg (tra, cja);
+      if (cja || cjb)
         {
-          octave_idx_type lda = a.rows ();
-
-          // FIXME: looking at the reference BLAS, it appears that it
-          // should not be necessary to initialize the output matrix if
-          // BETA is 0 in the call to ZHERK, but ATLAS appears to
-          // use the result matrix before zeroing the elements.
-
-          retval = ComplexMatrix (a_nr, b_nc, 0.0);
-          Complex *c = retval.fortran_vec ();
-
-          const char ctra = get_blas_trans_arg (tra, cja);
-          if (cja || cjb)
-            {
-              F77_XFCN (zherk, ZHERK, (F77_CONST_CHAR_ARG2 ("U", 1),
-                                       F77_CONST_CHAR_ARG2 (&ctra, 1),
-                                       a_nr, a_nc, 1.0,
-                                       a.data (), lda, 0.0, c, a_nr
-                                       F77_CHAR_ARG_LEN (1)
-                                       F77_CHAR_ARG_LEN (1)));
-              for (octave_idx_type j = 0; j < a_nr; j++)
-                for (octave_idx_type i = 0; i < j; i++)
-                  retval.xelem (j,i) = std::conj (retval.xelem (i,j));
-            }
-          else
-            {
-              F77_XFCN (zsyrk, ZSYRK, (F77_CONST_CHAR_ARG2 ("U", 1),
-                                       F77_CONST_CHAR_ARG2 (&ctra, 1),
-                                       a_nr, a_nc, 1.0,
-                                       a.data (), lda, 0.0, c, a_nr
-                                       F77_CHAR_ARG_LEN (1)
-                                       F77_CHAR_ARG_LEN (1)));
-              for (octave_idx_type j = 0; j < a_nr; j++)
-                for (octave_idx_type i = 0; i < j; i++)
-                  retval.xelem (j,i) = retval.xelem (i,j);
-
-            }
-
+          F77_XFCN (zherk, ZHERK, (F77_CONST_CHAR_ARG2 ("U", 1),
+                                   F77_CONST_CHAR_ARG2 (&ctra, 1),
+                                   a_nr, a_nc, 1.0,
+                                   a.data (), lda, 0.0, c, a_nr
+                                   F77_CHAR_ARG_LEN (1)
+                                   F77_CHAR_ARG_LEN (1)));
+          for (octave_idx_type j = 0; j < a_nr; j++)
+            for (octave_idx_type i = 0; i < j; i++)
+              retval.xelem (j,i) = std::conj (retval.xelem (i,j));
         }
       else
         {
-          octave_idx_type lda = a.rows ();
-          octave_idx_type tda = a.cols ();
-          octave_idx_type ldb = b.rows ();
-          octave_idx_type tdb = b.cols ();
-
-          retval = ComplexMatrix (a_nr, b_nc, 0.0);
-          Complex *c = retval.fortran_vec ();
-
-          if (b_nc == 1 && a_nr == 1)
-            {
-              if (cja == cjb)
-                {
-                  F77_FUNC (xzdotu, XZDOTU) (a_nc, a.data (), 1, b.data (), 1,
-                                             *c);
-                  if (cja) *c = std::conj (*c);
-                }
-              else if (cja)
-                F77_FUNC (xzdotc, XZDOTC) (a_nc, a.data (), 1, b.data (), 1,
-                                           *c);
-              else
-                F77_FUNC (xzdotc, XZDOTC) (a_nc, b.data (), 1, a.data (), 1,
-                                           *c);
-            }
-          else if (b_nc == 1 && ! cjb)
+          F77_XFCN (zsyrk, ZSYRK, (F77_CONST_CHAR_ARG2 ("U", 1),
+                                   F77_CONST_CHAR_ARG2 (&ctra, 1),
+                                   a_nr, a_nc, 1.0,
+                                   a.data (), lda, 0.0, c, a_nr
+                                   F77_CHAR_ARG_LEN (1)
+                                   F77_CHAR_ARG_LEN (1)));
+          for (octave_idx_type j = 0; j < a_nr; j++)
+            for (octave_idx_type i = 0; i < j; i++)
+              retval.xelem (j,i) = retval.xelem (i,j);
+
+        }
+
+    }
+  else
+    {
+      octave_idx_type lda = a.rows ();
+      octave_idx_type tda = a.cols ();
+      octave_idx_type ldb = b.rows ();
+      octave_idx_type tdb = b.cols ();
+
+      retval = ComplexMatrix (a_nr, b_nc, 0.0);
+      Complex *c = retval.fortran_vec ();
+
+      if (b_nc == 1 && a_nr == 1)
+        {
+          if (cja == cjb)
             {
-              const char ctra = get_blas_trans_arg (tra, cja);
-              F77_XFCN (zgemv, ZGEMV, (F77_CONST_CHAR_ARG2 (&ctra, 1),
-                                       lda, tda, 1.0,  a.data (), lda,
-                                       b.data (), 1, 0.0, c, 1
-                                       F77_CHAR_ARG_LEN (1)));
+              F77_FUNC (xzdotu, XZDOTU) (a_nc, a.data (), 1, b.data (), 1,
+                                         *c);
+              if (cja) *c = std::conj (*c);
             }
-          else if (a_nr == 1 && ! cja && ! cjb)
-            {
-              const char crevtrb = get_blas_trans_arg (! trb, cjb);
-              F77_XFCN (zgemv, ZGEMV, (F77_CONST_CHAR_ARG2 (&crevtrb, 1),
-                                       ldb, tdb, 1.0,  b.data (), ldb,
-                                       a.data (), 1, 0.0, c, 1
-                                       F77_CHAR_ARG_LEN (1)));
-            }
+          else if (cja)
+            F77_FUNC (xzdotc, XZDOTC) (a_nc, a.data (), 1, b.data (), 1,
+                                       *c);
           else
-            {
-              const char ctra = get_blas_trans_arg (tra, cja);
-              const char ctrb = get_blas_trans_arg (trb, cjb);
-              F77_XFCN (zgemm, ZGEMM, (F77_CONST_CHAR_ARG2 (&ctra, 1),
-                                       F77_CONST_CHAR_ARG2 (&ctrb, 1),
-                                       a_nr, b_nc, a_nc, 1.0, a.data (),
-                                       lda, b.data (), ldb, 0.0, c, a_nr
-                                       F77_CHAR_ARG_LEN (1)
-                                       F77_CHAR_ARG_LEN (1)));
-            }
+            F77_FUNC (xzdotc, XZDOTC) (a_nc, b.data (), 1, a.data (), 1,
+                                       *c);
+        }
+      else if (b_nc == 1 && ! cjb)
+        {
+          const char ctra = get_blas_trans_arg (tra, cja);
+          F77_XFCN (zgemv, ZGEMV, (F77_CONST_CHAR_ARG2 (&ctra, 1),
+                                   lda, tda, 1.0,  a.data (), lda,
+                                   b.data (), 1, 0.0, c, 1
+                                   F77_CHAR_ARG_LEN (1)));
+        }
+      else if (a_nr == 1 && ! cja && ! cjb)
+        {
+          const char crevtrb = get_blas_trans_arg (! trb, cjb);
+          F77_XFCN (zgemv, ZGEMV, (F77_CONST_CHAR_ARG2 (&crevtrb, 1),
+                                   ldb, tdb, 1.0,  b.data (), ldb,
+                                   a.data (), 1, 0.0, c, 1
+                                   F77_CHAR_ARG_LEN (1)));
+        }
+      else
+        {
+          const char ctra = get_blas_trans_arg (tra, cja);
+          const char ctrb = get_blas_trans_arg (trb, cjb);
+          F77_XFCN (zgemm, ZGEMM, (F77_CONST_CHAR_ARG2 (&ctra, 1),
+                                   F77_CONST_CHAR_ARG2 (&ctrb, 1),
+                                   a_nr, b_nc, a_nc, 1.0, a.data (),
+                                   lda, b.data (), ldb, 0.0, c, a_nr
+                                   F77_CHAR_ARG_LEN (1)
+                                   F77_CHAR_ARG_LEN (1)));
         }
     }
 
--- a/liboctave/array/CRowVector.cc	Wed Jan 20 16:10:23 2016 -0800
+++ b/liboctave/array/CRowVector.cc	Wed Jan 20 16:58:59 2016 -0800
@@ -326,24 +326,22 @@
 
   if (a_nr != len)
     err_nonconformant ("operator *", 1, len, a_nr, a_nc);
+
+  if (len == 0)
+    retval.resize (a_nc, 0.0);
   else
     {
-      if (len == 0)
-        retval.resize (a_nc, 0.0);
-      else
-        {
-          // Transpose A to form A'*x == (x'*A)'
+      // Transpose A to form A'*x == (x'*A)'
 
-          octave_idx_type ld = a_nr;
+      octave_idx_type ld = a_nr;
 
-          retval.resize (a_nc);
-          Complex *y = retval.fortran_vec ();
+      retval.resize (a_nc);
+      Complex *y = retval.fortran_vec ();
 
-          F77_XFCN (zgemv, ZGEMV, (F77_CONST_CHAR_ARG2 ("T", 1),
-                                   a_nr, a_nc, 1.0, a.data (),
-                                   ld, v.data (), 1, 0.0, y, 1
-                                   F77_CHAR_ARG_LEN (1)));
-        }
+      F77_XFCN (zgemv, ZGEMV, (F77_CONST_CHAR_ARG2 ("T", 1),
+                               a_nr, a_nc, 1.0, a.data (),
+                               ld, v.data (), 1, 0.0, y, 1
+                               F77_CHAR_ARG_LEN (1)));
     }
 
   return retval;
@@ -451,7 +449,7 @@
 
   if (len != a_len)
     err_nonconformant ("operator *", len, a_len);
-  else if (len != 0)
+  if (len != 0)
     F77_FUNC (xzdotu, XZDOTU) (len, v.data (), 1, a.data (), 1, retval);
 
   return retval;
--- a/liboctave/array/MSparse.cc	Wed Jan 20 16:10:23 2016 -0800
+++ b/liboctave/array/MSparse.cc	Wed Jan 20 16:58:59 2016 -0800
@@ -39,60 +39,58 @@
 
   if (a_nr != b_nr || a_nc != b_nc)
     err_nonconformant (op_name , a_nr, a_nc, b_nr, b_nc);
-  else
-    {
-      r = MSparse<T> (a_nr, a_nc, (a.nnz () + b.nnz ()));
+
+  r = MSparse<T> (a_nr, a_nc, (a.nnz () + b.nnz ()));
 
-      octave_idx_type jx = 0;
-      for (octave_idx_type i = 0 ; i < a_nc ; i++)
-        {
-          octave_idx_type  ja = a.cidx (i);
-          octave_idx_type  ja_max = a.cidx (i+1);
-          bool ja_lt_max= ja < ja_max;
+  octave_idx_type jx = 0;
+  for (octave_idx_type i = 0 ; i < a_nc ; i++)
+    {
+      octave_idx_type  ja = a.cidx (i);
+      octave_idx_type  ja_max = a.cidx (i+1);
+      bool ja_lt_max= ja < ja_max;
+
+      octave_idx_type  jb = b.cidx (i);
+      octave_idx_type  jb_max = b.cidx (i+1);
+      bool jb_lt_max = jb < jb_max;
 
-          octave_idx_type  jb = b.cidx (i);
-          octave_idx_type  jb_max = b.cidx (i+1);
-          bool jb_lt_max = jb < jb_max;
-
-          while (ja_lt_max || jb_lt_max)
+      while (ja_lt_max || jb_lt_max)
+        {
+          octave_quit ();
+          if ((! jb_lt_max) || (ja_lt_max && (a.ridx (ja) < b.ridx (jb))))
+            {
+              r.ridx (jx) = a.ridx (ja);
+              r.data (jx) = op (a.data (ja), 0.);
+              jx++;
+              ja++;
+              ja_lt_max= ja < ja_max;
+            }
+          else if ((! ja_lt_max)
+                   || (jb_lt_max && (b.ridx (jb) < a.ridx (ja))))
             {
-              octave_quit ();
-              if ((! jb_lt_max) || (ja_lt_max && (a.ridx (ja) < b.ridx (jb))))
+              r.ridx (jx) = b.ridx (jb);
+              r.data (jx) = op (0., b.data (jb));
+              jx++;
+              jb++;
+              jb_lt_max= jb < jb_max;
+            }
+          else
+            {
+              if (op (a.data (ja), b.data (jb)) != 0.)
                 {
+                  r.data (jx) = op (a.data (ja), b.data (jb));
                   r.ridx (jx) = a.ridx (ja);
-                  r.data (jx) = op (a.data (ja), 0.);
                   jx++;
-                  ja++;
-                  ja_lt_max= ja < ja_max;
                 }
-              else if ((! ja_lt_max)
-                       || (jb_lt_max && (b.ridx (jb) < a.ridx (ja))))
-                {
-                  r.ridx (jx) = b.ridx (jb);
-                  r.data (jx) = op (0., b.data (jb));
-                  jx++;
-                  jb++;
-                  jb_lt_max= jb < jb_max;
-                }
-              else
-                {
-                  if (op (a.data (ja), b.data (jb)) != 0.)
-                    {
-                      r.data (jx) = op (a.data (ja), b.data (jb));
-                      r.ridx (jx) = a.ridx (ja);
-                      jx++;
-                    }
-                  ja++;
-                  ja_lt_max= ja < ja_max;
-                  jb++;
-                  jb_lt_max= jb < jb_max;
-                }
+              ja++;
+              ja_lt_max= ja < ja_max;
+              jb++;
+              jb_lt_max= jb < jb_max;
             }
-          r.cidx (i+1) = jx;
         }
+      r.cidx (i+1) = jx;
+    }
 
-      a = r.maybe_compress ();
-    }
+  a = r.maybe_compress ();
 
   return a;
 }
--- a/liboctave/array/PermMatrix.cc	Wed Jan 20 16:10:23 2016 -0800
+++ b/liboctave/array/PermMatrix.cc	Wed Jan 20 16:58:59 2016 -0800
@@ -236,8 +236,8 @@
 
   if (n != b.rows ())
     err_nonconformant ("operator *", n, n, b.rows (), b.rows ());
-  else
-    r = PermMatrix (ia.index (idx_vector (ib)), true, false);
+
+  r = PermMatrix (ia.index (idx_vector (ib)), true, false);
 
   return r;
 }
--- a/liboctave/array/Sparse.cc	Wed Jan 20 16:10:23 2016 -0800
+++ b/liboctave/array/Sparse.cc	Wed Jan 20 16:58:59 2016 -0800
@@ -1165,7 +1165,8 @@
 
   if (idx.extent (nel) > nel)
     err_del_index_out_of_range (true, idx.extent (nel), nel);
-  else if (nc == 1)
+
+  if (nc == 1)
     {
       // Sparse column vector.
       const Sparse<T> tmp = *this; // constant copy to prevent COW.
--- a/liboctave/array/dColVector.cc	Wed Jan 20 16:10:23 2016 -0800
+++ b/liboctave/array/dColVector.cc	Wed Jan 20 16:58:59 2016 -0800
@@ -206,23 +206,21 @@
 
   if (nc != a_len)
     err_nonconformant ("operator *", nr, nc, a_len, 1);
-  else
+
+  retval.clear (nr);
+
+  if (nr != 0)
     {
-      retval.clear (nr);
-
-      if (nr != 0)
+      if (nc == 0)
+        retval.fill (0.0);
+      else
         {
-          if (nc == 0)
-            retval.fill (0.0);
-          else
-            {
-              double *y = retval.fortran_vec ();
+          double *y = retval.fortran_vec ();
 
-              F77_XFCN (dgemv, DGEMV, (F77_CONST_CHAR_ARG2 ("N", 1),
-                                       nr, nc, 1.0, m.data (), nr,
-                                       a.data (), 1, 0.0, y, 1
-                                       F77_CHAR_ARG_LEN (1)));
-            }
+          F77_XFCN (dgemv, DGEMV, (F77_CONST_CHAR_ARG2 ("N", 1),
+                                   nr, nc, 1.0, m.data (), nr,
+                                   a.data (), 1, 0.0, y, 1
+                                   F77_CHAR_ARG_LEN (1)));
         }
     }
 
@@ -243,20 +241,18 @@
 
   if (nc != a_len)
     err_nonconformant ("operator *", nr, nc, a_len, 1);
+
+  if (nr == 0 || nc == 0)
+    retval.resize (nr, 0.0);
   else
     {
-      if (nr == 0 || nc == 0)
-        retval.resize (nr, 0.0);
-      else
-        {
-          retval.resize (nr);
+      retval.resize (nr);
 
-          for (octave_idx_type i = 0; i < a_len; i++)
-            retval.elem (i) = a.elem (i) * m.elem (i, i);
+      for (octave_idx_type i = 0; i < a_len; i++)
+        retval.elem (i) = a.elem (i) * m.elem (i, i);
 
-          for (octave_idx_type i = a_len; i < nr; i++)
-            retval.elem (i) = 0.0;
-        }
+      for (octave_idx_type i = a_len; i < nr; i++)
+        retval.elem (i) = 0.0;
     }
 
   return retval;
--- a/liboctave/array/dMatrix.cc	Wed Jan 20 16:10:23 2016 -0800
+++ b/liboctave/array/dMatrix.cc	Wed Jan 20 16:58:59 2016 -0800
@@ -3108,71 +3108,69 @@
 
   if (a_nc != b_nr)
     err_nonconformant ("operator *", a_nr, a_nc, b_nr, b_nc);
+
+  if (a_nr == 0 || a_nc == 0 || b_nc == 0)
+    retval = Matrix (a_nr, b_nc, 0.0);
+  else if (a.data () == b.data () && a_nr == b_nc && tra != trb)
+    {
+      octave_idx_type lda = a.rows ();
+
+      retval = Matrix (a_nr, b_nc);
+      double *c = retval.fortran_vec ();
+
+      const char ctra = get_blas_trans_arg (tra);
+      F77_XFCN (dsyrk, DSYRK, (F77_CONST_CHAR_ARG2 ("U", 1),
+                               F77_CONST_CHAR_ARG2 (&ctra, 1),
+                               a_nr, a_nc, 1.0,
+                               a.data (), lda, 0.0, c, a_nr
+                               F77_CHAR_ARG_LEN (1)
+                               F77_CHAR_ARG_LEN (1)));
+      for (int j = 0; j < a_nr; j++)
+        for (int i = 0; i < j; i++)
+          retval.xelem (j,i) = retval.xelem (i,j);
+
+    }
   else
     {
-      if (a_nr == 0 || a_nc == 0 || b_nc == 0)
-        retval = Matrix (a_nr, b_nc, 0.0);
-      else if (a.data () == b.data () && a_nr == b_nc && tra != trb)
+      octave_idx_type lda = a.rows ();
+      octave_idx_type tda = a.cols ();
+      octave_idx_type ldb = b.rows ();
+      octave_idx_type tdb = b.cols ();
+
+      retval = Matrix (a_nr, b_nc);
+      double *c = retval.fortran_vec ();
+
+      if (b_nc == 1)
         {
-          octave_idx_type lda = a.rows ();
-
-          retval = Matrix (a_nr, b_nc);
-          double *c = retval.fortran_vec ();
-
-          const char ctra = get_blas_trans_arg (tra);
-          F77_XFCN (dsyrk, DSYRK, (F77_CONST_CHAR_ARG2 ("U", 1),
-                                   F77_CONST_CHAR_ARG2 (&ctra, 1),
-                                   a_nr, a_nc, 1.0,
-                                   a.data (), lda, 0.0, c, a_nr
-                                   F77_CHAR_ARG_LEN (1)
+          if (a_nr == 1)
+            F77_FUNC (xddot, XDDOT) (a_nc, a.data (), 1, b.data (), 1, *c);
+          else
+            {
+              const char ctra = get_blas_trans_arg (tra);
+              F77_XFCN (dgemv, DGEMV, (F77_CONST_CHAR_ARG2 (&ctra, 1),
+                                       lda, tda, 1.0,  a.data (), lda,
+                                       b.data (), 1, 0.0, c, 1
+                                       F77_CHAR_ARG_LEN (1)));
+            }
+        }
+      else if (a_nr == 1)
+        {
+          const char crevtrb = get_blas_trans_arg (! trb);
+          F77_XFCN (dgemv, DGEMV, (F77_CONST_CHAR_ARG2 (&crevtrb, 1),
+                                   ldb, tdb, 1.0,  b.data (), ldb,
+                                   a.data (), 1, 0.0, c, 1
                                    F77_CHAR_ARG_LEN (1)));
-          for (int j = 0; j < a_nr; j++)
-            for (int i = 0; i < j; i++)
-              retval.xelem (j,i) = retval.xelem (i,j);
-
         }
       else
         {
-          octave_idx_type lda = a.rows ();
-          octave_idx_type tda = a.cols ();
-          octave_idx_type ldb = b.rows ();
-          octave_idx_type tdb = b.cols ();
-
-          retval = Matrix (a_nr, b_nc);
-          double *c = retval.fortran_vec ();
-
-          if (b_nc == 1)
-            {
-              if (a_nr == 1)
-                F77_FUNC (xddot, XDDOT) (a_nc, a.data (), 1, b.data (), 1, *c);
-              else
-                {
-                  const char ctra = get_blas_trans_arg (tra);
-                  F77_XFCN (dgemv, DGEMV, (F77_CONST_CHAR_ARG2 (&ctra, 1),
-                                           lda, tda, 1.0,  a.data (), lda,
-                                           b.data (), 1, 0.0, c, 1
-                                           F77_CHAR_ARG_LEN (1)));
-                }
-            }
-          else if (a_nr == 1)
-            {
-              const char crevtrb = get_blas_trans_arg (! trb);
-              F77_XFCN (dgemv, DGEMV, (F77_CONST_CHAR_ARG2 (&crevtrb, 1),
-                                       ldb, tdb, 1.0,  b.data (), ldb,
-                                       a.data (), 1, 0.0, c, 1
-                                       F77_CHAR_ARG_LEN (1)));
-            }
-          else
-            {
-              const char ctra = get_blas_trans_arg (tra);
-              const char ctrb = get_blas_trans_arg (trb);
-              F77_XFCN (dgemm, DGEMM, (F77_CONST_CHAR_ARG2 (&ctra, 1),
-                                       F77_CONST_CHAR_ARG2 (&ctrb, 1),
-                                       a_nr, b_nc, a_nc, 1.0, a.data (),
-                                       lda, b.data (), ldb, 0.0, c, a_nr
-                                       F77_CHAR_ARG_LEN (1)
-                                       F77_CHAR_ARG_LEN (1)));
-            }
+          const char ctra = get_blas_trans_arg (tra);
+          const char ctrb = get_blas_trans_arg (trb);
+          F77_XFCN (dgemm, DGEMM, (F77_CONST_CHAR_ARG2 (&ctra, 1),
+                                   F77_CONST_CHAR_ARG2 (&ctrb, 1),
+                                   a_nr, b_nc, a_nc, 1.0, a.data (),
+                                   lda, b.data (), ldb, 0.0, c, a_nr
+                                   F77_CHAR_ARG_LEN (1)
+                                   F77_CHAR_ARG_LEN (1)));
         }
     }
 
--- a/liboctave/array/dRowVector.cc	Wed Jan 20 16:10:23 2016 -0800
+++ b/liboctave/array/dRowVector.cc	Wed Jan 20 16:58:59 2016 -0800
@@ -201,24 +201,22 @@
 
   if (a_nr != len)
     err_nonconformant ("operator *", 1, len, a_nr, a_nc);
+
+  if (len == 0)
+    retval.resize (a_nc, 0.0);
   else
     {
-      if (len == 0)
-        retval.resize (a_nc, 0.0);
-      else
-        {
-          // Transpose A to form A'*x == (x'*A)'
+      // Transpose A to form A'*x == (x'*A)'
 
-          octave_idx_type ld = a_nr;
+      octave_idx_type ld = a_nr;
 
-          retval.resize (a_nc);
-          double *y = retval.fortran_vec ();
+      retval.resize (a_nc);
+      double *y = retval.fortran_vec ();
 
-          F77_XFCN (dgemv, DGEMV, (F77_CONST_CHAR_ARG2 ("T", 1),
-                                   a_nr, a_nc, 1.0, a.data (),
-                                   ld, v.data (), 1, 0.0, y, 1
-                                   F77_CHAR_ARG_LEN (1)));
-        }
+      F77_XFCN (dgemv, DGEMV, (F77_CONST_CHAR_ARG2 ("T", 1),
+                               a_nr, a_nc, 1.0, a.data (),
+                               ld, v.data (), 1, 0.0, y, 1
+                               F77_CHAR_ARG_LEN (1)));
     }
 
   return retval;
@@ -324,7 +322,8 @@
 
   if (len != a_len)
     err_nonconformant ("operator *", len, a_len);
-  else if (len != 0)
+
+  if (len != 0)
     F77_FUNC (xddot, XDDOT) (len, v.data (), 1, a.data (), 1, retval);
 
   return retval;
--- a/liboctave/array/dSparse.cc	Wed Jan 20 16:10:23 2016 -0800
+++ b/liboctave/array/dSparse.cc	Wed Jan 20 16:58:59 2016 -0800
@@ -763,60 +763,58 @@
 
       if (x_nr != y_nr || x_nc != y_nc)
         err_nonconformant ("atan2", x_nr, x_nc, y_nr, y_nc);
-      else
+
+      r = SparseMatrix (x_nr, x_nc, (x.nnz () + y.nnz ()));
+
+      octave_idx_type jx = 0;
+      r.cidx (0) = 0;
+      for (octave_idx_type i = 0 ; i < x_nc ; i++)
         {
-          r = SparseMatrix (x_nr, x_nc, (x.nnz () + y.nnz ()));
-
-          octave_idx_type jx = 0;
-          r.cidx (0) = 0;
-          for (octave_idx_type i = 0 ; i < x_nc ; i++)
-            {
-              octave_idx_type  ja = x.cidx (i);
-              octave_idx_type  ja_max = x.cidx (i+1);
-              bool ja_lt_max= ja < ja_max;
-
-              octave_idx_type  jb = y.cidx (i);
-              octave_idx_type  jb_max = y.cidx (i+1);
-              bool jb_lt_max = jb < jb_max;
-
-              while (ja_lt_max || jb_lt_max)
-                {
-                  octave_quit ();
-                  if ((! jb_lt_max)
-                      || (ja_lt_max && (x.ridx (ja) < y.ridx (jb))))
+          octave_idx_type  ja = x.cidx (i);
+          octave_idx_type  ja_max = x.cidx (i+1);
+          bool ja_lt_max= ja < ja_max;
+
+          octave_idx_type  jb = y.cidx (i);
+          octave_idx_type  jb_max = y.cidx (i+1);
+          bool jb_lt_max = jb < jb_max;
+
+          while (ja_lt_max || jb_lt_max)
+            {
+              octave_quit ();
+              if ((! jb_lt_max)
+                  || (ja_lt_max && (x.ridx (ja) < y.ridx (jb))))
+                {
+                  r.ridx (jx) = x.ridx (ja);
+                  r.data (jx) = atan2 (x.data (ja), 0.);
+                  jx++;
+                  ja++;
+                  ja_lt_max= ja < ja_max;
+                }
+              else if ((! ja_lt_max)
+                       || (jb_lt_max && (y.ridx (jb) < x.ridx (ja))))
+                {
+                  jb++;
+                  jb_lt_max= jb < jb_max;
+                }
+              else
+                {
+                  double tmp = atan2 (x.data (ja), y.data (jb));
+                  if (tmp != 0.)
                     {
+                      r.data (jx) = tmp;
                       r.ridx (jx) = x.ridx (ja);
-                      r.data (jx) = atan2 (x.data (ja), 0.);
                       jx++;
-                      ja++;
-                      ja_lt_max= ja < ja_max;
                     }
-                  else if ((! ja_lt_max)
-                           || (jb_lt_max && (y.ridx (jb) < x.ridx (ja))))
-                    {
-                      jb++;
-                      jb_lt_max= jb < jb_max;
-                    }
-                  else
-                    {
-                      double tmp = atan2 (x.data (ja), y.data (jb));
-                      if (tmp != 0.)
-                        {
-                          r.data (jx) = tmp;
-                          r.ridx (jx) = x.ridx (ja);
-                          jx++;
-                        }
-                      ja++;
-                      ja_lt_max= ja < ja_max;
-                      jb++;
-                      jb_lt_max= jb < jb_max;
-                    }
-                }
-              r.cidx (i+1) = jx;
-            }
-
-          r.maybe_compress ();
+                  ja++;
+                  ja_lt_max= ja < ja_max;
+                  jb++;
+                  jb_lt_max= jb < jb_max;
+                }
+            }
+          r.cidx (i+1) = jx;
         }
+
+      r.maybe_compress ();
     }
   else
     (*current_liboctave_error_handler) ("matrix size mismatch");
--- a/liboctave/array/fCColVector.cc	Wed Jan 20 16:10:23 2016 -0800
+++ b/liboctave/array/fCColVector.cc	Wed Jan 20 16:58:59 2016 -0800
@@ -344,23 +344,21 @@
 
   if (nc != a_len)
     err_nonconformant ("operator *", nr, nc, a_len, 1);
-  else
+
+  retval.clear (nr);
+
+  if (nr != 0)
     {
-      retval.clear (nr);
-
-      if (nr != 0)
+      if (nc == 0)
+        retval.fill (0.0);
+      else
         {
-          if (nc == 0)
-            retval.fill (0.0);
-          else
-            {
-              FloatComplex *y = retval.fortran_vec ();
+          FloatComplex *y = retval.fortran_vec ();
 
-              F77_XFCN (cgemv, CGEMV, (F77_CONST_CHAR_ARG2 ("N", 1),
-                                       nr, nc, 1.0f, m.data (), nr,
-                                       a.data (), 1, 0.0f, y, 1
-                                       F77_CHAR_ARG_LEN (1)));
-            }
+          F77_XFCN (cgemv, CGEMV, (F77_CONST_CHAR_ARG2 ("N", 1),
+                                   nr, nc, 1.0f, m.data (), nr,
+                                   a.data (), 1, 0.0f, y, 1
+                                   F77_CHAR_ARG_LEN (1)));
         }
     }
 
--- a/liboctave/array/fCMatrix.cc	Wed Jan 20 16:10:23 2016 -0800
+++ b/liboctave/array/fCMatrix.cc	Wed Jan 20 16:58:59 2016 -0800
@@ -3720,102 +3720,100 @@
 
   if (a_nc != b_nr)
     err_nonconformant ("operator *", a_nr, a_nc, b_nr, b_nc);
-  else
+
+  if (a_nr == 0 || a_nc == 0 || b_nc == 0)
+    retval = FloatComplexMatrix (a_nr, b_nc, 0.0);
+  else if (a.data () == b.data () && a_nr == b_nc && tra != trb)
     {
-      if (a_nr == 0 || a_nc == 0 || b_nc == 0)
-        retval = FloatComplexMatrix (a_nr, b_nc, 0.0);
-      else if (a.data () == b.data () && a_nr == b_nc && tra != trb)
+      octave_idx_type lda = a.rows ();
+
+      // FIXME: looking at the reference BLAS, it appears that it
+      // should not be necessary to initialize the output matrix if
+      // BETA is 0 in the call to CHERK, but ATLAS appears to
+      // use the result matrix before zeroing the elements.
+
+      retval = FloatComplexMatrix (a_nr, b_nc, 0.0);
+      FloatComplex *c = retval.fortran_vec ();
+
+      const char ctra = get_blas_trans_arg (tra, cja);
+      if (cja || cjb)
         {
-          octave_idx_type lda = a.rows ();
-
-          // FIXME: looking at the reference BLAS, it appears that it
-          // should not be necessary to initialize the output matrix if
-          // BETA is 0 in the call to CHERK, but ATLAS appears to
-          // use the result matrix before zeroing the elements.
-
-          retval = FloatComplexMatrix (a_nr, b_nc, 0.0);
-          FloatComplex *c = retval.fortran_vec ();
-
-          const char ctra = get_blas_trans_arg (tra, cja);
-          if (cja || cjb)
-            {
-              F77_XFCN (cherk, CHERK, (F77_CONST_CHAR_ARG2 ("U", 1),
-                                       F77_CONST_CHAR_ARG2 (&ctra, 1),
-                                       a_nr, a_nc, 1.0,
-                                       a.data (), lda, 0.0, c, a_nr
-                                       F77_CHAR_ARG_LEN (1)
-                                       F77_CHAR_ARG_LEN (1)));
-              for (octave_idx_type j = 0; j < a_nr; j++)
-                for (octave_idx_type i = 0; i < j; i++)
-                  retval.xelem (j,i) = std::conj (retval.xelem (i,j));
-            }
-          else
-            {
-              F77_XFCN (csyrk, CSYRK, (F77_CONST_CHAR_ARG2 ("U", 1),
-                                       F77_CONST_CHAR_ARG2 (&ctra, 1),
-                                       a_nr, a_nc, 1.0,
-                                       a.data (), lda, 0.0, c, a_nr
-                                       F77_CHAR_ARG_LEN (1)
-                                       F77_CHAR_ARG_LEN (1)));
-              for (octave_idx_type j = 0; j < a_nr; j++)
-                for (octave_idx_type i = 0; i < j; i++)
-                  retval.xelem (j,i) = retval.xelem (i,j);
-
-            }
-
+          F77_XFCN (cherk, CHERK, (F77_CONST_CHAR_ARG2 ("U", 1),
+                                   F77_CONST_CHAR_ARG2 (&ctra, 1),
+                                   a_nr, a_nc, 1.0,
+                                   a.data (), lda, 0.0, c, a_nr
+                                   F77_CHAR_ARG_LEN (1)
+                                   F77_CHAR_ARG_LEN (1)));
+          for (octave_idx_type j = 0; j < a_nr; j++)
+            for (octave_idx_type i = 0; i < j; i++)
+              retval.xelem (j,i) = std::conj (retval.xelem (i,j));
         }
       else
         {
-          octave_idx_type lda = a.rows ();
-          octave_idx_type tda = a.cols ();
-          octave_idx_type ldb = b.rows ();
-          octave_idx_type tdb = b.cols ();
-
-          retval = FloatComplexMatrix (a_nr, b_nc, 0.0);
-          FloatComplex *c = retval.fortran_vec ();
-
-          if (b_nc == 1 && a_nr == 1)
-            {
-              if (cja == cjb)
-                {
-                  F77_FUNC (xcdotu, XCDOTU) (a_nc, a.data (), 1, b.data (), 1,
-                                             *c);
-                  if (cja) *c = std::conj (*c);
-                }
-              else if (cja)
-                F77_FUNC (xcdotc, XCDOTC) (a_nc, a.data (), 1, b.data (), 1,
-                                           *c);
-              else
-                F77_FUNC (xcdotc, XCDOTC) (a_nc, b.data (), 1, a.data (), 1,
-                                           *c);
-            }
-          else if (b_nc == 1 && ! cjb)
+          F77_XFCN (csyrk, CSYRK, (F77_CONST_CHAR_ARG2 ("U", 1),
+                                   F77_CONST_CHAR_ARG2 (&ctra, 1),
+                                   a_nr, a_nc, 1.0,
+                                   a.data (), lda, 0.0, c, a_nr
+                                   F77_CHAR_ARG_LEN (1)
+                                   F77_CHAR_ARG_LEN (1)));
+          for (octave_idx_type j = 0; j < a_nr; j++)
+            for (octave_idx_type i = 0; i < j; i++)
+              retval.xelem (j,i) = retval.xelem (i,j);
+
+        }
+
+    }
+  else
+    {
+      octave_idx_type lda = a.rows ();
+      octave_idx_type tda = a.cols ();
+      octave_idx_type ldb = b.rows ();
+      octave_idx_type tdb = b.cols ();
+
+      retval = FloatComplexMatrix (a_nr, b_nc, 0.0);
+      FloatComplex *c = retval.fortran_vec ();
+
+      if (b_nc == 1 && a_nr == 1)
+        {
+          if (cja == cjb)
             {
-              const char ctra = get_blas_trans_arg (tra, cja);
-              F77_XFCN (cgemv, CGEMV, (F77_CONST_CHAR_ARG2 (&ctra, 1),
-                                       lda, tda, 1.0,  a.data (), lda,
-                                       b.data (), 1, 0.0, c, 1
-                                       F77_CHAR_ARG_LEN (1)));
+              F77_FUNC (xcdotu, XCDOTU) (a_nc, a.data (), 1, b.data (), 1,
+                                         *c);
+              if (cja) *c = std::conj (*c);
             }
-          else if (a_nr == 1 && ! cja && ! cjb)
-            {
-              const char crevtrb = get_blas_trans_arg (! trb, cjb);
-              F77_XFCN (cgemv, CGEMV, (F77_CONST_CHAR_ARG2 (&crevtrb, 1),
-                                       ldb, tdb, 1.0,  b.data (), ldb,
-                                       a.data (), 1, 0.0, c, 1
-                                       F77_CHAR_ARG_LEN (1)));
-            }
+          else if (cja)
+            F77_FUNC (xcdotc, XCDOTC) (a_nc, a.data (), 1, b.data (), 1,
+                                       *c);
           else
-            {
-              const char ctra = get_blas_trans_arg (tra, cja);
-              const char ctrb = get_blas_trans_arg (trb, cjb);
-              F77_XFCN (cgemm, CGEMM, (F77_CONST_CHAR_ARG2 (&ctra, 1),
-                                       F77_CONST_CHAR_ARG2 (&ctrb, 1),
-                                       a_nr, b_nc, a_nc, 1.0, a.data (),
-                                       lda, b.data (), ldb, 0.0, c, a_nr
-                                       F77_CHAR_ARG_LEN (1)
-                                       F77_CHAR_ARG_LEN (1)));
-            }
+            F77_FUNC (xcdotc, XCDOTC) (a_nc, b.data (), 1, a.data (), 1,
+                                       *c);
+        }
+      else if (b_nc == 1 && ! cjb)
+        {
+          const char ctra = get_blas_trans_arg (tra, cja);
+          F77_XFCN (cgemv, CGEMV, (F77_CONST_CHAR_ARG2 (&ctra, 1),
+                                   lda, tda, 1.0,  a.data (), lda,
+                                   b.data (), 1, 0.0, c, 1
+                                   F77_CHAR_ARG_LEN (1)));
+        }
+      else if (a_nr == 1 && ! cja && ! cjb)
+        {
+          const char crevtrb = get_blas_trans_arg (! trb, cjb);
+          F77_XFCN (cgemv, CGEMV, (F77_CONST_CHAR_ARG2 (&crevtrb, 1),
+                                   ldb, tdb, 1.0,  b.data (), ldb,
+                                   a.data (), 1, 0.0, c, 1
+                                   F77_CHAR_ARG_LEN (1)));
+        }
+      else
+        {
+          const char ctra = get_blas_trans_arg (tra, cja);
+          const char ctrb = get_blas_trans_arg (trb, cjb);
+          F77_XFCN (cgemm, CGEMM, (F77_CONST_CHAR_ARG2 (&ctra, 1),
+                                   F77_CONST_CHAR_ARG2 (&ctrb, 1),
+                                   a_nr, b_nc, a_nc, 1.0, a.data (),
+                                   lda, b.data (), ldb, 0.0, c, a_nr
+                                   F77_CHAR_ARG_LEN (1)
+                                   F77_CHAR_ARG_LEN (1)));
         }
     }
 
--- a/liboctave/array/fCRowVector.cc	Wed Jan 20 16:10:23 2016 -0800
+++ b/liboctave/array/fCRowVector.cc	Wed Jan 20 16:58:59 2016 -0800
@@ -327,24 +327,22 @@
 
   if (a_nr != len)
     err_nonconformant ("operator *", 1, len, a_nr, a_nc);
+
+  if (len == 0)
+    retval.resize (a_nc, 0.0);
   else
     {
-      if (len == 0)
-        retval.resize (a_nc, 0.0);
-      else
-        {
-          // Transpose A to form A'*x == (x'*A)'
+      // Transpose A to form A'*x == (x'*A)'
 
-          octave_idx_type ld = a_nr;
+      octave_idx_type ld = a_nr;
 
-          retval.resize (a_nc);
-          FloatComplex *y = retval.fortran_vec ();
+      retval.resize (a_nc);
+      FloatComplex *y = retval.fortran_vec ();
 
-          F77_XFCN (cgemv, CGEMV, (F77_CONST_CHAR_ARG2 ("T", 1),
-                                   a_nr, a_nc, 1.0, a.data (),
-                                   ld, v.data (), 1, 0.0, y, 1
-                                   F77_CHAR_ARG_LEN (1)));
-        }
+      F77_XFCN (cgemv, CGEMV, (F77_CONST_CHAR_ARG2 ("T", 1),
+                               a_nr, a_nc, 1.0, a.data (),
+                               ld, v.data (), 1, 0.0, y, 1
+                               F77_CHAR_ARG_LEN (1)));
     }
 
   return retval;
@@ -452,7 +450,8 @@
 
   if (len != a_len)
     err_nonconformant ("operator *", len, a_len);
-  else if (len != 0)
+
+  if (len != 0)
     F77_FUNC (xcdotu, XCDOTU) (len, v.data (), 1, a.data (), 1, retval);
 
   return retval;
--- a/liboctave/array/fColVector.cc	Wed Jan 20 16:10:23 2016 -0800
+++ b/liboctave/array/fColVector.cc	Wed Jan 20 16:58:59 2016 -0800
@@ -205,23 +205,21 @@
 
   if (nc != a_len)
     err_nonconformant ("operator *", nr, nc, a_len, 1);
-  else
+
+  retval.clear (nr);
+
+  if (nr != 0)
     {
-      retval.clear (nr);
-
-      if (nr != 0)
+      if (nc == 0)
+        retval.fill (0.0);
+      else
         {
-          if (nc == 0)
-            retval.fill (0.0);
-          else
-            {
-              float *y = retval.fortran_vec ();
+          float *y = retval.fortran_vec ();
 
-              F77_XFCN (sgemv, SGEMV, (F77_CONST_CHAR_ARG2 ("N", 1),
-                                       nr, nc, 1.0f, m.data (), nr,
-                                       a.data (), 1, 0.0f, y, 1
-                                       F77_CHAR_ARG_LEN (1)));
-            }
+          F77_XFCN (sgemv, SGEMV, (F77_CONST_CHAR_ARG2 ("N", 1),
+                                   nr, nc, 1.0f, m.data (), nr,
+                                   a.data (), 1, 0.0f, y, 1
+                                   F77_CHAR_ARG_LEN (1)));
         }
     }
 
@@ -242,20 +240,18 @@
 
   if (nc != a_len)
     err_nonconformant ("operator *", nr, nc, a_len, 1);
+
+  if (nr == 0 || nc == 0)
+    retval.resize (nr, 0.0);
   else
     {
-      if (nr == 0 || nc == 0)
-        retval.resize (nr, 0.0);
-      else
-        {
-          retval.resize (nr);
+      retval.resize (nr);
 
-          for (octave_idx_type i = 0; i < a_len; i++)
-            retval.elem (i) = a.elem (i) * m.elem (i, i);
+      for (octave_idx_type i = 0; i < a_len; i++)
+        retval.elem (i) = a.elem (i) * m.elem (i, i);
 
-          for (octave_idx_type i = a_len; i < nr; i++)
-            retval.elem (i) = 0.0;
-        }
+      for (octave_idx_type i = a_len; i < nr; i++)
+        retval.elem (i) = 0.0;
     }
 
   return retval;
--- a/liboctave/array/fMatrix.cc	Wed Jan 20 16:10:23 2016 -0800
+++ b/liboctave/array/fMatrix.cc	Wed Jan 20 16:58:59 2016 -0800
@@ -3113,71 +3113,69 @@
 
   if (a_nc != b_nr)
     err_nonconformant ("operator *", a_nr, a_nc, b_nr, b_nc);
+
+  if (a_nr == 0 || a_nc == 0 || b_nc == 0)
+    retval = FloatMatrix (a_nr, b_nc, 0.0);
+  else if (a.data () == b.data () && a_nr == b_nc && tra != trb)
+    {
+      octave_idx_type lda = a.rows ();
+
+      retval = FloatMatrix (a_nr, b_nc);
+      float *c = retval.fortran_vec ();
+
+      const char ctra = get_blas_trans_arg (tra);
+      F77_XFCN (ssyrk, SSYRK, (F77_CONST_CHAR_ARG2 ("U", 1),
+                               F77_CONST_CHAR_ARG2 (&ctra, 1),
+                               a_nr, a_nc, 1.0,
+                               a.data (), lda, 0.0, c, a_nr
+                               F77_CHAR_ARG_LEN (1)
+                               F77_CHAR_ARG_LEN (1)));
+      for (int j = 0; j < a_nr; j++)
+        for (int i = 0; i < j; i++)
+          retval.xelem (j,i) = retval.xelem (i,j);
+
+    }
   else
     {
-      if (a_nr == 0 || a_nc == 0 || b_nc == 0)
-        retval = FloatMatrix (a_nr, b_nc, 0.0);
-      else if (a.data () == b.data () && a_nr == b_nc && tra != trb)
+      octave_idx_type lda = a.rows ();
+      octave_idx_type tda = a.cols ();
+      octave_idx_type ldb = b.rows ();
+      octave_idx_type tdb = b.cols ();
+
+      retval = FloatMatrix (a_nr, b_nc);
+      float *c = retval.fortran_vec ();
+
+      if (b_nc == 1)
         {
-          octave_idx_type lda = a.rows ();
-
-          retval = FloatMatrix (a_nr, b_nc);
-          float *c = retval.fortran_vec ();
-
-          const char ctra = get_blas_trans_arg (tra);
-          F77_XFCN (ssyrk, SSYRK, (F77_CONST_CHAR_ARG2 ("U", 1),
-                                   F77_CONST_CHAR_ARG2 (&ctra, 1),
-                                   a_nr, a_nc, 1.0,
-                                   a.data (), lda, 0.0, c, a_nr
-                                   F77_CHAR_ARG_LEN (1)
+          if (a_nr == 1)
+            F77_FUNC (xsdot, XSDOT) (a_nc, a.data (), 1, b.data (), 1, *c);
+          else
+            {
+              const char ctra = get_blas_trans_arg (tra);
+              F77_XFCN (sgemv, SGEMV, (F77_CONST_CHAR_ARG2 (&ctra, 1),
+                                       lda, tda, 1.0,  a.data (), lda,
+                                       b.data (), 1, 0.0, c, 1
+                                       F77_CHAR_ARG_LEN (1)));
+            }
+        }
+      else if (a_nr == 1)
+        {
+          const char crevtrb = get_blas_trans_arg (! trb);
+          F77_XFCN (sgemv, SGEMV, (F77_CONST_CHAR_ARG2 (&crevtrb, 1),
+                                   ldb, tdb, 1.0,  b.data (), ldb,
+                                   a.data (), 1, 0.0, c, 1
                                    F77_CHAR_ARG_LEN (1)));
-          for (int j = 0; j < a_nr; j++)
-            for (int i = 0; i < j; i++)
-              retval.xelem (j,i) = retval.xelem (i,j);
-
         }
       else
         {
-          octave_idx_type lda = a.rows ();
-          octave_idx_type tda = a.cols ();
-          octave_idx_type ldb = b.rows ();
-          octave_idx_type tdb = b.cols ();
-
-          retval = FloatMatrix (a_nr, b_nc);
-          float *c = retval.fortran_vec ();
-
-          if (b_nc == 1)
-            {
-              if (a_nr == 1)
-                F77_FUNC (xsdot, XSDOT) (a_nc, a.data (), 1, b.data (), 1, *c);
-              else
-                {
-                  const char ctra = get_blas_trans_arg (tra);
-                  F77_XFCN (sgemv, SGEMV, (F77_CONST_CHAR_ARG2 (&ctra, 1),
-                                           lda, tda, 1.0,  a.data (), lda,
-                                           b.data (), 1, 0.0, c, 1
-                                           F77_CHAR_ARG_LEN (1)));
-                }
-            }
-          else if (a_nr == 1)
-            {
-              const char crevtrb = get_blas_trans_arg (! trb);
-              F77_XFCN (sgemv, SGEMV, (F77_CONST_CHAR_ARG2 (&crevtrb, 1),
-                                       ldb, tdb, 1.0,  b.data (), ldb,
-                                       a.data (), 1, 0.0, c, 1
-                                       F77_CHAR_ARG_LEN (1)));
-            }
-          else
-            {
-              const char ctra = get_blas_trans_arg (tra);
-              const char ctrb = get_blas_trans_arg (trb);
-              F77_XFCN (sgemm, SGEMM, (F77_CONST_CHAR_ARG2 (&ctra, 1),
-                                       F77_CONST_CHAR_ARG2 (&ctrb, 1),
-                                       a_nr, b_nc, a_nc, 1.0, a.data (),
-                                       lda, b.data (), ldb, 0.0, c, a_nr
-                                       F77_CHAR_ARG_LEN (1)
-                                       F77_CHAR_ARG_LEN (1)));
-            }
+          const char ctra = get_blas_trans_arg (tra);
+          const char ctrb = get_blas_trans_arg (trb);
+          F77_XFCN (sgemm, SGEMM, (F77_CONST_CHAR_ARG2 (&ctra, 1),
+                                   F77_CONST_CHAR_ARG2 (&ctrb, 1),
+                                   a_nr, b_nc, a_nc, 1.0, a.data (),
+                                   lda, b.data (), ldb, 0.0, c, a_nr
+                                   F77_CHAR_ARG_LEN (1)
+                                   F77_CHAR_ARG_LEN (1)));
         }
     }
 
--- a/liboctave/array/fRowVector.cc	Wed Jan 20 16:10:23 2016 -0800
+++ b/liboctave/array/fRowVector.cc	Wed Jan 20 16:58:59 2016 -0800
@@ -201,24 +201,22 @@
 
   if (a_nr != len)
     err_nonconformant ("operator *", 1, len, a_nr, a_nc);
+
+  if (len == 0)
+    retval.resize (a_nc, 0.0);
   else
     {
-      if (len == 0)
-        retval.resize (a_nc, 0.0);
-      else
-        {
-          // Transpose A to form A'*x == (x'*A)'
+      // Transpose A to form A'*x == (x'*A)'
 
-          octave_idx_type ld = a_nr;
+      octave_idx_type ld = a_nr;
 
-          retval.resize (a_nc);
-          float *y = retval.fortran_vec ();
+      retval.resize (a_nc);
+      float *y = retval.fortran_vec ();
 
-          F77_XFCN (sgemv, SGEMV, (F77_CONST_CHAR_ARG2 ("T", 1),
-                                   a_nr, a_nc, 1.0, a.data (),
-                                   ld, v.data (), 1, 0.0, y, 1
-                                   F77_CHAR_ARG_LEN (1)));
-        }
+      F77_XFCN (sgemv, SGEMV, (F77_CONST_CHAR_ARG2 ("T", 1),
+                               a_nr, a_nc, 1.0, a.data (),
+                               ld, v.data (), 1, 0.0, y, 1
+                               F77_CHAR_ARG_LEN (1)));
     }
 
   return retval;
@@ -324,7 +322,8 @@
 
   if (len != a_len)
     err_nonconformant ("operator *", len, a_len);
-  else if (len != 0)
+
+  if (len != 0)
     F77_FUNC (xsdot, XSDOT) (len, v.data (), 1, a.data (), 1, retval);
 
   return retval;