diff liboctave/fNDArray.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 25bc2d31e1bf
children 53b4fdeacc2e
line wrap: on
line diff
--- a/liboctave/fNDArray.cc
+++ b/liboctave/fNDArray.cc
@@ -897,21 +897,15 @@
 FloatNDArray
 real (const FloatComplexNDArray& a)
 {
-  octave_idx_type a_len = a.length ();
-  FloatNDArray retval;
-  if (a_len > 0)
-    retval = FloatNDArray (mx_inline_real_dup (a.data (), a_len), a.dims ());
-  return retval;
+  return FloatNDArray (mx_inline_real_dup (a.data (), a.length ()),
+                       a.dims ());
 }
 
 FloatNDArray
 imag (const FloatComplexNDArray& a)
 {
-  octave_idx_type a_len = a.length ();
-  FloatNDArray retval;
-  if (a_len > 0)
-    retval = FloatNDArray (mx_inline_imag_dup (a.data (), a_len), a.dims ());
-  return retval;
+  return FloatNDArray (mx_inline_imag_dup (a.data (), a.length ()),
+                       a.dims ());
 }
 
 FloatNDArray&
@@ -931,14 +925,8 @@
 FloatNDArray
 FloatNDArray::abs (void) const
 {
-  FloatNDArray retval (dims ());
-
-  octave_idx_type nel = nelem ();
-
-  for (octave_idx_type i = 0; i < nel; i++)
-    retval(i) = fabs (elem (i));
-
-  return retval;
+  return FloatNDArray (mx_inline_fabs_dup (data (), length ()),
+                       dims ());
 }
 
 Matrix