diff liboctave/MDiagArray2.cc @ 3504:5eef8a2294bd

[project @ 2000-02-01 10:06:51 by jwe]
author jwe
date Tue, 01 Feb 2000 10:07:26 +0000
parents 8b262e771614
children 2923f52d8fda
line wrap: on
line diff
--- a/liboctave/MDiagArray2.cc
+++ b/liboctave/MDiagArray2.cc
@@ -92,8 +92,12 @@
   MDiagArray2<T> \
   operator OP (const MDiagArray2<T>& a, const T& s) \
   { \
-    DO_VS_OP (OP); \
-    return MDiagArray2<T> (result, a.rows (), a.cols ()); \
+    MDiagArray2<T> result (a.rows (), a.cols ()); \
+    T *r = result.fortran_vec (); \
+    int l = a.length (); \
+    const T *v = a.data (); \
+    DO_VS_OP (r, l, v, OP, s); \
+    return result; \
   }
 
 MARRAY_DAS_OP (*)
@@ -105,8 +109,12 @@
 MDiagArray2<T>
 operator * (const T& s, const MDiagArray2<T>& a)
 {
-  DO_SV_OP (*);
-  return MDiagArray2<T> (result, a.rows (), a.cols ());
+  MDiagArray2<T> result (a.rows (), a.cols ()); \
+  T *r = result.fortran_vec (); \
+  int l = a.length (); \
+  const T *v = a.data (); \
+  DO_SV_OP (r, l, s, *, v); \
+  return result; \
 }
 
 // Element by element MDiagArray2 by MDiagArray2 ops.
@@ -116,20 +124,24 @@
   MDiagArray2<T> \
   FCN (const MDiagArray2<T>& a, const MDiagArray2<T>& b) \
   { \
-    int r = a.rows (); \
-    int c = a.cols (); \
+    int a_nr = a.rows (); \
+    int a_nc = a.cols (); \
     int b_nr = b.rows (); \
     int b_nc = b.cols (); \
-    if (r != b_nr || c != b_nc) \
+    if (a_nr != b_nr || a_nc != b_nc) \
       { \
-        gripe_nonconformant (#FCN, r, c, b_nr, b_nc); \
+        gripe_nonconformant (#FCN, a_nr, a_nc, b_nr, b_nc); \
 	return MDiagArray2<T> (); \
       } \
-    if (c == 0 || r == 0) \
+    if (a_nc == 0 || a_nr == 0) \
       return MDiagArray2<T> (); \
     int l = a.length (); \
-    DO_VV_OP (OP); \
-    return MDiagArray2<T> (result, r, c); \
+    MDiagArray2<T> result (a_nr, a_nc); \
+    T *r = result.fortran_vec (); \
+    const T *x = a.data (); \
+    const T *y = b.data (); \
+    DO_VV_OP (r, l, x, OP, y); \
+    return result; \
   }
 
 MARRAY_DADA_OP (operator +, +)
@@ -142,8 +154,12 @@
 MDiagArray2<T>
 operator - (const MDiagArray2<T>& a)
 {
-  NEG_V;
-  return MDiagArray2<T> (result, a.rows (), a.cols ());
+  int l = a.length ();
+  MDiagArray2<T> result (a.rows (), a.cols ());
+  T *r = result.fortran_vec ();
+  const T *x = a.data ();
+  NEG_V (r, l, x);
+  return result;
 }
 
 /*