diff liboctave/fMatrix.cc @ 8650:a1ae2aae903e

abs,real,imag,conj: use code from mx-inlines rather than the generic map
author Jaroslav Hajek <highegg@gmail.com>
date Mon, 02 Feb 2009 15:35:32 +0100
parents 5114ea5a41b5
children 53b4fdeacc2e
line wrap: on
line diff
--- a/liboctave/fMatrix.cc
+++ b/liboctave/fMatrix.cc
@@ -582,23 +582,15 @@
 FloatMatrix
 real (const FloatComplexMatrix& a)
 {
-  octave_idx_type a_len = a.length ();
-  FloatMatrix retval;
-  if (a_len > 0)
-    retval = FloatMatrix (mx_inline_real_dup (a.data (), a_len),
-		     a.rows (), a.cols ());
-  return retval;
+  return FloatMatrix (mx_inline_real_dup (a.data (), a.length ()),
+                      a.rows (), a.cols ());
 }
 
 FloatMatrix
 imag (const FloatComplexMatrix& a)
 {
-  octave_idx_type a_len = a.length ();
-  FloatMatrix retval;
-  if (a_len > 0)
-    retval = FloatMatrix (mx_inline_imag_dup (a.data (), a_len),
-		     a.rows (), a.cols ());
-  return retval;
+  return FloatMatrix (mx_inline_imag_dup (a.data (), a.length ()),
+                      a.rows (), a.cols ());
 }
 
 FloatMatrix
@@ -2846,16 +2838,8 @@
 FloatMatrix
 FloatMatrix::abs (void) const
 {
-  octave_idx_type nr = rows ();
-  octave_idx_type nc = cols ();
-
-  FloatMatrix retval (nr, nc);
-
-  for (octave_idx_type j = 0; j < nc; j++)
-    for (octave_idx_type i = 0; i < nr; i++)
-      retval (i, j) = fabs (elem (i, j));
-
-  return retval;
+  return FloatMatrix (mx_inline_fabs_dup (data (), length ()),
+                      rows (), cols ());
 }
 
 FloatMatrix