Mercurial > octave-nkf
view liboctave/MArray-defs.h @ 3243:dd00769643ae
[project @ 1999-05-28 04:19:00 by jwe]
author | jwe |
---|---|
date | Fri, 28 May 1999 04:19:24 +0000 |
parents | 7b56630a1e05 |
children | 5eef8a2294bd |
line wrap: on
line source
// Nothing like a little CPP abuse to brighten everyone's day. Would // have been nice to do this with template functions but as of 2.5.x, // g++ seems to fail to resolve them properly. #define DO_VS_OP(OP) \ int l = a.length (); \ T *result = 0; \ if (l > 0) \ { \ result = new T [l]; \ const T *x = a.data (); \ for (int i = 0; i < l; i++) \ result[i] = x[i] OP s; \ } #define DO_SV_OP(OP) \ int l = a.length (); \ T *result = 0; \ if (l > 0) \ { \ result = new T [l]; \ const T *x = a.data (); \ for (int i = 0; i < l; i++) \ result[i] = s OP x[i]; \ } #define DO_VV_OP(OP) \ T *result = 0; \ if (l > 0) \ { \ result = new T [l]; \ const T *x = a.data (); \ const T *y = b.data (); \ for (int i = 0; i < l; i++) \ result[i] = x[i] OP y[i]; \ } #define NEG_V \ int l = a.length (); \ T *result = 0; \ if (l > 0) \ { \ result = new T [l]; \ const T *x = a.data (); \ for (int i = 0; i < l; i++) \ result[i] = -x[i]; \ } #define DO_VS_OP2(OP) \ int l = a.length (); \ if (l > 0) \ { \ T *tmp = a.fortran_vec (); \ for (int i = 0; i < l; i++) \ tmp[i] OP s; \ } #define DO_VV_OP2(OP) \ do \ { \ T *a_tmp = a.fortran_vec (); \ const T *b_tmp = b.data (); \ for (int i = 0; i < l; i++) \ a_tmp[i] OP b_tmp[i]; \ } \ while (0)