diff liboctave/MArray.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 6ae6f1180e62
line wrap: on
line diff
--- a/liboctave/MArray.cc	Tue Feb 01 04:06:39 2000 +0000
+++ b/liboctave/MArray.cc	Tue Feb 01 10:07:26 2000 +0000
@@ -94,8 +94,12 @@
   MArray<T> \
   operator OP (const MArray<T>& a, const T& s) \
   { \
-    DO_VS_OP (OP); \
-    return MArray<T> (result, l); \
+    MArray<T> result (a.length ()); \
+    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_AS_OP (+)
@@ -110,9 +114,13 @@
   MArray<T> \
   operator OP (const T& s, const MArray<T>& a) \
   { \
-    DO_SV_OP (OP); \
-    return MArray<T> (result, l); \
- }
+    MArray<T> result (a.length ()); \
+    T *r = result.fortran_vec (); \
+    int l = a.length (); \
+    const T *v = a.data (); \
+    DO_SV_OP (r, l, s, OP, v); \
+    return result; \
+  }
 
 MARRAY_SA_OP(+)
 MARRAY_SA_OP(-)
@@ -135,8 +143,12 @@
       } \
     if (l == 0) \
       return MArray<T> (); \
-    DO_VV_OP (OP); \
-    return MArray<T> (result, l); \
+    MArray<T> result (l); \
+    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_AA_OP (operator +, +)
@@ -150,8 +162,12 @@
 MArray<T>
 operator - (const MArray<T>& a)
 {
-  NEG_V;
-  return MArray<T> (result, l);
+  int l = a.length ();
+  MArray<T> result (l);
+  T *r = result.fortran_vec ();
+  const T *x = a.data ();
+  NEG_V (r, l, x);
+  return result;
 }
 
 /*