Mercurial > hg > octave-lyh
diff examples/mypow2.c @ 6593:3da1f4a41455
[project @ 2007-04-27 08:08:19 by dbateman]
author | dbateman |
---|---|
date | Fri, 27 Apr 2007 08:08:19 +0000 |
parents | |
children | 2aad75fcc93a |
line wrap: on
line diff
new file mode 100644 --- /dev/null +++ b/examples/mypow2.c @@ -0,0 +1,37 @@ +#include "mex.h" + +void +mexFunction (int nlhs, mxArray* plhs[], int nrhs, const mxArray* prhs[]) +{ + int i, n; + double *vri, *vro; + + if (nrhs != 1 || ! mxIsNumeric (prhs[0])) + mexErrMsgTxt ("expects matrix"); + + n = mxGetNumberOfElements (prhs[0]); + plhs[0] = (mxArray *) mxCreateNumericArray + (mxGetNumberOfDimensions (prhs[0]), + mxGetDimensions (prhs[0]), mxGetClassID (prhs[0]), + mxIsComplex (prhs[0])); + vri = mxGetPr (prhs[0]); + vro = mxGetPr (plhs[0]); + + if (mxIsComplex (prhs[0])) + { + double *vii, *vio; + vii = mxGetPi (prhs[0]); + vio = mxGetPi (plhs[0]); + + for (i = 0; i < n; i++) + { + vro [i] = vri [i] * vri [i] - vii [i] * vii [i]; + vio [i] = 2 * vri [i] * vii [i]; + } + } + else + { + for (i = 0; i < n; i++) + vro [i] = vri [i] * vri [i]; + } +}