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
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/examples/mypow2.c	Fri Apr 27 08:08:19 2007 +0000
@@ -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];
+    }
+}