diff src/ov-cx-sparse.cc @ 5903:11bb9bf343a0

[project @ 2006-07-26 03:36:33 by jwe]
author jwe
date Wed, 26 Jul 2006 03:36:33 +0000
parents c20eb7330d13
children c68896f193e3
line wrap: on
line diff
--- a/src/ov-cx-sparse.cc	Tue Jul 25 19:56:00 2006 +0000
+++ b/src/ov-cx-sparse.cc	Wed Jul 26 03:36:33 2006 +0000
@@ -762,8 +762,26 @@
 mxArray *
 octave_sparse_complex_matrix::as_mxArray (void) const
 {
-  // FIXME
-  return 0;
+  int nz = nzmax ();
+  mxArray *retval = new mxArray (mxDOUBLE_CLASS, rows (), columns (),
+				 nz, mxCOMPLEX);
+  double *pr = static_cast<double *> (retval->get_data ());
+  double *pi = static_cast<double *> (retval->get_imag_data ());
+  int *ir = retval->get_ir ();
+  int *jc = retval->get_jc ();
+
+  for (int i = 0; i < nz; i++)
+    {
+      Complex val = matrix.data(i);
+      pr[i] = real (val);
+      pi[i] = imag (val);
+      ir[i] = matrix.ridx(i);
+    }
+
+  for (int i = 0; i < columns() + 1; i++)
+    jc[i] = matrix.cidx(i);
+
+  return retval;
 }
 
 /*