3
Copyright (C) 2006, 2007 John W. Eaton
5
This file is part of Octave.
7
Octave is free software; you can redistribute it and/or
8
modify it under the terms of the GNU General Public License
9
as published by the Free Software Foundation; either
10
version 3 of the License, or (at your option) any later
13
Octave is distributed in the hope that it will be useful,
14
but WITHOUT ANY WARRANTY; without even the implied warranty
15
of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
16
See the GNU General Public License for more details.
18
You should have received a copy of the GNU General Public
19
License along with Octave; see the file COPYING. If not,
20
see <http://www.gnu.org/licenses/>.
27
mexFunction (int nlhs, mxArray* plhs[], int nrhs,
28
const mxArray* prhs[])
34
if (nrhs != 1 || ! mxIsNumeric (prhs[0]))
35
mexErrMsgTxt ("expects matrix");
37
n = mxGetNumberOfElements (prhs[0]);
38
plhs[0] = (mxArray *) mxCreateNumericArray
39
(mxGetNumberOfDimensions (prhs[0]),
40
mxGetDimensions (prhs[0]), mxGetClassID (prhs[0]),
41
mxIsComplex (prhs[0]));
42
vri = mxGetPr (prhs[0]);
43
vro = mxGetPr (plhs[0]);
45
if (mxIsComplex (prhs[0]))
48
vii = mxGetPi (prhs[0]);
49
vio = mxGetPi (plhs[0]);
51
for (i = 0; i < n; i++)
53
vro [i] = vri [i] * vri [i] - vii [i] * vii [i];
54
vio [i] = 2 * vri [i] * vii [i];
59
for (i = 0; i < n; i++)
60
vro [i] = vri [i] * vri [i];